单线收发 | 硬件UART
1.应用环境
应用电路中,由于空间限制,无法采用两线通信接口,只允许单线通信,而采用单总线(1-wire)协议,存在程序繁琐、速度慢等问题,采用自定义单总线协议也不可取。
因此我们提供该问题解决方法,使用通用硬件串口,将原来TX、RX合为一线通信;程序上与原来使用方法一样,只需简单修改IO操作,实现最大通信波特率可达500K(最大波特率由MCU决定)。
2.软件实现
只有一线,不能同时收发,此时必须存在一个主机A,和从机B。
开始A处于发送状态,B处于接收状态,在A发送后,A切换为接收状态,不再发送,B收到数据后,B开始发送,B发送完成切换为接收状态。
如果A发送后,A在一定时间内没有收到B返回的数据,可以在A程序中添加超时,A再次发送。
由于TX、RX接在一起,所以在RX接收前,应初始化串口,TX IO设置为输入、不上拉状态,避免影响信号;在TX发送前,应关闭串口接收、关闭串口中断,TX IO设置为推挽输出,RX IO设置为输入不上拉,避免影响信号。
芯片型号 | ROM (bytes) | RAM (bytes) | IO | ADC (12bit) | HIRC | Timer | 通讯接口 | 封装 |
MC51F003A4 | 16K | 512 | 18 (最多) | 12 | 32M | 4*16bit | SPI:1 UART:2 | SOP20/16/8 TSSOP20 |