主要两个作用:
- 快速确认I2C通信的器件是否工作正常
- 快速获得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();
}
}