请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:ADS112C04 工具/软件:
尊敬的 TI 论坛:
我正在尝试根据 SBAA483 为 4 线 Pt1000 输入级建立断线检查。
器件已经正常测量、除了此检查外、所有操作都正常运行。
此电路为:
代码如下:
bool ADS112C04_checkWireBreak(void)
{
uint16_t VREF_MON;
// REG0 = 11000001: VREF Monitor, Gain 1, PGA Bypass
ADS112C04_writeRegister(CMD_WREG0, 0xC1);
// REG1 = 11010000: 2000 SPS, SingleShot, Internal Ref., No Tempsens.
ADS112C04_writeRegister(CMD_WREG1, 0xD0);
// REG2 = 00001100: No Counter, No CRC, No Burnout-Dect, IDAC 250 µA
ADS112C04_writeRegister(CMD_WREG2, 0x0C);
// REG3 = 10000000: IDAC1 on AIN3, IDAC2 off
ADS112C04_writeRegister(CMD_WREG3, 0x80);
// Check current path
if (!ADS112C04_measure()) return (STATUS_FAIL);
__delay_cycles(4640); // 580 µs
if (!ADS112C04_receive()) return (STATUS_FAIL);
((unsigned char *)&VREF_MON)[1] = ADS112C04_RxBuf[0];
((unsigned char *)&VREF_MON)[0] = ADS112C04_RxBuf[1];
if (VREF_MON < VREF_THRESHOLD) return (STATUS_FAIL);
// Check pos. voltage path
// REG3 = 00100000: IDAC1 on AIN0, IDAC2 off
ADS112C04_writeRegister(CMD_WREG3, 0x20);
if (!ADS112C04_measure()) return (STATUS_FAIL);
__delay_cycles(4640); // 580 µs
//delay_us(580);
if (!ADS112C04_receive()) return (STATUS_FAIL);
((unsigned char *)&VREF_MON)[1] = ADS112C04_RxBuf[0];
((unsigned char *)&VREF_MON)[0] = ADS112C04_RxBuf[1];
if (VREF_MON < VREF_THRESHOLD) return (STATUS_FAIL);
// Check neg. voltage path
// REG3 = 01000000: IDAC1 on AIN1, IDAC2 off
ADS112C04_writeRegister(CMD_WREG3, 0x40);
if (!ADS112C04_measure()) return (STATUS_FAIL);
__delay_cycles(4640); // 580 µs
if (!ADS112C04_receive()) return (STATUS_FAIL);
((unsigned char *)&VREF_MON)[1] = ADS112C04_RxBuf[0];
((unsigned char *)&VREF_MON)[0] = ADS112C04_RxBuf[1];
if (VREF_MON < VREF_THRESHOLD) return (STATUS_FAIL);
return (STATUS_SUCCESS);
}
此代码触发的所有 3 次测量都会返回一个大约 16,000 增量的值、甚至是如此
如果 RTD 已断开一段时间并且所有电容器都已放电。
我在做什么?