本实验基于野火开发板stm32f407及stm32cubemx、keil环境实现。
配置
使用硬件IIC,使能IIC引脚,配置IIC模式、时钟速度、位数等。
生成代码后,可以在stm32f4xx_hal.c中查看IIC的相关函数。
本实验使用SHT20采集温湿度数据,数据手册部分内容如下:
#define BufSize 4
uint8_t DataBuf[BufSize];
float temp,humi;
SHT20 Sht20; //结构体存放温湿度两个参数
void SHT20_RD(void)
{
HAL_I2C_Mem_Read(&hi2c1,0x81,0xE3,I2C_MEMADD_SIZE_8BIT,DataBuf,2,0xFFFF);
HAL_I2C_Mem_Read(&hi2c1,0x81,0xE5,I2C_MEMADD_SIZE_8BIT,&DataBuf[2],2,0xFFFF);
temp = ((uint16_t)DataBuf[0]<<8)+(DataBuf[1]&0xfe);
humi = ((uint16_t)DataBuf[2]<<8)+(DataBuf[3]&0xfc);
Sht20.temp = temp * 175.72 / 65536 - 46.85;
Sht20.humi = humi * 125.00 / 65536 - 6.0000f;
printf("TEMP=%.2f Humidity=%.2f\r\n",Sht20.temp,Sht20.humi);
delay_us(30);
}
模拟IIC可以参照之前写的内容进行实验