多单片机共用RS232通信的防竞争电路与程序设计
在单片机开发应用中,我们常常采用主从式控制结构,一台PC机作为上位机控制多个单片机系统进行工作,功能强大、资源丰富的PC机可以用来方便地进行人机界面的设计和数据库管理与输出,而单片机进行灵活的控制和测量。在某些应用场合,这些单片机系统紧靠在一起安装,因为单片机相互间的距离较近,通信接线很短,这时,PC机与单片机1对多的多机通信,就可以不采用需要特别转接设备的RS 485通信,或者复杂的CAN通信,而设计防止竞争控制电路和采用应答式通信程序,让多单片机直接共用一个RS 232接口与PC机实现可靠的异步串行通信。
1 多单片机通信结构
多单片机共用RS 232接口与PC机通信的结构如图1所示,由串行通信接口、防竞争电路以及下位机三部分组成。
多个单片机系统共享RS 232总线的关键是如何避免竞争。对于接收端,经RS 232电平转换芯片进行电平转换后,可以直接并接到全部单片机串口的Rxd端,PC机向单片机发送信息相当于向所有单片机进行广播,不存在竞争。但是不能直接将单片机的发送端并联到串口转换芯片MAX232的TnIN端,否则系统将极不可靠,无论何种原因,倘若有2个及以上的单片机系统同时向PC机发送信息,则将发生总线竞争,RS 232总线信号将发生混乱。因此图中的防竞争控制电路,是专为防止总线竞争而设计,以保证在任何时刻只有一个单片机系统占用RS 232的发送端口。
2 防止竞争的控制电路
防止竞争控制电路如图2所示,TxdA,TxdB,TxdC分别是单片机A、单片机B、单片机C的Txd端,接到带3态驱动器74HC125的3个输入端上,74HC125的3个输出端并接到RS 232电平转换芯片MAX232的T2IN端。A,B,C分别是3个单片机的串口输出控制端(低电平有效,假设均接P10端口),由74HC00四二与非门和74HC32四二或门电路构成。
控制电路输出到74HC125的3个控制端信号分别定义为OEA,OEB,OEC,对应于3个单片机串口控制信号A,B,C,逻辑关系为:
控制电路的真值表如表1所示。
由真值表可见:防止竞争控制电路保证在A有效时,仅允许TxdA通过74HC125而其他2路信号被禁止通过。同样,当B有效时,仅允许TxdB信号通过,C有效时,仅允许TxdC信号通过,其他2路信号被禁止。确保任意时刻只有一个单片机的串口占用RS 232发送通道,而其他单片机不能占用RS 232发送通道,有效地防止了竞争的发生。[next]
3 防止竞争的通信程序
3.1 多机通信协议.
多机通信协议是为了使单片机分时占用RS 232发送通道,在防竞争控制电路的配合下,使得任一时刻PC机仅与1个单片机进行通信,保证通信的顺利进行。通信采用握手通信方式,通信协议如下:
每一帧信息为8个字节。其中,第一字节为特征字(这里为字符“L”),第二字节为地址码,第三字节为命令码,第四~七字节为数据字节,第八字节为校验和(从地址码开始计算字节的异或和)。
如PC机向单片机系统发出呼叫:“L”、“A”、01H、00H、00H、00H、00H、40H,其中的“A”(41H)表示呼叫单片机A,01H是命令,4个00H是命令的参数,40H为校验和。
单片机接收到特征码“L”后,开始接收后续的7字节信息,并对这7个字节计算校验和,完整的一帧呼叫码校验无误后,核对地址码。单片机A核对地址码为“A”,确认是对本机呼叫,立即响应,拉低P10(信号A),本机即可独占RS 232总线发送通道,按照通信协议与PC机进行串行通信,通信完毕恢复P10(信号A)使RS 232总线发送通道恢复空闲状态。而单片机B、单片机C校对地址码不是本机地址后则退出,保持接收状态。
3.2 上位机通信程序
上位机与下位机采用应答式通信方式,上位机向某一下位机发送呼叫码后启动定时查询串口定时器,等待下位机执行命令并按命令要求返回信息,若定时时间到后能查询到该单片机返回的信息,则取出信息进行处理,否则认为该单片机出错。上位机通信流程如图3所示。
图4为上位机与3个单片机通信的时序图。
3.3 下位机通信程序
下位机接收到命令后,执行命令与返回信息的时间必须小于上位机的等待查询时间,否则将被当作出错处理。下位机通信流程如图5所示。
4 结语
采用防止竞争控制电路和应答式编程,使得多单片机共用RS 232接口时,每个单片机分时占用RS 232总线发送通道,有效地避免了串行总线的竞争。控制电路采用普通的74HC系列芯片构成,电路简单、实现容易、通信可靠。笔者在研制“信号微机监测系统板卡故障定位仪”项目中采用了这一电路,3个下位机(51系列单片机)控制板安装在同一个机箱中,嵌入式平板电脑作为上位机与3个下位机进行串行通信,实践证明该电路可以稳定可靠的工作。
- 基于多单片机直流电源控制板的设计方案(01-02)
- 基于VC6.0的多单片机和PC机串口通讯实现方案(09-29)
- 采用多51单片机的液位监控仪设计(12-29)
- 于多单片机的液位监控仪设计(10-27)
- 串行RS232通信接口_MAX232转接图(12-12)
- Windows CE 进程、线程和内存管理(11-09)