Ошибка перечисления USB в ColdFire MCF52259 - PullRequest
2 голосов
/ 25 марта 2010

Кто-нибудь с опытом программирования на линии 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 (все маски) и 53 установлены в 0, все остальные равны 1.

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

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

MCF_USB_CTL содержит 0x1

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

Есть что-то, что я делаю не так?

1 Ответ

1 голос
/ 27 июля 2012

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

...