CH376 主机模式(采用串口通信方式),操作CH341设备(usb转串口)获取设备描述符和配置描述符返回0xFA问题

您好,我这边想要通过使用CH376 USB HOST接口做主机模拟电脑枚举CH340e USB DEVICE设备从机,A设备与B设备的两个主控MCU各自通过串口与CH376和CH340进行通讯 ,实现A设备和B设备之间使用USB数据线相连后,可以相互通讯和传输数据,系统基本结构如下图所示。

poYBAGK9soCAdcyxAAAkcLljAao947.png

目前CH376Host初始化成功,可以使用串口发送命令和数据给CH376,并且回复正常,也能检测到中断引脚电平变化,显示有设备连接,并且能够复位检测USB速度,回复正常,在获取设备描述符和配置描述符的时候,能够获取到设备和配置描述符长度,分别是18和39,但是获取的描述符不正确,还包含0xFA,请问怎么解决呢?请求社区大佬帮忙解答一下,十分感谢!

下面是串口助手打印的信息,还有获取设备描述符和配置描述符部分的代码:

image.png

image.png

image.png

image.png

image.png

这个问题有两个可能一是你主机下发的数据有问题;二你读取的指针可能有问题,设备直连电脑抓包看下描述符,或者留个邮箱我发个示例代码给你


重新设置地址后再获取一次设备描述符

image.png

image.png


感谢大佬的回复!上述获取设备描述符和配置描述符的问题已经解决了,是串口读取接收内容函数内的延时时间设置太长的缘故。但是现在又遇到了一个新的问题,希望大佬能再帮忙看一下,十分感谢!

问题如下:

向CH376主机模式(采用串口通信方式)写入数据块一次只能写入32个字节,无法一次写入64个字节,会出现丢包的情况,但是64个字节的数据两次32个字节发送就可以,请问是什么原因呢?请求社区大佬帮忙回复解答一下,十分感谢!

写入数据块相关代码如下图所示:

image.png

这个是我的邮箱个人信息保护,已隐藏,谢谢


你是怎么看64字节写入失败的呢,给340发送数据吗


是的,给340发送32个字节的数据包就可以完整接受到,但是发送64个字节的数据包后32个字节就会出现丢包的情况

发送和接受的相关代码如下:

image.png

我这边需要每发送1024个字节的数据包(目前需要使用for循环连续多次发送32个字节)后就读取一次接受到的数据,需判断是否接受到0x06来判断是否继续发送下一包数据,请问每次读取接受都需要发送命令给CH376设置接受同步吗?我这边需要连续发送1024字节的数据包间隔不能超过4秒钟,否则就需要重头开始发送,但是我这边实际运行后发现在读取发送第二包数据后返回的数据时就超时了,请问有什么解决方法吗?谢谢大佬!


正准备做类似功能的项目,可否发一份例子给我?? ?邮箱:个人信息保护,已隐藏


您好 搞定了 吗   我也有一样的需求   但是不知道好不好搞  不敢轻易尝试



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