2019-12-16 22:37发布
knight_avr 发表于 2016-2-1 10:30 其实 MCU 用于计算的负数表示形式就是 二进制补码,其实基本不用转换的只要把24位转换为32位直接计算即可 ...
PCBBOY1991 发表于 2016-2-1 09:35 为什么不直接取平均?还要做这样的转换?
ersha4877 发表于 2016-2-1 09:19 收下了,拿去试试,这样可以直接和正数相加了是不,那和正数求平均怎么处理,直接除以相加的数量,比如四 ...
最多设置5个标签!
uint32_t adc_read = adc_readdata();
int32_t adc_val = adc_read;
if (adc_val & bit(23)) {adc_val |= 0xff000000;}
你的程序应该是对的。
不转换肯定是不行的,因为从ADC读回的是24位的补码,不能直接拿来用
区别只是大家转换的方法,俺的比较笨拙,其他几位网友的方法比较巧妙
一般就是窗口平滑滤波,取最后N个读取值的平均,稍微复杂一点的可以去掉一个最高值和一个最低值
一般来说N取值越大滤波效果越好,但是反应速度越慢,具体多少要根据你的应用的情况自己进行调整
再复杂一点的可以判断数值是不是在大幅度变化,是的话就丢弃前面的数据加快反应速度,总之花样还挺多的 ......
一周热门 更多>