1-14 串口在S3C2440上的原理、配置与驱动实现

(本节笔记的具体实验代码,在这里:https://github.com/elvinsys/arm_tq2440/tree/master/1_uboot/1-14.serial


一、  基本概念

    1.  作用:作为数据传输的途径,或者作为控制台来提供用户对设备的控制方式

    2.  通讯格式的几个概念

        2.1  波特率:每秒传输bit的个数,常用的波特率有38400/115200

        2.2  常用的参数:

            起始位:当线路空闲时,电平为高,一旦检测到一个下降沿,则视为一个起始位

            数据位:一帧中实际有效的数据的位数

            校验位:用于检测数据传输的正确性

            停止位:表示这帧数据的结束

    3.  引脚:

        RS232——9针引脚串口

        2 : RXD : 接收脚

        3 : TXD  : 发送脚

        5 : GND : 接地脚


二、  串口驱动程序设计

    1.  串口初始化——    void uart_init()

        (先touch uart.c,把uart.o加入到Makefile中)

        查看底板原理图和核心板原理图可得知:

        TXD0 : TXD0 / GPH2

        RXD0: RXD0 / GPH3

        1.1  配置引脚功能:GPHCON  0x5600 0070

                GPH2    [5:4]    10    :    TXD[0]

                GPH3    [7:6]    10    :    RXD[0]

        1.2  设置串口数据格式:ULCON0  0x5000 0000

Word Length [1:0] 11 设定为8bit
Number of stop [2] 0 one stop bit 1位停止位
Parity Mode [5:3] 0XX No Parity 无校验

        1.3  设置串口工作模式:UCON0  0x5000 0004

        (若在操作系统的支持下,可选择使用中断或DMA模式,但在bootloader中,一般采用轮询的工作模式)

Receive Mode [3:2] 01 polling mode
Transmit Mode [1:0] 01 polling mode
        1.4  设置UART波特率(UART BAUD RATE DIVISOR REGISTER)

            公式是:UBRDIVn = (int)(UART clock / (buad rate x 16) -1)

            UBRDIV0  R/W  0x5000 0028

            UART clock = PCLK = 50MHZ

            (#define PCLK 500 0000)

            (#define BAUD 115200)

            UBRDIV0 = (int)(PCLK / (BAUD X 16)-1);


    2.  发送数据——void putc (unsigned char ch)

        2.1  检查UTRSTAT0  R  0x5000 0010

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值