首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给定相同的频率,为什么当分辨率降低时pwm周期会减小?

给定相同的频率,为什么当分辨率降低时pwm周期会减小?
EN

Stack Overflow用户
提问于 2022-11-17 11:39:36
回答 1查看 48关注 0票数 0

我有一个ESP32-C3和下面的锈蚀代码。保持频率,但降低分辨率,我期望的精度脉宽下降,但不幸的是,它也缩短了周期(加速)。我期望这段时间保持不变,因为我认为这完全取决于频率,而不是分辨率。

代码语言:javascript
复制
let pwm_pin = peripherals.pins.gpio10.into_output().unwrap();
let config = TimerConfig::default().frequency((50.Hz()).into()).resolution(Resolution::Bits13);
let timer = Timer::new(peripherals.ledc.timer0, &config)?;
let mut channel = Channel::new(peripherals.ledc.channel0, &timer, pwm_pin)?;

// set duty cycle to 50%
let percent = 50;
let duty = ((channel.get_max_duty() as f64 / 100.0) * percent as f64) as u32;
channel.set_duty(duty);

13位的脉宽调制周期为20 50,占空比为50%,脉宽为10 50。

降低对Resolution::Bits8的分辨率,不仅降低了占空比粒度,而且缩短了周期。

8位的脉宽调制周期为250μs,占空比为50%,脉宽为124 50。

如何从给定的频率和分辨率计算周期。我在网上找到的只是对period = 1/frequency的引用,它没有考虑到决议。

EN

回答 1

Stack Overflow用户

发布于 2022-11-21 09:26:53

GitHub上有人揭开了这里发生的一切的面纱.

一种简单的反向计算:8位-> 255 =250 8bit =20 80 => x=y>*20 80/ 250us => y=80&x= 20400。因为20400 >13 bit,我们最初的假设255 =250 but不是真的,但已经低了一点。但仍有80倍的跌幅。与高输入时钟相比,低频的问题是,你要么需要一个高分辨率计数器(例如许多位),要么进一步分割你的时钟源,否则你就填快你的寄存器。(计数到255个比以相同的计数速度计数到20400要快),但有时您的硬件有限,无法达到所有期望的输出速度(您已经将输入时钟除以最大分频器)。因此,如果它达到了硬件的限制而无法转换,那么它就必须分别提高频率。

链接到讨论https://github.com/esp-rs/esp-idf-sys/issues/154

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74474847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档