基于累加的PDM算法的原理
- 基于累加的PDM算法(2)
PDM编码原理如下:
单片机能输出Sin(t)吗?能,DA。
没有DA怎么办?PWM。
没有PWM怎么办?
事情就是这么来的。20多年前,不要说单片机内没有PWM,而且当时的MCS-51系列内连Timer2还没有呢。这个算法就是20多年前逼出来的。
下面看我怎样在数字端口输出SQRT(0.5)= 0.70710678…。
假设我们要输出实数值x,x在[0,1)。
我们只需要一个变量存累计数,事实上,我们只须保存尾数,不妨就叫它为Mantissa。Mantissa可以有[0,1)范围内的任意初始值。
下面一段程序是在定时中断内执行的。中断间隔是由你系统的需要和MCU的能力确定的。
Timer_ISR:

本文介绍了基于累加的PDM算法,通过在定时中断内执行累加操作,输出0或1来逼近目标值。算法随着中断次数增加,逼近精度提高。对于不同位数的MCU,可以选择不同的N值优化算法效率。这种算法类似于“集腋成裘”,在现代MCU中仍有其应用价值。
最低0.47元/天 解锁文章
1593





