Ошибка перечисления USB в ColdFire MCF52259

Любой, кто имеет опыт программирования на линии ColdFire, пожалуйста, помогите!

Я использую стек CMX USB-Lite с ColdFire MCF52259. По какой-то причине перечисление USB не выполняется на самом первом этапе, как только я включаю подтягивающий резистор DP. Это то, что я делаю:

INT_ENB, OTG_INT_EN, ERR_ENB установлены в 0x0

INT_STAT, OTG_INT_STAT и ERR_STAT установлены в 0xff (это должно очистить все прерывания)

В регистре состояния прерывания биты 0 (Mask All) и 53 установлены в 0, все остальные равны 1.

Прерывания TOK_DNE, USB_RST и STALL включены в INT_ENB.

Базовый адрес БРЭ установлен.

MCF_USB_CTL содержит 0x1

ПРОБЛЕМА: после того, как хост выполнит первый сброс (в этот момент я включаю конечную точку управления 0), вместо ожидаемого запроса Get Descriptor я получаю бесконечную серию сбросов. По крайней мере, так это выглядит, потому что прерывание TOK_DNE никогда не срабатывает.

Что-то я делаю не так?

1 ответ

Вам нужно установить бит OWN в 1. Если вы этого не сделали, то SIE никогда не получит контроль над BD, и хост продолжает перезагружать устройство. Установите бит OWN на 1 в зависимости от местоположения, в котором вы установили BD для конечной точки управления.

Другие вопросы по тегам