STMCU小助手
发布时间:2022-7-17 19:01
|
前言 STM32F10xxx 微控制器提供了适合运行的内部 RC 振荡器 (典型地,有 8 MHz 的 HSI:高速内部振荡器)。在 25 ℃时, HSI 的典型精度为 ±1%。在 –40 到 105 ℃, RC 频率精度值扩大为 ±3%。因此,温度对 RC 精度有影响。 为补偿应用中的温度影响,用户可使用运行时校准程序,进一步微调 STM32F10xxx HSI 振荡器的输出频率,提高 HSI 的频率精度。对通信外设来说,这可能是至关重要的。 本应用笔记给出了两个校准内部 RC 振荡器的方法:找到具有最小误差的频率或找到最大允许的频率误差。两者都通过提供精确的参考源,如 RTC/64 信号或主动信号实现。, X* i! b: r8 l0 `4 d 这两个方法都基于相同的原理:计算 RC 频率 vs. 参考频率,计算 HSI 频率误差,设置RCC_CR 寄存器中的 HSITRIM 位。5 J/ K7 a" j# R5 T& ~$ c5 b- ? 1 STM32F10xxx 的内部时钟:HSI 时钟 HSI 时钟信号由内部 8 MHz RC 振荡器生成,可直接用作系统时钟,或者除以 2 用作 PLL 输入。 HSI RC 振荡器的优点是成本较低 (无需使用外部组件)。它还比 HSE 晶振具有更快的启动时间。但即使校准后,频率也不如外部晶振或陶瓷谐振器的频率精度高。 HSI 信号还可作为备份时钟源 (辅助时钟)使用,以防 HSE 晶振发生故障。 1.1 校准" ?, t F, d0 h4 b2 k 由于生产过程的不同,每个芯片的 RC 振荡器的频率都可能不同。因此,每个器件都由 ST做工厂校准,在 TA = 25 ℃时达到 1% 精度。$ S9 x6 P: `$ r0 W: b. e# I" i 复位后,工厂校准值将加载到时钟控制寄存器 RCC_CR 的 HSICAL[7:0] 位中。2 i) e& |6 f; c& M8 u" p0 k+ ] 通过设置 RCC_CR 寄存器中的 HSITRIM[4:0] 位进行用户校准。可对这些 位编程,以考虑电压和温度变化对内部 HSI RC 振荡器频率的影响。默认值为 16,加上 HSICAL 值,应能将HSI 微调至 8 MHz ±1%。前后两个 HSICAL 步进之间的微调步长 (Fhsitrim)约为 40 kHz。: Q( Z5 R7 o6 o! V! P" U6 r ! e4 n$ d* J8 q8 J8 F0 ~0 C6 |; B 2 RC 校准 2.1 校准原理 校准的原理为首先测量 HSI 频率,然后计算频率误差,最后设置 RCC_CR 寄存器中的HSITRIM 位。- t7 ~! z/ w% G6 c HSI 频率并不是直接测量的,而是使用定时器对 HSI 时钟沿计数方式算出,然后与理想值 8 000 000 Hz 比较。为此,必须有一个非常精确的参考频率,比如由外部 32 kHz 晶振提供的RTC/64 信号或 50 Hz/60 Hz 主频 (请参考第 2.2.2 章节)。对于 RTC 时钟源的情况,参考频率等于 512 Hz (32768 Hz/64)。 图 1 显示了怎样使用定时器计数个数测量参考信号周期。 * @9 c, @! z: E: o , A7 c$ ^1 p/ r! F
/ |1 |5 ^+ e5 K$ E6 Y( b 在每个上升沿会发生两个中断:捕获比较 1 中断和更新事件中断。后者用于在参考信号周期对计数器溢出计数。因为在每个新周期开始时两个中断同时发生,所以会发生额外的溢出。: \6 c; C5 K8 x- M3 p1 {- P" G4 T7 | 这就是为什么我们必须对计数器溢出的数目减 1:N – 1。4 R% E' f- F& Z+ M: v( X 因此 HSI 时钟沿计数数目如下: TimerPeriodCount N 1 – ( ) × 65535 + Capture1,其中:) o' t' l8 a) n; p5 G0 ^/ M, O# z& h – N 为一个参考频率周期期间定时器溢出的数目 – Capture1 为从定时器 CCR1 寄存器中读取的值。; S5 |7 W5 P: Y 因为定时器由内部 RC 提供时钟,所以微控制器可计算 HSI 产生的真正频率并与参考频率比较。 FrequencyRC TimerPeriodCount FrequencyRef+ k) u J" M! N9 d 误差 (单位 Hz)为 RC 频率 (FrequencyRC)与 8 000 000 Hz 之差的绝对值。 因此, RC 频率误差表示为:+ J! h& n% w' [2 v4 w& x8 P Error Hz ( ) = FrequencyRC – 80000008 s5 t3 o. r0 p" T1 A 计算误差之后,算法会确定写入 RCC_CR 寄存器中 HSITRIM 位的校准值 (若需更详细信息,请参考第 3 章节)。 ' D# d' m* K. Z; ` 2.2 硬件实现& s: T$ u% B ?/ z! a- [! R2 M- p 2.2.1 RTC/64 用作参考频率的情况:512 Hz8 d7 W. b% g0 f) L" I. a, T STM32F10xxx 可将 RTC 信号 64 分频输出至 GPIO PC13 (TAMPER-RTC 引脚)。5 z- _' x# D8 J/ y. G. A TAMPER-RTC 信号可用作 RC 校准的参考频率。要达到该目的,此引脚必须配置为复用功能推挽,连至定时器通道输入。: A' ^" q) P( ~5 J# ?& m 注: 在本应用笔记的后续部分,使用的通道为定时器 3 通道 1 (TIM3_CH1)。 图 2 显示了使用 RTC/64 作为校准的精确频率源时, RC 校准需要的硬件连接。 : A4 F% C' E) V& C ?3 }; ~4 v' M, y( q# q5 X$ B; m
2.2.2 主频用作参考频率的情况: 50 Hz/60 Hz 本节说明了使用 AC 主频作为参考频率方法的硬件需求。图 3 显示了向微控制器提供 DC 电源 (约 3.3 V)的电路实现:4 W! H1 H( J5 d, Y8 D6 l 保护定时器输入所需的唯一元件为一个电阻。因此若不需要电源,则只需在 TIM3_CH1 输入上有一个电阻以保护定时器输入的过电流。( e( k- Z. |( \% L6 y& w: ] 此电路包括一些无源元件,以将 220 V/50 Hz 的 EU 电源或 110 V/60 Hz 的 US 电源转换为3.3 V DC 电源。对于具有较高耗电电流的应用,可使用功率转换器 (请参考应用笔记AN1357:VIPower:在非隔离应用中使用 VIPer12A 作为低成本电源)。 注意: 8 Q& t# p% M7 r) U3 ]: d& A 若电流变化太大,则参考信号调节和电源电路无法使用。 对于噪声主频的情况,建议使用输入功率线性滤波器 (请参考应用笔记 AN2326:使用主频校准 ST7ULTRALITE MCU RC 振荡器)! s( O) k& u0 m: ^6 e1 b& Y 完整版请查看:附件 |
CD00221839_ZHV1.pdf
下载452.13 KB, 下载次数: 12
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:雨露均沾·逢7狂欢】之五:STM32系统时钟PLL故障排除1例
【福利三:雨露均沾·逢7狂欢】之三:AI帮我查BUG
福利三:雨露均沾·逢7狂欢】之二:STM32F407VG串口通信乱码故障的排除
基于STM32F103的I2C主从机通信
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
TFT LCD 与 FSMC 的硬件连接大容量 STM32F10xxx FSMC 接口
单片机:初学者该了解的STM32F103基础知识
2025软件工具兔哥知道
STM32之继电器模块
微信公众号
手机版