我正在使用 STM32CUBE IDE,并且一直在努力从 X-Nucleo-IKS01A1 板上读取数据,该板包含例如 LPS25HB 温度和压力传感器。
根据数据表,我定义了地址和寄存器:
static const uint8_t LPS25HB_ADDR = 0xB9;
static const uint8_t TEMP_OUT_L = 0x2B;
static const uint8_t TEMP_OUT_H = 0x2C;
然后我想通过 I2c 读取数据并将原始数据转换为摄氏度:
//Read 2 consecutive registers in autoincrement mode starting from LPS25_TEMP_OUT_L
ret = HAL_I2C_Mem_Read(&hi2c1, LPS25HB_ADDR, TEMP_OUT_L|0x80, 1, Buffer, 2, HAL_MAX_DELAY);
temp_c=(short int)(((unsigned short int)Buffer[1]<<8)+((unsigned short int)Buffer[0]));
//ret = HAL_OK so I think I am fine
但无论如何(更改传感器地址,加热传感器等)我得到的输出等于 8306 C - 而且我没有移动到太阳,
我是这个领域的新手,我不确定在采集之前是否必须向传感器发送一些数据?我正在阅读一些类似的主题,例如与 HTS221 相关的主题,但没有找到此类信息。