你好!
我设法在 ADS1256的一个通道(AINCOm=GND)上读取0-5V 电压。
现在、我想循环浏览所有8个通道。 我有一个问题、就是在用新通道更新 MUX 寄存器后、从 ADS1256读取的第一个值总是错误的。
即使在启动第一个 AIN0通道时也会发生这种情况。 当我仅在一个通道上测量时、这并不重要。 我只想忽略。 但现在这使我感到麻烦。
我需要每通道应用程序100sps、因此我将 DRATE 寄存器值设置为0xA1 (每通道1000sps/8通道=125sps)。
因此、如果我在每个通道上循环两次(因为我必须忽略第一次读数)、我将降低采样速度。
在数据表中、第一个值应该是 OK。 但在我看来,这不是…
从 ADS1256读取数据的过程:(这不是确切的代码)。
对于环路(对0到7的通道进行计数){
--------------------------------------
正在等待数据就绪干针变低
--------------------------------------
我要读取多路复用器寄存器的通道
SPI.transfer (0x51);// MUX 寄存器
SPI.transfer (0x00); //第二个命令字节、只写入一个寄存器
spi.transfer (data); //将数据字节写入寄存器
delayMicroseconds (10);
----------------------------------------
正在发送 SYNC 命令
SPI.transfer (0xFC);
delayMicroseconds (10);
----------------------------------------
Senging 唤醒命令
SPI.transfer (0x00);
delayMicroseconds (10);
--------------------------------------
从 ADS1256读取数据
SPI.transfer (0x01);//读取数据0000 0001 (01h)
delayMicroseconds (10);
ADC_val = SPI.transfer (0);
ADC_val <= 8;//向左移位
adc_val |= spi.transfer (0);
ADC_val <<= 8;
adc_val |= spi.transfer (0);
delayMicroseconds (10);
spi.endTransaction();
}... 结束






