找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
楼主
a_ziliu 发表于 2018-7-5 10:46:54 | 显示全部楼层
第一次应该在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();
    }
}
回复 支持 反对

使用道具 举报

沙发
a_ziliu 发表于 2018-7-9 10:00:59 | 显示全部楼层
這跟上電無關,usb enum之後,就開始要資料。
先把endpoint 2資料準備好,讓usb取走
回复 支持 反对

使用道具 举报

板凳
a_ziliu 发表于 2018-7-10 09:12:58 | 显示全部楼层
是的,基本上USB DEVICES都是准备好资料,让主机端来拿走。
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

新唐MCU