串口的硬件介绍
UART的全称是Universal Asynchronous Receiver and Transmitter,即异步发送和接收。
串口在嵌入式领域,应用十分广泛,主要的用途为:
- 打印调试信息
- 外接各种串口设备
串口的结构简单,通过三根线(发送,接收,地线)即可:
串口的参数
- 波特率:每秒传输多少个bit
- 开始位:先发出一个逻辑“0” 信号,表示传输数据开始
- 数据位:可以是5~8位逻辑“0”或者逻辑“1”
- 校检位:数据位加上该位之后,使得“1” 的个数应为偶数(偶校检)或者为奇数(奇校检)
- 停止位:数据传输的结束标志,发出逻辑“1”信号
串口协议
怎么发送一个字节,比如 ‘A’?
'A’的ASCII 码为 0x41,二进制就是 01000001
传输数据时,先发送低位,再发送高位
- 开始时,电平从逻辑“1” 变为逻辑“0” ,并保持1bit的时间,表示开始传输数据
- 接收数据的设备,在低电平处开始计时
- 依次驱动TXD的电平,接收数据的设备依次读取RXD的电平获取数据
注意:两者的波特率(每bit占据的时间)要一致
逻辑电平不代表真实的电平,逻辑“1”和 逻辑“0” 是认为规定的。
比如,在TTL电平下,传输A的波形是:
在x到5v之间,就认为是逻辑“1”高电平,在0到y v之间就认为是逻辑“0”低电平
在RS-232电平下,传输"A" 的波形为:
在-3V 到 -12V 之间 为 逻辑“1” 高电平,在 3V 到 12V之间,为逻辑“0” 低电平
通常,232/485电平是通过电平转换芯片,将TTL电平转换成232/485电平