S3C6410 轮询串口配置

一, 串口设置

串口需设置为 8位数据位 1位停止位 0位校验位  8n1 ,波特率 115200 ,无流控。

1. 配置GPIO引脚为串口功能

2. 数据数据配置  8N1

S3C6410 轮询串口配置

使该寄存器设置为 0x03 。正常模式 8位数据位 1位停止位 无校验位

3. 设置串口模式

S3C6410 轮询串口配置

使该寄存器设置为 0x05 。 发送接收设置为 中断或者轮询模式 其他位设置为零

4. 使能发送接收FIFO

S3C6410 轮询串口配置

[7:6]  [5:4] 用于中断

设置[0] 位为 1 使能FIFO 其他设置为零

5. 设置UMCONn 为零 关闭流量控制

6. 设置波特率

波特率设置根据公式

DIV_VAL = UBRDIVn + (num of 1’s in UDIVSLOTn)/16
DIV_VAL = (PCLK / (bps x 16 ) ) −1

设置两个寄存器

UBRDIV n  即为公式 UBRDIVn

UDIVSLOT n 这个寄存器中 1 的个数 即为 (num of 1’s in UDIVSLOTn)

波特率 115200 PLCK = 66.5MHz

计算得 DIV_VAL = (66.5*10^6/ (115200 x 16 ) ) −1 = 35.08

35.08  =  35 + 0.08 即 UBRDIVn 设置为 35

(num of 1’s in UDIVSLOTn)/16 = 0.08  num of 1’s in UDIVSLOTn = 1

7. 发送数据与接收数据

S3C6410 轮询串口配置

发送数据 首先读取串口状态寄存器 UFSTATn 保证发送FIFO 未满, 即 [14] 位不能为1 。往URXHn 寄存器中写入一个字节 即发送

接收数据 首先读取串口状态寄存器UFSTATn 保证接收FIFO 有数据 即[5:0] 不为零 。读取 URXHn 寄存器的值 即受到一个字节的数据。[6] 判断接收FIFO 是否满。