[原创]再次质疑CH376在5V工作是否能正常

还是那个问题,CH376目前工作在5v系统,出现问题,之前的3.3v系统一直好好的。CH376的驱动都是用的同一个驱动,出现的问题如下:

System Start--系统初始化

read ok ---CH376测试成功

USB_INT_CONNECT---USB设备连接成功

设备描述符是:

配置描述符为 09 02 20 00 01 01 00 80 32 09 04 00 00 02 FF 00 00 02 07 05 81 02 40 00 00 07 05 01 02 40 00 00

由上面可以看到,不能获取USB设备的描述符。请问版主这个是什么情况呢?? 每次都这样,我实在搞不懂了。 如果是驱动问题,不应该只出现不能获取设备描述符失败的

Get_Dev_Descr(); //获取USB设备描述符 set_addr(5); //设置USB设备地址 Get_Cfg_Descr(); //获取USB设备的配置描述符 set_config(config_data); //设置配置描述符

我就是按照上面这个顺序来的,为什么同样的程序,在5v系统里不能获取USB设备描述符,在3.3v系统里就可以呢


需要看下你获取设备描述符返回的错误代码是多少?


设备错误代码返回 0x2E 你分析下看


如果我在程序里按这样的顺序来写

set_addr(5); //设置USB设备地址 Get_Dev_Descr(); //获取USB设备描述符 Get_Cfg_Descr(); //获取USB设备的配置描述符 set_config(config_data); //设置配置描述符

就是先设置USB设备地址,然后获取设备描述符。 如果按照这样的顺序,那么是可以正常返回设备描述符和配置描述符的,麻烦帮忙分析下为什么换了顺序出来的结果就不一样了 ?

设备描述符是:12 01 10 01 00 00 00 40 C4 10 60 EA 00 01 01 02 03 01

Get_Dev_Descr OK

配置描述符为 09 02 20 00 01 01 00 80 32 09 04 00 00 02 FF 00 00 02 07 05 81 02 40 00 00 07 05 01 02 40 00 00


这个可能是芯片复位的时候没有复位好导致地址不正确,你是否是带电的时候复位单片机但是没有复位CH376芯片?


CPU复位时会同时复位CH376芯片,通过硬件复位的。 CH376没复位好 会导致这个问题么?? 有什么补救措施?


因为按照你发出来的现象,应该有下面的可能性: 原先一上电获取设备描述符成功。之后单片机复位,而CH376未复位。导致设置的地址未改变。这个时候在重新的给CH376设置模式。获取设备描述符。按照上次的地址获取。而按照USB协议来说。第一次获取地址应该是按照地址0的地址来获取。这样就会出现你上述的现象。建议你先设置下地址0之后在获取,或者先设置模式7之后在设置模式6看下可以不可以。


看了你的分析,应该是这个问题,我设置地址0后获取也成功的,看来是设备的地址未改变引起的。


加入你反映的问题是正确的话,应该不是这个原因。假设地址未变,则设备不会响应,返回使用不是0X2E


只有登录才能回复,可以选择微信账号登录