IIC协议读取温湿度数据

硬件I2C与软件I2C

硬件I2C是直接利用 STM32 芯片中的硬件 I2C 外设,在初始化好 I2C 外设后,只需要把某寄存器位置 1,此时外设就会控制对应的 SCL 及 SDA 线自动产生 I2C 起始信号,不需要内核直接控制引脚的电平。软件I2C直接使用 CPU 内核按照 I2C 协议的要求控制 GPIO 输出高低电平,从而模拟I2C。区别:硬件I2C速度快,而软件I2C更灵活。

实验内容

系统时钟(RCC配置)

SYS配置

USART1配置

GPIO配置

I2C1配置

NVIC配置

时钟配置

生成项目

更改代码main.c

#include<stdio.h> int fputc(int ch, FILE *f)

{

HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);

return ch;

}

添加AHT20的头文件

#include "AHT20-21_DEMO_V1_3.h"

在while循环下添加下列代码

printf("start read...\r\n"); /* USER CODE END WHILE / AHT20_Read_CTdata(CT_data);//没有CRC校验,直接读取AHT20的温度和湿度数据 HAL_Delay(1500);//延时等待本次读取 c1 = CT_data[0]1000/1024/1024; //计算得到湿度值c1(放大了10倍) t1 = CT_data[1]2000/1024/1024-500;//计算得到温度值t1(放大了10倍) printf("temperature:%d%d.%d ",t1/100,(t1/10)%10,t1%10); printf("humidity:%d%d.%d\r\n",c1/100,(c1/10)%10,c1%10); printf("waiting next...\r\n"); printf("\n"); HAL_Delay(500);//延时0.5s等待,下一次的测量 / USER CODE BEGIN 3 */

烧录结果

总结

通过这次实验,熟悉IIC协议的规范,确保正确配置MCU和传感器的相关参数。在实际应用中,根据需求选择合适的温湿度传感器,考虑传感器的精度、响应时间、成本等因素。多次实践和学习,不断提高自己在IIC协议读取温湿度数据方面的技能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值