你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

HRTIM 指南

[复制链接]
STMCU小助手 发布时间:2022-7-14 18:00
前言
在 STM32 微控制器中, STM32F334xx 产品的目标市场是需要高度精确计时数字信号、尤其是数字功率转换应用的细分市场。包括:
• 数字电源;
• 照明;
• 不间断电源;
• 太阳能逆变器;
• 无线充电器。
STM32F334xx 微控制器具有高分辨率定时器 (HRTIM)外设,可产生多达 10 个信号,能够处理用于控制、同步或保护的各种不同输入信号。其模块化架构允许对大部分转换拓扑和多并联转换器进行处理,并可在运行中重新配置它们。
通过 STM32F334 参考手册初步了解时,此外设可能看起来比较复杂,这主要是由于它有大量的控制寄存器组。为了补充这份详尽的说明,我们另外提供了一个文档,其中包括快速上手说明以及示例汇总。
在其第一章中,本指南旨在表明 HRTIM 编程很简单。首先说明环境 (就像是有菜谱的同时也需要有厨房)设置,接着给出了若干简单示例,通过实践帮助理解。这些基本案例用来逐步介绍定时器功能,并提供编程指导。不熟悉 HRTIM 的读者应该仔细阅读本章。
第二部分是转换器集合,可在开始新设计时使用,从中选取现成的代码示例,或者从中得到灵感和编程技巧来处理本文档中未描述的拓扑。但是需要注意,本指南不包括转换器设计本
身 (控制技术和元件设计),这些内容在专门的应用笔记中有描述。
如有必要,每个示例都提供了简要的转换器说明 (拓扑和到 MCU 的连接)、控制波形和代码段。

1 完成环境的准备
本章中,我们会确保在开始前所有必需的要素均准备就绪,因此可以仅关注 HRTIM 编程。
下列文件作为参考:
STM32F334x4/x6/x8 数据手册
STM32F334x4/x6/x8 勘误表
RM0364 参考手册 STM32F334xx 高级 ARM® 为基础的的 32 MCU
UM1733STM32F334 探索套件入门
UM1735STM32F3 系列的探索套件 - 采用 STM32F334C8 MCU
UM1736STM32F334 探索软件开发工具入门
AN4885:使用 STM32F3348 Discovery 进行高亮度 LED 调光
预先阅读 RM0364 中的 HRTIM 章节会有帮助。
1.1 必备条件
在享受 HRTIM 的优势之前,我们列出其前提条件。希望读者具有基本的 C 编程技巧,关于MCU 和开发环境的少量经验,以及关于开关模式电源的理论背景。控制策略和元件尺寸标注细节不在本应用笔记范围内,它们可在大量文献中获取。
为简单起见,本指南仅考虑逻辑信号或直接由 MCU 处理的模拟电压,这样就是与电平无关的。不过有些参考文献涉及外部元件接口和电源切换影响 (当定时器或 MCU 具有处理它们的功能时)。
最后,需要提醒的是,如果 STM32F334 HRTIM 用于具有危险电压的应用中,则应由熟练的技术人员来操作功率应用,以避免电击、烧伤甚或死亡的风险。

1.2 硬件设置
STM32F334 探索板是价格非常实惠的工具,是开始 (以及继续)用 HRTIM 做实验的最佳选择 (订购码:STM32F3348-DISCO)。它包含了编程接口,芯片编程和调试所需的附加材料只是 USB 连接线。所有 I/O 均可在 2.54 mm 间隔的引脚上使用,因此也可连接到穿孔 / 条状板 / 试验电路板。套件还有两个功率转换器:一个用于 LED 驱动的反向降压转换器和一个低电压降压 / 升压转换器,均具有独立的输入和输出。
示波器是必备的,最后它与逻辑分析仪一起,用于配置对超过 4 个通道的监测。为了显示出细微的高分辨率步长,示波器的采样率必须至少超过 1GS/s,具有交错采样选项,可将时间精度提高超过 217ps 定时器分辨率。
在早期调试阶段,一个或几个函数发生器可帮助仿真来自功率转换器的反馈 (逻辑脉冲或模拟信号)。该发生器必须有触发输入,用于一些特殊用途。如果缺少,也可利用空闲的定时单元,由 HRTIM 本身来仿真反馈信号,这需要多编写一些代码 (或重复利用软件示例)。

