1. UART使用标准的TTL/CMOS电平
2. 为了增强数据的抗干扰能力、提高传输长度,通常将TTL/CMOS逻辑电平转换为RS-232电平
S3C2440A 的通用异步收发器(UART)配有 3 个独立异步串行 I/O(SIO)端口,每个都可以是基于中断或基于 DMA 模式的操作。换句话说,UART 可以通过产生中断或 DMA 请求来进行 CPU 和 UART 之间的数据传输。UART 通过使用系统时钟可以支持最高 115.2Kbps 的比特率。如果是外部器件提供 UEXTCLK 的 UART,则 UART可以运行在更高的速度。每个 UART 通道包含两个的 64 字节的 FIFO 给发送和接收。
S3C2440A 的 UART 包括了可编程波特率,红外(IR)发送/接收,插入 1 个或 2 个停止位,5 位、6 位、7 位或 8 位的数据宽度以及奇偶校验。
1.UART LINE CONTROL REGISTER (设置传输模式)
2.波特率分频器(设置波特率)
UART 波特率分频寄存器
有 3 个 UART 波特率分频寄存器,在 UART 模块中包含了 UBRDIV0,UBRDIV1 和 UBRDIV2。URXHn 发送
数据为 8 位数据。
存储在波特率分频寄存器中的值(UBRDIVn)是用于决定如下的串行 Tx/Rx 时钟率(波特率):
UBRDIVn = (int)( UART 时钟 / ( 波特率 × 16) ) –1
( UART 时钟:PCLK,FCLK/n 或 UEXTCLK )
此处,UBRDIVn 应该是从 1 到(216-1),但只在使用低于 PCLK 的 UEXTCLK 时可以设置为 0。
例如,如果波特率为 115200 bps 并且 UART 时钟为 40 MHz,UBRDIVn 为:
UBRDIVn = (int)(40000000 / (115200 x 16) ) - 1
= (int)(21.7) - 1 [取最接近的整数]
= 22 - 1 = 21
寄存器 | 地址 | R/W | 描述 | 复位值 |
UBRDIV0 | 0x50000028 | R/W | 波特率分频寄存器 0 | – |
UBRDIV1 | 0x50004028 | R/W | 波特率分频寄存器 1 | – |
UBRDIV2 | 0x50008028 | R/W | 波特率分频寄存器 2 | – |
UBRDIVn | 位 | 描述 | 初始状态 |
UBRDIV | [15:0] | 波特率分频值 UBRDIVn > 0。 使用 UEXTCLK 作为输入时钟时,可以设置 UBRDIVn 为‘0’。 |
3.UART 控制寄存器 (设置时钟源,设置UART时钟方式)
4.UART TX/RX 状态寄存器 (用于判断状态)
5. UART发送和缓冲寄存器(若发送数据,把数据放到发送缓冲期中,若接收数据,从接收缓冲期中读取数据)