USB_HID设备问题:通过USBHID调试助手下发数据

单片机型号为CH552

请问下怎么能返回下发的数据啊。是用的blob.pngHID符合设备

可以直接这样上发数据吗。

Ep3FLAG = 0;

for(i=0;i<64;i++)

    Ep3Buffer[i]=i;         

Enp3IntIn(64);

while(Ep3FLAG == 0);


然后这里不明白是什么意思

blob.png



最后再请问下老大,有没有能上发单片机收到HID数据的例程啊,目前用那个HID复合设备的例程貌似下发数据不成功,不知道什么原因


第一个可以上传;

第二个作用是PC通过端点4下传的键鼠数据,通过协议解析然后分别赋值到键盘和鼠标上传的端点。


第二个 我理解的是PC下发数据到端点4(自定义HID设备),然后判断长度,再复制到键盘或者鼠标再上发到PC

为什么是从Ep0Buffer的第64字节开始呢,每次下发的只有64字节啊


然后我在端点4接受的那个地方串口打印调试,上位机下发数据,貌似都不成功,这个打印的东西也没出来,会不会是HID的报告描述符的问题啊


端点0和端点4定义的时候缓冲区是连在一起的,一共192字节,前64是端点0收发缓冲区,64-127是端点4 OUT,128-192是端点4 IN,具体你可以看CH554的头文件端点定义。

如果PC没有出现无法识别的设备,证明描述符就是OK的,有可能是你的下传软件的问题,你可以是其他的USB调试工具。


奥,谢谢,这个明白了。那端点4(自定义HID设备)要上发数据,得把数据装到Ep0Buffer[128]到Ep0Buffer[191]哈,那怎么让端点4上发数据呢


图片.png

类似于上面的端点3,数据放到端点4发送缓冲区,然后设置端点响应方式ACK,图片.png

唯一不同的是,需要在端点4的IN中断中手动翻转图片.png


谢谢老大解答,目前单片机上发是没问题的,测试了连续上发的话每次上发之间加了10ms的延时。您说的手动反转是加入了的。也在手册上找到这个了,端点4是没有自动翻转的。




目前我这边的问题是:上位机只能下发成功一次。现在写的功能是上位机下发什么,单片机就返回什么数据。

单片机上电,第一次能下发成功,且单片机回传了数据回来。再次发送就不行了,也用串口打印测试了主循环是还在运行的,最后删除了测试的代码,目前有问题的修改的代码如下:



中断里:

blob.png


blob.png


blob.png主函数的大循环里


blob.png

这是上电第一次能发送和接收成功的


图片.png

收到一包数据后,被设置NAK,以后就不收数据了。可以把这句话去掉,或者在主函数里面等发送完一包数据后,再把端点4接收设置为ACK。


感谢老大,可以了。谢谢谢谢。


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