uint8_t DS18x20_Get_Conversion_Result_by_ROM_CRC(uint8_t (*serial)[DS18x20_SERIAL_NUM_SIZE], int32_t* temperature) { uint8_t cnt; uint8_t pad[DS18x20_STRATCHPAD_SIZE]; /* Reset bus */ cnt = One_Wire_Reset(); if (cnt != ONE_WIRE_SUCCESS) { return cnt; } One_Wire_Write_Byte(ONE_WIRE_MATCH_ROM); for(cnt = 0; cnt != 8; cnt++) { One_Wire_Write_Byte((*serial)[cnt]); } One_Wire_Write_Byte(DS18x20_READ_STRATCHPAD_CMD); for(cnt = 0; cnt != DS18x20_STRATCHPAD_SIZE; cnt++) { pad[cnt] = One_Wire_Read_Byte(); } /* Verify CRC checksum */ if (Crc8Dallas(DS18x20_STRATCHPAD_SIZE, pad)) { return ONE_WIRE_CRC_ERROR; } *temperature = DS18x20_Convert_Temperature(pad, serial); return ONE_WIRE_SUCCESS; }
unsigned char DS1821_Read_Status(unsigned int * status, GPIO_TypeDef * GPIOx, unsigned long PINx) { unsigned char tmp; tmp=One_Wire_Reset(GPIOx, PINx); if (tmp!=One_Wire_Success) return tmp; One_Wire_Write_Byte(DS1821_READ_STATUS,GPIOx, PINx); * status = One_Wire_Read_Byte(GPIOx, PINx); return One_Wire_Success; }
unsigned char DS1821_Read_Counter(unsigned int * counter, GPIO_TypeDef * GPIOx, unsigned long PINx) { unsigned char tmp; tmp=One_Wire_Reset(GPIOx, PINx); if (tmp!=One_Wire_Success) return tmp; One_Wire_Write_Byte(DS1821_READ_COUNTER,GPIOx, PINx); * counter = One_Wire_Read_Byte(GPIOx, PINx); return One_Wire_Success; }
unsigned char DS1821_Read_Temp(unsigned int * temperature, GPIO_TypeDef * GPIOx, unsigned long PINx) { unsigned char tmp; tmp=One_Wire_Reset(GPIOx, PINx); if (tmp!=One_Wire_Success) return tmp; One_Wire_Write_Byte(DS1821_READ_TEMPERATURE, GPIOx, PINx); * temperature = One_Wire_Read_Byte(GPIOx, PINx); return One_Wire_Success; }
uint8_t DS18x20_Start_Conversion_Skip_Rom(void) { uint8_t tmp; /* Reset bus */ tmp = One_Wire_Reset(); if (tmp != ONE_WIRE_SUCCESS) { return tmp; } One_Wire_Write_Byte(ONE_WIRE_SKIP_ROM); One_Wire_Write_Byte(DS18x20_CONVERT_T_CMD); if (One_Wire_Read_Byte()) { return ONE_WIRE_DEVICE_BUSY; } return ONE_WIRE_SUCCESS; }
uint8_t DS18x20_Read_Temp_NoCRC_Skip_Rom(uint8_t (*serial)[DS18x20_SERIAL_NUM_SIZE], int32_t* temperature) { uint8_t tmp, cnt; uint8_t pad[DS18x20_STRATCHPAD_SIZE]; /* Reset bus */ tmp = One_Wire_Reset(); if (tmp != ONE_WIRE_SUCCESS) { return tmp; } One_Wire_Write_Byte(ONE_WIRE_SKIP_ROM); One_Wire_Write_Byte(DS18x20_READ_STRATCHPAD_CMD); for (cnt = 0; cnt != DS18x20_STRATCHPAD_SIZE; cnt++) { pad[cnt] = One_Wire_Read_Byte(); } *temperature = DS18x20_Convert_Temperature(pad, serial); return ONE_WIRE_SUCCESS; }