1256的初始化中进行了如下配置:
STATUS寄存器配置为0x06 开启自动校准,开启缓冲
ADCON寄存器配置为0x00 不进行放大
DRATE配置为10sps
IO寄存器配置为0x00,不使用IO口相关功能
然后在主函数中先配置MUX寄存器:AIN0为﹢ AINCOM为-;之后发送SELFCAL指令进行自校准;然后等待drdy拉低,依次发送SYNC、WAKEUP指令,然后发送读取3字节数据的指令 读出转换结果。
我读取的是2.5V基准芯片的电压,该芯片提供的电压也作为1256的REF。按道理我采集的结果应该是3FFFFF附近的一个值才对。但是实际采集结果总是404000这个数 换算过来大概是2.509766V,基准芯片输出用表看过了是2.5004V 而且非常很稳定。
另外使用AIN1为+采集我需要的待测信号时,通过调节信号大小,采集结果的变化趋势是对的,但是偏差越来越大,当输入信号达到最大4.118V时,1256的输出只有3.889V左右。差了200多毫伏
因为SPI的线是在电路板上的 不太好用示波器看到,不过使用读取寄存器时,我更改STATUS、MUX、DRATE后,都可以获得正确的结果,所以SPI部分应该没什么问题
请问我这个情况可能是哪里使用不当造成的呢?单片机是STM32F103系列的,已经下载过好几个32驱动1256的程序了,实在是没看出来还有哪里有区别……
另外那个selfcal指令 是不是等于selfocal+selfgcal指令?还有sysocal和sysgcal 这几个校准没太搞清楚区别,我是参考网上例程,只用了selfcal进行校准