简体   繁体   English

ColdFire MCF52259中的USB枚举失败

[英]USB enumeration failure in ColdFire MCF52259

Anybody with programming experience on the ColdFire line, please help! 有ColdFire产品线编程经验的任何人,请帮助!

I'm using the CMX USB-Lite stack with the ColdFire MCF52259. 我将CMX USB-Lite堆栈与ColdFire MCF52259一起使用。 For some reason, USB enumeration fails at the very first step, as soon as I enable the DP pull-up resistor. 由于某种原因,一旦启用DP上拉电阻,USB枚举在第一步就失败了。 This is what I'm doing :- 这就是我正在做的:-

INT_ENB, OTG_INT_EN, ERR_ENB are set to 0x0 INT_ENB,OTG_INT_EN,ERR_ENB设置为0x0

INT_STAT, OTG_INT_STAT and ERR_STAT are set to 0xff (This should clear all interrupts) INT_STAT,OTG_INT_STAT和ERR_STAT设置为0xff(这将清除所有中断)

In the Interrupt Status Register, bits 0 (Mask All) and 53 are made 0, all others are 1. 在中断状态寄存器中,位0(全部屏蔽)和53设为0,其他所有位均为1。

TOK_DNE, USB_RST and STALL interrupts are enabled in INT_ENB. 在INT_ENB中启用了TOK_DNE,USB_RST和STALL中断。

BDT base address is set. BDT基址已设置。

MCF_USB_CTL holds 0x1 MCF_USB_CTL保持0x1

PROBLEM: After the host issues the first reset (at which point I enable Control endpoint 0), instead of the expected Get Descriptor request I'm getting an endless series of resets. 问题:主机发出第一次重置后(此时我启用了控制端点0),而不是预期的Get Descriptor请求,我得到了无尽的重置序列。 At least, that's what it looks like, because the TOK_DNE interrupt never triggers. 至少这是它的样子,因为TOK_DNE中断永远不会触发。

Is there anything I'm doing wrong? 我做错了什么吗?

You need to set the OWN bit to 1. If you have not done that then the SIE never gets control to the BD and the host keeps resetting the device. 您需要将OWN位设置为1。否则,SIE将永远无法控制BD,而主机将继续重置设备。 Set the OWN bit to 1 depending on the location where you have set the BD for the control endpoint. 根据您为控制端点设置BD的位置,将OWN位设置为1。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM