你好,
我想把大量数据传输到USB。我使用USB_CDC示例项目,但这个示例的吞吐量约为700 KBps。是否有任何方法来加快USB CDC吞吐量?DMA有帮助吗?如果是,如何初始化和使用DMA与USB_CDC?
先谢谢你。
关键词:
设备:
你好,
我想把大量数据传输到USB。我使用USB_CDC示例项目,但这个示例的吞吐量约为700 KBps。是否有任何方法来加快USB CDC吞吐量?DMA有帮助吗?如果是,如何初始化和使用DMA与USB_CDC?
先谢谢你。
嗨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
你好,
谢谢你的回复,
我照你说的做了,但一点都没变。吞吐量仍然在700kbps左右。
我的代码有什么问题吗(用于传输大量数据)。这里是:
USBD_CDC_Write(hInst, Transmit_Buffer, 2000, 0);
谢谢。
嗨techteh,
请问你是在使用默认的CDC还是做了修改?如果您正在使用默认的CDC,这仅仅是为了环回而不是为了性能,因为它是实现的单个任务,并且它只使用一个任务用于USB接收和USB传输。如果你想提高性能,强烈建议使用两个不同的任务USB接收和USB传输。
谢谢,PM_Dialog
你好,
谢谢你的回复,
在你帮忙之前,我用的是默认的疾控中心。现在我使用两个任务这个问题,一个为RX和一个TX,但仍然没有改变。
我已经附加了修改后的USB_CDC.c文件。
谢谢。
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">
嗨paramvir.in@gmail.com,
吞吐量不会改变,因为数据传输的物理方法是UART协议。因此,使用CDC类可以实现的最大吞吐量是700Kbps。双任务实现是实现最大吞吐量的正确方法。
谢谢,PM_Dialog