Как Вы наверно заметили, во многих устройствах блога используется протокол связи UART. Причина – простота организации и использования этого интерфейса, как в микроконтроллерах, так и в прикладных приложениях компьютера. Но как оказалось, на практике есть определенные затруднения. Часто возникают случаи, когда правильно собранное устройство работает по UART с ошибками или отказывается работать вообще.
Причин может быть множество, вот некоторые из них:
— неправильные установки параметров UART. Параметры должны быть идентичные для обоих, участвующих в обмене устройств;
— неправильное подключение сигнальных линий. Нужно подключать накрест
TxD—>RxD и RxD—>TxD;
— неправильная работа программы-терминала. Нужно попробовать поменять программу;
— неисправность COM порта компьютера. Нужно попробовать на другом порте (если есть) или компьютере;
— неправильная работа драйвера преобразователя USB-to-UART (если он используется). Проверить на заведомо исправных проектах или перемкнуть линии TxD и RxD преобразователя и проверить есть ли эхо при отправке сообщений из программы терминала;
Еще, частой причиной сбойной работы модуля является уход частоты внутреннего задающего генератора микроконтроллера в проектах без кварца. Внутренний задающий RC-генератор у AVR микроконтроллеров не может обеспечить большой точности работы и «плывет» при изменении температуры. Без цифрового осциллографа или логического анализатора довольно сложно определить с какой реальной частотой работает модуль UART.
Вопросы по работе UART довольно часто возникают в блоге, поэтому было решено сделать специальную прошивку, при помощи которой можно было протестировать работу модуля в каждом конкретном микроконтроллере.
Для проверки модуля UART на микроконтроллере ATtiny2313 необходимо прошить кристалл специальной тестовой прошивкой:
078-test-UART.zip (3082 Загрузки)
Фьюз-биты выставляются наиболее ходовые в устройствах (работа от внутреннего задающего генератора на 8МГц)
ATtiny2313_internal_RC_8.0.png (12316 Загрузок)
Как правильно прошить AVR фьюзы
Схема тестирования UART:
Как видно, схема совместима со схемой драйвера сенсорных устройств — можно использовать плату как тестовую.
Параметры модуля UART:
Скорость (boud rate) — 9600;
Количество бит данных (data bit) – 8;
Наличие бита четности (parity) – нет;
Количество стоп-бит (stop bits) — 1.
Проверяется модуль UART следующим образом:
1 После подачи питания на микроконтроллер, модуль UART начинает с секундным периодом выдавать по линии передатчика TxD (ножка 3) строку «*Test_UART». При помощи программы терминала можно отследить, как ведется передача.
2 Если отослать на модуль UART (ножка 2) строку (например, вида «Another_Test»), эта строка начнет выдаваться с секундным периодом вместо начальной (вот так: «*Another_Test»). Звездочка «*» всегда предшествует сообщению. Во время этого теста можно проверить, как воспринимаются строки по UART. В случае если при приеме возникли ошибки (аппаратно определяемые модулем) будет установлен высокий уровень на линии (PB5 ножка 17), который продержится 1 секунду.
3 При приеме по UART символов цифр «1», «2», «3», «4», «5», «6», «7», «8», «9» (не имеет значения в теле сообщения или отдельно) линии, соответственно (PD2 ножка 6), (PA0 ножка 5), (PA1 ножка 4), (PD6 ножка 11), (PB0 ножка 12), (PB1 ножка 13), (PB2 ножка 14), (PB3 ножка 15), (PB4 ножка 16) будут перебрасывать свое состояние. Так можно проверить качество приема, если нет возможности посмотреть выдаваемые символы в терминале.
Файлы:
078-test-UART-source.zip (3505 Загрузок)
Ссылки:
060-Драйвер сенсорной клавиатуры «Touch Me» на ATtiny2313.