/* ********************************************************************************************************* * 函 数 名: 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; }
/* ********************************************************************************************************* * 功能说明: 读指定的寄存器 * 形 参: _RegID : 寄存器ID * _RegValue : 寄存器值。 对于8位的寄存器,取32位形参的低8bit * 返 回 值: 读到的寄存器值。 对于8位的寄存器,取32位形参的低8bit ********************************************************************************************************* */ unsigned long TM7705_ReadReg(unsigned char _RegID) { unsigned char bits; unsigned long read; switch (_RegID) { case REG_COMM: /* 通信寄存器 */ case REG_SETUP: /* 设置寄存器 8bit */ case REG_CLOCK: /* 时钟寄存器 8bit */ bits = 8; break; case REG_ZERO_CH1: /* CH1 偏移寄存器 24bit */ case REG_FULL_CH1: /* CH1 满量程寄存器 24bit */ case REG_ZERO_CH2: /* CH2 偏移寄存器 24bit */ case REG_FULL_CH2: /* CH2 满量程寄存器 24bit*/ bits = 24; break; case REG_DATA: /* 数据寄存器 16bit */ default: return 0xFFFFFFFF; } TM7705_WriteByte(_RegID | READ); /* 写通信寄存器, 指定下一步是写操作,并指定写哪个寄存器 */ if (bits == 16) { read = TM7705_Read2Byte(); } else if (bits == 8) { read = TM7705_ReadByte(); } else { // 24 bits read = TM7705_Read3Byte(); } return read; }