如何使用 Zephyr (Devicetree) 在 PR Pico 上设置 UART1?

问题描述 投票:0回答:1

所以我尝试通过 Zephyr 在我的 RP Pico 上使用 UART1 接口,但它不起作用。我的问题是,我不知道如何在设备树中设置 UART1。默认情况下,UART0 是可用的,一切正常。 我的计划是通过 UART0 与我的计算机进行通信,显示一些消息并将其用于调试。到目前为止,这工作正常,没有问题。我想使用UART1与GPS传感器通信(通信部分工作正常,我用UART0尝试过)。唯一不起作用的是 UART1 的设置...

zephyrproject\zephyr oards rm pi_pico pi_pico-common.dtsi UART0 已定义:

&uart0 {
    current-speed = <115200>;
    status = "okay";
    pinctrl-0 = <&uart0_default>;
    pinctrl-names = "default";
};

rpi_pico-pinctrl.dtsi

    uart0_default: uart0_default {
        group1 {
            pinmux = <UART0_TX_P0>;
        };
        group2 {
            pinmux = <UART0_RX_P1>;
            input-enable;
        };
    };

但是为什么 UART1 没有预定义或更好,我如何设置 UART1 以与 UART0 相同的方式使用它?

c uart device-tree zephyr-rtos rppico
1个回答
0
投票

嗨,我不知道为什么它还没有定义。

但是您可以自己将其添加到设备树中。

通过查看Raspiberry Pico RP2040的数据表: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf

在第 1.4.3 节中。 GPIO 功能 有提到 UART1 和 GPIO 引脚。

还提到了使用第二个 UART 时您会干扰哪些引脚。

您可以创建覆盖文件或直接使用“rpi_pico-pinctrl.dtsi”。

带有片段:

uart1_default: uart1_default {
    group1 {
        pinmux = <UART1_TX_P4>;
    };
    group2 {
        pinmux = <UART1_RX_P5>;
        input-enable;
    };
};

有效引脚可以在文件中找到:rpi-pico-rp2040-pinctrl.h 位于:zephyr/include/zephyr/dt-bindings/pinctrl/rpi-pico-rp2040-pinctrl.h

当然还需要这段代码:

&uart1 {
current-speed = <115200>;
status = "okay";
pinctrl-0 = <&uart1_default>;
pinctrl-names = "default";
};
© www.soinside.com 2019 - 2024. All rights reserved.