Как заставить работать UART
- Войдите на сайт для отправки комментариев
И снова здравствуйте, гуру микроконтроллеров!
Суть проблемы: есть небольшая платка с датчиками. Рулит датчиками ATMega328p. Прошивка в нем есть и работает правильно (проверено на ПО для тестирования, предложенном разработчиками). На плате есть два разъема, обозначенные как FTDI и TTL. Если я все понял верно, это обычный UART. И ATMega может работать одновременно с двумя. Дело вот в чем: когда плата подключена к компьютеру через тот же FTDI (через переходник, к USB разъему) - я могу передать на нее команды, она их принимает и дает мне ответ. Теперь подключаю плату к компьютеру (RaspberryPi) через разъем GPIO, а конкретно через пины UART на нем. Raspberry 100% отправляет команды (проверял, подключив ее к компу), но, судя по всему до ATMega они не доходят. В чем может быть проблема? Разница в уровнях напряжения (RaspberryPi работает на 3v3)?
Ну кто ж знает в чем у вас там проблема. Подключаете вы правильно? Ну и вроде как расбери не толерантен к 5 вольтам и уровни надо согласовывать.
А если подключить вашу платку так: USB разъем Raspberry -> miniUSB (FDTI) Atmega328 ?
Тогда уровни согласовывать не нужно. В операционной системе появится ttyUSB0. И посмотреть, как дело пойдет.
Ну кто ж знает в чем у вас там проблема. Подключаете вы правильно? Ну и вроде как расбери не толерантен к 5 вольтам и уровни надо согласовывать.
Пробовал через микросхему согласования. Результата ноль. Что можно сделать, чтобы хотя-бы понять где ошибка?
А если подключить вашу платку так: USB разъем Raspberry -> miniUSB (FDTI) Atmega328 ?
Тогда уровни согласовывать не нужно. В операционной системе появится ttyUSB0. И посмотреть, как дело пойдет.
Была такая идея, сейчас сяду проверять.
Ну кто ж знает в чем у вас там проблема. Подключаете вы правильно? Ну и вроде как расбери не толерантен к 5 вольтам и уровни надо согласовывать.
Пробовал через микросхему согласования. Результата ноль. Что можно сделать, чтобы хотя-бы понять где ошибка?
В общем, получилось немного не так, как планировалось, но в целом проблема решена в обход. Получилось соединиться через USB->FTDI переходник и работать с /dev/ttyUSB0. Данные пошли, ответ получен. Спасибо! :)
Ну кто ж знает в чем у вас там проблема. Подключаете вы правильно? Ну и вроде как расбери не толерантен к 5 вольтам и уровни надо согласовывать.
Пробовал через микросхему согласования. Результата ноль. Что можно сделать, чтобы хотя-бы понять где ошибка?
Пока оставлю как есть, но в будущем нужно будет довести до ума. Буду разбираться с подключением проводов... :)
Только не забывайте держать на вашей плате нормальное внешнее питание. Питания платы от USB порта хватает только-только (от Raspberry). И если внешнего питания нет, то после перезагрузки Raspberry может не увидеть FDTI , соответственно, не появится ttyUSB0. Придется тупо отключать - подключать USB шнурок от платы к USB разъему Raspberry, чтобы вновь определился ttyUSB0.
Питание будет внешним, контакт VCC от FTDI отпаяю после окончания тестирования. Обнаружилась интересная деталь. Подаю в ATMeg'у запрос на идентификацию, в ответ приходит 12 байт, содержащие в себе версию прошивки и другую информацию. Почему-то получается, что время от времени приходят разные данные... Может такое быть из-за нехватки питания?
Вот 10 вариантов ответа на 10 запросов (выровнял колонки для удобства чтения):
А правильный ответ такой:
Звездочки означают любые значения.