/* ********************************************************************************************************* * 函 数 名: TM7705_SytemCalibFull * 功能说明: 启动系统校准满位. 请将AIN+ AIN-接最大输入电压源,执行该函数。校准应该由主程序控制并保存校准参数。 * 执行完毕后。可以通过 TM7705_ReadReg(REG_FULL_CH1) 和 TM7705_ReadReg(REG_FULL_CH2) 读取校准参数。 * 形 参: _ch : ADC通道,1或2 * 返 回 值: 无 ********************************************************************************************************* */ void TM7705_SytemCalibFull(unsigned char _ch) { if (_ch == 1) { /* 校准CH1 */ TM7705_WriteByte(REG_SETUP | WRITE | CH_1); /* 写通信寄存器,下一步是写设置寄存器,通道1 */ TM7705_WriteByte(MD_CAL_FULL | __CH1_GAIN_BIPOLAR_BUF | FSYNC_0);/* 启动自校准 */ TM7705_WaitDRDY(); /* 等待内部操作完成 */ } else if (_ch == 2) { /* 校准CH2 */ TM7705_WriteByte(REG_SETUP | WRITE | CH_2); /* 写通信寄存器,下一步是写设置寄存器,通道2 */ TM7705_WriteByte(MD_CAL_FULL | __CH2_GAIN_BIPOLAR_BUF | FSYNC_0); /* 启动自校准 */ TM7705_WaitDRDY(); /* 等待内部操作完成 */ } }
/* ********************************************************************************************************* * 函 数 名: TM7705_CalibSelf * 功能说明: 启动自校准. 内部自动短接AIN+ AIN-校准0位,内部短接到Vref 校准满位。此函数执行过程较长, * 实测约 180ms * 形 参: _ch : ADC通道,1或2 * 返 回 值: 无 ********************************************************************************************************* */ void TM7705_CalibSelf(unsigned char _ch) { if (_ch == 1) { /* 自校准CH1 */ TM7705_WriteByte(REG_SETUP | WRITE | CH_1); /* 写通信寄存器,下一步是写设置寄存器,通道1 */ TM7705_WriteByte(MD_CAL_SELF | __CH1_GAIN_BIPOLAR_BUF | FSYNC_0);/* 启动自校准 */ TM7705_WaitDRDY(); /* 等待内部操作完成 --- 时间较长,约180ms */ } else if (_ch == 2) { /* 自校准CH2 */ TM7705_WriteByte(REG_SETUP | WRITE | CH_2); /* 写通信寄存器,下一步是写设置寄存器,通道2 */ TM7705_WriteByte(MD_CAL_SELF | __CH2_GAIN_BIPOLAR_BUF | FSYNC_0); /* 启动自校准 */ TM7705_WaitDRDY(); /* 等待内部操作完成 --- 时间较长,约180ms */ } }
/* ********************************************************************************************************* * 函 数 名: TM7705_CalibSelf * 功能说明: 启动自校准. 内部自动短接AIN+ AIN-校准0位,内部短接到Vref 校准满位。此函数执行过程较长, * 实测约 180ms * 形 参: _ch : ADC通道,1或2 * 返 回 值: 无 ********************************************************************************************************* */ void ICACHE_FLASH_ATTR TM7705_CalibSelf(uint8_t _ch) { if (_ch == 1){ /* 自校准CH1 */ TM7705_WriteByte(REG_SETUP | WRITE | CH_1); /* 写通信寄存器,下一步是写设置寄存器,通道1 */ TM7705_WriteByte(MD_CAL_SELF | __CH1_GAIN_BIPOLAR_BUF | FSYNC_0);/* 启动自校准 */ TM7705_WaitDRDY(); /* 等待内部操作完成 --- 时间较长,约180ms */ } else if (_ch == 2){ /* 自校准CH2 */ TM7705_WriteByte(REG_SETUP | WRITE | CH_2); /* 写通信寄存器,下一步是写设置寄存器,通道2 */ TM7705_WriteByte(MD_CAL_SELF | __CH2_GAIN_BIPOLAR_BUF | FSYNC_0); /* 启动自校准 */ TM7705_WaitDRDY(); /* 等待内部操作完成 --- 时间较长,约180ms */ } os_printf("TM7705_CalibSelf %d\r\n", _ch); }
/* ********************************************************************************************************* * 函 数 名: TM7705_SytemCalibZero * 功能说明: 启动系统校准零位. 请将AIN+ AIN-短接后,执行该函数。校准应该由主程序控制并保存校准参数。 * 执行完毕后。可以通过 TM7705_ReadReg(REG_ZERO_CH1) 和 TM7705_ReadReg(REG_ZERO_CH2) 读取校准参数。 * 形 参: _ch : ADC通道,1或2 * 返 回 值: 无 ********************************************************************************************************* */ void ICACHE_FLASH_ATTR TM7705_SytemCalibZero(uint8_t _ch) { if (_ch == 1) { /* 校准CH1 */ TM7705_WriteByte(REG_SETUP | WRITE | CH_1); /* 写通信寄存器,下一步是写设置寄存器,通道1 */ TM7705_WriteByte(MD_CAL_ZERO | __CH1_GAIN_BIPOLAR_BUF | FSYNC_0);/* 启动自校准 */ TM7705_WaitDRDY(); /* 等待内部操作完成 */ } else if (_ch == 2) { /* 校准CH2 */ TM7705_WriteByte(REG_SETUP | WRITE | CH_2); /* 写通信寄存器,下一步是写设置寄存器,通道1 */ TM7705_WriteByte(MD_CAL_ZERO | __CH2_GAIN_BIPOLAR_BUF | FSYNC_0); /* 启动自校准 */ TM7705_WaitDRDY(); /* 等待内部操作完成 */ } }
/* ********************************************************************************************************* * 函 数 名: TM7705_ReadAdc1 * 功能说明: 读通道1或2的ADC数据 * 形 参: 无 * 返 回 值: 无 ********************************************************************************************************* */ uint16_t ICACHE_FLASH_ATTR TM7705_ReadAdc(u8 _ch) { u8 i; u16 read = 0; /* 为了避免通道切换造成读数失效,读2次 */ for (i = 0; i < 2; i++){ TM7705_WaitDRDY(); /* 等待DRDY口线为0 */ if (_ch == 1){ TM7705_WriteByte(0x38); }else if (_ch == 2){ TM7705_WriteByte(0x39); } read = TM7705_Read2Byte(); } return read; }
/* ********************************************************************************************************* * 函 数 名: TM7705_ReadAdc * 功能说明: 读通道1或2的ADC数据 * 形 参: _ch : ADC通道,1或2 * 返 回 值: 0 ~ 65535 ********************************************************************************************************* */ unsigned short TM7705_ReadAdc(unsigned char _ch) { unsigned char i; unsigned short read = 0; /* 为了避免通道切换造成读数失效,读3次 */ for (i = 0; i < 3; i++) { TM7705_WaitDRDY(); /* 等待DRDY口线为0 */ if (_ch == 1) { TM7705_WriteByte(0x38); } else if (_ch == 2) { TM7705_WriteByte(0x39); } read = TM7705_Read2Byte(); } return read; }