UART使用参考
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配置¶
-
添加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