1.3 工具设置
必须安装一个编译器 (所有示例均适用 32K)以及支持 ST-LINK-V2 调试接口的 IDE
下面给出的代码片段与编译器无关:
它们将被简单地复制到面向各种工具链的通用 HRTIM工程模板中。
对于下面的工具链,软件源随工作空间给出:
IAR (EWARM 7.10.3)
KEIL® (MDK-ARM 4.7)

1.4 STM32F334 HRTIM 设置
1.4.1 系统时钟初始化
为了实现高分辨率, HRTIM 需要由 PLL 高频输出直接馈送。有两种选择可供使用:
基于晶体的高速外部(HSE)振荡器,由 PLL 倍频后可提供 144MHz 的频率。这种情况下,此高分辨率为 217ps 144MHz 时钟周期的 1/32);
高速内部(HSI)振荡器,能够提供 128MHz 的频率(8MHz PLL 倍频 16 倍)。这种情况下,高分辨率步长为 244ps 128MHz 时钟周期的 1/32)。该选项适用于有限的温度范围,相关情况参见 STM32F334 数据手册。
HAL 库初始化 (HAL_Init)后,立即在主程序中使用 SystemClock_Config() 函数,完成时钟初始化。
CPU 时钟也来源于 PLL (除以 2 之后),因此它可达到 PLL 输出频率的一半 (使用 HSE
时为 72MH,使用 HSI 时为 64MHz)。它还可被降低,以减少 MCU 功耗,同时保持高分辨
率功能。
可最后在主程序中执行 SystemCoreClockUpdate 函数来验证 CPU 工作频率:该频率在
SystemCoreClock 变量中更新。
1.4.2 HRTIM 初始化
本章逐步地详细介绍如何初始化 HRTIM,包括各个函数调用。实际上,这在HAL_HRTIM_Init HAL_HRTIM_MspInit 程序中完成。

HRTIM 时钟初始化
MCU 上电并开始运行, HRTIM 在编程之前就必须进行时钟控制。这利用复位和时钟控制RCC)来实现,包括 2 个步骤:
1.
RCC_CFGR3 寄存器中的 HRTIM 选择高速 PLL 输出:
__HAL_RCC_HRTIM1_CONFIG(RCC_HRTIM1CLK_PLLCLK);
2. 为在 APB2 总线上映射的寄存器进行时钟使能。
__HRTIM1_CLK_ENABLE();

1.4.3 HRTIM DLL 初始化
HRTIM 的延迟锁相环 (DLL)可提供细粒度计时,将高频率 (144 128MHz)时钟周期分为 32 个均匀分布的间隔。
在使用高分辨率前,此 DLL 必须至少校准一次。如果电压或温度条件发生改变,在 HRTIM操作过程中可透明地重新进行该校准。也可由硬件使能周期校准。
下面的代码段显示如何完成校准。当 DLLRDY 标志被置位后,高分辨率可用。
/* DLL 校准:使能了周期校准,周期设置为 14µs */HRTIM1->sCommonRegs.DLLCR = HRTIM_CALIBRATIONRATE_14| HRTIM_DLLCR_CALEN;/* 检查 DLL 校准完成的标志位 */
while(HRTIM1->sCommonRegs.ISR & HRTIM_IT_DLLRDY == RESET);
建议使能周期校准,默认情况下采用最小校准周期 (设为 14µs)。
注: 如果 DLL 未锁定 (通常是由于 HSE 振荡器未正常配置),下面的代码将引起执行延迟。
HAL 库包含一个函数来实现校准,它具有超时验证,如有必要可重定向至差错处理程序。基HAL 的软件示例中使用了此函数。
1.4.4 HRTIM I/O 初始化
HRTIM 输入和输出映射到标准 I/O 端口,必须像其他 I/O 外设一样进行编程。 HRTIM 端口通道影射为:
AF13 通道 (面向 HRTIM I/O 端口,位于端口 A B);
AF3 通道 (面向 HRTIM I/O 端口,位于端口 C);
HRTIM I/O 初始化必须在两个阶段中完成。在 HRTIM 寄存器之前,首先在HAL_HRTIM_MspInit 函数中初始化 HRTIM 输入。
HRTIM 输出必须在 HRTIM 控制寄存器编程 (示例中它在 GPIO_HRTIM_outputs_Config 数中完成)后且当计数器使能时进行初始化。这是为了保证来自 GPIO 电路的控制信号传输HRTIM 定时器之前,在 HRTIM 中能够正确定义输出状态。

