⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.wsdof.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
6个职位/0个新职位
最后一篇文章
麦格
离线
最后一次见到:3个月2周前
已加入:2020-05-26 18:20
DA14531 PWM频率

您好!

我试图学习如何使用模块DA14531的外围设备和使用的例子。

我设法产生一个脉宽调制和删除的for循环,改变脉宽调制直流和固定到50%,但频率是问题

我不明白它使用的公式,数据表上说:

定时器2\u时钟\u频率\u赫兹/所需频率\u赫兹−1

示例中有一个函数:

定时器2_pwm_freq_set();

但是我不能得到想要的频率

我可以移动参数来获得接近的结果,但关键是要知道确切的公式,而不是猜测。。。

我做错什么了吗?

PM\U对话框
离线
最后一次见到:13小时39分钟前
工作人员
已加入:2018-02-08 11:03
嗨,麦格,

嗨,麦格,

感谢您的在线提问以及您对我们的微型模块解决方案的兴趣。定时器2\u pwm\u freq\u set()配置三重\u pwm\u频率寄存器。请参阅DA14531数据表中的表327:三重\U PWM \U频率(0x50003408)以检查应如何配置。

我猜您使用的是SDK的timer2示例。我能问一下你想要完成什么,PWM输出信号应该是什么吗?是否要更改占空比?

关于频率,还请阅读timer2,h头文件中timer2\u pwm\u freq\u set()上方的注释。

谢谢,下午好

麦格
离线
最后一次见到:3个月2周前
已加入:2020-05-26 18:20
你好,

你好,

是的,我正在使用Timer2(PWM)的sdk中的示例

我想做的是得到1kHz,然后把占空比改在0-100%之间

只是现在我把它设置为50%a没有任何问题我的问题仍然是频率

在这个例子中是这样的

//系统时钟除以8,是定时器2的输入时钟源(根据
//到上面的clk\ U div\ U config结构)。PWM\ U频率
定时器2\脉宽调制\频率设置(5001600000/8);

它能提供500Hz的频率

但我注意到这个例子是基于DA14585设备(我读到的是16MHz的),我的设备是32Mhz的,数据表上说

所以我改成

ttimer2\u脉宽调制\u频率设置(10004000000);

我得到的频率是3.676Hz。。。

数据表上说,三重脉冲宽度调制频率注册表有以下公式:

pwm频率=模块频率/(值+1)

这是函数->timer2\u pwm\u freq\u set()中的精确公式

我仍然不知道为什么我得到如此低的频率,甚至没有一个整数3.676Hz这有点奇怪

为了得到1khz的频率,我将值改为

定时器2\脉宽调制\频率设置(6700u,100000);

我在示波器里得到了1.053kHz,但对我来说真的很奇怪

怀特阳
离线
最后一次见到:2个月2周前
已加入:2017-02-17 09:19
时钟

时钟

静态tim2\u配置\u t配置=
{
.clk\u source=TIM2\u clk\u SYS,
.hw\u pause=TIM2\u hw\u pause\u关闭
};

麦格
离线
最后一次见到:3个月2周前
已加入:2020-05-26 18:20
很好用谢谢

这很有效谢谢你的回复

示例代码没有这一行:“.clk\u source=TIM2\u clk\u SYS,”

用这个我设置:

//系统时钟除以8,是定时器2的输入时钟源(根据上面的clk\u div\u config结构)

timer2_pwm_freq_set(pwm_frequency,2000000);//在我的例子中,pwm_frequency=1000

我得到的频率和我设定的一样

PM\U对话框
离线
最后一次见到:13小时39分钟前
工作人员
已加入:2018-02-08 11:03
嗨,waiteyang,谢谢你的帮助

你好,waiteyang,谢谢你的建议!这对其他社区很有帮助。

你好,麦格。很高兴你解决了这个问题。

谢谢,下午好