Как я могу включить пин RTS и CTS на Beanglebone Black Kernel 4.1.15-ti-rt-r43? - PullRequest
0 голосов
/ 19 декабря 2018

Чтобы активировать контакты RTS и CTS на Beaglebone, я следовал по нескольким маршрутам, но, к сожалению, я не получил дальше.

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) Я также использовал второй способ, я прокомментировал командуat 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 не былenabled

3) Я также пытался выполнить команду до

capemgr.enable_partno=BB-UART1,BB-UART4

мой код также зависает в функции чтения.

Может кто-нибудь сказать, что мне делать?

1 Ответ

0 голосов
/ 19 декабря 2018

Это ожидаемое поведение.Если вы измените файл am335x-bone-common.dtsi.Вы увидите это, если i2c включен.Вы не можете использовать uart1 rts и cts pin.Таким образом, вы должны отключить 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";
};
...