Skip to main content
Explorer
August 8, 2023
Solved

ST sensor - LPS27HHTW pressure read out problem

  • August 8, 2023
  • 2 replies
  • 2316 views

I would like to read out the pressure reading from this sensor, but it keep returning '0' Status.

Tools: Nucleo-767ZI, STM32CUBEIDE, STEVAL-220VI (the sensor eval)

I connect Sensor 
VDD to 3.3V,
CS pin to VDD_IO,
SDA, SCL pulled up by 4kOhm to 3.3V,
INT/DRDY pin left unconnected,
SAO address to GND.

Using Device Address = 5Ch (I did the 1 bit-shifting), I started to read 4 registers directly from Status Register 27h, together with measured pressure 28, 29, 2Ah, into an 8 bits array. Then, I compared the LSB of 27h for a '1'.

But I could never see once once of P_DA = 1. 

Or do we need to repeat 4x of "HAL_I2C_Mem_Read_IT" in order to get the reading of that 4 registers (27-2Ah)?
=================================
Can anyone share a successful read of this sensor with hardware connection and code snippets to correct my mistakes?

by the way, I have another question about the 24bits Pressure data reads out (though I haven't read out successfully), I am using a 32bits to hold the value, I saw the STM32CUBEIDE said I shall print it using "Long Decimal", however, specifier such as %ld shown a typo error. 
Does anyone know how to specify long integer or long decimal syntax correctly in this compiler?

    This topic has been closed for replies.
    Best answer by RhSilicon

    Have you checked these registers (0Fh and 10h)? According to the Datasheet, if the communication is working, when reading the address WHO_AM_I (0Fh) it should return B3h (0B10110011), DS13489 - page 36.

    In CTRL_REG1 (10h) has the ODR, default value: 000. When the ODR bits are set to '000', the device is in Power-down mode, DS13489 - page 36.

    When the ODR bits are set to '000', the device is in Power-down mode. When the device is in power-down
    mode, almost all internal blocks of the device are switched off to minimize power consumption. The I²C interface is still active to allow communication with the device. The content of the configuration registers is preserved and output data registers are not updated, therefore keeping the last data sampled in memory before going into power-down mode.

    If the ONE_SHOT bit in CTRL_REG2 (11h) is set to '1', One-shot mode is triggered and a new acquisition starts
    when it is required. Enabling this mode is possible only if the device was previously in power-down mode (ODR
    bits set to '000'). Once the acquisition is completed and the output registers updated, the device automatically
    enters in power-down mode. ONE_SHOT bit self-clears itself.

    When the ODR bits are set to a value different than '000', the device is in Continuous mode and automatically
    acquires a set of data (pressure and temperature) at the frequency selected through the ODR[2:0] bits.

    Apparently the sensor starts in Power-down mode and it would be necessary to take at least One Shot, or leave it in Continuous mode to obtain some reading value.

     

    2 replies

    Graduate II
    August 8, 2023

    Try shifting 1 bit in the address (addr << 1):

    From 5Ch to B8h

    Graduate II
    August 8, 2023

    Arduino has a very useful sketch for this, it scans the addresses and writes down which one to respond to, but anyway in Arduino the address goes from 0 to 127, but in the STM32 HAL it is from 128 to 255 (Over time we learn that STM32 has its particularities).

    https://playground.arduino.cc/Main/I2cScanner/

    RhSiliconAnswer
    Graduate II
    August 9, 2023

    Have you checked these registers (0Fh and 10h)? According to the Datasheet, if the communication is working, when reading the address WHO_AM_I (0Fh) it should return B3h (0B10110011), DS13489 - page 36.

    In CTRL_REG1 (10h) has the ODR, default value: 000. When the ODR bits are set to '000', the device is in Power-down mode, DS13489 - page 36.

    When the ODR bits are set to '000', the device is in Power-down mode. When the device is in power-down
    mode, almost all internal blocks of the device are switched off to minimize power consumption. The I²C interface is still active to allow communication with the device. The content of the configuration registers is preserved and output data registers are not updated, therefore keeping the last data sampled in memory before going into power-down mode.

    If the ONE_SHOT bit in CTRL_REG2 (11h) is set to '1', One-shot mode is triggered and a new acquisition starts
    when it is required. Enabling this mode is possible only if the device was previously in power-down mode (ODR
    bits set to '000'). Once the acquisition is completed and the output registers updated, the device automatically
    enters in power-down mode. ONE_SHOT bit self-clears itself.

    When the ODR bits are set to a value different than '000', the device is in Continuous mode and automatically
    acquires a set of data (pressure and temperature) at the frequency selected through the ODR[2:0] bits.

    Apparently the sensor starts in Power-down mode and it would be necessary to take at least One Shot, or leave it in Continuous mode to obtain some reading value.

     

    Wai SiangAuthor
    Explorer
    August 9, 2023

    It reads 179, B3h... I think I need to check out the ODR matter... 
    thank you..