Всем привет. Может кто работал с микросхемами MAX3421 и MAX3420?
Интересует конкретно работа с MAX3421 в режиме устройства.
Примеров кода нашел, написал. SPI завел. Вроде всё в порядке. Регистры писать и читать могу.
Но проблема в следующем.
При подключении устройства я ловлю Reset и первый Setup пакет:
SETUP: 0x:
80 06 00 01 00 00 40 00То есть хост запрашивает Дескриптор устройства (
GET_DEVICE_DESC , код
0x06) с длиной по умолчанию 64 байта.
Сам дескриптор имеет длину 18 байт. Обрабатываю запрос и отправляю транзакцию IN:
- Код:
sendlen = (reqlen <= desclen) ? reqlen : desclen; // send the smaller of requested and avaiable
while (!(rreg(rEPIRQ) & bIN0BAVIRQ)) {};
for(int i=0; i<18; i++)
{
wreg(rEP0FIFO,DD[i]);
}
wregAS(rEP0BC,sendlen);
sendlen как и положено устанавливается в 18 байт. Пробовал считать записанный буфер - всё четко.
После этого я ожидаю принять новый SETUP пакет типа
SET_ADDRESS (код
0x05).
Но ничего не приходит.
По итогу хост присылает мне новый RESET и запрос дескриптора. И так 4 раза, после чего выводит уведомление
"USB device not recognized"
Видимо хост не распознает самый первый ответ на запрос дескриптора устройства ,или же MAX3421 вообще не отправляет ничего. Проверить не могу. Анализатора USB шины нету. Но подозреваю что молчит сам MAX3421. Проверил линии - всё хорошо. Хотя если ловит первый SETUP, то с линиями точно всё в порядке.
В чем может быть проблема?? Спасибо