打印
[AT32F407]

能否产生32bit分辨率的PWM

[复制链接]
2073|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
octman|  楼主 | 2025-2-23 16:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
PWM, bi, AC, hz, DAC
本帖最后由 octman 于 2025-2-23 18:43 编辑

因为用到PWM产生高分辨率的DAC, 请问能否产生32bit分辨率的PWM?
看规格书好像有计数器能达到32bit, 不知道谁知道怎样调出一个32bit分辨率的PWM?



自己算了一下, 240MHZ, 16bit之后, pwm最多1.8KHZ的频率, 那32bit就更低了, 所以我觉得这么低的频率做dac意义不大了, 除非专用的mcu

使用特权

评论回复
评论
通宵敲代码 2025-2-24 17:56 回复TA
你确定你能找到32位的DAC 
沙发
muyichuan2012| | 2025-2-24 09:44 | 只看该作者
可以的,请参考这个案例 AT32F403A_407_Firmware_Library/ project / at_start_f403a / examples / tmr / tmr2_32bit

使用特权

评论回复
评论
xionghaoyun 2025-2-24 10:31 回复TA
版主 应该给个链接 
板凳
xionghaoyun| | 2025-2-24 10:31 | 只看该作者
例程啊

使用特权

评论回复
地板
瞎折腾| | 2025-2-24 10:41 | 只看该作者
32位1K的PWM要多高的频率了啊!光一个32位就4.9G的频率了!

使用特权

评论回复
5
jobszheng| | 2025-2-24 11:37 | 只看该作者
那个只是timer是32bit的吧!
没有仔细阅读reference,感觉硬件能够实现16bit的分辨率就很厉害了吧

使用特权

评论回复
6
玄德| | 2025-2-24 11:39 | 只看该作者
本帖最后由 玄德 于 2025-2-24 17:08 编辑


.


使用特权

评论回复
7
电竞孔乙己| | 2025-2-24 11:45 | 只看该作者
两个定时器级联就可以啊

使用特权

评论回复
8
dw772| | 2025-2-24 14:20 | 只看该作者
有专用的高分辨率的pwm,比如STM32G474就有专用的HRTIMER,如果是普通32位单片机要做32位分辨率那么PWM的频率就受到限制了。如果要求不高的场合用抖频也可以模拟高分辨率,但是也不能提升太多。

使用特权

评论回复
9
ayb_ice| | 2025-2-24 14:48 | 只看该作者
32位分辨率,那输出频率就很低了,没有意义

使用特权

评论回复
10
coody| | 2025-2-24 22:40 | 只看该作者
即使可以输出32位PWM,用作DAC也没啥意义,应为其精度有限(IO电平影响),太细小的变化淹没在噪声中。
哪怕是16位PWM,3.3V时分辨率为50uV,电路噪声(特别是PWM滤波出来的电压)一般远比50uV大。
并且,32位的PWM,哪怕主频为168MHz,则PWM频率为0.039Hz,也没有啥意义。

使用特权

评论回复
11
xch| | 2025-2-25 10:50 | 只看该作者
本帖最后由 xch 于 2025-2-25 10:54 编辑

找个内置高分辨率TIMER的MCU,然后辅助Δ∑滤波处理 生成 PWM 调制参数。比如用 HC32F334已经内置22位PWM,Δ∑滤波器合成32bit 输出高22位用MCU硬件输出,低10位用软件调制22位合成等效的32位


使用特权

评论回复
12
octman|  楼主 | 2025-2-25 16:18 | 只看该作者
本帖最后由 octman 于 2025-2-25 16:22 编辑
coody 发表于 2025-2-24 22:40
即使可以输出32位PWM,用作DAC也没啥意义,应为其精度有限(IO电平影响),太细小的变化淹没在噪声中。
哪 ...

您说的太对了, IO电平来自MCU的VCC, noise很大, 没有高精度的意义. 同时IO口的输出电阻也是随着温度在改变, 这些都是影响精度的.
但是如果我通过外部的电路来驱动RC或者LC滤波呢? 外部电路用专有的电源.
这样是否可行?可能要高精度的DA, 只能用专用的DAC芯片更划算

使用特权

评论回复
13
octman|  楼主 | 2025-2-25 16:20 | 只看该作者
muyichuan2012 发表于 2025-2-24 09:44
可以的,请参考这个案例 AT32F403A_407_Firmware_Library/ project / at_start_f403a / examples / tmr / t ...

那个只是timer是32bit的

使用特权

评论回复
14
muyichuan2012| | 2025-2-25 20:04 | 只看该作者
这个demo就是产生32 bit,你跑一下这个案例就知道了。
周期值和比较值是32bit可调。如下图位置

7471567bdb1bb6d304.png (34.23 KB )

7471567bdb1bb6d304.png

使用特权

评论回复
15
coody| | 2025-2-27 10:05 | 只看该作者
octman 发表于 2025-2-25 16:18
您说的太对了, IO电平来自MCU的VCC, noise很大, 没有高精度的意义. 同时IO口的输出电阻也是随着温度在改变 ...

那不如直接使用高精度的16位DAC。
使用PWM做DAC可以获得高精度和高线性度,但是要付出比较高的代价,我的方案是:低噪声基准AVREF,PWM控制高速模拟开关(速度小于10ns),单刀双掷,开关内阻要小(小于10欧姆),PWM高电平时模拟开关接AVREF,PWM低电平时接GND,然后用零漂移高精度运放做低通滤波(同时做阻抗变换),这样下来,会得到比较高精度的DAC,不过,输出带宽很低,Hz级别。

使用特权

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

本版积分规则

2

主题

5

帖子

0

粉丝