Uart Q&A

Q1:Uart1 mode如下图配置并更新kernel后uart1功能不生效?

首先考虑功能复用的影响,经查询,dts文件中有其他地方用到了PAD_UART1_RX,建议用户搜索关键字进行排除。

Q2:Uart 常规mode 配置有哪些pin可以配置?

如下,在kernel对应使用的*_padmux.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>,

Q3: Uart1 mode按下图配置并更新kernel后,uart1功能不生效。

首先考虑功能复用的影响;本案例为dts文件中多处使用PAD_UART1_RX造成。

如出现此类问题,请自行搜索关键字进行初步排除。

Q4:外部一直往uart1的RX送数据,上电过程中,出现uart1无法接收到数据的情况。

分析发现,因底层的波特率设置不成功导致无法接收数据,可尝试修改串口的默认波特率为所需的值,kernel/drivers/tty/serial/serial_core.c

![](media/uart3.png)

Q5: 串口log已经匹配RX/TX,但无串口log输出。

串口工具设置波特率为115200(uart0 默认值),数据位设置为8,奇偶校验关闭,另外需关闭串口工具的流控。

...