首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

瑞芯微|rk3568 uart快速上手

一、调试环境

平台: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

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O2WDZxE-uZtgfKy8g-jV88gg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券