首页
  • GM-3568JHF
  • M4-R1
  • M5-R1
  • SC-3568HA
  • M-K1HSE
  • CF-NRS1
  • CF-CRA2
  • 1684XB-32T
  • 1684X-416T
  • C-3568BQ
  • C-3588LQ
  • GC-3568JBAF
  • C-K1BA
商城
  • English
  • 简体中文
首页
  • GM-3568JHF
  • M4-R1
  • M5-R1
  • SC-3568HA
  • M-K1HSE
  • CF-NRS1
  • CF-CRA2
  • 1684XB-32T
  • 1684X-416T
  • C-3568BQ
  • C-3588LQ
  • GC-3568JBAF
  • C-K1BA
商城
  • English
  • 简体中文
  • M4-R1

    • 一、简介

      • M4-R1简介
    • 二、快速上手

      • 01 OpenHarmony概述
      • 02 镜像烧录
      • 03 应用开发快速上手
      • 04 设备开发快速上手
    • 三、应用开发

      • 01 ArkUI

        • 1 ArkTS语言简介
        • 2 UI 组件-Row 容器介绍
        • 3 UI 组件-Column 容器介绍
        • 4 UI 组件-Text 组件
        • 5 UI 组件-Toggle 组件
        • 6 UI 组件-Slider 组件
        • 7 UI 组件-Animation 组件&Transition 组件
      • 02 资料获取

        • 1 OpenHarmony 官方资料
      • 03 开发须知

        • 1 Full-SDK替换教程
        • 2 引入和使用三方库
        • 3 HDC调试
        • 4 命令行恢复出厂模式
        • 5 升级App为system权限
      • 04 构建第一个应用

        • 1 构建第一个ArkTs应用-HelloWorld
      • 05 案例

        • 01 串口调试助手应用案例
        • 02 手写板应用案例
        • 03 数字时钟应用案例
        • 04 WIFI 信息获取应用案例
    • 四、设备开发

      • 1 Ubuntu环境开发

        • 01 环境搭建
        • 02 下载源码
        • 03 编译源码
      • 2 使用DevEco Device Tool 工具

        • 01 工具简介
        • 02 开发环境的搭建
        • 03 导入SDK
        • 04 HUAWEI DevEco Tool 功能介绍
    • 五、内核外设与接口

      • 01 指南
      • 02 设备树介绍
      • 03 GPIO介绍
      • 04 I2C通讯
      • 05 SPI通信
      • 06 PWM 控制
      • 07 串口通讯
      • 08 TF卡
      • 09 屏幕
      • 10 触摸
      • 11 Ethernet(以太网)
      • 12 M.2 硬盘
      • 13 音频
      • 13 WIFI & BT
      • 14 摄像头
    • 六、资料下载

      • 资料下载
  • M5-R1

    • 一、简介

      • M5-R1简介
    • 二、快速上手

      • 镜像烧录
      • 环境搭建
      • 下载源码
    • 三、外设与接口

      • 树莓派接口
      • GPIO 接口
      • I2C 接口
      • SPI通信
      • PWM控制
      • 串口通讯
      • TF Card
      • 屏幕
      • 触摸
      • 音频
      • RTC
      • Ethernet
      • M.2
      • MINI-PCIE
      • Camera
      • WIFI&BT
    • 四、资料下载

      • 资料下载

07 串口通讯

1 UART介绍

关于UART通信的基本概念,请参考:https://zhuanlan.zhihu.com/p/657771076 . Rockchip UART (Universal Asynchronous Receiver/Transmitter) 基于16550A串⼝标准,完整模块⽀持以下功能:

  • 支持5、 6、 7、 8 bits数据位。
  • 支持1、 1.5、 2 bits停⽌位。
  • 支持奇校验和偶校验,不⽀持mark校验和space校验。
  • 支持接收FIFO和发送FIFO, ⼀般为32字节或者64字节。
  • 支持最⾼4M波特率,实际⽀持波特率需要芯⽚时钟分频策略配合。
  • 支持中断传输模式和DMA传输模式。
  • 支持硬件⾃动流控, RTS+CTS。

2 UART板卡接口

UART板卡接口

3 UART使用---命令行方式

3.1 设备树解析

提示

下文的文件路径:out/kernel/src_tmp/linux-5.10/arch/arm64/boot/dts/rockchip/需要先编译码源。

基础定义层(rk3568.dtsi):

uart3: serial@fe670000 {
    compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";
    reg = <0x0 0xfe670000 0x0 0x100>;
    interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
    clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
    clock-names = "baudclk", "apb_pclk";
    reg-shift = <2>;
    reg-io-width = <4>;
    dmas = <&dmac0 6>, <&dmac0 7>;
    pinctrl-names = "default";
    pinctrl-0 = <&uart3m0_xfer>;
    status = "disabled";
};

