@black_list_man

Почему перестают работать usb-serial устройства на Raspberry Pi 4?

Есть проект в котором к Raspberry Pi 4 подключены по USB:
-K-line адаптер (для получения диагностической информации от двигателя, на чипе ftdi);
- микроконтроллер stm32 в CDC режиме (определяется как последовательный порт)
- 4G модем.
RPI питается от автомобильного аккумулятора через преобразователь 12-5v 3А такой вот Сам аккумулятор заряжается от автомобильного же генератора.
Суть проблемы: При повышении оборотов двигателя до 2500 и более: диагностический адаптер начинает отваливаться. В dmesgвижу:
ftdi_sio ttyUSB0: usb_serial_generic_read_bulk_callback - urb stopped: -32

При оборотах около 4000, также отваливается STM32. Само устройство на месте/dev/ttyACM0, сообщений в dmesgнет, но данные из него просто перестают поступать. Лечится только перезагрузкой RPI. 4G модем при этом нормальной работает всегда. Именно с USB-Serial девайсами начинаются проблемы. Я пробовал подключать совершенно другой диагностический адаптер (ELM 327 с интерфейсным чипом CH340). Ситуация точно такая же. Причем, если адаптер выдернуть из USB вообще, то STM32 перестает отваливаться. Магия. Не могу понять как это все между собой связано. Если не хватает питания на USB, то почему 4G модем не реагирует? И с чего бы вдруг питания должно не хватать, ведь при повышении оборотов генератор наоборот активнее работает. Адаптер на 3A, USB периферия ничего не потребляет особо. Плату RPI менял на другую - разницы нет.
665e30a401031900055999.jpeg
  • Вопрос задан
  • 201 просмотр
Пригласить эксперта
Ответы на вопрос 2
ProgrammerForever
@ProgrammerForever
Учитель, автоэлектрик, программист, музыкант
Фильтруйте питание. Там защит много не бывает, особенно в автоприменениях. По питанию катушка выдаст хорошие такие иголки, которые надо бы фильтровать. А по воздуху - кучу помех в широком спектре.
Поставьте электролит + керамика на питание.
Поставьте ферритовые колечки на провода питания.
Укорачивайте сигнальные провода по возможности.
Экранируйте платы, все экраны - на землю в одной точке.
В конце концов, сделайте аккумуляторное питание не от машины, а от отдельного акб.
Ответ написан
Комментировать
@VT100
Embedded hardware & software.
1. Ознакомьтесь с ГОСТ 33991-2016 и, хотя бы, защитите вход питания. Например - керамическим резистором на 1-2 Ом (3-5 Вт) или позистором (самовосстанавливающимся предохранителем) последовательно и параллельным TVS-диодом на 18-22 В.
Ну и Т.О. проводки, как уже отметил pfg21.
2. Вероятно - возникают наводки на петлю заземления. Если нет возможности получить 12 В с разъёма OBD - попробуйте такие варианты:
  • Проложить провода OBD2-USB и 12V-5V_to_typeC как можно ближе друг к другу;
  • Разорвать петлю (оптронами и т.п.) на участках OBD2 или USB.


euklt0f2cydxmt_ulswixjyoqay.jpeg
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы