如何在Beanglebone Black Kernel 4.1.15-ti-rt-r43上启用RTS和CTS引脚?

时间:2018-12-19 08:14:36

标签: c++ c linux raspberry-pi beagleboneblack

要激活Beaglebone上的RTS和CTS引脚,我遵循了几条路线,但不幸的是,我没有得到更多的信息。

1)激活RXD和TXD更容易。 我在uEnv.txt中输入了命令:

root@beaglebone:/boot# nano uEnv.txt
cmdline=coherent_pool=1M quiet cape_universal=enable
dtb=am335x-boneblack-emmc-overlay.dtb

然后我可以直接激活代码中的图钉

//UART1
system("config-pin P9.26 uart"); // RXD
system("config-pin P9.24 uart"); // TXD
// UART4
system("config-pin P9.11 uart"); // RXD
system("config-pin P9.13 uart"); // TXD

如果我想通过这种方式激活RTS或CTS引脚,

system("config-pin P9.20 uart"); // CTS

我收到错误消息

Pin is not modifyable: P9_20 i2c2_sda

信息:

root@beaglebone:~# config-pin -l P9_20
Pin is not modifyable: P9_20 i2c2_sda

2)我还使用了第二种方式,我在uEnv.txt上评论了该命令。

# cmdline = coherent_pool = 1M quiet cape_universal = enable

我重新启动了Beaglebone并准备:

root@beaglebone:/lib/firmware# cat $SLOTS
 0: PF----  -1
 1: PF----  -1
 2: PF----  -1
 3: PF----  -1
 4: P-O-L-   0 Override Board Name,00A0,Override Manuf,BB-UART4
 5: P-O-L-   1 Override Board Name,00A0,Override Manuf,BB-UART1
 6: P-O-L-   2 Override Board Name,00A0,Override Manuf,BB-UART4-RTSCTS
 7: P-O-L-   3 Override Board Name,00A0,Override Manuf,BB-UART1-RTSCTS

在这种情况下,我的代码挂在读取功能上,该功能会响应代码,就像未启用UART一样

3)我之前也尝试过该命令

capemgr.enable_partno=BB-UART1,BB-UART4

我的代码也挂在读取功能中。

有人可以说我该怎么办?

1 个答案:

答案 0 :(得分:0)

这是预期的行为。如果您修改am335x-bone-common.dtsi文件。您将看到是否启用了i2c。您不能使用uart1 rts和cts引脚。因此,您应该禁用i2c或分配给其他引脚,然后在引脚复用中复用cts和rts引脚。

i2c2_pins: pinmux_i2c2_pins {
        pinctrl-single,pins = <
            0x178 (PIN_INPUT_PULLUP | MUX_MODE3)    /* uart1_ctsn.i2c2_sda */
            0x17c (PIN_INPUT_PULLUP | MUX_MODE3)    /* uart1_rtsn.i2c2_scl */
        >;
    };

https://github.com/beagleboard/linux/blob/4.1/arch/arm/boot/dts/am335x-bone-common.dtsi

在.dts文件中

禁用i2c2

&i2c2 {
    status = "disabled";
};