温湿度传感器采集

本文介绍了如何使用STM32通过软件I2C和硬件I2C协议与AHT20温湿度传感器进行通信,详细讲述了实验要求、所需器材及编程实现过程,包括每隔2秒采集数据并经串口发送到上位机的步骤。
摘要由CSDN通过智能技术生成

实验内容:

学习I2C总线通信协议,完成基于I2C硬件协议的AHT20温湿度传感器的数据采集,并将采集的温度-湿度值通过串口输出。

一、什么是“软件I2C”和“硬件I2C”?

想要控制 STM32 产生 I2C 方式的通讯,可以采用软件模拟或硬件 I2C 这两种方式。

所谓软件模拟,即直接使用 CPU 内核按照 I2C 协议的要求控制 GPIO 输出高低电平。如控制产生 I2C 的起始信号时,如图 ,先控制作为 SCL 线的 GPIO 引脚输出高电平,然后控制作为 SDA 线的 GPIO 引脚在此期间完成由高电平至低电平的切换,最后再控制SCL 线切换为低电平,这样就输出了一个标准的 I2C 起始信号。

在这里插入图片描述

硬件 I2C 是指直接利用 STM32 芯片中的硬件 I2C 外设,该硬件 I2C 外设跟 USART串口外设类似,只要配置好对应的寄存器,外设就会产生标准串口协议的时序。使用它的I2C 外设则可以方便地通过外设寄存器产生 I2C协议方式的通讯,如初始化好 I2C 外设后,只需要把某寄存器位置 1,那么外设就会控制对应的 SCL 及 SDA 线自动产生 I2C起始信号,而不需要内核直接控制引脚的电平。

比较起来,硬件 I2C 直接使用外设来控制引脚,可以减轻 CPU 的负担。不过使用硬件I2C 时必须使用某些固定的引脚作为 SCL 和
SDA,软件模拟 I2C 则可以使用任意 GPIO 引脚,相对比较灵活。

二、编程实现:每隔2秒钟采集一次温湿度数据,并通过串口发送到上位机(win10)

1、任务要求

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

2、实验器材

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

3、主要代码

#include "stm32f10x.h"
#include "bsp_usart.h"
#include "delay.h"
#include "bsp_aht20.h"
#include "bsp_led.h"


int main(void)
{
   

	u32 CT_data[2]={
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值