bool HD100x_read_temp_humi(float* temp , float* humi) { unsigned char data[2]; uint16_t buffer; data[0] = HDC100X_TEMP; HAL_I2C_write(HDC100X_I2CADDR , 1 ,data ); vTaskDelay(100); if(HAL_I2C_read(HDC100X_I2CADDR , 2 , data) != STATUS_OK){ return false; } buffer = data[0] << 8 | data[1]; *temp = (float) buffer; *temp /=65536; *temp *= 165; *temp -= 40; data[0] = HDC100X_HUMID; if(HAL_I2C_read(HDC100X_I2CADDR , 2 , data) != STATUS_OK){ return false; } buffer = data[0] << 8 | data[1]; *humi = (float) buffer; *humi /= 65536; *humi *= 100; return true; }
bool HDC100x_init(void){ unsigned char data[2]; uint16_t config = HDC100X_CONFIG_RST | HDC100X_CONFIG_MODE | HDC100X_CONFIG_TRES_14 | HDC100X_CONFIG_HRES_14; data[0] = config >> 8; data[1] = config & 0xFF; HAL_I2C_write(HDC100X_I2CADDR , 2 , data ); data[0] = HDC100X_MANUFID; HAL_I2C_write(HDC100X_I2CADDR , 1 ,data ); HAL_I2C_read(HDC100X_I2CADDR , 2 , data); if(data[0] != 0x54 || data[1] != 0x49) { return false; } data[0] = HDC100X_DEVICEID; HAL_I2C_write(HDC100X_I2CADDR , 1 ,data ); HAL_I2C_read(HDC100X_I2CADDR , 2 , data); if(data[0] != 0x10 || data[1] != 0x00) { return false; } return true; }
bool HU21D_F_read_temp_humi(float* temp , float* humi){ unsigned char data[3]; uint16_t buffer; data[0] = HTU21DF_READTEMP; HAL_I2C_write(HTU21DF_I2CADDR , 1 , data ); vTaskDelay(50); if(HAL_I2C_read(HTU21DF_I2CADDR , 3 , data) != STATUS_OK){ return false; } buffer = data[0] << 8 | data[1]; *temp = (float) buffer; *temp *= 175.72; *temp /= 65536; *temp -= 46.85; data[0] = HTU21DF_READHUM; HAL_I2C_write(HTU21DF_I2CADDR , 1 , data ); vTaskDelay(50); if(HAL_I2C_read(HTU21DF_I2CADDR , 3 , data) != STATUS_OK){ return false; } buffer = data[0] << 8 | data[1]; *humi = (float) buffer; *humi *= 125; *humi /= 65536; *humi -= 6; return true; }
bool MCP9808_init(void){ unsigned char data[2]; data[0] = MCP9808_REG_MANUF_ID; HAL_I2C_write(MCP9808_I2CADDR_DEFAULT , 1 ,data ); HAL_I2C_read(MCP9808_I2CADDR_DEFAULT , 2 , data); if(data[0] != 0x00 || data[1] != 0x54) { return false; } data[0] = MCP9808_REG_DEVICE_ID; HAL_I2C_write(MCP9808_I2CADDR_DEFAULT , 1 ,data ); HAL_I2C_read(MCP9808_I2CADDR_DEFAULT , 2 , data); if(data[0] != 0x04 || data[1] != 0x000) { return false; } return true; }
bool HU21D_F_init(void){ unsigned char data; data = HTU21DF_RESET; HAL_I2C_write(HTU21DF_I2CADDR , 1 , &data ); vTaskDelay(100); data = HTU21DF_READREG; HAL_I2C_write(HTU21DF_I2CADDR , 1 , &data ); HAL_I2C_read(HTU21DF_I2CADDR , 1 , &data ); if(data == 0x20){ return false; } return true; }
/*! @brief get 64bit address @param[in] *macaddr pointer of 64bit mac address @return STATUS_OK ok @exception EIO hardware error ******************************************************************************/ int get_mac_addr(uint8_t *macaddr) { int status=STATUS_OK; int i; uint8_t rdata[8]; HAL_I2C_read((uint8_t)0x20,(uint8_t*)rdata,(uint8_t)8); for (i=0;i<8;i++) { macaddr[i] = rdata[7-i]; } if(status != STATUS_OK) { status = -EIO; } return status; }
bool MCP9808_read_temp_C(double* temp){ unsigned char data[2]; data[0] = MCP9808_REG_AMBIENT_TEMP; if(HAL_I2C_write(MCP9808_I2CADDR_DEFAULT , 1 ,data ) != STATUS_OK) { return false; } if(HAL_I2C_read(MCP9808_I2CADDR_DEFAULT , 2 , data) != STATUS_OK) { return false; } uint16_t raw_temp; raw_temp = data[0] << 8 | data[1]; raw_temp = raw_temp & 0x0FFF; *temp = (float) raw_temp / 16.0; if(data[0] & 0x10) { *temp -= 256; } return true; }