要激活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
我的代码也挂在读取功能中。
有人可以说我该怎么办?
答案 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
禁用i2c2
&i2c2 {
status = "disabled";
};