zanjun 发表于 2025-12-25 10:00:00

USB CDC收发速度问题

使用,打狗棒 STC8H8K64U 核心功能学习板,最近usb库,stc8h_cdc_xdata_query_demo


#include "stc8h.h"
#include "stc32_stc8_usb.h"

void main()
{
    P_SW2 |= 0x80;

    P0M1 = 0x00;   P0M0 = 0x00;
    P1M1 = 0x00;   P1M0 = 0x00;
    P2M1 = 0x00;   P2M0 = 0x00;
    P3M1 = 0x00;   P3M0 = 0x00;
    P4M1 = 0x00;   P4M0 = 0x00;
    P5M1 = 0x00;   P5M0 = 0x00;
    P6M1 = 0x00;   P6M0 = 0x00;
    P7M1 = 0x00;   P7M0 = 0x00;

    usb_init();                                     //USB CDC 接口配置

    EA = 1;

    while (1)
    {
      if (bUsbOutReady)
      {
            USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区,长度(接收数据原样返回, 用于测试)

            usb_OUT_done();
      }
    }
}
测试,收发速度很慢,哪里不对?图片显示是30秒的数据



ercircle 发表于 2025-12-25 10:18:37

什么30秒?

zanjun 发表于 2025-12-25 10:20:08

ercircle 发表于 2025-12-25 10:18
什么30秒?
计时30秒,只收发25803字节

ercircle 发表于 2025-12-25 10:26:16

zanjun 发表于 2025-12-25 10:20
计时30秒,只收发25803字节


你的发送速度只有 9B/ms
增加发送内容,至少一包64字节

zanjun 发表于 2025-12-25 10:31:49

ercircle 发表于 2025-12-25 10:26
你的发送速度只有 9B/ms
增加发送内容,至少一包64字节
谢谢回复,每毫秒9字节,每秒理论上=9000字节,30秒=270000字节,
是不是,当发送字节数小于64时,会等待凑齐64字节,一起发送
补充,我不是测试单位时间收发的最大字节数,我想测试最大响应速度,就是单位时间里主机一发一收的最大频率。

ercircle 发表于 2025-12-25 10:43:08

zanjun 发表于 2025-12-25 10:31
谢谢回复,每毫秒9字节,每秒理论上=9000字节,30秒=270000字节,
是不是,当发送字节数小于64时,会等待 ...

BULK传输不用等

INT传输一般补零

USB原理及实战一-USB-STC单片机教学视频 国芯人工智能技术交流网站 - AI32位8051交流社区

ercircle 发表于 2025-12-25 10:48:59

USB全速设备1ms一个sof,一般最快也要等下一个sof
测试收发频率要看usb抓包或逻辑分析仪抓包,串口工具不好测的:





zanjun 发表于 2025-12-25 11:01:47

ercircle 发表于 2025-12-25 10:43
BULK传输不用等

INT传输一般补零


再次谢谢,是不是串口助手发送速度不行?

ercircle 发表于 2025-12-25 11:15:54

zanjun 发表于 2025-12-25 11:01
再次谢谢,是不是串口助手发送速度不行?

不一定是工具

系统本身还有串口收发缓冲区都有影响:

ercircle 发表于 2025-12-25 11:18:20

https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=18758&pid=173815
页: [1] 2
查看完整版本: USB CDC收发速度问题