本文重在介绍UART/I2C/SPI三种通信接口的区别与联系,帮助理解这三种接口,理解之后无论是采用单片机、FPGA或是其他方式实现读者朋友自选。后面可能会基于某种实际应用给出基于FPGA的一种实现思路,条条大路通罗马,相信在理解的基础上会有更多的实现方式。
1、UART(通用异步收发传输器)(UniversalAsynchronousReceiver/Transmitter),通信双方接三根线,RX、TX和GND,TX用于发送数据,RX用于接受数据,双方收发交叉对接,支持全双工方式。
因为没有时钟控制,什么时机开始发数据,且保证对方正确接收?
如A发数据到B,平时空闲时A.TX和B.RX.保持1,当A.TX先发0作为起始位,告诉B请注意,我要发数据了。然后就开始发数据,数据位可配置,通常是5位,6位,7位,8位数据位。一帧数据发完后,A.TX给个高电平即停止位告诉B.RX我发完了一帧。如果开启校验位,在发停止位之前发送个校验位,一般短距离有线传输出错的概率非常小。如果还有数据,则重复前面的操作。
一般软件配置串口,有波特率,数据位、停止位、校验位。分别表示传输速度,一帧数据的长度,以及发完告知停止,发完是否校验。看起来参数很多,常见的参数&#x