|

楼主 |
发表于 2022-4-10 20:47:36
|
显示全部楼层
本帖最后由 abbey_tom 于 2022-4-10 20:50 编辑
我是这样想的,
PGA=1时,
我所有的代码均正常,
包括24BIT读入主程序正常,
乘一个系数(令PGA=1)时也得到正确的电压值。
而同样的代码令PGA=2或其它时,
这个系数无须变化才能得到正确的电压值。
无须看传回的二进制,
必然与PGA=1时是一样的。
正如您所分析的那样,
有一个原因可导致如此,
那就是PGA设置没有起作用。
但是控制芯片的那些代码超级简单,
是在芯片初始化时完成的。
代码如下(是商家的演示代码):
//初始化ADS1256
void ADS1256_Init(void)
{
ADS1256WREG(ADS1256_STATUS, 0x06); // 高位在前、校准、使用缓冲
ADS1256WREG(ADS1256_ADCON, ADS1256_GAIN_64); // 设置PGA
ADS1256WREG(ADS1256_DRATE, ADS1256_DRATE_2_5SPS); // 数据速率
ADS1256WREG(ADS1256_IO, 0x00);
}
就是写内部寄存器预置PGA而已,
其它代码均与此无关了(也总共没有多少)
假如像您所说的(我也这么怀疑过),
PGA设置没有起作用,
但同时发出的指令,改变速率却表现非常正常。
没有道理第二句没有起作用,
而第三句却起作用了。
附上有关代码:您抽空指导一下,谢谢。
|
|