USB_CDC直接存储器存取

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
7个帖子/ 0个新
最后发表
techteh
离线
最后看到:4个月4个星期前
加入:2018-07-16吸
USB_CDC直接存储器存取

你好,
我想把大量数据传输到USB。我使用USB_CDC示例项目,但这个示例的吞吐量约为700 KBps。是否有任何方法来加快USB CDC吞吐量?DMA有帮助吗?如果是,如何初始化和使用DMA与USB_CDC?

先谢谢你。

设备:
MT_dialog
离线
最后看到:4个月2周之前
工作人员
加入:2015-06-08 34
嗨techteh,

嗨techteh,

为了实现最大可能的USB性能,你应该使用1.0.14 SDK并做以下更改:

1)在hw_usb.c文件中,hw_usb_init()函数的变化如下:

REG_SET_FIELD(USB, USB_MAMSK_REG, USB_M_NAK, reg, 1);

REG_SET_FIELD(USB, USB_MAMSK_REG, USB_M_FRAME, reg, 1);

:

REG_CLR_FIELD(USB, USB_MAMSK_REG, USB_M_NAK, reg);

REG_CLR_FIELD(USB, USB_MAMSK_REG, USB_M_FRAME, reg);

2)通过在custom_config_qspi.c中设置宏来启用DMA:

#定义dg_configUSB_DMA_SUPPORT (1)

由于MT_dialog

techteh
离线
最后看到:4个月4个星期前
加入:2018-07-16吸
你好,

你好,
谢谢你的回复,
我照你说的做了,但一点都没变。吞吐量仍然在700kbps左右。
我的代码有什么问题吗(用于传输大量数据)。这里是:

USBD_CDC_Write(hInst, Transmit_Buffer, 2000, 0);

谢谢。

PM_Dialog
离线
最后看到:1天10小时前
工作人员
加入:2018-02-08 11:03
嗨techteh,

嗨techteh,

请问你是在使用默认的CDC还是做了修改?如果您正在使用默认的CDC,这仅仅是为了环回而不是为了性能,因为它是实现的单个任务,并且它只使用一个任务用于USB接收和USB传输。如果你想提高性能,强烈建议使用两个不同的任务USB接收和USB传输。

谢谢,PM_Dialog

techteh
离线
最后看到:4个月4个星期前
加入:2018-07-16吸
你好,

你好,
谢谢你的回复,
在你帮忙之前,我用的是默认的疾控中心。现在我使用两个任务这个问题,一个为RX和一个TX,但仍然没有改变。
我已经附加了修改后的USB_CDC.c文件。

谢谢。

附件:
PM_Dialog
离线
最后看到:1天10小时前
工作人员
加入:2018-02-08 11:03
嗨techteh,

minor-latin;mso-bidi-theme-font:minor-latin;background:white;mso-ansi-language:
EN-US">嗨
techteh

minor-latin;mso-bidi-theme-font:minor-latin;background:white;mso-ansi-language:
EN-US">我正在检查你的代码,我会尽快让你知道。

minor-latin;mso-bidi-theme-font:minor-latin;border:none windowtext 1.0pt;
mso-border-alt:none windowtext 0cm;padding:0cm;background:white;mso-ansi-language:
EN-US">谢谢,PM_Dialog
mso-ascii-theme-font:minor-latin;mso-hansi-theme-font:minor-latin;mso-bidi-theme-font:
minor-latin;background:white;mso-ansi-language:EN-US">

PM_Dialog
离线
最后看到:1天10小时前
工作人员
加入:2018-02-08 11:03
嗨,paramvir.in@gmail.com,

paramvir.in@gmail.com

吞吐量不会改变,因为数据传输的物理方法是UART协议。因此,使用CDC类可以实现的最大吞吐量是700Kbps。双任务实现是实现最大吞吐量的正确方法。

谢谢,PM_Dialog