gxwei
驱动牛犊
驱动牛犊
  • 注册日期2003-05-23
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1222回复:1

D12的新问题.

楼主#
更多 发布于:2003-07-14 20:35
    我用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
gxwei
驱动牛犊
驱动牛犊
  • 注册日期2003-05-23
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-07-15 10:55
用过D12的各位帮帮忙,给个思路吧。
今天又发现新问题,只要连续对D12复位(手工按复位键)7次以上,D12马上死机,再无响应,不知道为什么会这样。
游客

返回顶部