PWM
PWM(脉冲宽度调制)是靠改变脉冲宽度来控制输出电压,通过改变周期来控制其输出频率。
评估主控能否输出13.824MHz的方波
项目中需要评估一款主控芯片能否输出13.824MHz的方波作为一个通信模块的时钟源。
这当中走了弯路,希望总结出来。
弯路一:有同事猜想:主控的晶振24MHz, 24MHz 经过72倍频 再125分频 就等于13.824MHz。 但是我没去从硬件上查看到底有没可能实现,于是就走了弯路二。
弯路二:一开始就查看驱动PWM输出的API。
Linux 提供PWM驱动模型供调用者控制PWM。 关于PWM周期和占空比的调节主要涉及pwm_config() 函数。
参考Linux - PWM的驱动编写
正确的做法是先看DataSheet 中关于PWM以及Clock的介绍,判断硬件上是否支持倍频,从理论上去计算能否实现要求的频率方波。
由下图得知,PWM支持的时钟源有三种:
cts_oscin_clk: 晶振的时钟源,在这里是24MHz。
cts_sys_clk: sys时钟源。从手册可知,最大也就等于24MHz, 也可以支持2 、3、5、7分频。
cts_rtc_clk: RTC时钟,标准的32767Hz.