当USB线插入PC后,(1)PC首向通过372向单片机发送USB总线复位命令,然后单片机进入中断处理总线复位命令后退出中断。(2)PC向单片机发送要求单片机上传设备描述符的命令,单片机进入中断将描述符的前8个字节通过端点0返回给PC。当这8个字节上传完了,单片机会进入USB_INT_IN中断么?(3)PC发送要求设置372地址命令,PDF上说这个地址先保存起来,不写入372,那地址啥时候写入372呢?(4)PC第2次发送要求上传设备描述符的命令,这次与第1次不同之处是本次要上传全部的设备描述符。谢谢
2:会产生中断的. 3:这个地址在应答完ACK后就可以写入到CH372中. 4:至于上传完不完你都不用去关心,CH372做为设备,只要主机来要数据你就传,你不用关心是第几次. 到在线下载CH372EVT.ZIP.找到XFIRM文件夹,里面有参考程序.
那第2步不是只需要传8个字节么?如果进入了中断那还继续传不传剩下设备描述符呢? 在第2步执行完后,PC这下不是要发设置地址命令么?那是先传剩下的描述符还是执行设置地址命令呢?
2按照你说的回产生中断,那进入了中断是啥也不做就退出么?
在主机发送获取描述符的命令的时候,设备就应该把描述符准备好,先上传8个字节数据,如果主机取走数据之后,CH372会产生上传成功中断,然后在上传后续数据,至于后面主机取不取数据,对设备没有影响,只要主机发送什么命令,设备执行相应的操作就可以了,总有一次 主机会获取一个完整的描述符的
听你这么一说,明白了。 红桃六说的在应答完ACK后就可以把PC发来的地址写入到CH372中是啥意思?能不能具体一点点。谢谢 是上传完0长度的信息包后么 ?
是的.设置地址的命令是以设备上传0长度包结束的.CH372上传完0长度包后产生USB_INT_EP0_IN中断,这时可以对CH372发CMD_SET_USB_ADDR来设置新的地址.以便使用新的地址来和PC通讯.
另外在控制传输的状态阶段,发送0长度的数据包就表示ACK.正确应答. 关于流程建议你看一下我们提供的程序,这样了解的快一点.不知道你用CH372做什么设备.如果只要和电脑通讯,对安装什么驱动不做要求的话,设置内置固件模式就可以了.不需要去做控制传输部分了.
端点0的SETUP成功,使用RD_USB_DATA3命令返回设备描述符的前8个字节后,接下来进入USB_INT_EP0_IN中断,进入这个中断的意思是CH372上传完了8个字节的设备描述符,然后由CH372通知单片机进行处理还是372把数据给了PC,然后PC发送了包之类的给372,然后372再通知单片机呢?如果是第1种理解,那PC再发送SET_ADDERESS命令之前,单片机不是还得进入USB_INT_EP0_IN中断,继续返回剩余的描述符么?是不是虽然执行了返回剩余描述符的程序,而主机现在不与理睬。有没有可能在执行USB_INT_EP0_IN中断的程序过程中,PC发来了设置地址的命令,当USB_INT_EP0_IN中断执行完退出中断再执行SET_ADDRESS命令。
所有的通讯都是由主机发起,.CH372只是把数据写到缓冲区了,如果PC把数据取走则产生中断,如果不取的话,即使写进去了,也不会产生中断.这个中断的意思是上传完成中断.上传没完成则不产生中断.所以如果PC不取,则SET_ADDERESS之前不产生中断了.中断不会产生就谈不上推出中断了.
恩 这下是相当清楚拉。谢谢你