[技术问答] M487KIDAE的HUSB晶振问题

[复制链接]
 楼主| stormwind123 发表于 2025-2-21 12:51 | 显示全部楼层 |阅读模式
我参考官方开发板设计了HUSB电路,调试无法识别设备,和官方电路唯一的差别就是,我使用了8M外置晶振,官方电路使用12M晶振,请问是什么原因,谢谢
nqty 发表于 2025-6-5 11:38 | 显示全部楼层
你晶振弄错了呗,分频之类的
hight1light 发表于 2025-6-5 12:43 | 显示全部楼层
你要记得,你要给USB配置成48M的频率才行哦
teaccch 发表于 2025-6-5 13:55 | 显示全部楼层
你这个时钟就是有问题的,你换成12M的就好了
gra22ce 发表于 2025-6-5 15:03 | 显示全部楼层
自己改一下PLL就对了
tiakon 发表于 2025-6-5 16:08 | 显示全部楼层
一般来说你的频率估计是不对,导致USB不行
miltk 发表于 2025-6-5 18:10 | 显示全部楼层
HUSB 控制器严格依赖 12MHz 时钟:USB 协议对时钟精度要求极高,M487KIDAE 的 HUSB PHY(物理层)需要精确的48MHz 时钟源才能正确识别设备,你的PLL估计没配置对吧
hhdhy 发表于 2025-6-5 19:15 | 显示全部楼层
8MHz 晶振导致 USB 无法同步:USB 主机(如 PC)会检测设备的时钟信号,如果频率偏差过大(如 8MHz 而非 12MHz),会导致设备无法被识别
weifeng90 发表于 2025-6-5 21:53 来自手机 | 显示全部楼层
外部晶振频率不一样,需要重新配置PLL锁相环的。
星星点点didi 发表于 2025-6-6 08:51 | 显示全部楼层
8MHz 晶振的谐波特性与 USB PHY 不匹配,可能导致信号抖动或失真,影响 USB 通信57。
a_ziliu 发表于 2025-6-6 09:33 | 显示全部楼层
8mhz可以使用。bsp 是根据12mhz算的。
把crytal 的micro define 改成8mhz用的就好了。

#define __HIRC      (12000000UL) =>8000000

/* Set core clock as PLL_CLOCK from PLL */
    CLK_SetCoreClock(FREQ_192MHZ);

    /* Set both PCLK0 and PCLK1 as HCLK/2 */
    CLK->PCLKDIV = CLK_PCLKDIV_APB0DIV_DIV2 | CLK_PCLKDIV_APB1DIV_DIV2;

    /* Enable UART module clock */
    CLK_EnableModuleClock(UART0_MODULE);

    /* Select UART module clock source as HXT and UART module clock divider as 1 */
    CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART0SEL_HXT, CLK_CLKDIV0_UART0(1));

    /* Enable USBH module clock */
    CLK_EnableModuleClock(USBH_MODULE);

    /* USB Host desired input clock is 48 MHz. Set as PLL divided by 4 (192/4 = 48) */
    CLK->CLKDIV0 = (CLK->CLKDIV0 & ~CLK_CLKDIV0_USBDIV_Msk) | CLK_CLKDIV0_USB(4);
eleg34ance 发表于 2025-6-6 10:35 | 显示全部楼层
部分 USB PHY 会在初始化阶段检测时钟频率,若不符合要求(如 12MHz),可能导致 PHY 无法正常工作
一切D都好 发表于 2025-6-6 13:21 | 显示全部楼层
更换为 12MHz 晶振,这是最直接的解决方法,确保晶振频率与官方设计一致
您需要登录后才可以回帖 登录 | 注册

本版积分规则

589

主题

3620

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部

589

主题

3620

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部