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

[复制链接]
995|6
 楼主| 王小铭 发表于 2018-6-29 15:57 | 显示全部楼层 |阅读模式
各位大佬好,我在工作使用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, 下载次数: 0

wahahaheihei 发表于 2018-7-5 20:25 来自手机 | 显示全部楼层
没用过这个系列的呢
huangcunxiake 发表于 2018-7-6 21:00 | 显示全部楼层
你说发送了收不到,那是上位机软件的问题吧
huangcunxiake 发表于 2018-7-6 21:00 | 显示全部楼层
或者每次发送时候你先发送个0x55.
heisexingqisi 发表于 2018-7-6 22:00 | 显示全部楼层
连接后就立马发送数据了吗
 楼主| 王小铭 发表于 2018-7-9 09:28 | 显示全部楼层
heisexingqisi 发表于 2018-7-6 22:00
连接后就立马发送数据了吗

不是马上发,不管等多长时间只要是连接后的第一下上传,PC都接不到
jasontu 发表于 2018-7-9 10:01 | 显示全部楼层
第一次应该在main之前放入usb buffer之中,後开usb中断,才会第一次取走00 00 04 00 00 00 00 00的资料。
int32_t main(void)
{
     /* Unlock protected registers */
     SYS_UnlockReg();

     SYS_Init();
     UART0_Init();

     printf("\n");
     printf("+--------------------------------------------------------+\n");
     printf("|          NuMicro USB HID Keyboard Sample Code          |\n");
     printf("+--------------------------------------------------------+\n");
     printf("If PB.15 = 0, just report it is key 'a'.\n");

     USBD_Open(&gsInfo, HID_ClassRequest, NULL);

     /* Endpoint configuration */
     HID_Init();
    USBD_Start();
     buf[2] = 0x04; /* Key A */
     USBD_SET_PAYLOAD_LEN(EP2, 8);
     NVIC_EnableIRQ(USBD_IRQn);

     /* start to IN data */
     g_u8EP2Ready = 1;
     
     GPIO_SetMode(PD, BIT2, GPIO_PMD_INPUT);
     GPIO_EnableInt(PD, 2, GPIO_INT_FALLING);
     NVIC_EnableIRQ(GPCDF_IRQn);
     GPIO_SET_DEBOUNCE_TIME(GPIO_DBCLKSRC_LIRC, GPIO_DBCLKSEL_2);
     GPIO_ENABLE_DEBOUNCE(PD, BIT2);
     
     while(1)
     {
         HID_UpdateKbData();
     }
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部