打印
[STM32L0]

STM32L0 无高级定时器输出固定数脉冲方式之一

[复制链接]
598|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
micoccd|  楼主 | 2022-4-30 20:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1. 引言
STM32 L0 系列作为一款低功耗芯片, 具有丰富的外设和高温下保持极低功耗的特性,
广泛应用于各种节能设备上和消费类电子产品中。
  

使用特权

评论回复
沙发
micoccd|  楼主 | 2022-4-30 20:56 | 只看该作者
2. 问题描述
客户计划使用 STM32L051 作为移动电子产品的某功能主控芯片,控制步进马达。移动
产品要求运行和待机都要有较低的功耗,并且能输出一定数量的脉冲。
STM32L051 具有 4
个普通定时器,每个定时器具有数个输出通道,可以产生 PWM,但是不具有重复计数器。  

使用特权

评论回复
板凳
micoccd|  楼主 | 2022-4-30 20:57 | 只看该作者
3. 实现机制
通常,我们实现 PWM 信号往往利用定时器的比较输出功能,若要控制 PWM 输出个
数,如果使用
STM32 高级定时器就比较方便。因为它有个的重复计数器功能(TIMx_RCR
寄存器) ,结合单脉冲模式实现起来就简单方便。
但是问题来了,
STM32L051 本身不具备这样的高级定时器,那么如何控制输出的脉冲
个数呢,就要考虑间接的方法。
我们从定时器章节的定时器外部触发与同步章节中可以看到,工作在门控从模式的定时
器的计数可以被触发控制信号的电平来控制。那我们是否可以基于这个机制来实现指定
PWM 脉冲个数的输出呢

根据这一原理,如果设定的这个使能计数的时间窗口恰好等于所有输出的脉冲时间总
和,理论上就可以将实现指定个数的 PWM 输出。



使用特权

评论回复
地板
micoccd|  楼主 | 2022-4-30 20:59 | 只看该作者
4. 实现方式
首先配置定时器 21 作为门控定时器,输出门控信号,控制输出脉冲个数(即计数时
长)。设置去触发定时器
22 的信号选择 OC1REF,即比较信号 1. 系统主频 32M, 输出控制
信号总长度为
270us。我们来看看相关实现过程。
图 1TIM21 的配置  


其次配置定时器 22 为从定时器,也就是输出脉冲的定时器。定时器配置从模式的 GATED
MODE. 接收的控制触发信号来自于定时器 21 的 OC1REF。 输出脉冲单个周期 27us,如下图所

图 2 TIM22 从模式配置的触发源

图 3 TIM22 的配置
  
再次,由于只需要一次门控,也就是发出固定数量的脉冲(上例中为 10 个),相对于主控定
时器来说,只发出一次控制信号,即单脉冲模式。所以在启动代码前需要配置为单脉冲方式。

最后测试结果如下,所对应的时间刚刚好。通过为连续波形查看门控时间的准确度。由
PWM 的计数完成刚好和门控时间完成。
图 3 未采用单脉冲门控的波形

图 4 采用单脉冲门控的波形

使用特权

评论回复
5
sadicy| | 2022-5-1 17:21 | 只看该作者
这波形是怎么弄的?

使用特权

评论回复
6
Bblythe| | 2022-10-7 09:06 | 只看该作者

做多层板可将做好的两块双面板用特制的粘合剂“压合”起来

使用特权

评论回复
7
Pulitzer| | 2022-10-7 12:05 | 只看该作者

将整个表面铺上一层薄薄的铜箔,并且把多余的部份给消除

使用特权

评论回复
8
Uriah| | 2022-10-7 19:06 | 只看该作者

孔璧里头必须经过电镀

使用特权

评论回复
9
帛灿灿| | 2023-6-1 08:03 | 只看该作者

会以switch-case的方式出现

使用特权

评论回复
10
Bblythe| | 2023-6-1 09:06 | 只看该作者

代码量小的时候用来做条件判断

使用特权

评论回复
11
童雨竹| | 2023-6-1 11:02 | 只看该作者

不要根据不同的参数类型走不同的代码逻辑

使用特权

评论回复
12
Pulitzer| | 2023-6-1 12:05 | 只看该作者

这是个再正常不过的coding习惯

使用特权

评论回复
13
公羊子丹| | 2023-6-1 13:08 | 只看该作者

使用Optional简化if判空

使用特权

评论回复
14
公羊子丹| | 2023-6-1 14:01 | 只看该作者

对于没有else的场景,使用ifPresent即可

使用特权

评论回复
15
Wordsworth| | 2023-6-1 15:04 | 只看该作者

每个Strategy交由Spring管理,并在构造后注册

使用特权

评论回复
16
Clyde011| | 2023-6-1 16:07 | 只看该作者

通过对判断条件取反,代码在逻辑表达上会更加清晰

使用特权

评论回复
17
万图| | 2023-6-1 18:03 | 只看该作者

不同的代码逻辑就代表了不同的策略

使用特权

评论回复
18
Uriah| | 2023-6-1 19:06 | 只看该作者

对于优秀程序员来说,这不是好代码

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

104

主题

720

帖子

1

粉丝