UART
介绍uart的配置和调试方式
模块介绍
UART 是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。
功能介绍
内核通过uart实现控制台,同时某些外设如蓝牙可通过uart与主控进行通信。 k1平台支持9路uart设备可根据需要配置开启uart后连接外设使用
源码结构介绍
uart控制器驱动代码在drivers/tty/serial目录下:
drivers/tty/serial
|--serial_core.c #内核uart框架接口代码
|--pxa_k1x.c #k1 uart驱动
关键特性
特性
特性 |
---|
支持硬件流控(uart2,uart3) |
支持DMA传输模式 |
支持中断模式 |
支持RS485/RS232串口协议 |
支持64B RX/TX fifo |
k1平台支持9路可配置的uart |
性能参数
- 波特率最高支持3M
配置介绍
主要包括驱动使能配置和dts配置
CONFIG配置
CONFIG_SERIAL_PXA_SPACEMIT_K1X=y 此为k1 uart驱动config配置
Symbol: SERIAL_PXA_SPACEMIT_K1X [=y]
Device Drivers
-> Character devices
-> Serial drivers
-> PXA serial driver (<choice> [=y])
-> Spacemit PXA driver suppor (SERIAL_PXA_SPACEMIT_K1X [=y])
dts配置
由于9路uart的使用方法和配置方法类似,这里以uart2为例
pinctrl
可查看linux仓库的arch/riscv/boot/dts/spacemit/k1-x_pinctrl.dtsi,参考已配置好的uart节点配置,如下:
pinctrl_uart2: uart2_grp {
pinctrl-single,pins =<
K1X_PADCONF(GPIO_21, MUX_MODE1, (EDGE_NONE | PULL_UP | PAD_1V8_DS2)) /* uart2_txd */
K1X_PADCONF(GPIO_22, MUX_MODE1, (EDGE_NONE | PULL_UP | PAD_1V8_DS2)) /* uart2_rxd */
K1X_PADCONF(GPIO_23, MUX_MODE1, (EDGE_NONE | PULL_UP | PAD_1V8_DS2)) /* uart2_cts_n */
K1X_PADCONF(GPIO_24, MUX_MODE1, (EDGE_NONE | PULL_UP | PAD_1V8_DS2)) /* uart2_rts_n */
>;
};