今天讲的UART
通用异步收发器(UART),应用频率最高的硬件通信设备;
SPI、I2C、
差分类:USB、ETH(网卡)、CAN(汽车用)、LIN(汽车用)
如何定义一个串行通信?
引入概念:
同步/异步:在整个通信中,有时钟线即是同步通信,没有时钟线即是异步通信,在异步通信中,以固定的传输速率进行通信,单位时间传输固定量数据位。所以同步通信准确,但需要一个时钟线,异步有一定误差,但是不需要时钟线,占用资源有差别;
单通/双通:在串行通信中,有一个通信方向的问题,单通只有一个方向,双通是两个方向可以传输数据。双通又分全双通和半双通,全双通是同时可以收发的,需要两根线,分别负责两个方向,半双通使用一根线,管脚在同一时刻只能处于发送或接受状态。
UART即是异步全双通通信外设,即只有数据线,没有时钟线,并且有两根数据线。
UART的协议:RS232/RS485/RS422现在我们主要了解RS232,这是目前工业生产中最常用的协议;
RS232的电气特性和帧格式:
电气特性:
235引脚分别用于发送、接收和接地。
平时利用TTL或者CMOS调制电平,其中TTL是0~5V,CMOS是0~3.3V,但事实上,我们平时把0~0.8v作为0,2.4~3.3v作为1。工业中,在需要抗干扰能力强的场景中,所以RS232使用更加宽的电平差即-15v~-3v为0;3v~15v为1。这就需要一个电平转换芯片。
帧格式:
通信过程中,是只靠传输速率就可以形成通信的稳定结构么?事实上不足以稳定,而应当把数据处理成包,所以需要帧格式对数据包进行处理。
一个数据包(帧)包含:
1. 起始
2. 有效数据
3. 校验
4. 结束
起始位:通常以一位低电平起始,称为s位,接下来是有效数据;
有效数据:通常使用的是8位或者9位,通常不会把有效数据位数设置太长,以免抗干扰能力下降。
校验:分为奇校验和偶校验,对有效数据所有为,1的个数是奇数还是偶数,如果使用奇校验,那么奇校验置1,使用偶校验则清0。若校验得到有跳变,则可以申请该帧数据重发。
结束:以高电平结束,根据帧格式,可能是0.5/1/1.5/2位高电平,有时可以用于同步传输速率,消除传输过程中的时间差。
常见数据保存格式:8N1即八位有效数据,无校验,1位结束位,也就是说一帧有效数据为10位。
传输速率(比特率):单位:比特每秒(bit/s)
波特率:与比特率没有完全的映射关系,以码元为单位的传输速率,单位为B/s(码元每秒)
外设名UART在代码中也体现为一组连续的地址,通过数据的读取和存储实现通信。因为数据都是以帧为单位传输,所以每个管脚对应一个缓冲区。