你好,我想把大量的数据传输到USB。我使用的是USB\u-CDC示例项目,但是这个示例的吞吐量大约是700kbps。有没有办法加快USB CDC的吞吐量?DMA有用吗?如果是,如何初始化和使用DMA与USB\U CDC?
先谢谢你。
高科技,
为了实现USB的最大可能性能,您应该使用1.0.14 SDK并进行以下更改:
1) 在文件hw\u usb.c中,在函数hw\u usb\u init()中更改如下:
REG\ U SET\字段(USB、USB\ MAMSK\ U REG、USB\ M\ U NAK、REG、1);
REG\ U SET\字段(USB,USB\ MAMSK\ U REG,USB\ M\ U FRAME,REG,1);
收件人:
REG\ U CLR\ U字段(USB、USB\ MAMSK\ U REG、USB\ M\ U NAK、REG);
REG\ U CLR\ U字段(USB、USB\ MAMSK\ U REG、USB\ M\ U FRAME、REG);
2) 通过在custom\u config\u qspi.c中设置宏来启用DMA:
#定义dg\ U配置USB\ U DMA\ U支持(1)
谢谢你的对话
你好,谢谢你的回复,你说的我都做了,但什么都没变。吞吐量仍在700kbps左右。我的代码(传输大量数据)有什么问题吗。在这里:
USBD\u CDC\u Write(hInst,传输缓冲区,2000,0);
谢谢。
请问您是使用默认的CDC还是做了任何修改?如果您使用的是默认的CDC,那么这只用于环回,而不用于性能,因为它是单任务实现的,并且只使用一个任务来进行USB接收和USB传输。如果要提高性能,强烈建议对USB接收和USB传输使用两种不同的任务。
谢谢,下午好
你好,谢谢你的回复,在你的帮助之前我用的是默认的疾病控制中心。现在我使用两个任务来解决这个问题,一个用于RX,一个用于TX,但是仍然没有任何改变。我已经附上了修改过的USB\u CDC.c文件。
minor-latin;mso-bidi-theme-font:minor-latin;background:white;mso-ansi-language: EN-US">您好!技术,
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">谢谢,下午好 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">
您好!帕拉米尔。in@gmail.com,
吞吐量不会改变,因为数据传输的物理方式是UART协议。因此,使用CDC类可以达到的最大吞吐量是700Kbps。双任务实现是实现最大吞吐量的正确方法。
高科技,
为了实现USB的最大可能性能,您应该使用1.0.14 SDK并进行以下更改:
1) 在文件hw\u usb.c中,在函数hw\u usb\u init()中更改如下:
REG\ U SET\字段(USB、USB\ MAMSK\ U REG、USB\ M\ U NAK、REG、1);
REG\ U SET\字段(USB,USB\ MAMSK\ U REG,USB\ M\ U FRAME,REG,1);
收件人:
REG\ U CLR\ U字段(USB、USB\ MAMSK\ U REG、USB\ M\ U NAK、REG);
REG\ U CLR\ U字段(USB、USB\ MAMSK\ U REG、USB\ M\ U FRAME、REG);
2) 通过在custom\u config\u qspi.c中设置宏来启用DMA:
#定义dg\ U配置USB\ U DMA\ U支持(1)
谢谢你的对话
你好,
谢谢你的回复,
你说的我都做了,但什么都没变。吞吐量仍在700kbps左右。
我的代码(传输大量数据)有什么问题吗。在这里:
USBD\u CDC\u Write(hInst,传输缓冲区,2000,0);
谢谢。
高科技,
请问您是使用默认的CDC还是做了任何修改?如果您使用的是默认的CDC,那么这只用于环回,而不用于性能,因为它是单任务实现的,并且只使用一个任务来进行USB接收和USB传输。如果要提高性能,强烈建议对USB接收和USB传输使用两种不同的任务。
谢谢,下午好
你好,
谢谢你的回复,
在你的帮助之前我用的是默认的疾病控制中心。现在我使用两个任务来解决这个问题,一个用于RX,一个用于TX,但是仍然没有任何改变。
我已经附上了修改过的USB\u CDC.c文件。
谢谢。
minor-latin;mso-bidi-theme-font:minor-latin;background:white;mso-ansi-language:
EN-US">您好!技术,
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">谢谢,下午好 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">
您好!帕拉米尔。in@gmail.com,
吞吐量不会改变,因为数据传输的物理方式是UART协议。因此,使用CDC类可以达到的最大吞吐量是700Kbps。双任务实现是实现最大吞吐量的正确方法。
谢谢,下午好