我的使用场景是: 用一个设备作为转接CAN总线与485总线的转换, 虽然CAN总线可以进行同时接收与发送数据(CAN的仲裁机制与重发机制),但是485总线并不能保证同时接收与发送数据。 发送485数据时就接收不到485数据了。 我的解决思路是: 485总线上的A、B两条信号线接上2块485接口芯片,接入到同一个STM32的2个不同串口上, 如果专用与处理485总线接收数据的串口接收到“并非此时485发送串口发出的数据”时,则判断是这时候485总线上有别的设备在发送数据立即停止当前的485发送操作,并从485串口接收数据中解析出别的设备的发送数据。 问一下有处理过485通讯的大佬帮我看一下我这个解决思路是否可行,谢谢! 如果485总线的底层通讯原理上讲这个方案就不可用,那我就想过另一个解决思路来处理。 补充一下,接入第三方的485设备只有A、B两条信号线,不是4条线能够全双工通讯的情况。 |
首先CAN总线也不可以同时接收和发送数据 就是因为CAN不能同时收发 所以才有仲裁和重发 来保证数据线上不存在收发同时进行的情况 这是通过硬件禁止收发数据同时到达总线 知道这一点的话就好办了
485也是一样的 485发送的数据用CAN接收 当前CAN处于接收忙绿状态 不会发送数据的 485发送完成后立即切换到接收状态等待指令 CAN接收完成以后才会开始发送数据 此时485已经处于接收状态了 可以接收数据了 不需要怎么处理
评分
查看全部评分