博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mini2440系统引导(五)串口UART
阅读量:4329 次
发布时间:2019-06-06

本文共 1681 字,大约阅读时间需要 5 分钟。

S3C2440A 的通用异步收发器(UART)配有 3 个独立异步串行 I/O(SIO)端口,每个都可以是基于中断或基

于 DMA 模式的操作。换句话说,UART 可以通过产生中断或 DMA 请求来进行 CPU 和 UART 之间的数据传输。
UART 通过使用系统时钟可以支持最高 115.2Kbps 的比特率。

 

串口通信对数据格式有如下约定:规定有空闲位、起始位、资料位、奇偶校验位、停止位。

起始位:先发一个逻辑“0”信号,表示传输字符的开始;

数据位:紧接在起始位之后。数据位的个数可以是4、5、6、7、8等,从最低位开始传送,靠时钟定位。

奇偶校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或(奇校验),以此校验数据传送的正确性。

停止位:它是一个字符数据的结束标志。

空闲位:处于逻辑“1”状态,表示当前线路没有数据传送。

 

UART初始化:1.设置波特率; 2.设置数据传输格式;3.选择通道工作模式;

 

一.设置波特率:(UBRDIV)

在s3c2440中,通过UBRDIV(p352)寄存器可以设定UART的波特率。Uart0、Uart1、Uart2分别对应UBRDIV0,UBRDIV1、UBRDIV2

      到底UBRDIV寄存器中的值与波特率有何关系?

      UBRDIV=(int)(UART clock / (buad  rate *16))-1

(UART clock:PCLK or FCLK/ n or UEXTCLK)

如波特率为115200bps,UART时钟为40MHZ

UBRDIV =(int) (40MHZ /(115200*16))-1

二.设置数据传输格式(ULCON)

在s3c2440中,通过ULCON,可以设置传输格式(有多少个数据位、是否使用校验位、是奇校验还是偶校验,有多少个停止位、是否使用流量控制)

Uart0、Uart1、Uart2分别对应ULCON0、ULCON1、ULCON2.

 

三.设置通道工作模式(UCON)

在s3c2440中,通过UCON(page342),可以设置UART通道的工作模式,(中断模式、查询模式、或DMA模式)

Uart0、Uart1、Uart2分别对应UCON0、UCON1、UCON2.


====================UART FIFO===========================

UART FIFO 控制寄存器UFCON


 

当 UART 未达到 FIFO 触发深度或在带 FIFO 的 DMA 接收模式中 3 字周期期间没有收到数据时,将发生 Rx

中断(接收超时),用户应该检查 FIFO 状态并读出剩余部分。

UART TX/RX 状态寄存器UTRSTAT


UART FIFO 状态寄存器UFSTAT


 

UART 发送缓冲寄存器UTXH

UART 接收缓冲寄存器URXH

以下代码是初始化uart0的范例

void Uart_Init(int pclk,int baud){    int i;    if(pclk == 0)    pclk    = PCLK;    rUFCON0 = 0x0;   //UART channel 0 FIFO control register, FIFO disable    rUMCON0 = 0x0;   //UART chaneel 0 MODEM control register, AFC disable    rULCON0 = 0x3;   //Line control register : Normal,No parity,1 stop,8 bits    rUCON0  = 0x245;   // Control register    rUBRDIV0=( (int)(pclk/16./baud+0.5) -1 );       for(i=0;i<100;i++);}

 

转载于:https://www.cnblogs.com/souroot/p/11144998.html

你可能感兴趣的文章
ADO.NET基础必备之DataSet
查看>>
Valid Palindrome
查看>>
Python 多线程应用
查看>>
默认函数及运用
查看>>
加班与效率
查看>>
js题集8
查看>>
Rancher 1.6 版本 只能在 linux 下用
查看>>
cocos2d-x游戏开发系列教程-中国象棋06-游戏规则
查看>>
拉马努金,天才之超越
查看>>
[LeetCode] First Bad Version
查看>>
java面试题04
查看>>
js-dom-动态创建html标签时,name属性的初始化问题
查看>>
sql server 索引总结一
查看>>
Struts2之页面取得当前actionName
查看>>
.Net 面试题目尝试回答
查看>>
字符 字符串 字符数组 字符串指针 指针数组
查看>>
关于抽象和具体
查看>>
测试的第二重境界:站在Bug之上
查看>>
阻塞、非阻塞、同步、异步之个人理解
查看>>
多线程NSThread
查看>>