在单片机开发应用中,我们常常采用主从式控制结构,一台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发送通道,有效地防止了竞争的发生。
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个下位机进行串行通信,实践证明该电路可以稳定可靠的工作。文中仅讨论了3个单片机的情形,若单片机多于3个,可以对控制电路进行适当扩展,以满足需要。
关键字:多单片机 共用R 232通信 防竞争电路
引用地址:
多单片机共用RS232通信的防竞争电路与程序设计
推荐阅读最新更新时间:2024-03-16 15:56
51单片机RS232串口通信代码分析
一、串口初始化 void usart_init() { SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1 TMOD = 0x20; //定时器工作方式2 PCON = 0x00; TH1 = 0xFD; //波特率9600、数据位8、停止位1。效验位无 (11.0592M) TL1 = 0xFD; ES = 1; //开串口中断 EA = 1; //开总中断 TR1 = 1; //启动定时器 } SCON寄存器 1.SM0、SM1:串行口工作方式控制位 2.SM2:多机通信控制位 3.REN:允许接收位 4.TB8:发送接收数据位8 5.RB8:接收数据位8 6.TI:发送中断标志位 TI=1表
[单片机]
解决RS-232长距离串行通信的一种实用方法
摘要: 针对目前广泛使用的RS-232串行通信在实际应用中所存在的缺点,提出了利用电流环同RS-232进行接口来提高串行通信距离及抗干扰能力的一种简单实用方法。该方法已在许多场合应用,效果很好。
关键词: 串行通信 RS-232 电流环 光电隔离
1 引言
RS-232串行通信是早期为促进公共电话网络通信而制定的标准,是目前异步通信中应用最广的标准总线,适用于数据终端设备和数据通信设备之间的接口。图1所示为RS-232串行通信的简单示意图。然而,由于发送器(TXD)和接收器(RXD)之间具有公共信号地(GND),因此不能使用双端信号,这样可能会使共模噪声耦合到信号系统中。因此,设计者不得不
[网络通信]
基于MAX232的单片机双机通信技术
单片机 间通信的方式通常有并行通信和串行通信两种。并行通信优点是传送的速度快,缺点是占用的数据传输线多,长距离传输成本高。单片机间通信通常采用串行通信方式。本例实现在单片机甲与单片机乙之间传送数据。 通信双方约定发送方为甲机,接收方为乙机。首先甲机向乙机发送一联络数据(0xAA),乙机接收到后响应应答信号(0xDD),然后接收甲机发送的数据。如果乙机接收到的数据不正确,就向甲机发送0xFF,甲收方收到OxFF后重传数据。 在串行通信中,如果两单片机系统之间的距离很短(lm以内),可利用单片机的串口直接相连的方法实现双机通信,连接时注意一方的TXD与另一方的RXD引脚相连接。如下图所示。 如果通
[单片机]
基于MCU的多机并行通信
摘要:单片机的多机串行通信应用十分广泛,但在串行口被占用又要进行多机通信时就要采取其它措施。本文介绍了一种使用并口进行多机通信的方法,在实践中已得到验证。
关键词:MCU,并口通信
1. 问题的提出
某系统中使用了三路串行接口的传感器(GPS、压力和风向)及三路模拟电流(4~20mA)接口的传感器(湿度、温度和水位)。现需要将这些数据汇总后通过串口上传给PC机,并且要求每路信号数据都能够实时独立的接收。
2.系统设计
经过分析,我们分别使用一块2051单片机接收各路串口传感器的数据,同时使用一块多路高精度ADC对转换成电压的温度等信号采样,系统结构图如图1所示。主从机之间的具体管脚连接参见图2。
[单片机]
基于CAN控制器的对等式单片机多机系统的通信
摘要: 针对单片机多机系统主从式通信的缺点,提也了利用CAN控制器实现单片机多机系统对等式通信,并对其硬件组成原理、通信程序的设计做了详细的分析。
关键词: 单片机多机系统 “对等式”通信 控制器局域网(CAN)
关于单片机的多机通信,许多文章及相关书籍都有介绍,但就其多机通信的方式而言大多为“主从式”,这一通信方式限制了单片机功能的发挥及广泛的应用。虽然文献 利用巧秒的硬件手段实现了单片机多机之间的“对等式”通信,但其通信方式实质上仍是“主从式”。本文介绍了一种基于CAN控制器的单片机多机系统,从本质上实现了任意两机之间直接相互通信,从而克服了“主从式”多机通信的缺点。
1 CAN技术简
[工业控制]
采用多单片机的液位监控仪
摘要:介绍把多个单片机用于一个多路液位监控系统的方法。说明用多个单片机的原因及用单片机取代I/O接口的理由,并对系统的软硬件设计、调试也做了说明。
关键词:多单片机 液位 监控
采用单片机设计液位监控仪是很通用的做法。如果要测量的液位有很多路(16路以上),每路要求能滚动显示1年内每班、每日、每月的输入输出总量(1日3班),正常或意外停电数据不丢失,人机交互能力要强(要设置适当数量的按键及采用LCD显示),并且每路液位要求对应2路控制输出信号(液罐液体输入控制和输出控制),配置微型打印机端口,设置声音报警,所有这些无疑需要很多的I/O端口来支持,单凭一个单片机是办不到的,需要扩展I/O端口。在此设计中,笔者认为采用专用I/O
[单片机]
基于AVR单片机硬件多机通讯功能的实现
通讯规则: 1:时钟7.3728MHz/波特率9600/9个数据位/奇校验/1个停止位/硬件多机通讯功能/ 2:通讯连接采用硬件MAX485,双向单工 3:每个上行/下行的数据包的字节个数都是一样的(通讯数据量) 4:每个上行/下行的数据包都采用CRC8校验 5:数据接收采用中断+查询的方式 6:总是由主机向从机发送一个数据包,从机收到数据包后向主机回复一个数据包 7:不管是主机还是从机,如果收到的数据包有任何错误,都将丢弃该数据包,等效于没有接收 8:从机之间不能相互通讯,必须通过主机才能交换数据 9:无效地址是0,主机地址是1,从机地址是2.3.4.。。.。。广播地址是255 */ #include #includ
[单片机]
PC机与多MCS-51单片机间的串行通信设计
1 引 言 在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。它们大多由IBM-PC微机和MCS-51单片机组成。单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛的应用。同时,IBM-PC机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给PC机,PC机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。 故IBM-PC机(上位机)与各MCS-51单片机(下位机)之间的通信显得尤其重要。本文主要
[单片机]