Ответы пользователя по тегу UART
  • Возможно ли реализовать виртуальный uart на stm32?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Первая проблема что нужно при скорости 9600 бит/c передача одного бита должна происходить прмерно 1/9600 = 104 микорсекунды. HAL_Delay поддерживает минимальный период 1 милисекунда.

    Это говорит о том, что нужно использовать другой метод для организации задержки. Например основанный на таймере со счётчиком.

    какой надо выставлять уровень напряжения на пине в простое

    Стандартно -- высокий логический. Сколько вольт этому должно соответствовать конкретно -- зависит от того, что вы подключите снаружи. Явно там будет какой-нибудь конвертор или другой микроконтроллер.
    Ответ написан
  • В чем возникает проблема при работе с драйвером порта - UART4?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Речь идет именно о RS485, UART подключен к микросхеме трансивера RS485. Пин RTS используется для организации полудуплексной передачи.

    Ок, я проглядел это место, давай попробуем ещё раз.

    Если вывод dev_err() поставить перед spin_lock_irqsave(&port->lock, flags); то всё работает.

    Верно ли, что когда всё работает (со вставленным dev_err), serial8250_em485_stop_tx вызывается после передачи только из serial8250_console_write, а когда всё не работает эта функция не вызывается вообще?

    Глядя в функцию serial8250_handle_irq я вижу, что обработка окончания передачи зависит от того, используется DMA или нет. Используется ли в вашей конфигурации DMA? Работает ли передача, если DMA отключить?
    Ответ написан
  • Как отправить в uart символ по его коду?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как с помощью баш отправлять символы в уарт по их кодам?

    export hexcode=41 #'A'
    printf "\x$hexcode" > /dev/ttyS0


    Есть ли различия между представлениями символа в uart/linux/bash/stm32 ?

    man ascii, man charsets

    от чего зависит какое количество бит/байт получит функция считывания одного символа по уарт?

    Количество бит в символе зависит от настроек UART, см. man stty, параметр cs. Обычно API чтения из UART оперируют байтами.
    Ответ написан
    4 комментария
  • Как узнать что данные отправлены по uart?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как проверить что данные ушли?

    Я бы смотрел в сторону fsync с файловым дескриптором последовательного порта.
    Ответ написан
    Комментировать
  • Запутался в трех соснах: UART, GPIO, RS232

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    1. Что фактически означает в характеристиках 4 шт UART? Из чего состоит в 1 UART? Как его можно использовать?

    UART — это асинхронный приёмо-передатчик, преобразующий байты записываемые в него со стороны хоста в последовательности «стартовый бит, биты данных, биты чётности, стоповый бит» на выводе TX и наоборот, с вывода RX — в байты. Обычно он имеет группу регистров, определяющих параметры передачи/приёма, такие как скорость, количество бит в байте, контроль чётности и т.п. Эта группа регистров и является для хоста «логическим UART». С соответствующим конвертором уровня UART можно использовать с интерфейсами RS.
    2. GPIO — это не UART? GPIO состоит из RX/TX Их нельзя использовать взамен RX/TX RS232?

    GPIO — это обобщённый ввод/вывод. Обычно представлен несколькими регистрами, биты которых соответствуют пинам интерфейса: регистром направления (его биты отвечают за то, является ли пин вводом или выводом), регистром ввода (биты соответствуют состояниям входных пинов), регистром вывода (биты управляют состоянием выходных пинов). Изменение состояния пинов обычно сразу же отображаются в регистре ввода, а изменение регистра вывода обычно сразу же изменяет состояние выходных пинов. При желании на GPIO можно программно реализовать UART.
    Ответ написан
    Комментировать