要激活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上对komand发表了评论。
# 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
我的代码也挂在读取功能中。
有人可以说我该怎么办?
这是一种预期的行为。如果修改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";
};