S3C6410 轮询串口配置

来源:互联网 发布:js input 光标颜色 编辑:程序博客网 时间:2024/05/20 13:16

一, 串口设置

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

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

2. 数据数据配置  8N1


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

3. 设置串口模式


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

4. 使能发送接收FIFO

[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. 发送数据与接收数据


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

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

 


原创粉丝点击