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

[复制链接]
990|11
 楼主| cr315 发表于 2021-3-4 09:44 | 显示全部楼层 |阅读模式


各位大佬好,我在工作使用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,请问各位大佬有遇到这种情况吗?
海滨消消 发表于 2021-3-4 10:43 | 显示全部楼层
第一次应该在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();
    }
}
duo点 发表于 2021-3-4 10:45 | 显示全部楼层

這跟上電無關,usb enum之後,就開始要資料。
先把endpoint 2資料準備好,讓usb取走
一刀一级 发表于 2021-3-4 10:47 | 显示全部楼层

是的,基本上USB DEVICES都是准备好资料,让主机端来拿走。
onlycook 发表于 2021-3-4 10:50 | 显示全部楼层

1.如果是需要提前上传,为什么这个现象是有再现率的呢?
2.如果有再现率的话,用户在插上键盘后有概率通过Bus Hound抓包发现第一条无效数据,这个能避免吗
照我的流程,用catc抓是正常的
代碼跟你的電池供電無關。
基本上,mcu有電就開始跑代碼。
有usb plug event的時侯,就可以先寫資料到usb usb buffer之中。
观海 发表于 2021-4-1 16:39 | 显示全部楼层
跟上电没有关系的
guanjiaer 发表于 2021-4-1 16:40 | 显示全部楼层
无关带电不带电
heimaojingzhang 发表于 2021-4-1 16:42 | 显示全部楼层
为什么需要提前上传啊
勇者无惧你和我 发表于 2021-4-1 16:58 | 显示全部楼层
这个不错的,很棒的。
keaibukelian 发表于 2021-4-1 17:08 | 显示全部楼层
会不会是因为有干扰
labasi 发表于 2021-4-1 17:09 | 显示全部楼层
要先准备好资料
勇敢的大白菜 发表于 2021-4-1 18:04 | 显示全部楼层
你的协议是有问题的,一定有问题的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1466

主题

4964

帖子

0

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