一、调试环境
平台:rk3568kernel: 4.19.232SDK: rk_android11.0_sdkBoard: rk3568-evb1-ddr4-v10
二、 rk3568 uart控制器
1. 特性:
rk3568 UART控制器特性如下:
2. UART控制器架构
APB INTERFACE处理器通过APB接口访问UART的数据,做控制,以及状态信息。UART支持8、16和32位的APB数据总线宽度。
Register block负责UART的主要功能,包括控制、状态和中断产生。
Modem Synchronization block同步modem输入信号.
FIFO block负责FIFO控制和存储或向发送信号以控制外部RAM。
Baud Clock Generator收发比特率设置。
Serial Transmitter数据发送模块。
Serial Receiver数据接收模块。
3. 控制器驱动
瑞芯微提供sdk中已经提供了8250uart驱动。
以下为主要驱动文件:
4. 设备树:
普通串口设备将会根据dts中的aliase来对串口进行编号,对应注册成ttySx设备。dts中的aliases如下:
UART的板级dts配置只有以下参数允许修改:
dma-names:"tx" 打开tx dma"rx" 打开rx dma"!tx" 关闭tx dma"!rx" 关闭rx dma
pinctrl-0:&uart1m0_xfer 配置tx和rx引脚为iomux group 0&uart1m1_xfer 配置tx和rx引脚为iomux group 1&uart1m0_ctsn和&uart1m0_rtsn 配置硬件自动流控cts和rts引脚为iomux group 0&uart1m1_ctsn和&uart1m1_rtsn 配置硬件自动流控cts和rts引脚为iomux group 1
status:"okay" 打开"disabled" 关闭
引脚说明在下面定义:以UART6为例:
5. 使用硬件自动流控
UART使用硬件自动流控时,需要确保UART驱动使能硬件自动流控功能,且在dts中已经切换cts和rts流控引脚的iomux。
建议在高波特率(1.5M波特率及以上)、大数据量的场景下都使用硬件自动流控,即使用四线UART。
6. 使用串口唤醒系统
串口唤醒系统功能是在系统待机时串口保持打开,并且把串口中断设置为唤醒源。使用时需要在dts中增加以下参数:
注意,串口唤醒系统需要同时修改trust固件,请联系Rockchip以获取支持。
三、 移植
1. 修改设备树
sdk中UART默认并没有打开,所以我们只需要修改设备树就可以了。
下面以uart6为例,带流控:
注意:
“
引脚选择有两种配置: m0、m1;
编写设备树之前,查看电路图先确认,
公板是m1。
只有m0支持流控,如果需要支持设置 pinctrl-0:
pinctrl-0 = ;
”
重新编译烧录boot.img即可。
查看设备文件
其中ttyS8是给蓝牙使用。
2. 引脚复用问题:uart6与gmac0冲突
uart6引脚与以太网口Gmac0会有冲突:
只需要禁用gmac0即可
3. 通过寄存器,查看引脚复用配置情况
uart6使用到的引脚如下:
请添加图片描述1) GRF_GPIO1D_IOMUX_H
Address: Operational Base + offset (0x001C)
2) GRF_GPIO2A_IOMUX_L
Address: Operational Base + offset (0x0020)
3) GRF_GPIO2A_IOMUX_H
Address: Operational Base + offset (0x0024)
4) GRF_GPIO2B_IOMUX_H
Address: Operational Base + offset (0x002C)
5) GRF_GPIO2C_IOMUX_L
Address: Operational Base + offset (0x0030)
uart6寄存器配置对应位位置如下图所示:,
我们只设置m1引脚为uart6的收发引脚,m0引脚未设置
所以只有寄存器 0xFDC60000+0x1c 的 bit[11:4]为 33
四、测试
公板预留了UART2~UART7的接口(4根线),
一口君不会焊接线,所以直接找的硬件工程师把线连好,
我只负责测试。
板子上的测试程序,瑞芯微官方已经提供了: ts_uart.uart
该工具获取,见文章底部。
1. 移植ts_uart.uart
2. ts_uart.uart实用
1) 查看ts_uart.uart帮助信息:
2) 非流控read:
3) 流控read:
4) 非流控write:
5) 流控write:
五、编写自己的测试程序
下面是一口君自己编写的测试程序,可以实现简单的数据收发,
工具ts_uart.uart s获取
公众号后台回复:rxw
领取专属 10元无门槛券
私享最新 技术干货