硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5807|回复: 15
收起左侧

[有问必答] STM32可以产生0.8MHZ-2MHZ 频率可调的方波吗

[复制链接]

27

主题

25

回帖

106

积分

初级会员

积分
106
发表于 2019-8-25 13:32:11 | 显示全部楼层 |阅读模式
STM32可以产生0.8MHZ-2MHZ 频率可调的方波吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2019-8-25 14:42:25 | 显示全部楼层
无压力
回复

使用道具 举报

27

主题

25

回帖

106

积分

初级会员

积分
106
 楼主| 发表于 2019-8-26 09:25:51 | 显示全部楼层

是这样的,我这个方波频率满足一个直线方程,F频率=700/1024U+100,U为另外一个参数,这个能实现吗?
回复

使用道具 举报

39

主题

929

回帖

1051

积分

至尊会员

积分
1051
发表于 2019-8-26 09:39:29 | 显示全部楼层
看你精度要求,看是精确到Hz,还是10Hz,还是100Hz,还是1000Hz。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2019-8-26 09:40:49 | 显示全部楼层
bbxyliyang01 发表于 2019-8-26 09:25
是这样的,我这个方波频率满足一个直线方程,F频率=700/1024U+100,U为另外一个参数,这个能实现吗?

这种情况下就得找个最优解,比如你要实现1000000.91Hz精度
回复

使用道具 举报

27

主题

25

回帖

106

积分

初级会员

积分
106
 楼主| 发表于 2019-8-26 09:47:07 | 显示全部楼层
ghslfgkkl88 发表于 2019-8-26 09:39
看你精度要求,看是精确到Hz,还是10Hz,还是100Hz,还是1000Hz。

精度1KHZ,就行了,就是用一个ADC的值测量的电压值控制方波产生的频率,不知道咋实现?
回复

使用道具 举报

27

主题

25

回帖

106

积分

初级会员

积分
106
 楼主| 发表于 2019-8-26 09:50:17 | 显示全部楼层
eric2013 发表于 2019-8-26 09:40
这种情况下就得找个最优解,比如你要实现1000000.91Hz精度

这个最优解怎么求出来,我就是想用一路ADC测量电压来控制这个方波的发生频率。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2019-8-26 10:03:47 | 显示全部楼层
bbxyliyang01 发表于 2019-8-26 09:50
这个最优解怎么求出来,我就是想用一路ADC测量电压来控制这个方波的发生频率。

1KHz的话,几乎随意设置即可,基本就是1KHz 到2000KHz可调,基本就是2K个值,手动分配合理的定时器分频值和周期值也分配出来了。
回复

使用道具 举报

39

主题

929

回帖

1051

积分

至尊会员

积分
1051
发表于 2019-8-26 10:19:49 | 显示全部楼层
bbxyliyang01 发表于 2019-8-26 09:50
这个最优解怎么求出来,我就是想用一路ADC测量电压来控制这个方波的发生频率。

1K的精度没问题,可以实现。剩下的无非就是映射问题。将AD的采集范围映射到0.8M~2M,比如AD码为0时对应0.8M,AD码满值时对应2M。在中间时,按比例计算即可。
回复

使用道具 举报

27

主题

25

回帖

106

积分

初级会员

积分
106
 楼主| 发表于 2019-8-26 10:49:02 | 显示全部楼层
eric2013 发表于 2019-8-26 10:03
1KHz的话,几乎随意设置即可,基本就是1KHz 到2000KHz可调,基本就是2K个值,手动分配合理的定时器分频值 ...

主要就是不会分配?
回复

使用道具 举报

27

主题

25

回帖

106

积分

初级会员

积分
106
 楼主| 发表于 2019-8-26 10:50:04 | 显示全部楼层
ghslfgkkl88 发表于 2019-8-26 10:19
1K的精度没问题,可以实现。剩下的无非就是映射问题。将AD的采集范围映射到0.8M~2M,比如AD码为0时对应0. ...

不会具体怎么搞?
回复

使用道具 举报

29

主题

514

回帖

606

积分

金牌会员

积分
606
QQ
发表于 2019-8-26 13:08:30 | 显示全部楼层
估计是跟频率相关的名词太多,没梳理清楚。
主板上的晶振频率,
主控IC 的主频频率,
主控IC,当前IO口所属的总线频率。
当前IO口的输出频率配置,
当前PWM的频率,
当片PWM的占空比。
。。。
好事多磨,我之前做无源蜂鸣器变音,最后就集中在最后的三个,协调清楚即可。
Releasing your creativity
回复

使用道具 举报

39

主题

929

回帖

1051

积分

至尊会员

积分
1051
发表于 2019-8-26 13:41:15 | 显示全部楼层

你是学生吗?这都不会?比如你的AD是8位的,0对应0.8M,255对应2M;然后你按下面步骤理解:
1. 获取当前AD码,比如当前AD码值为10
2. 先计算出AD码为10时对应输出的频率是多少,按这个例子计算公式是:(255-0)/(2M-0.8M)=(adx-0)/(y-0.8M),adx为某次读取得到的AD码值,y为计算结果,最后结果是0.847M。
3. 根据需要输出的0.847M频率,计算PWM的自动重载值
4. 将计算得到的自动重装值写进定时器
回复

使用道具 举报

27

主题

25

回帖

106

积分

初级会员

积分
106
 楼主| 发表于 2019-8-26 17:37:07 | 显示全部楼层
ghslfgkkl88 发表于 2019-8-26 13:41
你是学生吗?这都不会?比如你的AD是8位的,0对应0.8M,255对应2M;然后你按下面步骤理解:
1. 获取当前A ...

我是感谢STM32,没理清楚这些概念了,您说的这么清楚,我明白了,感谢了!
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2022-3-31 14:18:23 | 显示全部楼层
精度500HZ能实现吗,G030只有64M的主频能不能实现
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2022-4-1 10:26:25 | 显示全部楼层
灭霸的马克杯 发表于 2022-3-31 14:18
精度500HZ能实现吗,G030只有64M的主频能不能实现

没问题。

我们这个是H7的DAC测试。
image.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-10 00:03 , Processed in 0.216353 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表