• 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++);
    }
  • 相关阅读:
    嵌入式 coredump
    CentOS7 systemctrl管理的服务,open files的神坑
    Linux 服务器网络流量查看工具
    shiro源码篇
    google guava
    Docker虚拟化管理:30分钟教你学会用Docker
    Shiro结合Redis实现分布式或集群环境下的Session共享
    Springboot整合redis
    Git分支操作方法
    Redis启动和在注册到windows服务
  • 原文地址:https://www.cnblogs.com/souroot/p/11144998.html
Copyright © 2020-2023  润新知