UART使用参考

version 1.0


1. 概述

在SSD20X平台上,提供了4组uart(其中包含一组fuart),各MODE对应的pin脚如下图说明:

UART MODE RX TX CTS RTS
UART0 PM_UART_RX PM_UART_TX NA NA
UART1 PAD_UART1_RX PAD_UART1_TX NA NA
UART2 PAD_GPIO8 PAD_GPIO9 NA NA
FUART(不带流控) PAD_FUART_RX PAD_FUART_TX NA NA
FUART(带流控) PAD_FUART_RX PAD_FUART_TX PAD_FUART_CTS PAD_FUART_RTS

2. UART平台配置说明


2.1. Kernel下的配置

uart部分需要配置的主要是padmux。


2.2. Padmode配置

  1. 添加padmux设定,打开kernel\arch\arm\boot\dts\infinity2m-ssc010a-s01a-padmux-display.dtsi

    Fuart带流控:使用MODE1:默认波特率是9600

    <PAD_FUART_RX          PINMUX_FOR_FUART_MODE_1  MDRV_PUSE_FUART_RX>,
    <PAD_FUART_TX          PINMUX_FOR_FUART_MODE_1  MDRV_PUSE_FUART_TX>,
    <PAD_FUART_CTS        PINMUX_FOR_FUART_MODE_1  MDRV_PUSE_FUART_CTS>,
    <PAD_FUART_RTS        PINMUX_FOR_FUART_MODE_1   MDRV_PUSE_FUART_RTS>,
    

    Fuart不带流控:使用MODE2:默认波特率是9600 // /dev/ttyS2

    <PAD_FUART_RX    PINMUX_FOR_FUART_MODE_2    MDRV_PUSE_FUART_RX>,
    <PAD_FUART_TX    PINMUX_FOR_FUART_MODE_2    MDRV_PUSE_FUART_TX>,
    

    uart0配置:默认波特率是115200 // /dev/ttyS0

    <PM_UART_RX    PINMUX_FOR_UART0_MODE_1    MDRV_PUSE_UART0_RX >,
    <PM_UART_TX    PINMUX_FOR_UART0_MODE_1    MDRV_PUSE_UART0_TX >,
    

    uart1配置:默认波特率是9600 // /dev/ttyS1

    <PAD_UART1_RX    PINMUX_FOR_UART1_MODE_1   MDRV_PUSE_UART1_RX>,
    <PAD_UART1_TX    PINMUX_FOR_UART1_MODE_1   MDRV_PUSE_UART1_TX>,
    

    uart2配置:默认波特率是9600 // /dev/ttyS3

    <PAD_GPIO8    PINMUX_FOR_UART2_MODE_2    MDRV_PUSE_UART2_RX>,
    <PAD_GPIO9    PINMUX_FOR_UART2_MODE_2    MDRV_PUSE_UART2_TX>,
    

配置完成后,重新编译kernel,替换kernel image到project烧录。


3. UART使用说明


3.1. 确认uart pin使用的/dev/ttySx

通过查看dts,确认uart对应的是哪路serialx,serialx对应的就是/dev/ttySx

图3-1 查看serialx


3.2. 应用层如何使用

应用层使用参考如下链接:

https://blog.csdn.net/aaron_111/article/details/84876508


4. uart驱动架构及debug方法

图4-1 Uart驱动主要框架图

从上图可以看出来驱动的主要工作就是把uart controller和对应的pad串接起来。

可以通过以下寄存器确定对应的uart controller和padmux有没有串起来:

  • Uart controller

    0x101e 0x53(16bit)

    图4-2

    图4-3

  • Padmux

    0x101e 0x03(16bit)

    图4-4