[ROC-RK3568-PC] [Firefly-Android] 10min带你了解UART的使用
Posted Neutionwei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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 TX
和UART9 RX
分别对应着开发板上的丝印I2S3 SDI
、I2S3 SDO
,官方android固件默认UART9是打开的,引脚复用情况:
func0 | func1 | func2 | func3 | func4 | func5 |
---|---|---|---|---|---|
GPIO4_C5 | PWM12_M1 | SPI3_MISO_M1 | SATA1_ACT_LED | UART9_TX_M1 | I2S3_SDO_M1 |
GPIO4_C6 | PWM13_M1 | SPI3_CS0_M1 | SATA0_ACT_LED | UART9_RX_M1 | I2S3_SDI_M1 |
1.2 RS232和RS485
RS232_1、RS232_2和RS485分别从主控的UART2、UART3、UART4转换而来,其中由于UART2默认作为DEBUG串口,因此RS232_1无法直接使用,需要将UART2配置为普通串口后才可使用。以下是RJ45的部分PIN脚定义:
RJ45引脚 | 定义 | RJ45引脚 | 定义 |
---|---|---|---|
1 | RS232_2 TX | 5 | GND |
2 | RS232_2 RX | 6 | RS232_1 RX |
3 | RS232_1 TX | 7 | RS485_A |
4 | GND | 8 | RS485_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 转串口模块)的 GND
、A
、B
引脚相连。
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串口。
以下步骤可以配置为普通串口:
- 去掉
kernel/arch/arm64/configs/firefly_defconfig
中CONFIG_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
节点。
以上是关于[ROC-RK3568-PC] [Firefly-Android] 10min带你了解UART的使用的主要内容,如果未能解决你的问题,请参考以下文章
[ROC-RK3568-PC] Kernel配置支持docker或者k8s
[ROC-RK3568-PC] [Firefly-Android] 10min带你了解ADC的使用
[ROC-RK3568-PC] [Firefly-Android] 10min带你了解ADC的使用
[ROC-RK3568-PC] [Firefly-Android] 10min带你了解LED的使用