Обнаружение активности USB-устройства на хосте
Я тестирую устройство WinCE, которое время от времени теряет все USB-соединения. Мне нужно определить, когда USB-соединение на этом устройстве выходит из строя. Когда оно выходит из строя, питание на порту остается, но на D+ и D- нет никаких данных (я проверил это с помощью осциллографа). Это хост-устройство для меня по сути черный ящик, поэтому я не могу ничего с ним сделать, кроме как проверить его состояние.
Мое предлагаемое решение: использовать Arduino какого-либо типа (предпочтительно UNO, поскольку у меня уже есть один), запрограммированный на обнаружение активности USB, чтобы сообщать мне о сбоях USB на хост-устройстве, которое я тестирую.
Возможно ли это? Arduino кажется мне хорошим решением, поскольку я предполагаю, что это USB-клиент, который мне нужен в этом сценарии. Любой пример или указание правильного направления были бы очень полезны. Спасибо!
@Fuffer, 👍0
Обсуждение1 ответ
Лучший ответ:
Если вас интересуют только напряжения на линиях D+ и D-, вы можете подключить их напрямую к двум входам АЦП на Arduino и подключить +5 В и GND к контактам +5 В и GND. Затем Arduino может замерять напряжения и сравнивать их с допустимыми или недопустимыми диапазонами.
Это отличная идея. Я так рад, что спросил; не могу поверить, что это даже не пришло мне в голову., @Fuffer
Нет, это действительно не будет работать хорошо. Сигнализация USB находится за пределами полосы пропускания АЦП Arduino. Вам нужно искать переходы, а не уровни., @Chris Stratton
- Первая настройка - отказ в доступе к usb-порту - ubuntu 14.04
- Почему я получаю avrdude: stk500v2_ReceiveMessage(): timeout error when uploading to Arduino Mega?
- Может ли Arduino взаимодействовать с USB-устройствами без USB-хост-экрана?
- Если USB дает 5 В, как Arduino может подавать 5 В на контакт 5 В? (И еще вопрос)
- Максимальная последовательная скорость CH340
- Можно ли использовать внешний источник питания и USB одновременно на Arduino?
- Эмуляция стандартного периферийного USB-устройства Mifare с помощью RFID-RC522
- Можно ли загрузить скетч Arduino через последовательный порт (RX) вместо USB?
Если вы решите использовать Uno, вам, вероятно, придется перепрограммировать ATMega16u2 на плате, который делает usb-to-serial. Я думаю, было бы проще иметь arduino, в котором основной чип поддерживает USB, как Leonardo или Micro. Но я сам ничего не делал с USB., @Gerben
Если вы измените прошивку микросхемы интерфейса USB, реализуете программный USB или используете плату с собственным USB-интерфейсом, например Arduino Leonardo, будет довольно просто запустить таймер тайм-аута для трафика USB и таким образом посмотреть, прекратится ли обычный периодический опрос этого ведомого устройства., @Chris Stratton
Удалось ли вам разобраться? Если да, то можете поделиться кодом?, @NAMAE