作者:玩转嵌入式
链接:https://www.zhihu.com/question/644689459/answer/3399780866
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UART直连间的通讯只能是一对一的,无法实现一对多通信。
1.UART无法实现一对多通信
UART是最基本的通信方式,单片机上基本都有UART片上资源,具有两个引脚,TXD和RXD,在与通信设备连接时双方要交叉连接。
UART
UART是异步、全双工、串行通讯,也就是常说的串口通信。UART空闲时的电平为高电平,要发送数据时,TXD管脚会拉低电平,这时对方可以接收到数据。
但是对方如果要发送数据的话,会把TXD拉低,此时主机和其他从设备的TXD会被拉低,一个设备要拉低电平,而另一个设备却要拉高电平。这样电平逻辑就出现问题了。
不能一对多
2.什么是一对多通信
所谓一对多通信,就是在一组网络中有多个设备可以实现数据的交换。而现在的拓扑结构中,要求一个主机和多个从机。主机控制总线,从机可以寻址。
比较常用的组网通信有RS485、CAN等。
RS485一对多通信
RS485在工控行业应用广泛,一个主机控制多个从机,实现数据采集和控制。而CAN总线在汽车上应用广泛,一台CAN主机控制多台CAN从机,实现组网。
3.UART如何实现一对多
UART直连无法实现一对多通信,可以通过加收发器扩展为多机通信。如上面提到的RS485接口。
RS485电路
单片机的UART口和RS485收发器,如SP3485,就可以实现RS485的一主多从机通信。每个从机都有一个唯一的地址,通讯报文中含有地址信息,通过从机地址实现主机对每个从机的数据查询和数据写入。
总之,UART设备直连无法实现一对多数据通信,但是可以通过加收发器扩展的方式实现多机通讯。
以上就是这个问题的回答,如有任何问题都可以留言讨论。