MAX3421 в режиме Peripheral (MAX3420) не отвечает хосту

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн июн 13, 2016 10:41:52

Сообщение Serg1987 »

Всем привет. Может кто работал с микросхемами 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, то с линиями точно всё в порядке.

В чем может быть проблема?? Спасибо
Реклама
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн июн 13, 2016 10:41:52

Сообщение Serg1987 »

В общем разобрался сам, в чем дело. Дело в том что микросхема при приходе SETUP пакета отвечает битым ACK, который генерируется автоматичести. Итого из за битого ответа хост не может его распознать и отправляет запросы вновь и вновь, пока не выведет - Устройство не определено.
Исправить это я никак не могу. Проблема видно в самой микросхеме. Замена кварца ничего не дала.
В общем не покупайте, если надумаете. Микросхема говно.
Реклама
Ответить

Вернуться в «Периферия»