CH372外置固件模式,进入中断,识别为Ep0_Setup后,读出的8位数据为以下: 80 06 00 01 00 00 40 00 这个正常么?
这个数据是正常的啊,主机来向你要设备描述符啊,要求要的长度是64字节,实际你可以给主机返回的长度应该是18个字节。
设备描述符18个字节,要求要的长度64个字节, mVarSetupLength里面的长度要修改么?
主机可以要多于你本身描述符的长度,但是你返回的时候一定要按照你本身的长度来给主机返回数据。当然,你的长度也需要修改。
参考程序里面没有改mVarSetupLength,18字节设备描述符,每次复制8字节上传,最后剩2字节,为了补齐8字节,后面的6个字节是无用的数据么?配置描述符和HID设备描述符什么时候上传?
能不能具体讲一下外置固件模式的工作流程
不是这个样子的,实际在数据进行传输的时候,最后一次数据传输如果为2个字节的话,那么,你就往372里面写2个字节进去,没必要在补其8个字节在写下去。实际的外置固件程序你可以去参考CH372EVT。ZIP里面的例子程序
mVarSetupLength=request.buffer[6];这一指令不是把40H存到mVarSetupLength这个变量中么?主机要设备描述符,复制8个描述符,通过端点0上传,mVarSetupLength长度减8不是还有56个描述符,设备描述符只有18个啊。
这个变量建议你不要存,因为这个变量只是一个象征性的数据,实际你传输的数据是要根据你描述符的长短来上传数据的,计算机在获取描述符的时候,有时候是不需要知道你描述符是多长,那么他就发一个要获取很长描述符的命令下来,但是你往计算机上面返回数据的话,你一定要按照你自己描述符的长度往计算机返回,但是你也可以返回计算机要求的数据,只不过后面的数据是无效的数据而已