[STM32]基于HAL库扫描I2C设备地址代码

主要两个作用:

  • 快速确认I2C通信的器件是否工作正常
  • 快速获得I2C地址

依赖:

  • HAL库
  • 配置好I2C和串口

CODE:

/* USER CODE BEGIN 2 */
uint8_t i=0;
HAL_StatusTypeDef status;
for(i=0;i<127;i++)
{
status=HAL_I2C_Master_Transmit(&hi2c1,i<<1,0,0,200);
if(status==HAL_OK)
{
printf("i2c addr:0x%02X is ok\r\n",i<<1);
}
else if(status==HAL_TIMEOUT)
{
printf("i2c addr:0x%02X is timeout\r\n",i<<1);
}
else if(status==HAL_BUSY)
{
printf("i2c addr:0x%02X is busy\r\n",i<<1);
}
}
printf("scan end\r\n");

当然还可以用STLink等调试器快速查看变量的方法做。

uint8_t i=0,temp;
HAL_StatusTypeDef status;
for(i=0;i<127;i++)
{
status=HAL_I2C_Master_Transmit(&hi2c1,i<<1,0,0,200);
if(status==HAL_OK)
{
temp=i;
__NOP();
}
}

了起

发表评论

邮箱地址不会被公开。 必填项已用*标注