定义设备地址
#define ****_ADDRESS 0x70
//定义设备地址
I2C初始化
void ****_Init(){
//初始化
uint8_t readBuffer;
//一字节读取readBuffer
HAL_Delay(40);
//等待40毫秒
HAL_I2C_Master_Receive(&hi2c1,****_ADRESS,&readBuffer,1,HAL_MAX_DELAY);
//I2C接收一字节
if ((readBuffer&0x80)==0x00){
//判断I2C接收一字节是否符合
uint8_t sendBuffer[3]={***,***,***};
HAL_I2C_Master_Transmit(&hi2c1,****_ADRESS,sendBuffer,3,HAL_MAX_DELAY);
//I2C发送三字节
}
}
I2C读取程序
void ****_Read(float *Tamperature,float *Humidity){
uint8_t sendBuffer[3]={***,***,***};
//发送数据
uint8_t readBuffer[6];
//接收数据
HAL_I2C_Master_Transmit(&hi2c1,****_ADRESS,sendBuffer,3,HAL_MAX_DELAY);
HAL_Delay(75);
//等待发送
HAL_I2C_Master_Receive(&hi2c1,****_ADRESS,&readBuffer,6,HAL_MAX_DELAY);
if ((readBuffer[0]&0x80)==0x00{
uint32_t data =0;
data=((unit32_t)readBuffer[3]>>4+**************;
*Humidity = data *300*******;
*Temperature = data**********;
//数据计算
}
}
主函数设置
****_Init();
//初始化
float temperature,humidity;
//定义变量
char message[50];
//定义发送字符
while(1){
****_Read(&temperature,&humidity);
sprintf(message,"温度:%.lf℃,湿度%.lf %%\r\n",temperature,humidity);
HAL_UART_Transmit(&huart2<(unit8_t*)message,strlen(message),HAL_MAS_DELAY);
//UART串口发送message
HAL_Delay(1000);
}
Comments NOTHING