ColdFire MCF52259 中的 USB 枚举失败
任何有ColdFire系列编程经验的人,请帮忙!
我将 CMX USB-Lite 堆栈与 ColdFire MCF52259 结合使用。由于某种原因,一旦我启用 DP 上拉电阻,USB 枚举就会在第一步失败。这就是我正在做的:-
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),我得到的不是预期的“获取描述符”请求,而是无休止的一系列重置。至少,看起来是这样,因为 TOK_DNE 中断永远不会触发。
我做错了什么吗?
Anybody with programming experience on the ColdFire line, please help!
I'm using the CMX USB-Lite stack with the ColdFire MCF52259. For some reason, USB enumeration fails at the very first step, as soon as I enable the DP pull-up resistor. This is what I'm doing :-
INT_ENB, OTG_INT_EN, ERR_ENB are set to 0x0
INT_STAT, OTG_INT_STAT and ERR_STAT are set to 0xff (This should clear all interrupts)
In the Interrupt Status Register, bits 0 (Mask All) and 53 are made 0, all others are 1.
TOK_DNE, USB_RST and STALL interrupts are enabled in INT_ENB.
BDT base address is set.
MCF_USB_CTL holds 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. At least, that's what it looks like, because the TOK_DNE interrupt never triggers.
Is there anything I'm doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您需要将 OWN 位设置为 1。如果您没有这样做,那么 SIE 永远不会获得对 BD 的控制,并且主机会不断重置设备。根据您为控制端点设置 BD 的位置,将 OWN 位设置为 1。
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. Set the OWN bit to 1 depending on the location where you have set the BD for the control endpoint.