如何在Zephyr中通过设备树配置RP Pico的UART1?
RP Pico在Zephyr中配置UART1的解决方案
为什么UART1未预定义?
Zephyr的RP Pico板级设备树默认只启用UART0——它是标准调试串口,适配多数用户的基础调试需求。UART1属于可选外设,不同用户可能需要映射到不同引脚,所以默认不做预定义,留由用户根据自身硬件需求自行配置。
配置UART1为可用状态的步骤
推荐使用设备树overlay文件(不修改Zephyr源码树,避免更新时丢失配置),也可以直接修改板级设备树文件,两种方法如下:
方法一:使用设备树Overlay(推荐)
- 在你的项目根目录下创建
uart1_overlay.dts文件,内容如下(以P4作为UART1_TX、P5作为UART1_RX为例,可根据硬件布线替换成RP2040支持的其他UART1引脚):
/* 配置UART1的引脚复用 */ &pinctrl { uart1_default: uart1_default { group1 { pinmux = <UART1_TX_P4>; }; group2 { pinmux = <UART1_RX_P5>; input-enable; }; }; }; /* 启用并配置UART1 */ &uart1 { current-speed = <9600>; // 根据你的GPS传感器波特率调整,多数GPS默认是9600 status = "okay"; pinctrl-0 = <&uart1_default>; pinctrl-names = "default"; };
- 在项目的
prj.conf中添加以下配置,让Zephyr加载这个overlay:
DTC_OVERLAY_FILE = "uart1_overlay.dts"
方法二:直接修改板级设备树文件(不推荐)
如果一定要修改Zephyr源码中的板级文件:
- 编辑
zephyrproject/zephyr/boards/arm/rpi_pico/rpi_pico-pinctrl.dtsi,添加UART1的引脚复用配置:
uart1_default: uart1_default { group1 { pinmux = <UART1_TX_P4>; }; group2 { pinmux = <UART1_RX_P5>; input-enable; }; };
- 编辑
zephyrproject/zephyr/boards/arm/rpi_pico/rpi_pico-common.dtsi,添加UART1的启用配置:
&uart1 { current-speed = <9600>; status = "okay"; pinctrl-0 = <&uart1_default>; pinctrl-names = "default"; };
注意事项
RP2040的UART1支持多组引脚映射,比如UART1_TX还可以是P8、P12,UART1_RX可以是P9、P13等,具体可参考RP2040官方数据手册中的引脚功能表,选择和你的硬件布线匹配的引脚。
内容的提问来源于stack exchange,提问作者Scharf_M
相关产品推荐
相关产品推荐

