还有,我中断采用的是脉冲方式
不建议你采用脉冲中断方式,建议你采用电平方式比较好点。还有在这个函数里面按照下面的数据读取下: UINT8 HostCtrlTransfer374( PUINT8 ReqBuf, PUINT8 DatBuf, PUINT8 RetLen ) // 执行控制传输,ReqBuf指向8字节请求码,DatBuf为收发缓冲区 // 如果需要接收和发送数据,那么DatBuf需指向有效缓冲区用于存放后续数据,实际成功收发的总长度保存在ReqLen指向的字节变量中 { UINT8 s, len, count, total; BOOL tog; u8 data_buf[8]; Write374Block( RAM_HOST_TRAN, 8, ReqBuf ); Read374Block( RAM_HOST_TRAN, 8, data_buf );
Write374Byte( REG_USB_LENGTH, 8 ); mDelayuS( 100 ); 看下data_buf的数据是不是你写下去的数据。
你无法跟踪是哪里出错了吗?既然跟踪是这三个地方了,肯定是中一个地方是正确的。 返回0X2B不是错误,明显是否到数据包了。可能是同步标志被你修改发会错误了。0X2B收到的是DATA1。
现在进展比较大,还是中断处理的不是很正常。
请问有没有中断方式枚举设备的代码?
Start CH374 Host Successful register CH374 ISR! Wait Device In
-----------------------------//插入设备 s=66 //中断寄存器的状态 Reset Device s=60 Start Low-Speed Device GetDeviceDescr: test11-3 ERROR = 27 Wait Device Out s=f5
---------------------------------拔出设备,再次插入 Wait Device In s=56 s=55 s=76 Reset Device s=61 Start Low-Speed Device GetDeviceDescr: test11-3 ERROR = 27 Wait Device Out s=f5
------------------------拔出设备 Wait Device In s=56 s=55
现在的状态是这样的,是什么问题呢?
Start CH374 Host Successful register CH374 ISR! Wait Device In s=66 Reset Device s=60 Start Low-Speed Device GetDeviceDescr: data[0]=0x80 data[1]=0x6 data[2]=0x0 data[3]=0x1 data[4]=0x0 data[5]=0x0 data[6]=0x12 data[7]=0x0 test11-3 ERROR = 27 Wait Device Out s=f5
hcn, 我测试了一下,数据写下去是正常的。
你插入的是什么设备?是低速设备吗?
是触摸屏。
是usb1.1
你好,能给我一个,你们的QQ吗?
我的是236759734
那你插入U盘测试下看可以不可以枚举?还有插入触摸屏之后,UD+和UD-对地的电压是多少?
插U盘结果是一样的,
Start CH374 Host Successful register CH374 ISR! Wait Device In s=e6 Reset Device s=e0 Start Full-Speed Device GetDeviceDescr: data[0]=0x80 data[1]=0x6 data[2]=0x0 data[3]=0x1 data[4]=0x0 data[5]=0x0 data[6]=0x12 data[7]=0x0 test11-3 ERROR = 27 Wait Device Out
插触摸屏UD+电压为0,UD-电压为3.2V
插入u盘UD+ 和UD- 一直有数据在变化,用示波器看的。
现在的u盘可以正常枚举了,但是触摸屏不正常,本来是低速设备,为什么设置成了高速的。
错误是0x20