36 lines
869 B
C++
36 lines
869 B
C++
/*
|
|
* Si7210.cpp
|
|
*
|
|
* Created on: 5 Oct. 2020
|
|
* Author: Ralim
|
|
*/
|
|
|
|
#include <Si7210.h>
|
|
#include "Si7210_defines.h"
|
|
#include "I2C_Wrapper.hpp"
|
|
bool Si7210::detect() {
|
|
return FRToSI2C::probe(SI7210_ADDRESS);
|
|
}
|
|
|
|
bool Si7210::init() {
|
|
//Turn on auto increment and sanity check ID
|
|
uint8_t temp;
|
|
if (FRToSI2C::Mem_Read(SI7210_ADDRESS, SI7210_REG_ID, &temp, 1)) {
|
|
// We don't really care what model it is etc, just probing to check its probably this iC
|
|
if (temp != 0x00 && temp != 0xFF) {
|
|
temp = 0x01; //turn on auto increment
|
|
if (FRToSI2C::Mem_Write(SI7210_ADDRESS, SI7210_REG_INCR, &temp, 1)) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
int16_t Si7210::read() {
|
|
//Read the two regs
|
|
int16_t temp = 0;
|
|
FRToSI2C::Mem_Read(SI7210_ADDRESS, SI7210_REG_DATAH,(uint8_t*) &temp, 2);
|
|
return __builtin_bswap16(temp);
|
|
}
|