打印
[STM32G4]

定时器产生指定脉冲宽度

[复制链接]
835|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Sunwaz|  楼主 | 2022-11-23 17:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

如上图所示:
一个朋友A,他想产生一个波形,高电平:1-40us可调,低电平:1-40us可调。

他说,使用定时器中断的方式,总是无法产生1us的中断,使用nop来搭误差又很大。如果使用定时器,那如果奇数us的定时误差也很大,感到很疑惑,不知道怎么做。

我想熟悉STM32的小伙伴都知道该怎么做吧?这个其实很简单,直接使用定时器PWM就好。而产生PWM波形,最主要的三个参数就是
1>分频             为定时器提供基础时钟频率
2>计数值          可以通过计数值来决定周期
3>脉冲值          通过调整脉冲值来调整高低电平的时间分配

对于分频,提供了一个基础的时钟频率,这个频率决定了整个时间的分辨率,当然这个频率越高,导致的误差就会越大。因为这个频率是由锁相环提供,锁相环将HSE或者HSI倍频上去,频率被倍频的时候,误差也被倍频了。

我做实验所用到的外部晶体为24MHz,主频跑的72MHz,定时器1的APB总线时钟频率为72MHz,时钟的分频为0(不分频)。那此时我的时间分辨率为:13.89ns
通过串口接收到high level的数值和low level的数值,然后设置计数值和脉冲值。
计数值=(high level + low level)*72           , 例如 high level = 1us , low level = 2us,此时计数值=216
脉冲值=(计数值*high level)/(high level + low level),此时脉冲值为:72
根据这个参数设置定时器,产生的波形图如图:


这样就产生了~ 如果还有更好的方法,欢迎分享

使用特权

评论回复
沙发
大鹏2365| | 2024-7-28 23:21 | 只看该作者
对于更高的精度需求,可以使用硬件定时器(例如STM32的高级定时器)或其他专用硬件来生成精确的波形。

使用特权

评论回复
板凳
田舍郎| | 2024-7-28 23:32 | 只看该作者
高电平有过冲

使用特权

评论回复
地板
lxs0026| | 2024-7-30 20:35 | 只看该作者
使用实际测量的周期进行校准,调整PWM参数,以补偿时钟源的误差。

使用特权

评论回复
5
Uriah| | 2024-10-21 07:31 | 只看该作者

钳位二极管最常用于集成电路中

使用特权

评论回复
6
帛灿灿| | 2024-10-21 09:27 | 只看该作者

它迅速由高阻态变为低阻态

使用特权

评论回复
7
Bblythe| | 2024-10-21 10:30 | 只看该作者

减少反射,避免振荡,方便调试

使用特权

评论回复
8
周半梅| | 2024-10-21 12:26 | 只看该作者

得到正常工作状态下的输出电压和电流。

使用特权

评论回复
9
Pulitzer| | 2024-10-21 13:29 | 只看该作者

在电路中有部分电子元器件比较“脆弱”

使用特权

评论回复
10
Wordsworth| | 2024-10-21 16:28 | 只看该作者

产生一个充电放电的过程

使用特权

评论回复
11
Wordsworth| | 2024-10-21 16:28 | 只看该作者

产生一个充电放电的过程

使用特权

评论回复
12
Clyde011| | 2024-10-21 17:31 | 只看该作者

齐纳二极管作为ESD保护与单向TVS原理相同

使用特权

评论回复
13
公羊子丹| | 2024-10-21 18:24 | 只看该作者

并在必要时进行去毛刺。

使用特权

评论回复
14
万图| | 2024-10-21 19:27 | 只看该作者

之所以称为ESD静电保护器

使用特权

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

本版积分规则

3

主题

10

帖子

0

粉丝