阅读:1858回复:7
sos,9603!
各位大侠,救救小弟!
我的9603在初始化后只能不断的收到reset信号,而收不到setup信号,我用示波器量D+和D-,D+端量到的就是3。3V,D-端就是0V,也就是说根本就没有总线活动,但是host却显示检测到未知设备,是不是就是说host发过setup包,但是没有收到9603的应答,才判定这是一个未知设备,既然是这样,我为什么检测不到信号呢,而且也没有setup的中断产生。我的firmware是按照NS的示例改的,我用的是汇编,应该没有什么问题,那位大虾知道是怎么回事,还望不吝赐教!多谢,多谢,多谢。。。。 |
|
最新喜欢:![]()
|
沙发#
发布于:2001-09-24 21:32
我看过以前的帖子是这么说的
这是因为USBN9602芯片的逻辑Bug,就是Active Low中断时不能正常工作,解决办法是,进中断以后不要依赖于判断Main Event 的RX_EV位来确定是否有Setup包,你要检测RXC0,RXS0 |
|
板凳#
发布于:2001-09-25 09:29
系统发现新设备
只需要在D+ or D-任意一个上接3.3V电压即可 |
|
地板#
发布于:2001-09-25 09:39
我原来也遇到过这个情况,是reset包没有回正确。
但是你说d+、D-上无变化,这就不对了,reset包来时,d+至少有10ms的时间为低电平,也就是说在上电时d+线上会有几个大于10ms的负脉冲。如果没有你还能不断的收到reset信,那你不妨不联d+、d-线,看看时不是硬件的问题。 另外,主机只要检测到d+高于d-线,就会找到设备,如果在规定时间内不响应主机请求,主机会认为设备不被识别。 还有,我也用的汇编。 |
|
|
地下室#
发布于:2001-09-25 17:39
发生这种情况的可能有好多种
比如,你的WRITE-USB()以及READ-USB()是否正确,尤其是能否连续读写,这个很关键!!! 另外,USBN9603的中断好象有点问题,一开始总是不能正常!你可以换一种中断方式来试一下!!! |
|
|
5楼#
发布于:2001-09-27 10:08
先谢谢各位:)
急呀,现在除了reset还是没有别的东西,我只能在D+上看见几个大约20ms宽的负脉冲,好像是3个,然后就没有别的东西了,为什么我在D+上看不到setup信号呢?是不是主机根本就没有发过来?哦,我得writeusb()和readusb()都没有问题,可以连续读写,唉。。。 |
|
|
6楼#
发布于:2001-09-27 13:49
先检查硬件,如果没有问题(我遇到过这样的情况拉,多半是软件的问题)。你看一下你的初始化里边必须要加一个大于10ms的延时,还有就是rx_en要在operational之后,还有就是reset事件的处理是否正确?
|
|
|
7楼#
发布于:2001-09-27 15:04
feixue,你好!,你说的初始化里必须加大于10ms地延时,是指在writeusb(MCNTRL,NAT+VGE+INT_H_P)之后吗?还有reset事件处理需要做什么工作?我得都是按照NS的例子写的,好像没有给主机发什么应答之类的。这是我的初始化和reset程序,各位大侠帮我看看:
INIT_9603() {WRITEUSB(FAR,AD_EN+0); WRITEUSB(EPC0,00); WRITEUSB(NAKMSK,NAK_O0); WRITEUSB(TXMSK,TXFIFO0+TXFIFO1+TXFIFO2+TXFIFO3); WRITEUSB(RXMSK,RXFIFO0+RXFIFO1+RXFIFO2+RXFIFO3); WRITEUSB(ALTMSK,RESET_A); WRITEUSB(MAMSK,INTR_E+TX+RX+NAK+ALT); WRITEUSB(TXC0,FLUSH); WRITEUSB(NFSR,OPR_ST); WRITEUSB(RXC0,RX_EN); WRITEUSB(MCNTRL,VGE+INT_H_P); DELAY_1MS WRITEUSB(MANTRL,NAT+VGE+INT_H_P); 设置中断 } RESET() { WRITEUSB(NFSR,RST_ST); DELAY_100US WRITEUSB(FAR,AD_EN+0); WRITEUSB(EPC0,00); WRITEUSB(TXC0,FLUSH); WRITEUSB(NFSR,OPR_ST); WRITEUSB(RXC0,RX_EN); } 我的程序有错吗? |
|
|