一种单总线串口通信的调试方法

单总线的优点:

  1. 节省IO口,发送时可以将单片机的RXD设置为普通IO进行软件模拟发送,发送完设置为串口接收。
  2. 避免通信干扰,由于是通过IO口对三极管/MOS管进行拉高拉低,外部信号不易对IO口进行干扰,EMI(电磁干扰)也不容易单片机造成影响。

单总线的缺点:

  1. 异步半双工
  2. 通信速率不能太高

硬件电路如下:

一种单总线串口通信的调试方法_第1张图片

一种单总线串口通信的调试方法_第2张图片

该电路中,数据通过TXD发出,当TXD发出高电平信号时,三极管Q2导通接地,此时

总线上为低电平,当TXD发出低电平信号时,三极管Q2截止,由于上拉电阻的存在,此时

总线为高电平信号;同理,RXD接收数据时,总线为高电平时RXD为低电平,总线为低电平

时RXD为高电平;Q1、Q2两个三极管在电路中类似非门,发出的数据和接收的数据经过三

极管后将被取反,因此,总线上读出的数据是被取反后的数据,但是由于主机和从机都使

用了该串口转总线电路,实际接收到的数据是被取反了两次的数据,取反两次的数据和被

取反之前的数据保持一致。

软件设计:

1.自发自收

正常情况下,该电路会出现自发自收的情况,导致通信不正常。所以需要在发送时禁止接受中断,发送完再打开。

  1. 总线被TXD拉低,正常状态下,串口空闲时是高电平,此时三极管打开,总线被拉低,导致无法接收数据,所以发完要禁止发送,同时将TXD设置为普通IO口并拉低。
  2. 由于以上的这些特性,通信是异步半双工,所以在通信协议上需要设置为主从模式,主机间隔一定时间发送数据,从机需要立即响应,同时从机要开一个定时器,当超时没有接收到数据,需要主动发起握手,如果握手失败,需要进一步处理,避免出现故障。

通信效果如下,粉色为从机的TXD,蓝色为从机的RXD

一种单总线串口通信的调试方法_第3张图片

你可能感兴趣的:(硬件,嵌入式硬件)