找回密码
 立即注册

QQ登录

只需一步,快速开始

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

NCU442 有 USB HID 走 DMA 的示例嗎?

[复制链接]
跳转到指定楼层
楼主
hermit_wang 发表于 2015-3-23 23:51:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有找到 MSDC/ISO 走 USB DMA 的示例
可是找不到 HID 走 USB DMA 的示例
怎么试都不成功啊.

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

使用道具 举报

沙发
Angus 发表于 2015-4-26 17:06:38 | 只看该作者
您下载个最新的BSP看一下,若还没有,就联系芯唐或其代理支持一下。
回复 支持 反对

使用道具 举报

板凳
 楼主| hermit_wang 发表于 2015-5-14 18:37: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;
}
回复 支持 反对

使用道具 举报

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

本版积分规则

新唐MCU