189 похожих чатов

Ребят, помогите, пожалуйста. Кто-то работал с RS485? Есть кастомная плата

на основе imx8mmini evk. Хочу использовать uart1 для rs485. Использую только линии TX и RX. Слышала, что с помощью gpio можно как-то управлять флагом TX_EN, но нигде не могу найти информации. Это делается через dts или необходимо вносить изменения в драйвер? Еще вроде бы можно gpio повесить на rts-pin, но как я понимаю, это несколько иной способ?

13 ответов

6 просмотров

Где подробности камрад? Судя по опискам, ты пытаешься из под линукса это делать

Если да - то тебе нужно или свой драйвер писать, который будет работать, и перед началом передачи ножкой дергать или использовать микросхему с автоопределением передачи и не делать себе больно

https://www.compel.ru/lib/54027 например. Гуглить отсюда и до нахождения такого же, но устраивающего по цене. Ключевое слово RS-485 Auto direction

для начала прочитать это: https://www.kernel.org/doc/Documentation/serial/serial-rs485.txt

Не знаю с чем именно вы там будете взаимодействовать, и возможно это не будет проблемой, но вообще в RS-485 весьма жёсткие требования по времени освобождения линии после завершения передачи: линию требуется освободить не более чем за время передачи одного бита для заданной скорости обмена после передачи последнего бита. На приличных скоростях это непросто даже на микроконтроллере, а уж из ядра... хм... поэтому есть риск что сигналом TX_EN вы не сможете управлять достаточно быстро. Но, опять же, зависит от задачи.

Есть ли поддержка в ядре? Я както начал этот вопрос изучать и отложил на моей плате в ядре не было поддержки. Такие дела только на уровне модулей ядра

Kirill Kotyagin
Не знаю с чем именно вы там будете взаимодействова...

А, ну и минутка саморекламы: берите плату stm32 bluepill на stm32f103c8t6, шейте туда вот это: https://github.com/r2axz/bluepill-serial-monster втыкайте в usb, цепляйте микросхемы трансиверов rs-485 и будет вам счастье. Причем в тройном размере.

Kirill Kotyagin
Не знаю с чем именно вы там будете взаимодействова...

А есть пруфы про длину бита? Я бы ожидал это требование от более высокого уровня

Leonid Zaliubovskyi
А есть пруфы про длину бита? Я бы ожидал это требо...

Я в своё время руководствовался вот этим app note: https://www.st.com/resource/en/application_note/cd00249778-managing-the-driver-enable-signal-for-rs485-and-iolink-communications-with-the-stm32s-usart-stmicroelectronics.pdf

Есть прецедент реализации RS-485 на iMX6. Полагаю, уарты в 6 и 8 одинаковы. Управляющий сигнал трансивера переключается с через GPIO на уровне драйвера. Могу только сказать, что это не работает там, где справляется конвертер из USB в RS на CH340/CP210x + трансивере. Вот ссылка для дальнейшего копания: https://community.nxp.com/t5/i-MX-Processors/Does-UART-in-RS485-mode-support-only-9-Bit-mode-for-i-MX6/m-p/699703#M108651

Elya- Автор вопроса
Leonid Zaliubovskyi
Если да - то тебе нужно или свой драйвер писать, к...

Да, прошивка linux собрана на основе проекта yocto. Я знаю, что сейчас используется max10 для преобразования напряжения и вместе с тем на плисе реализован конечный автомат, который всегда слушает линию tx. Соответвенно tx_en тоже сейчас управляется за счет конечного автомата. Остальная логика отрабатывает через драйвер ядра imx.c; Идея в том, чтобы избавиться от конечного автомата и реализовать это на уровне драйвера. Отдел электроники уже запрограммировал gpio на tx_en и плюсом для дебага накинул на диод. Тупыми запросами set_direction_outpu(gpio, value) у меня получилось оживить диод, что по сути означает что я могу управлять и tx_en. Вопрос в том, нужно ли писать драйвер с нуля или модифицировать тот, что используется? По идее сейчас все это дело работает на rs232, а хочется преобразовать в rs485.

Elya
Да, прошивка linux собрана на основе проекта yocto...

Все же, я не понял, чем тебе вариант с autodirection не ок, если ты хочешь FSM выкинуть из корки. Только нежелательностью изменений в железе

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта