yidou 发表于 2010-6-25 20:26

问个数字滤波的问题

在编写滤波程序的时候,为什么要先进行AD转换呢,转换后的结果也不是直接用而是还要处理一下,
Ad_data=(Ad_data>>6)—0x136;
filter_data=Ad_data*32;
//除以1024,变成小数,再转换成q15
红色部分是一段程序里面的几句话,看不明白注释
等号右边的Ad_data是AD转换结果寄存器里面的值,这里为什么要减0x136,又为什么要乘32呢?

qfengbj 发表于 2010-6-25 22:59

AD转换结果寄存器里面高十位存放结果,末六位保留。别的就不知道了

aresc 发表于 2010-6-26 10:56

本帖最后由 aresc 于 2010-6-26 10:57 编辑

AD_data>>6表示该数据的低6位无效。 -0x136应该是去直流偏置。
*32相当与左移5位,如果AD的有效数据是10位的话,那左移5位对16位的定点DSP就是转换成Q15格式,即最高位为符号位,小数点在符号位的后面,表示的数据范围为[-1.0,1.0)。

至于那个注释写的处以1024,因为1024=2^10,可以将10位的AD数据转换成小于1.0的小数。

twlkyao 发表于 2010-8-6 19:25

buqingchu
页: [1]
查看完整版本: 问个数字滤波的问题