8. RS485¶
本章介绍在Android中使用RS485总线与外部设备的通讯。
目前硬件上支持RS485的有以下板卡:
LubanCat-1金手指底板(含有RS485x2)
LubanCat-1BTB底板(含有RS485x2)
LubanCat-1H底板(含有RS485x2)
LubanCat-1HS底板(含有RS485x2)
LubanCat-2金手指底板(含有RS485x2)
LubanCat-2BTB底板(含有RS485x2)
LubanCat-2H底板(含有RS485x2)
LubanCat-5IO底板(含有RS485x2)
LubanCat-5IO底板上的RS485和RS232是共用同一组UART信号的,需要使用跳帽切换RS485或者RS232

8.1. 硬件标识¶
金手指和btb核心板只是封装接口不同,功能引脚和配置完全一样,下面以金手指底板为例具体的引脚定义可以参考背面的丝印。
LubanCat-1金手指底板:

LubanCat-2金手指底板:

LubanCat-1HS底板:

LubanCat-5IO底板:

8.2. 引脚定义¶
LubanCat-1金手指/BTB底板
485引脚 |
对应串口 |
流控引脚 |
RS485-1 |
UART1-M0 |
GPIO2_PB5 |
RS485-2 |
UART6-M0 |
GPIO2_PB6 |
LubanCat-1H底板
485引脚 |
对应串口 |
流控引脚 |
RS485-1 |
UART0-M0 |
GPIO2_PB1 |
RS485-2 |
UART3-M0 |
GPIO2_PB2 |
LubanCat-1HS底板
485引脚 |
对应串口 |
流控引脚 |
RS485-1 |
UART8-M0 |
GPIO3_PB6 |
RS485-2 |
UART9-M1 |
GPIO3_PC1 |
LubanCat-2金手指/BTB底板
485引脚 |
对应串口 |
流控引脚 |
RS485-1 |
UART3-M1 |
GPIO2_PD2 |
RS485-2 |
UART4-M1 |
GPIO2_PD3 |
LubanCat-2H底板
485引脚 |
对应串口 |
流控引脚 |
RS485-1 |
UART9-M0 |
GPIO3_PD5 |
RS485-2 |
UART8-M1 |
GPIO3_PA7 |
LubanCat-5IO底板
485引脚 |
对应串口 |
流控引脚 |
RS485-1 |
UART4_M2 |
GPIO3_PC7 |
RS485-2 |
UART7-M2 |
GPIO3_PD0 |
8.3. 接口使能¶
底板带有RS485的板卡其RS485对应的串口接口默认是开启的,如LubanCat-5IO板卡的RS232和RS485共用一组UART接口,硬件通过跳帽切换,而软件默认配置为RS485。 如果自己设计底板需要修改其他UART作为RS485则需要修改设备树源码来配置RS485,并重新编译镜像。
如果对设备树不熟悉的用户,请学习野火配套的《嵌入式Linux驱动开发实战指南》的 Linux设备树 章节内容。
以LubanCat-5IO的RS485-1为例,对应SDK源码/kernel-5.10/arch/arm64/boot/dts/rockchip/rk3588-lubancat-5io.dtsi (其他板卡修改板卡对应的设备树),RS485-1对应的节点:
1 2 3 4 5 6 7 8 9 10 11 12 13 | &uart4{
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&uart4m2_xfer &rs485_1_rts>;
rs485-de-gpios = <&gpio3 RK_PC7 GPIO_ACTIVE_HIGH>;
linux,rs485-enabled-at-boot-time;
};
rs485_rts {
rs485_1_rts:rs485_1_rts{
rockchip,pins = <3 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>;
};
};
|
rs485-de-gpios 表示指定换流引脚。
linux,rs485-enabled-at-boot-time; 表示启用rs485驱动换流。
注意,6.1内核仅需配置rs485-de-gpios,无需配置linux,rs485-enabled-at-boot-time即可开启驱动换流功能,低于6.1内核版本则需添加该属性。
参考 编译 Android 镜像 章节重新编译镜像并将编译出来的镜像烧录到板卡。
8.4. 使用方法¶
通过USB转RS485模块与板卡RS485接口进行连接,实现板卡与电脑通信,接线如下所示:
1 2 3 4 5 6 | #板卡与USB转RS485模块连接
板卡 ------ USB转RS485模块
GND ------ GND
A ------ A
B ------ B
|
RS485收发数据的方法和操作普通串口 完全一致,因此就不进行赘述了,请参考“串口通信”章节收发数据进行测试。