Ошибка перечисления 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 для конечной точки управления.