我们对一些基本属性进行解析:

  • compatible : 指定兼容性,支持RK3568 UART和标准DW APB UART
  • reg : 寄存器地址范围(0xfe670000-0xfe6700ff)
  • interrupts : 中断号119,高电平触发
  • clocks : 波特率时钟(SCLK_UART3)和APB时钟(PCLK_UART3)
  • dmas : DMA通道6(TX)和7(RX)
  • pinctrl-0 : 默认使用uart3m0_xfer引脚组
  • status : 默认禁用状态

引脚配置层(rk3568-pinctrl.dtsi),其中UART3提供2种引脚配置模式:

uart3m0_xfer: uart3m0-xfer {
    rockchip,pins =
        /* uart3_rxm0 */
        <1 RK_PA0 2 &pcfg_pull_up>,
        /* uart3_txm0 */
        <1 RK_PA1 2 &pcfg_pull_up>;
};

uart3m1_xfer: uart3m1-xfer {
    rockchip,pins =
        /* uart3_rxm1 */
        <3 RK_PC0 4 &pcfg_pull_up>,
        /* uart3_txm1 */
        <3 RK_PB7 4 &pcfg_pull_up>;
};
  • uart3m0_xfer : 引脚组1,使用PA0作为RX,PA1作为TX
  • uart3m1_xfer : 引脚组2,使用PC0作为RX,PB7作为TX

板级配置层( rk3568-toybrick-x0.dtsi )

&uart3 {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&uart3m1_xfer>;
};
  • &uart3 : 引用基础定义中的uart3节点
  • status = "okay" : 使能UART3控制器
  • pinctrl-0 : 选择M1模式引脚(GPIO3_C0/GPIO3_B7)

3.2 应用层测试UART的方法

在过去进行单片机开发调试时,我们经常用到的是使用沁恒电子的CH340系列的USB 转串口模块,此外还有常见的FT232RL USB转串口芯片, 本次测试使用的是搭载FT232RL芯片的USB转串口模块,两者使用上没有任何区别,实际使用时,我们只需要把模块的TX RX 与 开发板的 RX TX 进行对接即可

USB转串口模块

在本实验中,我们依然选择此方式通过USB与板子进行UART通信。

和之前一样,驱动文件放置在 /dev 目录下 通过指令

ls /dev/tty*

即可查看到所有的终端设备如下: UART设备列表

其中tty前缀 为虚拟终端,ttyS 前缀为是本节需要研究的串口终端.

(ttyS3为UART3,ttyS8为UART8(该串口被蓝牙模块占用))

Busybox 是一个集成了上百个常用 Linux 命令的单一可执行文件,其中的stty是set tty 的缩写,是一个专门用于改变并打印终端行设置的命令。 常用指令如下:

查看端口

busybox stty -F /dev/ttySx     //ttyS为具体查看的端口

设置波特率

busybox stty -F /dev/ttyS3 baudrate

设置波特率为9600,8位数据为,一位停止位,无校验位

busybox stty -F /dev/ttyS3 9600 cs8 -cstopb -parenb

禁用硬件流控

busybox stty -F /dev/ttyS3 -crtscts

microcom 是 BusyBox 的一个组件,核心功能就是打开一个指定的串口设备,实现数据的接收

以波特率115200 运行串口

microcom -s 115200 /dev/ttyS3

3.2 具体功能演示

使用ssty工具查询开发板串口UART3参数

busybox stty -F /dev/ttyS3
UART参数查询

使用ssty工具修改串口波特率为115200,其中ispeed为输入速率,ospeed为输出速率

busybox stty -F /dev/ttyS3 ispeed 115200 ospeed 115200
UART波特率设置

(注意:每一次设备开机需要重新设置一遍波特率,重启默认会重置波特率为9600)

备注

串口工具下载地址和路径: https://pan.baidu.com/s/1ZUn2BNg-Sb6M-fWhDqAFMw?pwd=smcc 提取码:smcc ShimetaPi开源鸿蒙资料>02-软件工具>Rockchip>OpenHarmony>串口工具>sscom5.13.1.exe

按上述配置配置好串口调试助手后,在板卡端使用如下命令测试串口发送数据是否成功:

#在板卡上的终端执行如下指令
#使用echo命令向终端设备文件写入字符串"Hello!"、"OpenHarmony!"
echo Hello! > /dev/ttyS3
echo "OpenHarmony" > /dev/ttyS3
#PC上的串口调试助手会接收到内容
UART发送测试

PC段接收成功接收到数据如图所示,板卡发送数据正常。 下面对通过PC端发送数据,测试板卡的串口能否正常接收数据。 使用上文中提到的microcom工具, 在板卡上的终端执行如下指令,连接到串口设备 ttyS3 并进行双向通信,此时microcom命令会等待串口数据并把接收的数据显示在终端

microcom -s 115200 /dev/ttyS3
UART接收测试

板卡终端成功显示接收的数据。 PC端发送数据,板卡成功接收到数据,板卡接收数据正常。

4 UART使用---NAPI方式

在 GitHub 上编辑此页
上次更新:
贡献者: fxx, hjf
Prev
06 PWM 控制
Next
08 TF卡