找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于M480_BSP_CMSIS中的HSUSBD Transfer例

[复制链接]
跳转到指定楼层
楼主
chienjr 发表于 2021-4-4 21:27:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在Readpages回buf验证处,有些怪怪的(....StdDriver\HSUSBD_HID_Transfer\WindowsTool....)
想知道为何这样比对
for(i=0;i<TEST_PAGES*PAGE_SIZE;i++)
        buf = i&0xFF;
   WritePages(buf, TEST_BASE / PAGE_SIZE, TEST_PAGES);
   memset(buf, 0xCC, TEST_PAGES*PAGE_SIZE);

   ReadPages(buf, TEST_BASE / PAGE_SIZE, TEST_PAGES);
   isErr = 0;
   for(i=0;i<TEST_PAGES*PAGE_SIZE;i++)
    {
        if(buf != 0xFF)
        {
            isErr = 1;
            break;
        }
    }
buf(in)处的比对是与0xFF进行比对
几乎同样的例子,在Nano120的范例(....StdDriver\USBD_HID_Transfer\WindowsTool....)是
    for(i = 0; i < TEST_PAGES * PAGE_SIZE; i++)
        buf = i & 0xFF;
    WritePages(buf, TEST_BASE / PAGE_SIZE, TEST_PAGES);
    memset(buf, 0xCC, TEST_PAGES * PAGE_SIZE);
    ReadPages(buf, TEST_BASE / PAGE_SIZE, TEST_PAGES);
    isErr = 0;
    for(i = 0; i < TEST_PAGES * PAGE_SIZE; i++)
    {
        if(buf != (i & 0xFF))
        {
            isErr = 1;
            break;
        }
    }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 顶 踩
回复

使用道具 举报

沙发
admin 发表于 2021-4-6 10:27:48 | 只看该作者
是根据MCU例程代码里IN 令牌后发,MCU发送出去的数据决定的
if(g_u32BytesInPageBuf == 0)
            {
                /* The previous page has sent out. Read new page to page buffer */
                /* TODO: We should update new page data here. (0xFF is used in this sample code) */
                printf("Reading page %d\n", u32StartPage + u32PageCnt);
                for(i=0; i<PAGE_SIZE; i++)
                    g_u8PageBuff = 0xFF;

                g_u32BytesInPageBuf = PAGE_SIZE;

                /* Update the page counter */
                u32PageCnt++;
            }

            /* Prepare the data for next HID IN transfer */
            len = Minimum(g_u32EpAMaxPacketSize, g_u32BytesInPageBuf);
            for (i=0; i<len; i++)
                HSUSBD->EP[EPA].EPDAT_BYTE = g_u8PageBuff[PAGE_SIZE - g_u32BytesInPageBuf];
            HSUSBD->EP[EPA].EPTXCNT = len;
            HSUSBD_ENABLE_EP_INT(EPA, HSUSBD_EPINTEN_INTKIEN_Msk);
            g_u32BytesInPageBuf -= len;

        }
牛卧堂
回复 支持 反对

使用道具 举报

板凳
匿名  发表于 2021-5-21 23:25:46
admin 发表于 2021-4-6 10:27
是根据MCU例程代码里IN 令牌后发,MCU发送出去的数据决定的
if(g_u32BytesInPageBuf == 0)
            {

你好,我使用此範例遇到以下問題,不知該如何解決?可否指點?謝謝。
USB HID Device VID[0416] PID[5020] Open Success.
>>> Erase sectors: 16 - 143
USB HID Device VID[0416] PID[5020] Open Success.
>>> Read pages: 128 - 1151
ERROR: Send read command error!
ERROR: Blank test fail!
回复 支持 反对

使用道具

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

本版积分规则

新唐MCU