TI中文支持网
TI专业的中文技术问题搜集分享网站

使用Ads1148,采集多个通道的AD值,AD值没有变动

应用部分已验证没有问题,而且寄存器的读写操作没有问题,但是在通过SPI读取AD值时一直不变化,并且一直为0x00,

user151383853:

0 是复位后的默认值, 如果应用部分已验证没有问题,而且寄存器的读写操作没有问题,那可能没有启动转换

也可能你验证时正常, 但在现在测试的时候, 意外断电了

dengming qin:

回复 user151383853:

很感谢你的回复,但是不太明白你说的启动转换是什么意思,下面是我写了一个通道切换的函数,及一个中断服务程序,请你再给说说

/******************************************************************************************************** 函 数 名: ADS1256_SetChannal* 功能说明: 配置通道号。多路复用。AIN- 固定接地(ACOM).* 形 参: _ch : 通道号, 0-7* 返 回 值: 无*******************************************************************************************************/static void ADS1148_SetChannal(uint8_t _ch){ uint8_t ad_reg_wr[4]; uint8_t reg_idac1 = 0x01; if (_ch > 7) { return; } ad_reg_wr[0]=((_ch << 3) | 3); reg_idac1=((_ch << 4) | 3); ADS_WR_REG(REG_MUX0,ad_reg_wr, 1); /* Bit3 = 1, AINN 固定接 AINN3 */// ADS_WR_REG(REG_IDAC1, &reg_idac1, 1);}

下面为中断服务函数

/*********************************************************************************************************** 函 数 名: ADS1148_ISR* 功能说明: 定时采集中断服务程序* 形 参: 无* 返 回 值: 无if (DRDY_IS_LOW())**********************************************************************************************************/void ADS1148_ISR(void){ INT32U Timeout; if (g_tADS1148.ScanMode == 0) /* 0 表示单端8路扫描,1表示差分4路扫描 */ { ADS1148_SetChannal(g_tADS1148.Channel); /* 切换模拟通道 */ DelayNops(5);

SPI_ADS_SendCMD(CMD_ADS_SYNC_1st); DelayNops(5);

SPI_ADS_SendCMD(CMD_ADS_WAKEUP); DelayNops(25);

if (g_tADS1148.Channel == 0) { //Timeout = 0x03FFFFFF; // while ((!DRDY_IS_LOW()) && (Timeout– > 1)); /* 等待 DRDY 低 */ g_tADS1148.AdcNow[7] = SPI_ADS_ReadHalfWord() & 0xFFFF; /* 注意保存的是上一个通道的数据 */// g_tADS1148.AdcNow[7] = ADS1148ReadData();// g_tADS1148.AdcNow[7] = 0x0101; } else {        //Timeout = 0x03FFFFFF;       //while ((!DRDY_IS_LOW()) && (Timeout– > 1)); /* 等待 DRDY 低 */

          g_tADS1148.AdcNow[g_tADS1148.Channel-1] = SPI_ADS_ReadHalfWord() & 0xFFFF; /* 注意保存的是上一个通道的数据 */          // g_tADS1148.AdcNow[g_tADS1148.Channel-1] = ADS1148ReadData();         // g_tADS1148.AdcNow[g_tADS1148.Channel-1] = g_tADS1148.Channel; }

if (++g_tADS1148.Channel >= 8) {          g_tADS1148.Channel = 0; }

}

}

赞(0)
未经允许不得转载:TI中文支持网 » 使用Ads1148,采集多个通道的AD值,AD值没有变动
分享到: 更多 (0)