STM32L031 Nucleo开发板I2C时钟丢失及SHT40检测异常问询
STM32L031 Nucleo开发板I2C异常问题求助
我正在STM32L031 Nucleo开发板上测试I2C指令,开发板参考手册为UM1956 STM32 Nucleo-32 Boards (MB1180)。
我曾为多款STM32单片机编写过I2C驱动,但从未遇到过此类异常问题。
I2C配置与测试情况
- 采用默认配置设置I2C:

- 通过逻辑分析仪连接SCL与SDA引脚
- 测试代码:
uint8_t test_data[1] = {0xAA}; uint16_t device_address = 0xff; HAL_I2C_Master_Transmit(&hi2c1, device_address, &test_data, 1, 0xff);
- 逻辑分析仪结果:

我无法理解该结果:预期发送2字节(地址0xff、数据0xAA),对应SCL线16个时钟周期,但波形显示丢失时钟周期,未完成完整数据传输。请问是否有人遇到过此类I2C异常?恳请帮助。
更新
我将SHT40 I2C温湿度传感器连接至开发板,尝试检测地址0x44(SHT40地址),代码如下:
#define SHT40_ADDRESS 0x44 HAL_StatusTypeDef ret = HAL_I2C_IsDeviceReady(&hi2c1, SHT40_ADDRESS, 10, 100); if(ret == HAL_OK) { printf("I2C device detected at address 0x44\n"); } else{ printf("SH40 not detected\n"); }
逻辑分析仪结果:
该结果是否正常?我无法理解为何发送的是0x22而非预期的0x44:
内容的提问来源于stack exchange,提问作者TheBestPlayer
相关产品推荐
相关产品推荐

