Datasheet

ICP-10111
Document Number: DS-000177 Page 17 of 31
Revision: 1.3
5.10 READ-OUT OF CALIBRATION PARAMETERS
For converting raw pressure data to physical values, four calibration parameters have to be retrieved from the OTP of the sensor.
Set up of OTP read:
1) Send I
2
C write header 0xC6
2) Send command 0xC595 (move pointer in address register)
3) Send address parameter together with its CRC 0x00669C
Steps 1) 3) can be executed on many platforms by a single I
2
C write of the value 0xC59500669C.
Read out parameters:
Repeat the following procedure 4 times:
a) Send I
2
C write header 0xC6
b) Send command 0xC7F7 (incremental read-out of OTP)
c) Send I
2
C read header 0xC7
d) Read 3B (2B of data and 1B of CRC)
e) Decode data as 16bit big endian signed integer and store result into n-th calibration parameter cn.
Steps a) to d) can be executed on many platforms by a single write 0xC7F7 to the chip address followed by a single read of 3 B from
the chip address.
5.11 SAMPLE CODE: EXAMPLE C SYNTAX
/* data structure to hold pressure sensor related parameters */
typedef struct inv_invpres
{
struct inv_invpres_serif serif;
uint32_t min_delay_us;
uint8_t pressure_en;
uint8_t temperature_en;
float sensor_constants[4]; // OTP values
float p_Pa_calib[3];
float LUT_lower;
float LUT_upper;
float quadr_factor;
float offst_factor;
} inv_invpres_t;
int inv_invpres_init(struct inv_invpres * s)
{
short otp[4];
read_otp_from_i2c(s, otp);
init_base(s, otp);
return 0;
}
int read_otp_from_i2c(struct inv_invpres * s, short *out)
{
unsigned char data_write[10];
unsigned char data_read[10] = {0};
int status;
int i;
// OTP Read mode
data_write[0] = 0xC5;
data_write[1] = 0x95;
data_write[2] = 0x00;
data_write[3] = 0x66;
data_write[4] = 0x9C;