templeton 发表于 2026-1-14 17:07:54

STC32G144K246中USB模块和系统时钟的关系

测试发现在系统时钟60MHz及以下时,USB功能正常。
80MHz时,USB设备能枚举,但是通信一次。
100MHz时,USB设备枚举异常。
同一个固件程序,只是改了系统时钟。
系统时钟时通过PLL1分频出来的240MHz再分频所得。

USB模块的稳定性和系统运行的速度有关系吗,
在哪里可以修正上述问题?

神农鼎 发表于 2026-1-22 20:48:20

裴工:
USB-CDC/HID,CPU 可以 120MHz



ercircle 发表于 2026-1-14 20:38:22

没有设置匹配的WTST?




可以使用AiCube生成测试。



templeton 发表于 2026-1-14 20:39:50

设置了WTST = 3;
测试有这种现象。

ercircle 发表于 2026-1-15 08:58:25

templeton 发表于 2026-1-14 20:39
设置了WTST = 3;
测试有这种现象。

打包上传工程看看

templeton 发表于 2026-1-15 11:33:32

ercircle 发表于 2026-1-15 08:58
打包上传工程看看

附件是使用69-HID(Human Interface Device)协议范例例程改写的。

增加了void SysClk_Init(void)函数设置系统时钟。
78行设置具体时钟:    CLKDIV = 0x04;      //0x02:120MHz; 0x03:80MHz;0x04:60MHz;0x05:48MHz
当时钟为60MHz和48MHz时,USB通信正常,当时钟为80MHz时,通信异常。


ercircle 发表于 2026-1-15 12:07:16

等待锁频时间不够,上传工程里固定用48M的延时1ms,主频到120M就变短了



替换下就可以了:

templeton 发表于 2026-1-15 12:27:06

ercircle 发表于 2026-1-15 12:07
等待锁频时间不够,上传工程里固定用48M的延时1ms,主频到120M就变短了




这样改完,您那里测试可以正常通信吗?我这里还是和之前一样的现象。

ercircle 发表于 2026-1-15 18:08:09

楼上的附件测到74MHz附近就不稳定工作了。
使用USB-HID 中断传输类型还是尽可能降低主频工作吧。
CDC-BULK传输倒是可以工作在100M左右。





templeton 发表于 2026-1-16 09:23:14

希望官方能出个在高频率下稳定工作的USB例程。
降低工作频率,芯片的优势就少了一大块。

神农鼎 发表于 2026-1-16 09:36:15

STC32G144K246, 时钟频率可以动态调整:
1,USB通信时降低速度;
2,非USB通信时,提高速度
先 暂时 这么 弯道绕过去



尝试下,UCap = 10uF / 22uF
Core-Vcc = 22uF

页: [1] 2
查看完整版本: STC32G144K246中USB模块和系统时钟的关系