⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
7个帖子/ 0新
最后一篇
Techteh.
离线
最后一次露面:3个月2周前
加入:2018-07-16 12:09
USB_CDC DMA.

你好,
我想将大量数据传送到USB。我正在使用USB_CDC示例项目,但使用此示例,吞吐量约为700 kbps。有没有办法加快USB CDC吞吐量?DMA有用吗?如果是,如何用USB_CDC初始化和使用DMA?

先感谢您。

关键词:
设备:
mt_dialog.
离线
最后一次露面:3个月4天前
职员
加入:2015-06-08 11: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宏:

#define dg_configusb_dma_support(1)

谢谢mt_dialog.

Techteh.
离线
最后一次露面:3个月2周前
加入:2018-07-16 12:09
你好,

你好,
感谢您的回复,
我做了你所说的一切,但没有任何改变。吞吐量仍然是大约700 kbps。
我的代码有什么问题(用于传输大量数据)。这里是:

usbd_cdc_write(hinst,transmit_buffer,2000,0);

谢谢。

PM_DIALOG.
离线
最后一次露面:1天7小时前
职员
加入:2018-02-08 11:03
嗨Techteh,

嗨Techteh,

如果您使用默认的CDC或者您做过任何修改,请澄清您吗?如果您使用的是默认的CDC,这仅适用于Loopback而不是性能,因为它是单一任务实现的,并且它仅使用一个任务来为两个USB接收和USB传输。如果要提高性能,强烈建议使用两个不同的USB接收任务和USB传输。

谢谢,PM_DIALOG.

Techteh.
离线
最后一次露面:3个月2周前
加入:2018-07-16 12:09
你好,

你好,
感谢您的回复,
在您的帮助之前,我正在使用默认的CDC。现在我正在为这个问题使用两项任务,一个用于Rx和一个用于Tx,但仍然没有任何改变。
我已附加了我修改过的USB_CDC.C文件。

谢谢。

附件:
PM_DIALOG.
离线
最后一次露面:1天7小时前
职员
加入: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天7小时前
职员
加入:2018-02-08 11:03
嗨paramvir.in@gmail.com,

你好paramvir.in@gmail.com.

由于数据传输的物理平均值是UART协议,因此不会更改吞吐量。因此,您可以使用CDC类实现的最大吞吐量为700kbps。双重任务实现是实现最大吞吐量的正确方法。

谢谢,PM_DIALOG.