[AT32F407] 能否产生32bit分辨率的PWM

[复制链接]
 楼主| octman 发表于 2025-2-23 16:12 | 显示全部楼层 |阅读模式
PWM, bi, AC, hz, DAC
本帖最后由 octman 于 2025-2-23 18:43 编辑

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

4568367bad7ff84ebf.png

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

评论

你确定你能找到32位的DAC  发表于 2025-2-24 17:56
muyichuan2012 发表于 2025-2-24 09:44 | 显示全部楼层
可以的,请参考这个案例 AT32F403A_407_Firmware_Library/ project / at_start_f403a / examples / tmr / tmr2_32bit

评论

版主 应该给个链接  发表于 2025-2-24 10:31
xionghaoyun 发表于 2025-2-24 10:31 | 显示全部楼层
例程啊
瞎折腾 发表于 2025-2-24 10:41 | 显示全部楼层
32位1K的PWM要多高的频率了啊!光一个32位就4.9G的频率了!
jobszheng 发表于 2025-2-24 11:37 | 显示全部楼层
那个只是timer是32bit的吧!
没有仔细阅读reference,感觉硬件能够实现16bit的分辨率就很厉害了吧
玄德 发表于 2025-2-24 11:39 | 显示全部楼层
本帖最后由 玄德 于 2025-2-24 17:08 编辑


.


电竞孔乙己 发表于 2025-2-24 11:45 | 显示全部楼层
两个定时器级联就可以啊
dw772 发表于 2025-2-24 14:20 | 显示全部楼层
有专用的高分辨率的pwm,比如STM32G474就有专用的HRTIMER,如果是普通32位单片机要做32位分辨率那么PWM的频率就受到限制了。如果要求不高的场合用抖频也可以模拟高分辨率,但是也不能提升太多。
ayb_ice 发表于 2025-2-24 14:48 | 显示全部楼层
32位分辨率,那输出频率就很低了,没有意义
coody 发表于 2025-2-24 22:40 | 显示全部楼层
即使可以输出32位PWM,用作DAC也没啥意义,应为其精度有限(IO电平影响),太细小的变化淹没在噪声中。
哪怕是16位PWM,3.3V时分辨率为50uV,电路噪声(特别是PWM滤波出来的电压)一般远比50uV大。
并且,32位的PWM,哪怕主频为168MHz,则PWM频率为0.039Hz,也没有啥意义。
xch 发表于 2025-2-25 10:50 | 显示全部楼层
本帖最后由 xch 于 2025-2-25 10:54 编辑

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


 楼主| 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芯片更划算
 楼主| 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的
muyichuan2012 发表于 2025-2-25 20:04 | 显示全部楼层
这个demo就是产生32 bit,你跑一下这个案例就知道了。
周期值和比较值是32bit可调。如下图位置
7471567bdb1bb6d304.png
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级别。
zhjb1 发表于 2025-4-17 17:23 | 显示全部楼层
看此文有点像我刚入职场是那时的16位ADC积分式的多,为了提高位数和降低费用曾经用两个12位的ADC级联采用,无论采用线性直流电源如何做滤波改进最后最好的结果是17位不抖动,18位有变,连19位都到不了。数字方式想实现高位DAC有点做梦。就像前边许多网友的建议:如果能弄到一篇16位的DAC就努力实现它吧,别再最求了。
当然新思想新方法技术可以从歧路来探讨解决这类问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

13

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部