深刻理解UART
———————————————————————————————— 作者:
———————————————————————————————— 日期:
ﻩ
UART异步串行口
UART异步串行口简介
并行通信:是指利用多条数据传输线将一个资料的各位同时传送。它的特点是传输速 度快,适用于短距离通信,但要求通讯速率较高的应用场合。
串行通信:是指利用一条传输线将资料一位位地顺序传送。特点是通信线路简单,利
用简单的线缆就可实现通信,降低成本,适用于远距离通信,但传输速度慢的应用场
合。
UART 异步串行口的传输格式
异步通信以一个字符为传输单位,通信中两个字符间的时间间隔是不固定的,然
而在同一个字符中的两个相邻位代码间的时间间隔是固定的。
通信协议(通信规程):是指通信双方约定的一些规则。在使用异步串口传送一个
字符的信息时,对资料格式有如下约定:规定有空闲位、起始位、资料位、奇偶校验
位、停止位。通讯时序图如下:
开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0”作为
起始位,然后出现在通信线上的是字符的二进制编码数据。
2013普利策新闻奖 每个字符的数据位长可以约定为5 位、6 位、7 位或8 位,一般采用ASCII 编码。
后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇
数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。
最后是表示停止位的“1”信号,这个停止位可以约定持续1 位、1.5 位或2 位
的时间宽度。
至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,
下一个字符开始传送才又发出起始位。
每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的波特
率为110,150,300,600,1200,2400,4800,9600 等。
S3C2410的异步串行口
S3C2410 的UART(通用异步串行口)单元提供三个独立的异步串行I/O 端口,每个都可以在中断和DMA 两种模式下进行。UART支持的最高波特率达230.4kbps。每个UART通道包含2 个16 位FIFO 分别提供给接收和发送。
每个UART 包含波特率发生器,接收器,发送器和控制单元。。波特率发生器以PCLK或UCLK为时钟源。 发送器和接收器包含16 字节FIFO 寄存器和移位寄存器,当发送数据的时候,数据先写到西西弗斯FIFO 然后拷贝到发送移位寄存器,然后从数据输出端口(TxDn)依次被移位输出。被接收的数据也同样从接收端口(RxDn)移位输入到移位寄存器,然后拷贝到FIFO 中。 异步串行口的操作
数据发送操作
数据发送帧的格式是可编程的,它包含一个开始位,5 到8 个数据位,一个可选的奇偶位和一个或两个停止位,这些可以通过线性控制器(ULCONn智慧交通建设)来设置。发送器也能够产生发送中止条件。中止条件迫使串口输出保持在逻辑0 状态,这种状态保持一个传输帧的时间长度。通常在一帧传输数据完整地传输完之后,在通过这个全0 状态将中止信号发送给对方。中止信号发送之后,传送数据连续放到FIFO 中(在不使用FIFO 模式下,将被放到输出保持寄存器)。 数据接收操作
与数据发送一样,数据接收的帧也是可以编程的,它包含一个开始位,5 到8 个
数据,一个可选的奇偶位和一位或两位停止位,它们都是通过线性控制器(ULCONn)
来设置的。
接收器能够检测溢出错误,奇偶校验错误,帧错误和中止状况,每种情况下都将
会将一个错误标志置位。
UART 异步串行口的波特率发生器
每个UART 的波特率发生器为传输提供了串行移位时钟。波特率产生器的时钟源可以从S3C2410 的内部系统时钟或UCLK 中来选择。。波特率由时钟源(PCLK 或UCLK)16 分频然后被UART 波特率除数寄存器(UBRDIVn)指定的16 位除数决定。因此,UBRDIVn 的值可以按照下式确定:
UBRDIVn=(int)(PCLK/(bps*16))-1 , 其中bps为波特率。
例如,如果波特率为115200bps 且PCLK 或UCLK 为40MHz,则UBRDIVn 为:
UBRDIVn =(int)(40000000)(115200*16))-1
= (int)(21.7)-1
= 21-1 = 20
UART异步串行口波特率发生器的误差极限
UART传输10bit数据的时间误差应该小于1.87%(3/160)。
tUPCLK = (UBRDIVn + 1) x 16 x 10 / PCLK 实际的传输10bit所需时间。
tUEXACT = 10 / baud-rate 理想情况下传输10位需要的时间。
UART error=(tUPCLK – tUEXACT) / tUEXACT x 100%
异步串行口的相关寄存器
线路控制寄存器(ULCON)
线性控制寄存器,主要用来规定传输帧的格式。下面表格是线控制寄存器的地址
和位定义:
寄存器 | 地址 | 读/写 | 描述 戈尔巴乔夫近况 | 重置值 |
ULCON0 | 0x50000000 | 读/写 | UART通道0线路控制寄存器 重返阿富汗 | 0x00 |
ULCON1 | 0x50004000 | 读/写 | UART通道1线路控制寄存器 | 0x00 |
ULCON2 | 0x50008000 | 读/写 | UART通道2线路控制寄存器 | 0x00 |
| | | | |
ULCONn | 位 | 描述 | 初始状态 |
保留 | [7] | | 0 |
Infra-Red Mode | [6] | 决定是否用红外模式。 0 = 正常模式操作 1 = 红外Tx/Rx模式 | 0 |
Parity Mode | [5:3] | 指定奇偶产生的类型并在UART的传输与接收操作中检查。 0xx = 非奇偶 100 = 奇 101 = 偶 110 = 强制奇偶/选中为1 111 = 强制奇偶/选中为0 | 000 |
Number of Stop Bit | [2] | 指定多少个停止位将被使用对于帧结束信号。 0 = 每帧一个停止位 1 = 每帧两个停止位 | 0 |
Word Length | [1:0] | 显示每帧传输或接收的数据位的数目。两河口水电站 00 = 5位,01 = 6位 10 = 7位,11 = 8位 | 00 |
| | | |