首页 理论教育 STC15W4K32S4串口S2/S3/S4通信示例

STC15W4K32S4串口S2/S3/S4通信示例

时间:2023-11-02 理论教育 版权反馈
【摘要】:STC15W4K32S4单片机的串口2、串口3和串口4均有2个工作方式:方式0可应用于单机和双机通信,方式1适于多机通信。图8-20 单片机的多机通信结构在多机通信中,需要在串口工作方式1下,采用SxSM2和SxTB8、SxRB8控制位在多机通信中的特点,实现多机通信。这3位的功能参看S2CON、S3CON和S4CON寄存器的各位功能介绍。4)从机接收到信息后,由于S3RB8=0,则只有S3SM2=0的从机将信息送入到S3BUF,其他从机因为S3SM2=1且S3RB8=0,会将接收的信息丢弃。

STC15W4K32S4串口S2/S3/S4通信示例

STC15W4K32S4单片机串口2、串口3和串口4均有2个工作方式:方式0可应用于单机和双机通信,方式1适于多机通信。下面介绍它们的通信程序设计。

1.双机通信

双机通信是单片机与单片机之间进行信息交换。如果通信距离在5m以内时,两个单片机的串口可以直接连接,线路连接比较简单,如图8-17所示,通信时以TTL电平传输信息。如果通信距离在15m以内时,双方需要增加点对点电平转换电路,如图8-18所示,通信时需要TTL电平与RS-232电平进行转换,以RS-232电平远程传输信息,适合本地设备之间的通信。

978-7-111-51881-5-Chapter08-55.jpg

图8-17 双机异步通信

978-7-111-51881-5-Chapter08-56.jpg

图8-18 双机点对点RS-232异步通信接口

如果需要长距离的通信,双方可以采用RS-485通信接口,如图8-19所示。RS-485定义了一种平衡通信接口,采用平衡双绞线,通信距离最远可达1500m,通信速率最高可达10Mbit/s,通信距离与速度成反比。当通信距离小于300m时,两端可以不接终端电阻

978-7-111-51881-5-Chapter08-57.jpg

图8-19 双机RS-485异步通信接口

双方异步串行通信时,可以采用查询方式,也可以使用中断方式设计串行通信程序。

【例8-3】 使用单片机的串口2编程,将甲方单片机内部的30H~3FH单元的数据逐字节发送给乙方,并用P1口接8个LED灯显示出来(低电平点亮LED),采用和校验检验帧错误

依据题意,按以下步骤设计程序:

程序结构:发送端采用查询方式发送数据,每1s发出1个数据字节。为了让读者更好地理解串行通信程序设计,接收方采用中断方式编写接收程序。

算法思路:接收、发送端采用指针指向要发送的源数据地址或存放的目的地址,用数据长度控制循环次数。发送数据时,采用1字节累加和,每读取1个字节数就累加1次;当源数据发送完后,再把发送累加和发送给乙方校验。在接收方,也采用1字节累加和,每接收到1个字节数就累加1次;当源数据接收完后,再接收1字节的累加和校验码,与本地的源数据累加和进行比较:如果相等,则通信成功,接收方发出“OK”信息;否则发出“ER”信息,需要重发。对于接收端采用中断方式,需设1个错误标志F0,如果接收失败,中断返回前置F0=1,由主程序判断F0是否转到重新接收。

资源分配:R0作数据指针,R2作源数据长度,控制循环次数,2FH单元作累加和校验码,定时器T2作为串口2的波特率发生器,T2x12=0为12T模式,系统时钟fsys=18.432MHz,波特率为2.4kbit/s,计算出定时器T2的初值:978-7-111-51881-5-Chapter08-58.jpg,则T2初值=65376D=FF60H。

978-7-111-51881-5-Chapter08-59.jpg

乙端串口2接收程序设计(中断方式):

978-7-111-51881-5-Chapter08-60.jpg

2.多机通信

在实际应用中,经常会有多个单片机终端构成单总线网络完成某一个系统设计,这样它们在数据传输时需要采用主从式通信方式,即一台主机与多台从机之间通信。要完成这种通信功能,必须依靠单片机串口的多机通信控制位SM2来实现。这时网络中的每个终端设备还要编制一个唯一的识别码,即地址(系统允许最小地址为00、最大地址为255,即最大有256台从机),使得主机可以将信息发送给所有从机,或者指定发给某一个从机,而从机与从机之间不能相互通信。按照这种规则构成的从机通信网络如图8-20所示。

