我正在尝试从 LIS3DH 传感器恢复数据,我发现YouTube 上的此教程。
在教程中,人们使用以下方法来查看传感器是否可以使用了:
if(HAL_I2C_IsDeviceReady(&hi2c1,SLAVEI2C_ADD,10,100)==HAL_OK)
但是,当我建立连接并运行程序时,我什么也看不到。
我按如下方式连接传感器:
- 传感器-> STM32
- SDA -> SDA/D14 (上拉 10kOhms)
- SCL -> SCL/D15 (上拉 10kOhms)
- SDO-> 3.3V
- CS-> 3.3V
- GND->GND
- Vcc->3.3v
以下代码是我用来尝试了解传感器状态的代码。
#include "main.h"
I2C_HandleTypeDef hi2c1;
#define SLAVEI2C_ADD 0x19
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_I2C1_Init(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
__HAL_RCC_GPIOB_CLK_ENABLE();
MX_GPIO_Init();
__HAL_RCC_I2C1_CLK_ENABLE();
MX_I2C1_Init()
HAL_Delay(1000);
if(HAL_I2C_IsDeviceReady(&hi2c1,SLAVEI2C_ADD,10,100)==HAL_OK)
{
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);
}
while (1)
{
}
}
我发现的错误是与传感器通信的等待时间即将用完HAL_I2C_ERROR_TIMEOUT
。我不知道这可能是什么错误。你知道可能发生了什么吗?