我正在使用 ADS124S08。 我能够读写寄存器设置、访问了内部温度传感器、并能够显示数据。
尝试访问 CH1转换数据时出现问题。
如果我将 CH1+和 CH1-短接在一起、则读取三个片段的 FF Ex 会得到 FF FF。 我在5V 时使用 REF0。
我的设置寄存器如下所示
output_low (CS_ADC);
DELAY_us (ADC_DELAY);
SPI_Xfer_124S08 (ADS124S08_WAKE_UP);// WAKEUP 命令
SPI_Xfer_124S08 (ADS124S08_RESET);//重置命令
DELAY_us (ADC_DELAY);
SPI_Xfer_124S08 (ADS124S08_WREG | ADS124S08_STATUS);// WREG 寄存器从状态寄存器0x43H 开始
//只写状态寄存器
SPI_Xfer_124S08 (0x00);// 1-1 = 0
SPI_Xfer_124S08 (0x00);//清除状态寄存器上的 POL 位
DELAY_us (ADC_DELAY);
SPI_Xfer_124S08 (0x42);//WREN REG 从0x02处的 MUX 寄存器开始
SPI_Xfer_124S08 (0x03);//写入四个寄存器的 MUX PGA 速率和 REF
SPI_Xfer_124S08 (0x01);// MUX 寄存器
//选择 CH 1
SPI_Xfer_124S08 (0x08);// PGA 寄存器
//增益= 1.
SPI_Xfer_124S08 (0x09);//采样率寄存器
SPI_Xfer_124S08 (0x30);// REF 寄存器
然后、我为数据循环以下代码:
delay_ms (100);
OUTPUT 高电平(START_ADC);//开始线路高电平
//转换从此处开始
OUTPUT 高电平(CS_ADC);
delay_us (ADC_delay);//此处只是一个小延迟
//DRDY_TICKs = 0;//在轮询前初始化安全计数器
DRDY_FLG = 0;//清除转换标志
while (!DRDY_flg){
//在此处挂起等待 ADS124S08转换
delay_ms (100);
output_toggle (G0_select); //由作用域用于检查代码运行的位置。
}//结束转换等待循环
output_low (CS_ADC);
delay_ms (ADC_delay);
if (DRDY_flg){//发生转换
SPI_Xfer_124S08 (0x12);// RDATA 寄存器
DATA_1 = SPI_Xfer_124S08 (0);
DATA_2 = SPI_Xfer_124S08 (0);
DATA_3 = SPI_Xfer_124S08 (0);
output_low (start_adc);
//output_high (CS_ADC);//禁用 ADC 通信
DRDY_FLG = 0;
ADC_DELAY 为100
我相信我的设置正确、它确实运行、只是读取了我感觉的正确值。 如果我打开 CH+和 CH1-行使其处于浮动状态、那么我会降低数据、如00 0A 23、它会发生浮动。
如果您需要、我可以发布更多信息。