物理定义:Uart不属于总线通信,无法同时挂2个或以上的进行通信,同一时间只能是一对一。
实际举例:
Uart口 TX默认是置高的,MCU发送抄读2#计量模块数据指令时,两个计量模块RX都能收到数据,指定的计量模块2#通过TX回传数据,此时计量模块1# TX还是在置高,如2#回的数据是高电平,1#模块TX置高无影响,OK,MCU能正常接收。如2#模块回的是低电平,1#模块TX仍然置高,此时两个模块的TX的电平叠加到MCU端,高低叠加会是啥情况,MCU端到底是高还是中或者低呢(如图所示)?未知,都有可能。所以此情况下根本无法保证通讯的可靠性。
解决方案:
1:在计量模块与串口之间增加CD4051单端8通道多路开关芯片切换来实现一个串口对多个计量模块的通讯。
2:转换为485口通讯。