提示:本文属于技术的交流,如有抄袭请联系删除。
概要
众所周知,485通信可以悬挂多个设备进行通信,而RS232通讯一般用于两个设备之间的通讯,因此本文主要实现单个MCU通过一个RS232芯片同时与多个设备进行通讯。
`
硬件部分
- 无法通讯的原因
硬件端的修改主要是在RS232芯片的TX与单片机的RX连接中添加一个上拉电阻,若不添加该电阻,RS232在进行多个设备通讯中TX端向单片机发送数据信号会被拉低导致单片机无法接受到下端设备发送的数据,信号如图1。
图1 - 修改后的原理图
软件部分
软件部分以STM3为例,默认中的USART1的Pin工作模式一般使用复用推挽输出( GPIO_Mode_AF_PP ),而使用该模式数据段无法将下位机的数据进行接收,需要更改为复用开漏输出 ( GPIO_Mode_AF_OD )。两个模式的区别如图2和图3
图2 (GPIO_Mode_AF_PP)
图3 (GPIO_Mode_AF_OD)
小结
本文主要分享只使用单个RS232芯片进行多个设备通信的方法,实验只测试了3个从设备与一个主设备的通讯,且通讯是必须要对从机进行编号以识别是哪个设备,至于悬挂多个设备时传输的数据是否稳定,还需进一步的测试。