UART
来源:互联网 发布:xml html区别 知乎 编辑:程序博客网 时间:2024/06/11 18:30
1.UART 的原理与标准
在异步传输中,UART会发送起始位, 5bit-8bit的数据位,奇偶校验位,停止位(1bit、1.5bit、2bit)
起始位: 由transeiver 向receiver发出,以通知将有数据发出,双方都要同步时钟。 双方的时钟的误差不能超过10%,
为低(idle 状态为高),与idle状态时的电平相反
数据位:低位先发送(LSB)
每个bit发送的时间是相等的,这样receiver 就可以在每个bit 发送期一半的时候检测数据是1还是0.
例如,如果需要2s来发送1bit数据,receiver会在1s过去后检查是1还是0,再在2s后去检查下一个bit数据。
奇偶校验位: 用1把数据位为1的个数补为奇偶个。 奇校验更可靠点(至少有一个bit会传送)
停止位:为高,与idle状态的电平一样,在下一个字符开始发送前会有一个delay,以求同步
如果stop bit 没有出现, UART会向主处理器报告Framing error。 通常导致Framing error 的原因是:sender 和receiver的时钟没有跑在一个速度上。
无论数据是否被接收正确与否, UART都会丢弃start , parity ,stop bit。
如果没有数据传输时,tx 会处于idle状态
on = circuit closed = low voltage = current flowing = logical zero = space = 0
off = circuit open = high voltage = current stopped = logical one = mark = 1
2.UART的分类
RS232
RS422
RS423
RS449
RS485
3.UART的实现
3.1 Features
3.2 HW
3.2.1 block diagram
clock generator, usually a multiple of the bit rate to allow sampling in the middle of a bit period
input and output shift registers
transmit/receive control
read/write control logic
transmit/receive buffers ( optional )
parallel data bus buffer ( optional )
FIFO buffer memory ( optional )
3.2.2 HW pins
TX transmit data
RX receive data
CTS clear to send : acknowleges RTS and allow DTE to transmit.
RTS request to send : tells DCE to prepare to accept data from DTE.
DCD data carrier detect : tells DTE that DCE is connected to phone line.
DSR data set ready : tells DTE that DCE is ready to received command/data
DTR data terminal ready : tells DCE that DTE is ready to be connected.
RI ring indicator : tells DTE that DCE has detected a ring indicator on the telephone line.
GND
3.3 功能描述
3.3.1 模式选择
3.3.2 Clock 与Baud rate
18.432 MHz: 300, 600, 1200, 2400, 4800, 9600, 19200 Bd
22.118400 MHz: 300, 600, 1200, 1800, 2400, 4800, 7200, 9600, 14400, 19200, 38400, 57600, 115200 Bd
16 MHz: 125000, 500000 Bd
24 MHz: 4800 Bd
3.3.2.2 auto baudrate
3.3.3 FIFO 管理
3.3.3.2 DMA
3.3.4 中断管理
IER ; enable the interrupt
IIR: 通过查询此寄存器,即可知道有什么interrupt
优先级 interrupt source reset method 1 recevier line status 存在 OE, FE, PE or BI error FE, PE, BI 可通过读取RHR , OE 要通过读取LSR 2 RX 超时(见3.3.8) 在RX FIFO 中存在超时的数据 读取RHR 2 RHR 中断 不用FIFO :有字符传过来了
使用FIFO: FIFO 里的数据超过了设定的level 读RHR 知道中断消失 3 THR中断 不用FIFO:已经发送一个字符(THR为空)
使用FIFO: TX FIFO 低于设定的level 给THR发数据, 知道中断消失 4 Modem status MSR中的DSR/CTS 不为零 读 MSR 5 XOFF 中断/特殊字符中断 收到XOFF/特殊字符 对于XOFF收到XON; 对于特殊字符,读IIR 6 CTS, RTS CTS/RTS 从active(低) 变为inactive(高) 读IIR
3.3.5 硬件流控
recevier block (A) 检测 receiver FIFO的数据, 如果低于设定的level, 则RTS被拉低,即对方(B)的sending block 的CTS 被拉低,如果对方(B)的sending block 有数据要发送,它会先查询它自己的CTS 的状态,如果有效(为低), 则发送数据给A
软件需要实现的地方:
1.响应Modem status 的中断
2.如果是CTS被置低了,则记录下来(用一个全局变量gCTS 记录下来)
3.在发送数据时,根据gCTS来判断是否enable tx interrupt
4.在tx中断中,根据gCTS 来判断是否要往THR写
3.3.6 软件流控
接收方发现接收不过来了,则发送XOFF给发送方,等可以接收了,再发送XON给发送方
Code Meaning ASCII Dec Hex Keyboard XOFF Pause transmission DC3 19 0x13 CTRL+S XON Resume transmission DC1 17 0x11 CTRL+Q对于接收方的transiver:在发送中断被触发时,先发送XON, 再发送数据
对于发送方的receiver:在收到XON时,enable tx 中断,收到XOFF时,disable 发送数据
3.3.7 Error Detection
通过读取LSR, 可以得知帧传送是否存在错误
1. BI Break condition – RX 超过一帧时间(包括start、parity bit、stop bit) + 1bit 为低
2. FE Framing error -- 接收数据没有合法的stop bit
3. PE Parity error -- 奇偶校验时错误
4. OE Overrun error -- 在接收FIFO满时,还有数据传来
3.3.8 Time out 与 Break conditions
Time out : 当RX 在4word + 12bit 的时间里为高, 则认为 RX 处于idle 状态;如果此时RX FIFO里有数据,则会产生timeout 中断。
Break: 见3.3.7.1
3.3.9 power management
Sleep mode:
3.4 寄存器描述
Name
功能
值
DLL Divisor latches low DLH Divisor latches high RHR Receive holding register THR Transmit holding register IER interrupt enable register IIR Interrupt identification register FCR FIFO control register LCR Line Control Register MCR Modem Control Register LSR Line Status Register MDR Mode definition register EFR Enhanced feature register TCR Transmission Control register MSR Modem status register SPR Scratchpad register TLR Trigger level register SFLSR Status FIFO line status register UASR autobauding status register SCR Supplementary control register SSR Supplementary status register XON/ADDR XOFF
4.UART的软件实现
5.与UART相关的通信协议
5.1 xmodem
5.2 FBus
5.3 AT 命令
http://en.wikipedia.org/wiki/Hayes_command_set
6.UART 的应用
6.1 Infrared
6.2 Bluetooth
7.UART的心得
参考链接
http://en.wikipedia.org/wiki/Uart
- UART
- UART
- UART
- UART
- UART
- UART
- UART
- UART
- uart
- UART
- UART
- UART
- UART
- UART
- UART
- UART
- UART
- UART
- 进销存管理系统
- 2010 新的开始
- THE MAKING OF A NATION #4 - First European Settlers-最初的欧洲的移民者
- 牛人牛贴,轻松一下
- Properties Editor
- UART
- GCC-3.4.6源代码学习笔记(8)
- java+jstl 单篇文章分页和列表页面的分页 代码
- android 横竖屏
- oracle 闪存中找出delete的数据
- Django 1.0 中文文档-----查询方法参考
- Ejabberd安装过程
- Studying note of GCC-3.4.6 source (8)
- .Net 连接池的配置Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.”