请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号: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 已断开一段时间并且所有电容器都已放电。
我在做什么?