Пробую настроить 4-ый UART для работы с RTS/CTS
Нашёл нужные пины:
RTS замкнут на CTS.
Если настраиваю их как GPIO, то замечательно вижу изменение выхода RTS на входе CTS.
Настраиваю драйвер:
Естественно, вычистил при этом все упоминания
MX6QDL_PAD_CSI0_DAT17 и MX6QDL_PAD_CSI0_DAT16 из конфигурации.
Пробую - на RTS, при этом, вроде бы стоит 1, но вот такое ощущение, что CTS при этом настроен как выход и при этом на него выдаётся 0. Никакого обмена по RX/TX, при этом не происходит (хотя, если собрать конфу без fsl,uart-has-rtscts, обмен идёт).
Подскажите, пожалуйста, где я ошибся.
Понятно, но сути дела это не меняет. Я ничего не менял в том большом блоке, описывающем uart, только добавил строку fsl,uart-has-rtscts.
А вот то, место которое Вы упомянули.
&uart4 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart4_sodimm>;
status = "okay";
};
Статус изменён на okay.
Возможно, дело в этом: stty -F /dev/ttymxc3 crtscts.
Хотя, я использовал minicom для проверки, в настройкам там стоит Hardware Flow Control: Yes - думаю это то же самое.
А Вы не заметили, какой из пинов был выходом, а какой входом?
Спасибо! Ценная информация.
Судя по написанному, там и RX/TX меняет направление.
Теперь понять бы ещё как настроить...
Допустим, я настраиваю DTE, но RX/TX мне нужны вход/выход соответственно. Могу я их поменять таким образом:
было: MX6QDL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
стало: MX6QDL_PAD_KEY_ROW0__UART4_TX_DATA 0x1b0b1
было: MX6QDL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
стало: MX6QDL_PAD_KEY_COL0__UART4_RX_DATA 0x1b0b1
?
работают только для режима DCE (по умолчанию). При этом
DAT12 выход
DAT13 вход
DAT17 выход
DAT16 вход.
Как только переключаем драйвер в режим работы DTE, данные настройки пинов перестают работать. Работает, если настроить так:
При этом
DAT12 вход
DAT13 выход
DAT17 вход
DAT16 выход.
В обоих случаях 0, поданный на RTS, разрешает передачу.
Главная засада в том, что названия пинов не соответствуют их функциям с какой стороны ни посмотри:
со стороны DTC: TX разъёма служит для приёма данных, RX для передачи;
со стороны DTE: RTS разъёма - выход, а CTS - вход.
Вы знаете, я случайно увидел в I.MX Pin Tool. Пин RTS у 6-х imx-ов - это вход, а CTS- выход. И на тот момент очень вовремя увидел. Я как-то привык к ситуации наоборот. И направление их не меняется. Просто примите, что для фрискейла походу rts это cts и наоборот. И кстати, если программно дёргать RTS, то реально дёргается пин, который они называют CTS. А в остальном всё как обычно работает. Просто вот так они схотрили )))