[an error occurred while processing this directive]
|
Памажите, приз!
Делаю USB-клиента на процессоре ST, практически полный аналог Sharp LH7A400, за небольшими исключениями. Такой кажется используется в PDA Sharp Zaurus 5000.
У USB-контроллера 4 Endpoint. EP0 (команды(OUT)-ответы(IN), FIFO 8байт), EP1(IN, FIFO 64байта), EP2(OUT, FIFO 64байта).
Для упрощения задачи, DMA использовать пока не стал. Контроллер инициализируется вроде бы нормально, прерывания выставлены на все.
При подключении кабеля к борде, приходят прерывания по событиям.
RESUME (появились данные на линии),
RESET (от хоста),
SETUP_END
Приходит 8байт команды 80 06 0100 0000 0040
Это команда GET_DESCRIPTOR(DESCR_DEVICE). На нее пытаюсь выдать в ответ в EP0 пачками по 8 байт
куски структуры дескриптора (сейчас не важно какие).
Прерывания от контроллера, что первый кусок 8 байт ушел, FIFO пуст, и нужен следующий пакет, не приходит.
Хост, примерно через секунду, делает снова RESET и так 3 раза.
Вопросы.
Вообще может ли быть связь таким образом односторонней, ведь на самом низком уровне какие-то подтверждения на команды хост должен получать?
Все биты, что требуется по описанию вроде бы выставляю/сбрасываю.
Может ли это быть результатом того, что USBDP постоянно подвешен к питанию 1K5 ? В описании LH7A400 Рекомендуется pullup делать через MOSFET и при получении RESET от хоста
отключать pullup, чтобы реакцию на ресет увидел хост. К сожалению, железо делается в Китае,
из всего хозяйства у нас есть бестолковый аналоговый осцилограф, который показывает на USBDP 3V и просечки. На данные не похоже.
В прерывании стоит отладочная печать, через UART на 115200 выдается по одному символу на событие,
например "R" - RESET и т.п. 1 символ - задержка 100 uS. Могут ли возникать какие-либо таймауты ?
Печать выключал, результат вроде бы тот же.
E-mail: info@telesys.ru