纯今 发表于 2024-4-9 17:16:55

最大包64字节限制问题(一键双雕之USB转双串口固件)

本帖最后由 纯今 于 2024-4-10 15:31 编辑

问题的起因是,对比FT232RL与CH340G转串口

发现FT232RL拥有FIFO缓存高达4K 4096 字节,而CH340G拥有FIFO缓存只有可怜兮兮的64字节

正常联想,我就查看了STC8H8K64U的DATASHEET,赫然标注:1280 字节USB 数据RAM。嗯,硬件很优秀

我想起USB协议栈默认一次最大包是64字节,我就下载了发表在嘉立创开源项目的那个固件,在usb_desc.c源代码中发现

在设备描述符中,bMaxPacketSize0 字段的值为 0x40,这表示默认的端点0的最大包大小是64字节(0x40 转换为十进制就是64)。端点0通常用于控制传输,而控制传输的大小通常被限制在64字节。

在配置描述符中,定义了多个接口和端点。对于每个端点,wMaxPacketSize 字段指定了该端点的最大包大小。在该固件源代码的描述符中,所有的批量传输(Bulk)端点和中断传输(Interrupt)端点的 wMaxPacketSize 都被设置为 0x40,即64字节。譬如,批量输入端点4(0x84)和批量输出端点5(0x05)的描述符中,wMaxPacketSize 都被设置为 0x40。同理,中断端点3(0x83)的描述符中,wMaxPacketSize 同样被设置为 0x40。从描述符配置信息来看,所有的端点都遵循了USB 2.0协议中对端点的最大包大小的限制,即64字节。这意味着,尽管STC这颗MCU具备处理更大数据包的能力,但在与USB主机通信时,它仍然遵循了USB协议的标准限制。

发表在嘉立创的开源项目,采用的是STC8G1K08这颗MCU,这是比STC8H8K64U低档些的产品,阅读它的DATASHEET未发现它有USB缓存,是否正因为没有缓存,所以固件源代码采用了默认。我不仅采购了STC8G1K08这颗MCU,也采购了多颗STC8H8K64U这种MCU。虽然,它们还在途中。

我自然想问问官方,贵司有针对STC8H8K64U这颗拥有1280字节USB缓存MCU吞吐能力优化过的固件吗?是几种不同的MCU都是用嘉立创开源项目里下载的一种源代码吗?

乘风飞扬 发表于 2024-4-9 17:31:28

USB模块6个端点总共有1280字节的FIFO,大部分端点的缓冲区上限也就64字节。

官方提供的例程包里面大部分都有USB的开源例子,例如STC8H实验箱例程包。
论坛下载地址:https://www.stcaimcu.com/plugin.php?id=mdown:index#/~cateid=5&key=

纯今 发表于 2024-4-9 21:09:24

本帖最后由 纯今 于 2024-4-9 21:10 编辑

乘风飞扬 发表于 2024-4-9 17:31
USB模块6个端点总共有1280字节的FIFO,大部分端点的缓冲区上限也就64字节。

官方提供的例程包里面大部分都 ...
https://www.stcaimcu.com/data/attachment/forum/202404/09/172721twwcnehcswlltpm7.jpg

你好:感谢回复

原来,STC8H系列MCU的多功能USB特性是通过0-5一共6个Endpoint实现的。其中,Endpoint4-5支持128字节的输入和256字节的输出。对于其他Endpoint,定义它们支持键盘、鼠标和摇杆等设备,USB to UART的优化可否通过特别分配到Endpoint4-5来实现?

至于STC8G1K08,由于没有USB专用缓存,它应该是利用128字节的内部直接访问RAM(DATA)。它默认最大包为64字节,这是由于客观所限。

我的良好意愿是想充分发挥1280字节USB缓存的优势,希望官方工程师能够有针对性地进行优化。如果官方能告诉我即使最大包64字节,对软件兼容性很好了,速度也已经很好了,我也就放心大胆进行各种实验了

神农鼎 发表于 2024-4-9 21:20:17

STC8H2K08U ?

深圳国芯人工智能有限公司-产品_STC8H系列 (stcai.com)

纯今 发表于 2024-4-9 21:38:30

本帖最后由 纯今 于 2024-4-9 21:39 编辑

神农鼎 发表于 2024-4-9 21:20
STC8H2K08U ?

深圳国芯人工智能有限公司-产品_STC8H系列 (stcai.com)
你好:管理员
STC8G1K08这个型号,我没打错。我提这个型号是从嘉立创你们一个开源项目BOM中看来的。为了实验方便,我还从淘宝特意选择DIP封装。我就是从这个型号MCU的固件,阅读源代码发现最大包64字节。我对优化它不抱希望了
STC8H我购买的是STC8H8K64U,买了很多只,不仅仅为了转串口。网络上流传很多关于STC的神奇传说,比如时序混乱啦,我打算用STC8H8K64U亲自看看是不是谣言

神农鼎 发表于 2024-4-9 22:16:12

STC8G1K08 没有 硬件 USB

纯今 发表于 2024-4-9 23:06:24

神农鼎 发表于 2024-4-9 22:16
STC8G1K08 没有 硬件 USB

你好,管理员,如果没有USB不支持,这事就神奇了

请看就是这个链接:https://oshwhub.com/yefeng88/stc-zui-jian-usb-zhuan-shuang-chuan-kou

我还为您截了一个图


纯今 发表于 2024-4-9 23:22:11

神农鼎 发表于 2024-4-9 22:16
STC8G1K08 没有 硬件 USB

管理员你好:让您这么一说,我去看了一下DATASHEET
发现有这么一段描述,请用通俗大白话为我讲下好吗?

STC8G1K08-20PIN 系列芯片所支持的 USB 下载为 I/O 口软件模拟的 USB 通信,
不可避免的受各种软硬件因素的影响,尤其是电脑端的不同软件和硬件版本的
影响,导致有一定比例的芯片无法进行 USB 下载(实测约有 0.2%无法 USB 下
载)。建议批量生产还是使用普通的串口下载或 USB 转串口下载。

神农鼎 发表于 2024-4-10 07:57:05

就是改用有硬件USB的RMB0.99的
STC8H2K08U-45I-TSSOP20/SOP16









神农鼎 发表于 2024-4-10 08:01:43








页: [1] 2
查看完整版本: 最大包64字节限制问题(一键双雕之USB转双串口固件)