stm32晶振匹配电容_STM32芯片+8M+32.768Khz晶振的设计思路与参考方案

本文介绍了STM32F1系列MCU的晶振匹配,推荐了KDS品牌的8MHz主频晶振和SJK品牌的32.768kHz时钟晶振,提供了多种封装尺寸和精度选项,并强调了32.768KHz晶振在时钟精准度中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       STM32系列产品是ST在2007年推出的基于ARM@Cortex-M内核的高性能、低成本、低功耗MCU。STM32F1系列是最早推出的一个产品系列,也是目前用的最多的一个产品系列。

a472b3672fae5b3bded911eacdba901d.png

本文主要讲解STM32系列MCU

匹配晶振的推荐选型及注意事项

369542e8303b707ef520ca8709f92385.png

c920988af15c3d41c5b4e4231fcaebd0.png

STM32F103

8815f50d338d576d624f6f8683a1ddde.png

一般来说MCU需要接入一个主频和一个时钟频率,STM32

### STM32F103 外接 32.768kHz 晶振配置方法及所需电容值 当 STM32F103 使用外部 32.768kHz 晶振时,其配置涉及硬件电路设计以及软件初始化两部分。 #### 硬件电路设计 对于 32.768kHz晶振,通常需要两个负载电容来帮助晶振正常起振并稳定工作。如果晶振规格书要求的负载电容为 20pF,则理论上应选择两个 40pF 的电容器作为实际使用的负载电容[^1]。然而,在实际应用中,考虑到 PCB 板寄生效应的影响,推荐选用稍低于理论计算值的实际电容值。因此,常见的做法是选择两个约 12pF 或者 22pF 的电容[^2]。 具体到 STM32F103 芯片上,外接 32.768kHz 晶振时并不强制规定必须使用特定数值的电容,而是建议依据所选晶振的具体参数调整匹配电容大小。例如,某些情况下可以选择两个 22pF 的电容;而在其他场景下可能更倾向于采用 12pF 左右的电容以优化性能表现。 值得注意的是,现代一些集成型 MCU 如 STM32L 系列已经内置了高质量的 32.768kHz 振荡器,从而避免了因外部晶体电路不恰当的设计而导致无法成功启动的问题,并提升了整体系统的可靠性制造效率[^3]。尽管如此,针对传统型号如 STM32F103 这类未完全嵌入该功能的产品而言,合理设置外围元件仍然至关重要。 以下是典型的硬件连接图示: ```plaintext +----------------+ | | GND---C9----|XOSC_IN| | | XOSC_OUT|--------GND | | +-------C12-----+ ``` 其中 `C9` 和 `C12` 即为上述提到的负载电容。 #### 软件初始化过程 为了使 RTC 功能能够利用此低频信号源计时,还需要完成相应的固件编程操作。这主要包括开启 LSE (Low Speed External Oscillator),并通过 RCC 控制器将其分配至 RTC 设备之中。下面给出了一段基于 HAL 库实现的例子代码片段用于演示如何启用 LSE 并关联至 RTC: ```c #include "stm32f1xx_hal.h" void SystemClock_Config(void); static void MX_RTC_Init(void); int main(void){ // 初始化HAL库 HAL_Init(); // 配置系统时钟 SystemClock_Config(); // 初始化RTC模块 MX_RTC_Init(); while (1){} } // RTC初始化函数 static void MX_RTC_Init(void) { RTC_TimeTypeDef sTime = {0}; RTC_DateTypeDef DateToUpdate = {0}; /** Initialize RTC and set the Time and Date */ if(HAL_RTC_GetState(&hrtc)!= HAL_OK){ Error_Handler(); } /* Enable Power Clock*/ __PWR_CLK_ENABLE(); /* Enable access to Backup Domain */ HAL_PWR_EnableBkUpAccess(); /* Configure Low speed external clock source */ __HAL_RCC_LSE_CONFIG(RCC_LSE_ON); /* Wait till LSE is ready */ if(HAL_IS_BIT_SET(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY))){ }else{ Error_Handler(); } /* Select RTC Clock Source as LSE */ __HAL_RCC_RTC_CONFIG(RCC_RTCCLKSOURCE_LSE); /* Enable RTC Clock */ __HAL_RCC_RTC_ENABLE(); /* Set RTC time & date here... */ } ``` 以上程序展示了怎样激活 LSE 并指定它成为 RTC 输入时基的一部分流程。当然完整的项目还应该包含错误处理机制以及其他必要的业务逻辑扩展等内容。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值