IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> [ROC-RK3568-PC] [Firefly-Android] 10min带你了解UART的使用 -> 正文阅读

[移动开发][ROC-RK3568-PC] [Firefly-Android] 10min带你了解UART的使用

  • 🍇 博主主页: Systemcall小酒屋
  • 🍇 博主追寻:热衷于用简单的案例讲述复杂的技术,“假传万卷书,真传一案例”,这是林群院士说过的一句话,另外“成就是最好的老师”,技术既要沉淀,也得分享,成就感的正反馈是支持我持续耕耘的动力!
  • 🍇 专栏目录: Firefly-RK356x板卡
  • 🍇 专栏说明:基于Firefly旗下的RK356x板卡进行入门篇讲述,欢迎订阅,博主会持续更新!

ROC-RK3568-PC支持UART、RS232、RS485接口,分别为双扩展接口上的UART9、集成在RJ45接口的两路RS232和一路RS485,其串口接口图如下:

一、引脚定义

1.1 UART9

UART9的TX、RX引脚存在复用的情况,实际UART9 TXUART9 RX 分别对应着开发板上的丝印I2S3 SDII2S3 SDO,官方Android固件默认UART9是打开的,引脚复用情况:

func0func1func2func3func4func5
GPIO4_C5PWM12_M1SPI3_MISO_M1SATA1_ACT_LEDUART9_TX_M1I2S3_SDO_M1
GPIO4_C6PWM13_M1SPI3_CS0_M1SATA0_ACT_LEDUART9_RX_M1I2S3_SDI_M1

1.2 RS232和RS485

RS232_1、RS232_2和RS485分别从主控的UART2、UART3、UART4转换而来,其中由于UART2默认作为DEBUG串口,因此RS232_1无法直接使用,需要将UART2配置为普通串口后才可使用。以下是RJ45的部分PIN脚定义:

RJ45引脚定义RJ45引脚定义
1RS232_2 TX5GND
2RS232_2 RX6RS232_1 RX
3RS232_1 TX7RS485_A
4GND8RS485_B

二、设备树配置

kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-roc-pc.dtsi配置:

  • RS232_2(对应节点/dev/ttyS3
&uart3 {
    status = "okay";
    pinctrl-0 = <&uart3m1_xfer>;
};
  • RS485(对应节点/dev/ttyS4
&uart4 {
    status = "okay";
    pinctrl-0 = <&uart4m1_xfer>;
};
  • UART9(对应节点/dev/ttyS9
&uart9 {
    status = "okay";
    pinctrl-0 = <&uart9m1_xfer>;
};

三、调试

根据不同的接口使用不同的主机的 USB 转串口适配器向开发板的串口收发数据,例如 RS485 的调试步骤如下:

3.1 连接硬件

将ROC-RK3568-PC的RS485所在RJ45 第5(GND)7(A)8(B)脚分别与主机串口适配器(USB 转 485 转串口模块)的 GNDAB引脚相连。

3.2 打开主机的串口终端

安装kermit命令工具:

sudo apt install ckermit

安装完成后打开kermit,设置波特率并连接:

$ sudo kermit
C-Kermit> set line /dev/ttyUSB0
C-Kermit> set speed 9600
C-Kermit> set flow-control none
C-Kermit> connect

其中/dev/ttyUSB0 为 主机USB 转串口适配器的设备文件

3.3 板子发送数据

板子的RS485 设备文件为 /dev/ttyS4

在板子上运行下列命令:

echo "firefly RS485 test..." > /dev/ttyS4

主机中的串口终端即可接收到字符串 “firefly RS485 test…”

3.4 板子接收数据

首先在板子上运行下列命令:

cat /dev/ttyS4

然后在主机的串口终端输入字符串 “Firefly RS485 test…”,设备端即可见到相同的字符串。

3.5 主机退出kermit串口连接

ctrl+\后按c,退回终端可输入exit

C-Kermit>exit
OK to exit? ok

四、UART2普通串口配置

Firefly公版Android固件中,UART2默认为DEBUG串口。

以下步骤可以配置为普通串口:

  1. 去掉kernel/arch/arm64/configs/firefly_defconfigCONFIG_SERIAL_8250_CONSOLE配置:
diff --git a/kernel/arch/arm64/configs/firefly_defconfig b/kernel/arch/arm64/configs/firefly_defconfig
index 57ed787..8d6bc18 100644
--- a/kernel/arch/arm64/configs/firefly_defconfig
+++ b/kernel/arch/arm64/configs/firefly_defconfig
@@ -500,7 +500,7 @@ CONFIG_INPUT_RK805_PWRKEY=y
 # CONFIG_LEGACY_PTYS is not set
 CONFIG_SERIAL_8250=y
 # CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
-CONFIG_SERIAL_8250_CONSOLE=y
+# CONFIG_SERIAL_8250_CONSOLE is not set
 # CONFIG_SERIAL_8250_PCI is not set
 CONFIG_SERIAL_8250_NR_UARTS=10
 CONFIG_SERIAL_8250_RUNTIME_UARTS=10

关闭 kernel/arch/arm64/boot/dts/rockchip/rk3568-android.dtsi中的fiq-debugger节点

diff --git a/kernel/arch/arm64/boot/dts/rockchip/rk3568-android.dtsi b/kernel/arch/arm64/boot/dts/rockchip/rk3568-android.dtsi
index 55a1716..0e297e6 100644
--- a/kernel/arch/arm64/boot/dts/rockchip/rk3568-android.dtsi
+++ b/kernel/arch/arm64/boot/dts/rockchip/rk3568-android.dtsi
@@ -26,7 +26,7 @@
                interrupts = <GIC_SPI 252 IRQ_TYPE_LEVEL_LOW>;
                pinctrl-names = "default";
                pinctrl-0 = <&uart2m0_xfer>;
-               status = "okay";
+               status = "disabled";
        };

        debug: debug@fd904000 {

打开uart2节点:

diff --git a/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-roc-pc.dtsi b/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-roc-pc.dtsi
index f4af38a..fb9a3ff 100644
--- a/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-roc-pc.dtsi
+++ b/kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-roc-pc.dtsi
@@ -137,6 +137,10 @@
        status = "okay";
 };

+&uart2 {
+       status = "okay";
+};
+

重新编译kernel并烧录后生效,生效后即会生成/dev/ttyS2节点。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:34:46  更:2022-07-17 16:36:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 3:47:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码