This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
ADS122C04 寄存器配置可以正确读写,但是读取数据的时候,读出的数据全都是0,代码如下:
寄存器配置值为:static uint8_t C_ADS1220_Par_Default_W[4] = {0x91,0x08,0x00,0x00};
uint32_t ADS122C_GetData(void)
{
uint8_t ret;
uint32_t L_ADS122C_Data = 0;
uint32_t L_ADS122C_Buf[N];
ADS122C_DRDY();
ret = ADS122C_Config_Init();
if(ret == 1)
{
ADS122C_StartConversion();
for(uint8_t i = 0; i < N; i++)
{
while(ADS122CDRDY_IN);
delay_ms(10);
ADS122C_Read_Data(&L_ADS122C_Buf[i]);
}
for(uint8_t i = 0; i < N; i++)
{
L_ADS122C_Data += L_ADS122C_Buf[i];
}
L_ADS122C_Data = (uint32_t)(L_ADS122C_Data / N);//取平均值
}
else
{
//异常
L_ADS122C_Data = 0;
}
ADS122C_PowerDown();
return L_ADS122C_Data;
}
请问是为什么呢?
//读取AD1220转换数据
uint8_t ADS122C_Read_Data(uint32_t *R_Data)
{
uint32_t l_Data = 0;
if(!I2C_Start())
return HAL_I2C_ERROR_TIMEOUT;
I2C_SendByte((ADS122C_ADDR_WRITE));//写器件地址
if(!I2C_WaitAck())
{
I2C_Stop();
return HAL_I2C_ERROR_TIMEOUT;
}
I2C_SendByte((ADS122CREG_DATA));//写器件地址
if(!I2C_WaitAck())
{
I2C_Stop();
return HAL_I2C_ERROR_TIMEOUT;
}
I2C_Stop();
if(!I2C_Start())
return HAL_I2C_ERROR_TIMEOUT;
I2C_SendByte(ADS122C_ADDR_READ); //读器件地址
if(!I2C_WaitAck())
{
I2C_Stop();
return HAL_I2C_ERROR_TIMEOUT;
}
l_Data = I2C_ReceiveByte();
I2C_Ack();
l_Data = (l_Data<<8) | I2C_ReceiveByte();
I2C_Ack();
l_Data = (l_Data<<8) | I2C_ReceiveByte();
I2C_NoAck();
I2C_Stop();
*R_Data = l_Data;
return HAL_I2C_ERROR_NONE;
}
您好,
这两个函数里是怎么操作的:
ADS122C_DRDY();
ret = ADS122C_Config_Init();
持续转换模式CM位需要在START/SYNC命令之后置1,才能开始转换。
您的输入信号是什么样的,输入范围是多少,接在那个管脚上了,还有供电电压是怎么的