1.4.5 其他外设初始化
HRTIM 与多种 MCU 外设交互作用,如下所列。进行 IHRTIM 操作时不强制要求对它们全部
进行初始化。下列外设的初始化代码在后面所述的一些示例中提供。

嵌套向量中断控制器 (Nested Vectored Interrupt ControllerNVIC
HRTIM 中断请求分组为 7 种中断向量。所有错误均分组到一个特殊向量中,可设置为非常高的优先级。
HRTIM 相关的 NVIC 部分在 HAL_HRTIM_MspInit 函数中进行编程。

DMA 控制器
大部分中断请求可用作 DMA 请求,分组到 6 DMA 通道 (每个定时单元一个,包括主定时器)
当启动定时器时,基于 DMA HRTIM 操作使能,利用专门的开始 / 停止函数如HAL_HRTIM_WaveformCounterStart_DMA

比较器
3 个内置比较器可用来调节模拟信号:它们必须在输出到达 HRTIM 前进行初始化。
初始化包括模拟输入编程、时钟使能和极性。

运算放大器
内置运算放大器能够放大进入 ADC 或比较器的低电压信号,也可直接充当比较器 (相比普通比较器,它速率较低)。它必须与比较器一样进行初始化。

ADC 转换器
HRTIM 能够触发两个 ADC 转换器中的任意一个。应初始化它们以接收外部触发器信号 (在其常规和 / 或注入转换序列上)。
ADC 的另一个可能用途在于使用模拟看门狗在 HRTIM 上触发外部事件 (用于输出置位 / 位或计数器复位)。

DAC 转换器
DAC 转换器通常用于定义比较器阈值。它们可利用 HRTIM DAC 触发器,与 HRTIM 操作同步更新。

通用定时器
HRTIM 也可连接到其他片上定时器,有以下用途:
作为外部事件;
作为突发模式触发器或时钟;
用于 HRTIM 寄存器更新触发。

1.4.6 HRTIM 功能检查
当所有初始化完成,可验证 HRTIM 能够利用下面的简单代码来运行。此示例代码HRTIM_BasicPWM 示例)使能了 HRTIM TD1 输出并通过软件对其进行切换。
/* 使用 PLLx2 时钟来实现 HRTIM */
__HAL_RCC_HRTIM1_CONFIG(RCC_HRTIM1CLK_PLLCLK);DocID026506 Rev 1 [English Rev 1] 9/33
/* 使能 HRTIM 时钟 */
__HRTIM1_CLK_ENABLE();
/* DLL 校准:使能了周期校准,周期设置为 14µs */
HRTIM1->sCommonRegs.DLLCR = HRTIM_CALIBRATIONRATE_14| HRTIM_DLLCR_CALEN;
/* 检查 DLL 校准完成的标志位 */
while(HRTIM1->sCommonRegs.ISR & HRTIM_IT_DLLRDY == RESET);
HRTIM1->sCommonRegs.OENR = HRTIM_OENR_TD1OEN; /* 使能 TD1 输出 */
GPIO_HRTIM_outputs_Config(); /* 初始化 HRTIM 输出 */
while(1)
{
/* 通过软件来置位和复位 TD1 */
HRTIM1->sTimerxRegs[HRTIM_TIMERINDEX_TIMER_D].SETx1R = HRTIM_SET1R_SST;
HRTIM1->sTimerxRegs[HRTIM_TIMERINDEX_TIMER_D].RSTx1R = HRTIM_RST1R_SRT;
}

此处复制的代码片段可从 HRTIM_Snippets HRTIM_BasicPWM 示例中获取。两种情况下都须通过 #define HRTIM_CHECK 语句来选择示例。
对于本文档其余部分,时钟和 DLL 初始化部分将不再重复,而代之以对HRTIM_Minimal_Config() 函数的调用。

完整版请查看:附件

DM00121475_ZHV1.pdf

下载

820.72 KB, 下载次数: 179

收藏 1 评论3 发布时间:2022-7-14 18:00

举报

3个回答
wf237574800 回答时间:2024-5-3 16:29:24
[md]
大海无聊 回答时间:2024-9-9 10:06:01

下载看看

Goodluckone 回答时间:9 小时前

下载看看

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版