登录/注册

STM32F103 USB 免晶振

STM32F103 USB 免晶振

更多

针对STM32F103系列实现USB免晶振的问题,以下是关键点总结:


核心结论

STM32F103的USB模块无法实现免晶振(无外部晶振)运行,主要原因如下:

  1. 时钟精度要求:USB协议要求时钟误差不超过±0.25%,而STM32F103的内部RC振荡器(HSI,8MHz)精度仅为±1%,无法满足要求。
  2. 硬件限制
    • STM32F103没有专用的HSI48(48MHz内部RC振荡器),而其他型号(如STM32F0/F3/L0)支持HSI48。
    • USB时钟必须通过PLL从外部晶振(HSE)倍频得到,无法通过HSI直接生成48MHz。

详细分析

  1. 时钟树限制

    • USB需要精确的48MHz时钟。
    • STM32F103的PLL输入只能选择HSE或HSI/2。若使用HSI(8MHz),最大PLL倍频系数为9,最高只能输出72MHz(系统时钟),但无法直接分频得到48MHz。
    • 必须使用外部晶振(如8MHz HSE)通过PLL生成72MHz系统时钟,再分频为48MHz供USB使用。
  2. 替代方案可行性

    • 无源晶振+负载电容:虽然成本低,但仍需外部元件。
    • 有源晶振:直接提供时钟信号,但成本较高。
    • 更换型号:选择支持HSI48的STM32型号(如STM32F072、STM32L052)。

配置建议

若坚持使用STM32F103,必须配置外部晶振

  1. 硬件设计
    • 添加8MHz外部晶振(HSE)和匹配电容。
    • 确保PCB布局中晶振靠近芯片,减少干扰。
  2. 软件配置

    RCC_DeInit();
    RCC_HSEConfig(RCC_HSE_ON);
    while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET);
    
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); // HSE=8MHz → PLL=72MHz
    RCC_PLLCmd(ENABLE);
    while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
    
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
    RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_Div1_5); // 72MHz / 1.5 = 48MHz
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USB, ENABLE);

替代方案

  1. 更换芯片型号
    • STM32F072:内置HSI48,支持USB免晶振。
    • STM32L052:低功耗且支持HSI48。
  2. 使用外部时钟源
    • 通过外部有源晶振或时钟发生器提供精确时钟。

常见误区


总结

STM32F103的USB功能依赖外部晶振,无法免晶振运行。若需省去晶振,建议更换支持HSI48的型号或评估外部时钟方案。

ARM系列STM32F103芯片的解密方法

破解STM32F103芯片的方法

2023-09-19 09:03:40

STM32F103外部8M不起的原因是什么?

STM32F103外部8M晶振不起振的原因是什么?

2022-01-27 07:41:43

STM32F103 启动问题

使用STM32F103,从停止模式唤醒时调用以下函数进行时钟初始化,外部晶振故障的情况下,单片机多次唤醒后会有死机情况,怀疑是在外部

2022-01-18 14:11:40

基于STM32F103的SVPWM算法实现

基于STM32F103的SVPWM算法实现

资料下载 jinyi7016 2022-03-22 12:12:17

STM32F103STM32F107区别

【主要区别】两者使用相同的stm32f10xxx reference manual,只是F107属于互联型设备,比F103多了OTG

资料下载 佚名 2021-12-02 17:06:08

基于STM32f103的输入捕获测频率和占空比

基于STM32f103的输入捕获测频率和占空比

资料下载 shyshyshy 2021-08-02 10:10:24

基于STM32f103的FFT频率测试程序下载

基于STM32f103的FFT频率测试程序下载

资料下载 shyshyshy 2021-08-02 10:07:20

基于STM32f103使用的DAC正弦波

基于STM32f103使用的DAC正弦波

资料下载 shyshyshy 2021-08-02 10:05:00

为什么使用STM32F103的RTC会出现外部的不起现象呢

为什么使用STM32F103的RTC会出现外部的晶振不起振现象呢?有什么

2021-11-24 06:44:35

STM32F103STM32F107的主要区别有哪些

STM32F103和STM32F107的晶振有何区别?

2021-10-15 07:58:18

STM32F103芯片外接去除使用内部HSI时钟

STM32F103使用内部晶振的配置及64M主频异常的解决方法为了节省空间与成本,将S

2021-08-12 07:51:54

stm32f103使用内部

stm32f103使用内部晶振(48M)并可使PF1用作普通IO口,实测可行,用如下代码替换库中时钟配置就可以static void SetSy

2021-08-10 06:25:32

stm32f103使用内部

stm32f103使用内部晶振,在进行STM32F7平台开发过程中,有时

2021-08-10 06:14:38

STM32F103修改频率

STM32F103:A.晶振:-外部高速晶

2021-08-05 07:47:37

stm32f030和stm32f103功能差异

stm32f030和stm32f103功能差异主要表现在哪?

2021-07-22 09:35:47

7天热门专题 换一换
相关标签