ADT75温度传感器
#define ADT75_ADDRESS 0x90
#define ADT75_TempAddr 0x00
#define ADT75_NumByteToRead 2
/**
* @brief 从ADT75里面读取一块数据
* @param
* @arg pBuffer:存放从ADT75读取的数据的缓冲区指针
* @arg WriteAddr:接收数据的ADT75的地址
* @arg NumByteToWrite:要从ADT75读取的字节数
* @retval 无
*/
uint32_t ADT75_BufferRead(uint8_t* pBuffer, uint8_t ReadAddr, uint16_t NumByteToRead)
{
HAL_StatusTypeDef status = HAL_OK;
status=HAL_I2C_Mem_Read(&hi2c2,ADT75_ADDRESS,ReadAddr, I2C_MEMADD_SIZE_8BIT, (uint8_t *)pBuffer, NumByteToRead,1000);
return status;
}
/**
* @brief 读温度
* @param
* @arg pBuffer:缓冲区指针
* @arg WriteAddr:写地址
* @arg NumByteToWrite:写的字节数
* @retval 温度
*/
float ADT75_ReadTemp()
{
//芯片地址 0x90+0或1
//温度寄存器地址 0x00
// 0写 1读
uint8_t vReadBuff[2];
ADT75_BufferRead(vReadBuff,ADT75_TempAddr,ADT75_NumByteToRead);
uint16_t vTempHex=0;
float vTempValue=0;
vTempHex=(vReadBuff[0]<<8)+vReadBuff[1];
//rt_kprintf("\r\n -----vTempHex=0x%X ! \r\n",vTempHex);
vTempHex>>=4;
if(vTempHex&0x800)
{
//负数
vTempValue=(vTempHex-4096)/16.0;
}
else
{
//正
vTempValue=vTempHex/16.0;
}
return vTempValue;
}