2025.7.22 经验分享会
2025年7月22日下午,上海实邦电子科技有限公司开展了一次经验交流会,由刘工和陈工一起分享了他们在工作中积累的一些经验。
首先是刘工分享了----AT32图形工具
STM32可使用图形工具,通过鼠标点击,配置相应的功能,减少重复工作,节约开发周期。一些项目,由于各种限制,在使用国产单片机时,就需要工程师自己从相应的例程,提取相应的驱动,放到自己的项目中。这个过程需要工程师眼明心细,一不小心,配置错误,还要回过头来一点一点的找问题。
其实国产单片机也有自己的图形工具,接下来,我向大家介绍一款国产图形工具,基于AT32(雅特力半导体)。
AT32-work_bench(下载连接:https://www.arterytek.com/cn/product/AT32F403A.jsp#Resource)
这个流程是比较清晰的:选择单片机型号-->新建(打开)
接下来就是配置相应的功能,和STM32图形工具差不多,多了一个代码预览,配置完成后,可以先看看都生成了哪些文件,以及代码内容。
这个流程也是比较清晰的:配置时钟-->配置下载口-->配置相应的功能-->生成相应的代码
1、配置1ms定时器
2、配置收发双向,波特率115200串口
3、配置SPI
4、配置ADC
5、配置DMA
注意:其他外设配置后可直接使用,DMA配置后程序要做相应的修改
陈工分享了-----影子寄存器
1. 基本概念
CCR 寄存器:用户可直接访问的寄存器,用于设置 PWM 的比较值(决定占空比)或捕获触发阈值。
影子寄存器:CCR 对应的硬件缓冲寄存器,不可直接访问,用于暂存 CCR 的新值,并在特定时机同步到实际工作电路中。
简单来说,影子寄存器相当于 CCR 的 "缓冲区",确保新的比较值不会立即生效,而是在当前 PWM 周期结束后才更新,避免波形畸变。
2. 工作机制
写入阶段:当用户修改 CCR 的值时,数据首先存入 "预装载寄存器"(即用户可见的 CCR)。
同步阶段:若影子寄存器功能开启,预装载寄存器的值会在定时器更新事件(如计数器溢出、特定触发信号)时,被自动同步到影子寄存器。
生效阶段:影子寄存器的值直接作用于 PWM 生成电路,决定下一个周期的波形参数(如占空比)。
这个过程保证了 PWM 波形的连续性 —— 当前周期仍按旧参数运行,下一个周期无缝切换到新参数。
3. 控制方式(关键寄存器位)
CCR 影子寄存器的开关由捕获 / 比较模式寄存器(TIMx_CCMR1/2) 中的OCxPE位(Output Compare x Preload Enable)控制:
OCxPE=0:关闭影子寄存器(预装载功能禁用)。此时写入 CCR 的值会立即生效,可能导致当前周期波形被截断或出现异常脉冲。
OCxPE=1:开启影子寄存器(预装载功能使能)。此时 CCR 的新值会暂存在预装载寄存器,等待更新事件(如计数器溢出)时同步到影子寄存器,下一个周期生效。
注意:OCxPE位的默认值因 STM32 型号而异(多数型号默认 0,即关闭),实际开发中需显式配置为 1 以启用影子寄存器。
4. 与更新事件的关联
影子寄存器的同步时机严格依赖定时器的更新事件(Update Event),该事件通常由以下情况触发:
计数器(CNT)从最大值溢出到 0(向上计数模式)。
计数器从 0 计数到最大值(向下计数模式)。
软件强制触发(通过TIMx_EGR寄存器的UG位)。
只有当更新事件发生时,预装载寄存器(CCR)的值才会同步到影子寄存器,确保参数在周期边界处更新。
5. 应用场景与注意事项
必须开启的场景:
电机控制、电源管理等对 PWM 波形连续性要求高的场景,避免参数突变导致的电流 / 电压波动。
多通道 PWM 同步(如三相电机驱动),确保各通道参数同时更新,维持相位关系。
可关闭的场景:
对实时性要求极高,允许波形短暂畸变的场景(如快速响应外部触发)。
注意事项:
若同时开启 ARR(自动重装载寄存器)和 CCR 的影子寄存器,两者会在同一更新事件同步,保证周期和占空比参数协同更新。
关闭影子寄存器时,修改 CCR 可能导致单个周期内出现两个不同的占空比,引发波形毛刺。
总结
CCR 的影子寄存器是通过 "预装载 - 同步" 机制实现 PWM 参数平滑更新的核心,其开启状态由OCxPE位控制。在绝大多数需要稳定波形的场景(如电机驱动、精密控制),建议显式开启该功能,确保参数在周期边界处生效,避免异常波形。实际开发中需结合具体型号的数据手册,确认OCxPE位的默认值并正确配置。
- 上一篇:没有啦
- 下一篇:何时使用负载开关取代分立MOSFET 2025/7/16