牛卧堂MCU技术交流

标题: NCU442 有 USB HID 走 DMA 的示例嗎? [打印本页]

作者: hermit_wang    时间: 2015-3-23 23:51
标题: NCU442 有 USB HID 走 DMA 的示例嗎?
有找到 MSDC/ISO 走 USB DMA 的示例
可是找不到 HID 走 USB DMA 的示例
怎么试都不成功啊.

求解

作者: Angus    时间: 2015-4-26 17:06
您下载个最新的BSP看一下,若还没有,就联系芯唐或其代理支持一下。
作者: hermit_wang    时间: 2015-5-14 18:37
我參考 USBD_Mass_Storage_Sram 的 Project 把 HID 的範例修改成 DMA mode 就不會動了.
修改如下
#if 0 是原先的 HID 使用 FIFO 部份
#if 1 是參考 MSDC 使用 DMA
求解啊 ~~~~

int32_t HID_CmdReadPages(CMD_T *pCmd)
{
    uint32_t u32StartPage;
    uint32_t u32Pages;
    uint32_t len;
    int32_t i;

    u32StartPage = pCmd->u32Arg1;
    u32Pages     = pCmd->u32Arg2;

    printf("Read command - Start page: %d    Pages Numbers: %d\n", u32StartPage, u32Pages);

    if(u32Pages) {
        /* Update data to page buffer to upload */
        /* TODO: We need to update the page data if got a page read command. (0xFF is used in this sample code) */
        for(i=0; i<PAGE_SIZE; i++)
            g_u8PageBuff[i] = 0xFF;
        g_u32BytesInPageBuf = PAGE_SIZE;

        /* The signature word is used as page counter */
        pCmd->u32Signature = 1;

        /* Trigger HID IN */
        len = Minimum(g_u32EpAMaxPacketSize, g_u32BytesInPageBuf);

#if 0 //FIFO mode
        for (i=0; i<len; i++)
            USBD->EPADAT_BYTE = g_u8PageBuff[i];
        USBD->EPATXCNT = len;
        USBD_ENABLE_EP_INT(EPA, USBD_EPINTEN_INTKIEN_Msk);
#endif                       
                       
#if 1 //DMA mode
                                printf("DMA Begin\n");
                                USBD_SET_DMA_READ(INT_IN_EP_NUM);
        USBD_ENABLE_EP_INT(EPA, USBD_EPINTEN_TXPKIEN_Msk);
                                g_usbd_ShortPacket = 0;
        while(1) {
            if (USBD_GET_EP_INT_FLAG(EPA) & USBD_EPINTSTS_BUFEMPTYIF_Msk) {
                MSC_ActiveDMA((uint32_t)g_u8PageBuff, PAGE_SIZE);
                break;
            }
        }
                                printf("DMA End\n");
#endif                       
        g_u32BytesInPageBuf -= len;
    }

    return 0;
}





欢迎光临 牛卧堂MCU技术交流 (http://nuvoton-mcu.com/) Powered by Discuz! X3.2