mini2440系统引导(五)串口UART

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