|

楼主 |
发表于 2022-4-28 20:50:14
|
显示全部楼层
本帖最后由 abbey_tom 于 2022-4-28 20:57 编辑
ADS1256有信号放大功能PGA
可选的放大倍数有1、2、4、8、16、32、64
选取的放大倍数越大,
最终测量结果受噪声影响就越小,
因此,应尽可能地取较大的放大倍数进行测量(但不能突破每档的量程)。
也就是要根据测量结果自动选择合适的放大倍数,
刚开始我搞得比较复杂,
几经周折后,终版的代码如下:
//入口参数:当前ADC测量结果、当前放大倍数
//返回值:自动选取的放大倍数
unsigned char adj_pga(long ulResult, unsigned char cur_PGA)
{
unsigned char temp,i;
ulResult=ulResult & 0x7fffff; //去掉符号位,取有效值
ulResult=ulResult/cur_PGA; //得到原有值(假如不经放大)
ulResult++; //原有值的最大值
temp=(unsigned char)(ulResult>>16);
//右移16位,得到最高的8位,可能值为0x80-0x00;
for(i=0;i<6;i++) //根据上值的大小,选取一个适合的PGA值;
if(temp>=64/(1<<i))
return (1<<i);
return 64;
} |
|