978-7-111-51881-5-Chapter08-61.jpg(www.xing528.com)

图8-20 单片机的多机通信结构

在多机通信中,需要在串口工作方式1下,采用SxSM2和SxTB8、SxRB8控制位(其中x=2~4)在多机通信中的特点,实现多机通信。这3位的功能参看S2CON、S3CON和S4CON寄存器的各位功能介绍。

在通信设计时,要遵循一主、多从形式,主机在“讲”时,所有的从机要在“听”,从机“听”到叫本机地址码才能转为“讲”,不允许多个从机同时“讲”。就像开会做报告一样,报告人在讲时,与会代表要静听;当提问时,被点名的代表才能发声讲话。因此,对网络中的每个从机要编制唯一的地址码,主机以点名轮询方式与从机通信。故主机通常要先发送地址码点名,以建立一条通信链路,然后再发命令或数据信息;被点名的从机根据命令再发送出数据信息。

多机通信操作过程如下(以串口3为例):

1)主机置S3M0=1工作在方式1,并置S3SM2=0、S3TB8=1,主机发送1字节地址码,从机接受点名,从机置S3M0=1,S3SM2=1,从机准备接收主机发送的地址码。

2)因为从机S3RB8=1,则接收到地址码会送入S3BUF寄存器;此时从机将接收的码与本机码进行比较:如果比较结果相等,则本机被主机点名通信,该从机置S3SM2=0,继续接收。

如果比较结果不相等,则置从机的S3SM2=1不变,继续接收。

3)接着,主机置S3TB8=0,并发送命令或数据信息,从机等待接收。

4)从机接收到信息后,由于S3RB8=0,则只有S3SM2=0的从机将信息送入到S3BUF,其他从机因为S3SM2=1且S3RB8=0,会将接收的信息丢弃。

5)从机根据命令发送回复数据信息,这时从机发送时置S3TB8=0,其他从机设置不变;主机置S3SM2=0,准备接收被点名从机的数据信息。

下面介绍多机通信实例。

【例8-4】 按照如图8-20所示构成多机通信结构,实现停车场车位检测与指示。

依据题意,假设停车场有1个主机,内有100个车位从机,系统将从机连接成串行通信网络,采取主从式多机通信方式,即主机不断地点名轮询各个从机,要求被轮询到的从机报告其车位上是否停放了车辆:如果停放了车辆,要向主机回答“Yes”,空车位数减1并显示出来;否则回答“Not”。按以下步骤设计程序:

程序结构:主机发送端采用查询方式发送数据,查询间隔时间为2ms。为了让读者更好地理解串行多机通信程序设计,从机采用中断方式编写接收程序。

算法思路:主机不断地点名轮询从机。轮询时,主机先地址、再发命令(假设有“K”车位查询、“B”故障查询、“P”危险查询等命令)。从机收到地址比较是本机后,向主机报告查询从机的状态信息。假如开始时,车场没有停车,则有空车位100个。若主机接收到从机车位上停了车,则总车位数减去1,表示还有99个空停车位,显示提醒。

假设从机的车位检测采用光电发射、接收管,由P1.0检测电平,当检测到P1.0为低电平时表示该车位有停车,否则该车位无停车。从机采用串口中断方式,主程序不断检测是否有停车:若检测到有停车则赋值给寄存器R6位“Yes”信息,否则置R6位“Not”信息。

资源分配:用寄存器R7作为主机空车位计数器,用R6寄存器作为从机车位状态信息;选用定时器T3作为串口3的波特率发生器,T3x12=1为1T计数模式,系统时钟fsys=18.432MHz,波特率为115.2kbit/s,计算出定时器T3的初值为

978-7-111-51881-5-Chapter08-62.jpg

978-7-111-51881-5-Chapter08-63.jpg

从机端串口3接收程序设计(中断方式,假定本从机的地址码为01号):

978-7-111-51881-5-Chapter08-64.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