找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

[NUC] 【求助】USB带电状态下枚举后第一次数据上传,PC收不到

[复制链接]
跳转到指定楼层
楼主
匿名  发表于 2018-6-29 15:51:42 回帖奖励 |正序浏览 |阅读模式

各位大佬好,我在工作使用NUC123这款设备,发现芯片带电情况下进行USB枚举后的第一次的上传数据,
PC有几率收不到,通过Debug发现设备发送了,但是PC就是没收到。
于是在NUC123例程Keyboard的基础上做了小修改,通过短接连接PD2( 64 pin51引脚)和地,每连接一次会上传keyboard的两条数据 00 00 04 00 00 00 00 00 和 00 00 00 00 00 00 00 00从而输出一个字母a,但是发现实际测试中设备带电下插上USB枚举后的第一次操作,同样有几率PC收不到00 00 04 00 00 00 00 00只能收到00 00 00 00 00 00 00 00,请问各位大佬有遇到这种情况吗?
小弟在此附上上述测试代码,希望大佬们赐教。

USBD_HID_Keyboard.zip

15.55 KB, 下载次数: 1008

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 顶 踩
回复

使用道具

12#
匿名  发表于 2018-7-11 17:09:18
请问这样做是为了规避缺陷吗?还是说链接usb后,就该先发一个空数据。
回复 支持 反对

使用道具

11#
匿名  发表于 2018-7-11 17:09:14
请问这样做是为了规避缺陷吗?还是说链接usb后,就该先发一个空数据。
回复 支持 反对

使用道具

10#
a_ziliu 发表于 2018-7-11 10:30:33 | 只看该作者
1.如果是需要提前上传,为什么这个现象是有再现率的呢?
2.如果有再现率的话,用户在插上键盘后有概率通过Bus Hound抓包发现第一条无效数据,这个能避免吗
照我的流程,用catc抓是正常的
代碼跟你的電池供電無關。
基本上,mcu有電就開始跑代碼。
有usb plug event的時侯,就可以先寫資料到usb usb buffer之中。
回复 支持 反对

使用道具 举报

9#
匿名  发表于 2018-7-10 13:57:02
我这边也有同样问题,搬小板凳坐等大神回复
回复 支持 反对

使用道具

8#
匿名  发表于 2018-7-10 10:48:25
a_ziliu 发表于 2018-7-10 09:12
是的,基本上USB DEVICES都是准备好资料,让主机端来拿走。

无效数据可以发0字节码,像这样USBD_SET_PAYLOAD_LEN(EP2, 0);
回复 支持 反对

使用道具

7#
匿名  发表于 2018-7-10 10:18:15
a_ziliu 发表于 2018-7-10 09:12
是的,基本上USB DEVICES都是准备好资料,让主机端来拿走。

谢谢大神,我还有几点疑问,
1.如果是需要提前上传,为什么这个现象是有再现率的呢?
2.如果有再现率的话,用户在插上键盘后有概率通过Bus Hound抓包发现第一条无效数据,这个能避免吗?
3.您之前说后开USB中断,如果是自带电池供电的键盘USB中断这块,如何处理好呢(是枚举成功后断开USB中断,然后准备usb buffer资料,在开启USB中断?)
回复 支持 反对

使用道具

6#
a_ziliu 发表于 2018-7-10 09:12:58 | 只看该作者
是的,基本上USB DEVICES都是准备好资料,让主机端来拿走。
回复 支持 反对

使用道具 举报

5#
匿名  发表于 2018-7-9 14:49:11
a_ziliu 发表于 2018-7-9 10:00
這跟上電無關,usb enum之後,就開始要資料。
先把endpoint 2資料準備好,讓usb取走 ...

谢谢回复,那要是实际键盘环境下,枚举后没有键盘按下也要准备endpoint 2的资料(空的无效的数据),然后通过USBD_SET_PAYLOAD_LEN 发上去,您看是这个思路吗?
回复 支持 反对

使用道具

地板
a_ziliu 发表于 2018-7-9 10:00:59 | 只看该作者
這跟上電無關,usb enum之後,就開始要資料。
先把endpoint 2資料準備好,讓usb取走
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU