基于I2C通信协议的AHT21B温湿度传感器数据采集

一、I2C简介

IIC(Inter-Integrated Circuit)总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。它是由数据线 SDA 和时钟 SCL 构成的串行总线,可发送和接收数据。 在 CPU与被控 IC 之间、IC 与 IC 之间进行双向传送,高速 IIC 总线一般可达 400kbps 以上。
I2C总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。

  • 开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。
  • 结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。
  • 应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
  • 这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。
  • IIC 总线时序图如图所示:
    在这里插入图片描述

二、“硬件I2C”与“软件I2C”

1、硬件I2C

硬件I2C是由I2C控制器实现各种时序和应答,是MCU内置的IIC硬件模块,接收发送都由硬件完成,占用MCU资源少,有中断处理对应芯片上的I2C外设,有专用的I2C管脚,有相应I2C驱动电路。

2、软件I2C

软件模拟I2C就意味着你要用软件模拟I2C的时序,并且要随时监控I2C总线上的各种状态并作出相应的回应,占用MCU资源,如果总线上的数据交换比较频繁,那cpu基本就不能做其他事情了,否则就会丢数据。

3、两者区别

  • 硬件IIC用法比较复杂,模拟IIC的流程更清楚一些。

  • 硬件IIC速度比软件快,并且可以用DMA

  • 模拟IIC可以在任何管脚上,而硬件只能在固定管脚上。

三、AHT20温湿度传感器数据采集

1、任务要求

  • 每隔2秒钟采集一次温湿度数据,并通过串口发送到上位机(win10)。

2、实验器材

① STM32最小核心板(STM32F103C8T6)
②奥松AHT21B温湿度传感器
③USB转TTL(ch340芯片)
④ IDE:keil5
⑤ 实验所用串口:USART1

3、主要代码

#include "delay.h"
#include "AHT20tem.h"
#include "sys.h"
#include "usart.h"

 int main(void)
 {	 	
    u32 CT_data[2];
    volatile float  c1=0,t1=0;     
     
    delay_init();	    	 //延时函数初始化	  
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
    uart_init(115200);	 //串口初始化为115200
    AHT20tem_init();    
	
	delay_ms(40);//刚上电,延时40ms才可以读取状态
	
	while(1)
	{
       
        delay_ms(1000);
        AHT20_Read_CTdata(CT_data);       //不经过CRC校验,直接读取AHT20的温度和湿度数据    推荐每隔大于1S读一次

        c1 = CT_data[0]*100*10/1024/1024;  //计算得到湿度值(放大了10倍)
        t1 = CT_data[1]*200*10/1024/1024-500;//计算得到温度值(放大了10倍)
        
        printf("湿度:%.1f\r\n",(c1/10));
        printf("温度:%.1f度\r\n",(t1/10));
		printf("\r\n");
		delay_ms(1000);
        
	 }

}

4、烧录程序

  • 将AHT21B温湿度传感器连接到stm32核心板上,对应接口如下:
AHT21Bstm32核心板
SCLPB6
SDAPB7
VCC3.3V
GNDGND
  • 效果展示
    常温下:
    在这里插入图片描述
    用手捂住传感器后:
    在这里插入图片描述

四、参考资料

1、https://blog.csdn.net/weixin_40774605/article/details/88399276
2、AHT20产品手册
3、正点原子I2C实验讲解视频
4、AHT20的读取示例程序
5、正点原子STM32F103最小系统板开发指南-库函数版本_V1.1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值