阅读:1222回复:1
D12的新问题.
我用D12.在设备枚举过程中,首先收到Set_ddress标准设备请求,回复Host一个零长度包后产生一个EP0 IN端点中断,这一步应该正常;然后收到请求长度为8字节的Get_Descriptor标准设备请求,在回复Host长度为8字节的设备描述符后没有产生EP0 IN中断;然后又收到请求长度为18字节的Get_Descriptor标准设备请求,在回复Host长度为16字节的设备描述符后没有产生EP0 IN中断,致使最后的两个字节没有办法发送到Host.枚举中断.
请问各位大侠,为什么第一次产生EP0 IN中断而后面两次没有产生?我应该怎么办?欢迎来电:010-62282111--205 以下是调试数据: Go in ISR! //Set Address Request Value of IntReg is 1 It is EP0 OUT interrupt. D12_ReadLastTransactionStatus(0) = 0x21 After SWAP(x): ControlData.DeviceRequest.bmRequestType = 0x0 ControlData.DeviceRequest.wValue=0x4 ControlData.DeviceRequest.wIndex=0x0 ControlData.DeviceRequest.wLength=0x0 Go out ISR! received a setup request code is 0x5 Request Type = SET_ADDRESS. Set Address to 0x4 and Set Enable Funtions bit. Go in ISR! //EP0 IN Interrupt Value of IntReg is 2 It is EP0 IN interrupt. D12_ReadLastTransactionStatus(1) = 0x41 Not USB_TRANSMIT. ACK... Go out ISR! Go in ISR! //Get Device Descriptor Request Value of IntReg is 1 //lenght=8bytes It is EP0 OUT interrupt. D12_ReadLastTransactionStatus(0) = 0x21 After SWAP(x): ControlData.DeviceRequest.bmRequestType = 0x80 ControlData.DeviceRequest.wValue=0x100 ControlData.DeviceRequest.wIndex=0x0 ControlData.DeviceRequest.wLength=0x8 Go out ISR! received a setup request code is 0x6 Request Type = GET_DESCRIPTOR. get_device_desc in get_descriptor(). code_transmit(), request len=0x8; EP0 IN Bytes = 0x8 Go in ISR! //The following are 3 times Get Value of IntReg is 1 //Device Descriptor Request It is EP0 OUT interrupt.//Lenght=18bytes D12_ReadLastTransactionStatus(0) = 0x21 After SWAP(x): ControlData.DeviceRequest.bmRequestType = 0x80 ControlData.DeviceRequest.wValue=0x100 ControlData.DeviceRequest.wIndex=0x0 ControlData.DeviceRequest.wLength=0x12 Go out ISR! received a setup request code is 0x6 Request Type = GET_DESCRIPTOR. get_device_desc in get_descriptor(). code_transmit(), request len=0x12; EP0 IN Bytes = 0x10 Go in ISR! Value of IntReg is 1 It is EP0 OUT interrupt. D12_ReadLastTransactionStatus(0) = 0x21 After SWAP(x): ControlData.DeviceRequest.bmRequestType = 0x80 ControlData.DeviceRequest.wValue=0x100 ControlData.DeviceRequest.wIndex=0x0 ControlData.DeviceRequest.wLength=0x12 Go out ISR! received a setup request code is 0x6 Request Type = GET_DESCRIPTOR. get_device_desc in get_descriptor(). code_transmit(), request len=0x12; EP0 IN Bytes = 0x10 Go in ISR! Value of IntReg is 1 It is EP0 OUT interrupt. D12_ReadLastTransactionStatus(0) = 0x21 After SWAP(x): ControlData.DeviceRequest.bmRequestType = 0x80 ControlData.DeviceRequest.wValue=0x100 ControlData.DeviceRequest.wIndex=0x0 ControlData.DeviceRequest.wLength=0x12 Go out ISR! received a setup request code is 0x6 Request Type = GET_DESCRIPTOR. get_device_desc in get_descriptor(). code_transmit(), request len=0x12; EP0 IN Bytes = 0x10 Go in ISR! Value of IntReg is 1 It is EP0 OUT interrupt. D12_ReadLastTransactionStatus(0) = 0x21 After SWAP(x): ControlData.DeviceRequest.bmRequestType = 0x80 ControlData.DeviceRequest.wValue=0x100 ControlData.DeviceRequest.wIndex=0x0 ControlData.DeviceRequest.wLength=0x12 Go out ISR! received a setup request code is 0x6 Request Type = GET_DESCRIPTOR. get_device_desc in get_descriptor(). code_transmit(), request len=0x12; EP0 IN Bytes = 0x10 |
|
沙发#
发布于:2003-07-15 10:55
用过D12的各位帮帮忙,给个思路吧。
今天又发现新问题,只要连续对D12复位(手工按复位键)7次以上,D12马上死机,再无响应,不知道为什么会这样。 |
|