你好
我试图了解如何使用模块DA14531的外设并使用该示例。
我设法生成一个PWM并删除了更改PWM DC的循环并固定为50%,但频率是问题
我无法理解它使用的公式,在数据表中说:
timer2_clk_freq_hz / cressing_freq_hz - 1
该示例具有以下功能:
timer2_pwm_freq_set();
但我无法获得所需的频率
我可以移动参数以获得一些关闭,但重点是要知道确切的公式而不是猜测......
有什么东西我做错了吗?
你好
我试图了解如何使用模块DA14531的外设并使用该示例。
我设法生成一个PWM并删除了更改PWM DC的循环并固定为50%,但频率是问题
我无法理解它使用的公式,在数据表中说:
timer2_clk_freq_hz / cressing_freq_hz - 1
该示例具有以下功能:
timer2_pwm_freq_set();
但我无法获得所需的频率
我可以移动参数以获得一些关闭,但重点是要知道确切的公式而不是猜测......
有什么东西我做错了吗?
嗨,马格加,
感谢您在线的问题,并符合我们的微小模块解决方案。timer2_pwm_freq_set()配置triple_pwm_frequency寄存器。请参见DA14531数据表中的表327:Triple_pwm_frequency(0x50003408),以检查它应该是如何配置的。
我猜你正在使用SDK的Timer2示例。我可以问你想要完成什么,什么应该是PWM输出信号?你想改变占空比吗?
关于频率,还请在Timer2,H头文件中读取timer2_pwm_freq_set()上面的注释。
谢谢,PM_DIALOG.
你好,
是的,我正在使用SDK for Timer2(PWM)中的示例
我想要做的是获得1kHz,只需更改0-100%之间的占空比
就在现在,我将它设置为50%a没有任何问题,我的问题仍然是频率
在该示例中是这样的
//系统时钟,除以8,是Timer2输入时钟源(根据
//到上面的clk_div_config结构).pwm_frequency
timer2_pwm_freq_set(500,1600000/8);
它是因为提供500Hz
但我注意到该示例基于DA14585设备(我读取的,使用16MHz的工作),我的设备与32MHz合作说数据表
所以我改了
ttimer2_pwm_freq_set(1000,4000000);
我得到的频率是3.676Hz ......
数据表表示Triple_pwm_frequency注册表具有以下公式:
PWM FREQ =模块频率/(值+ 1)
这是此函数中的确切公式 - > timer2_pwm_freq_set()
我仍然不知道为什么我得到如此低的频率,甚至没有一个圆形的数字3.676Hz甚至有点奇怪
要获得1khz的频率,我将值更改为此
timer2_pwm_freq_set(6700U,100000);
我在示波器中获得1.053khz,但对我来说真的很奇怪
要使使用系统的型
static tim2_config_t config =
{
.clk_source = tim2_clk_sys,
.hw_pause = tim2_hw_pause_off.
};
这完全谢谢你的回复
示例代码没有这一行:“.clk_source = tim2_clk_sys,”
有了我的设置:
//系统时钟除以8,是Timer2输入时钟源(根据上面的CLK_DIV_CONFIG结构)
timer2_pwm_freq_set(pwm_frequncy,2000000);//在我的情况下pwm_frequncy = 1000
我完全得到了我的习惯
嗨waiteyang,谢谢你的建议!对其他社区来说非常有用。
嗨扬子糖。很高兴你讨论了这个问题。
谢谢,PM_DIALOG.