Re: [PATCH 1/2] iio: lsm6dsx: Support temperature channel

From: Linus Walleij
Date: Sat Aug 12 2023 - 16:40:36 EST


On Sat, Aug 12, 2023 at 11:17 AM Lorenzo Bianconi <lorenzo@xxxxxxxxxx> wrote:

> > > looking at the ISM330DHCX datasheet, the temperature sensor ODR is just 52Hz,
> > > while values in 0x0A register are used only for FIFO decimation, they are not
> > > values you can configure the sensor e.g. for read_one_shot().

BTW looked at this and the read_one_shot() call uses
register 0x20/0x21 as appropriate.

> > >
> > > > + .odr_avl[0] = { 26000, 0x02 },
> > > > + .odr_avl[1] = { 52000, 0x03 },
> > > > + .odr_len = 2,
> >
> > I look at page 44, paragraph 9.6 about bits 4-5:
> >
> > ODR_T_BATCH_[1:0]
> > Selects batch data rate (write frequency in FIFO) for temperature data
> > (00: Temperature not batched in FIFO (default);
> > 01: 1.6 Hz;
> > 10: 12.5 Hz;
> > 11: 52 Hz)
>
> AFAIR the batch register is used to sub-sample sensor data before queueing them
> into the FIFO (please check st_lsm6dsx_set_fifo_odr()), but it does not refer
> to the configured sensor ODR.
> Looking at the device application-note [0], the temperature sensor ODR depends
> on the accel/gyro one:
>
> - temperature sensor ODR == accel sensor ODR if accel ODR is < 52Hz and the
> gyro is in power-down
> - temperature sensor ODR = 52Hz if accel ODR > 52Hz or if the gyro is not in
> power-down

We handle the TEMP along with the EXT channels in
st_lsm6dsx_set_odr() which actually makes sure to match
the data rate of the accelerometer.

It looks as nobody cared to look into the issue with the
gyroscope though :/ It feels like a whole separate issue,
I expect more channels to be affected by that...

Yours,
Linus Walleij