11. 通用异步收发器 UART
11.1 UART原理,部件使用方法
11.1.1UART原理
UART是Universal Asynchronous Receiver Transmitter的缩写,即通用异步收发器
UART用来传输串行数据:
- 发送时,CPU将并行数据写入UART,UART按照一定格式在一根电线上串行发出
- 接收时,UART检测另一根电线上的信号,收集串行数据存放在缓冲区,供CPU读取
连线图:
图中收发各有一条线,有的设备比如SIM卡,只有一条线,收发共用。
- 2条线可以实现全双工
- 1条线可以实现半双工
电平逻辑
- TTL/CMOS
- 5V,3.3V,2.5V/1.8V 表示1
- 0V,表示0
- RS-232
- 3~12V 表示1
- -3~-12V表示0
传输结构
- 位,最小单元
- 帧,不可分割的若干位
- 开始位
- 数据位
- 校验位(可选)
- 停止位
波特率
每一位所需时间的倒数,即每秒可以传输的位数。
波形
上图是一个7位数据位的帧波形。
- 空闲状态,高电平
- 拉低1位,表示帧开始
- 然后按照次序,按照约定的每帧数据位数,传输数据
- 数据位全部传输完成后,传输校验位,校验方式提前约定,可以是奇校验,也可以是偶校验
- 下一位是停止位,拉高电平
- 停止位长度可以设置,1,1.5,2,为了保护各个帧,防止错乱
11.1.2 2440的UART
3个通道
- UART0
- UART1
- UART2
工作模式
- 中断模式
- DMA模式
收发过程
发数据
- 2440的UART由深度64的FIFO控制
- CPU写入数据到FIFO
- UART将FIFO的数据复制到“发送移位寄存器”Transmit Shifter
- Shifter将数据发送的TxDn数据线上
收数据
- 数据线RxDn上的数据进入接收移位器,Receive Shifter
- Shifter复制数据到FIFO中
- CPU从FIFO中读取数据
11.1.3 2440的UART使用
使用前的设置
- 波特率
- 传输格式
- 数据位宽度
- 是否使用校验位
- 奇校验还是偶校验
- 多少个停止位
- 是否使用流量控制
- 设置管脚