IIC协议采集温湿度

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

重庆交通大学信息科学与工程学院

《嵌入式系统基础A》课程

实验报告

班 级: 物联网工程2101

姓名-学号 : 江欣朋-632007060322

实验项目名称: IIC协议采集温湿度

实验项目性质: 设计性

实验所属课程: 《嵌入式系统基础A》

实验室(中心): 南岸校区语音大楼

指 导 教 师 : 娄路

完成时间: 2023 年 11 月 15 日

一、实验内容和任务

学习I2C总线通信协议,使用STM32F103完成基于I2C协议的AHT20温湿度传感器的数据采集,并将采集的温度-湿度值通过串口输出。具体任务:

1)解释什么是“软件I2C”和“硬件I2C”? (阅读野火配套教材的第23章“I2C--读写EEPROM”原理章节)

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

参考:

stm32通过I2C接口实现温湿度(AHT20)的采集_aht21能够检测室内温度-CSDN博客 stm32通过I2C接口实现温湿度(AHT20)的采集

奥松AHT20传感器厂商资料

AHT20-21 DEMO V1_3(stm32).rar

AHT20产品手册a2.pdf


基于STM32的0.96寸OLED显示屏显示数据_stm32oled屏幕清除某个区域-CSDN博客

二、实验要求

1. 分组要求:每个学生独立完成,即1人1组。

2. 程序及报告文档要求:具有较好的可读性,如叙述准确、标注明确、截图清晰等。

3.把项目完整打包为zip文件,与实验报告(Markdown源码及PDF文件)、作业博客地址一起提交到学习通。

三. 实验过程介绍 (此处可以填博客内容)

学习I2C总线通信协议,使用STM32F103完成基于I2C协议的AHT20温湿度传感器的数据采集,并将采集的温度-湿度值通过串口输出。具体任务:

1)解释什么是“软件I2C”和“硬件I2C”? (阅读野火配套教材的第23章“I2C--读写EEPROM”原理章节)

IIC(Inter-Integrated Circuit)总线是一种由NXP(原PHILIPS)公司开发的两线式串行总线,用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。

1、软件I2C 将芯片的两个GPIO引脚分别用作SCL及SDA,按照I2C的时序要求,直接控制引脚的输出信号(若是接收数据时则读取 SDA 电平),就可以实现I2C通讯。由于是直接控制GPIO引脚的高低电平产生通讯时序,需要由CPU控制每个时刻的引脚状态,所以称为“软件模拟协议”方式即软件I2C方式。

2、硬件I2C 硬件I2C对应芯片上的I2C外设,具有相应的I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率要远高于软件模拟的I2C,但是程序较为繁琐。硬件I2C是直接调用内部寄存器进行配置。 对于硬件I2C来说,它需要I2C片上外设专门负责实现I2C通讯协议,只要配置好该外设,它就会自动根据协议要求产生I2C的通讯信号,收发数据并缓存起来,CPU只要检测该外设的状态和访问数据寄存器,就能完成数据收发。这种由硬件外设处理I2C协议的方式减轻了CPU的工作负担,并且使软件开发更简单。

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

1.RCC设置

2.sys设置

3.usart1设置

4.GPIO设置

5.I2C

点击ADD 如下设置:

6.NIVC设置

7.时钟设置

8.打开keil 添加文件

9.设置路劲

10.修改AHT20.H

#ifndef _AHT20_DEMO_

#define _AHT20_DEMO_

#include "main.h"  

void Delay_N10us(uint32_t t);//延时函数

void SensorDelay_us(uint32_t t);//延时函数

void Delay_4us(void); //延时函数

void Delay_5us(void); //延时函数

void Delay_1ms(uint32_t t);

void AHT20_Clock_Init(void); //延时函数

void SDA_Pin_Output_High(void)  ; //将PB7配置为输出 , 并设置为高电平, PB7作为I2C的SDA

void SDA_Pin_Output_Low(void);  //将P7配置为输出  并设置为低电平

void SDA_Pin_IN_FLOATING(void);  //SDA配置为浮空输入

void SCL_Pin_Output_High(void); //SCL输出高电平,P6作为I2C的SCL

void SCL_Pin_Output_Low(void); //SCL输出低电平

void Init_I2C_Sensor_Port(void); //初始化I2C接口,输出为高电平

void I2C_Start(void);  //I2C主机发送START信号

void AHT20_WR_Byte(uint8_t Byte); //往AHT20写一个字节

uint8_t AHT20_RD_Byte(void);//从AHT20读取一个字节

uint8_t Receive_ACK(void);   //看AHT20是否有回复ACK

void Send_ACK(void) ;   //主机回复ACK信号

void Send_NOT_ACK(void); //主机不回复ACK

void Stop_I2C(void);   //一条协议结束

uint8_t AHT20_Read_Status(void);//读取AHT20的状态寄存器

uint8_t AHT20_Read_Cal_Enable(void);  //查询cal enable位有没有使能

void AHT20_SendAC(void); //向AHT20发送AC命令

uint8_t Calc_CRC8(uint8_t *message,uint8_t Num);

void AHT20_Read_CTdata(uint32_t *ct); //没有CRC校验,直接读取AHT20的温度和湿度数据

void AHT20_Read_CTdata_crc(uint32_t *ct); //CRC校验后,读取AHT20的温度和湿度数据

void AHT20_Init(void);   //初始化AHT20

void JH_Reset_REG(uint8_t addr);///重置寄存器

void AHT20_Start_Init(void);///上电初始化进入正常测量状态

#endif

11.修改AHT20.C

#include "main.h"

#include "AHT20-21_DEMO_V1_3.h"

#include "gpio.h"

#include "i2c.h"

void Delay_N10us(uint32_t t)//延时函数

{

  uint32_t k;

   while(t--)

  {

    for (k = 0; k < 2; k++);//110

  }

}

void SensorDelay_us(uint32_t t)//延时函数

{

for(t = t-2; t>0; t--)

{

Delay_N10us(1);

}

}

void Delay_4us(void) //延时函数

{

Delay_N10us(1);

Delay_N10us(1);

Delay_N10us(1);

Delay_N10us(1);

}

温湿度传感器 AHT21B 简明教程 AHT21B是基于AH21开发的集成式温湿度传感器模块。教程中除了基本介绍外还附带Python接口说明 阅读详情

相关推荐

STM32基于IIC协议温湿度AHT20)采集

IIC通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。了解学习了IIC协议进行通信,对AHT20芯片读取数据的过程也要有一个比较清晰的认识,知道如何通过AHT20读取采集到的温湿度

jynyyhd的博客 2323

AHT20_DEMO例程

国内最新集成式温湿度传感器驱动程序 代码,注释清楚。使用STM8为实例的C语言程序,开发环境为ST Visual Develop

AHT20-21 DEMO V1_3(1).rar

ATH25 温湿度传感器源代码 ,亲测可用

基于stm32f103c8t6和AHT20-21IIC协议温湿度采集

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

sjsnsnsnsi的博客 2283

物联网AI MicroPython传感器学习 之 AHT21B 温湿度传感器

AHT21B是一款极具性价比的数字温度传感器,其基于AHT21开发的集成式温湿度传感器模块,模块内部配有一个全新设计的ASIC专用芯片、一个经过改进的MEMS半导体电容式湿度传感单元以及一个标准的片上温度传感单元;输出接口为标准的I2C通信格式,具有响应速度快、精度高、稳定性高等特点,性能达到国际水平,是国产替代进口的理想选择。

weixin_39363464的博客 1102

excel搭建产品数据库

1目录页 2数据监控 设计数据均为改编,与实际无关。 3分校工作表 4产品工作表

qq_34211618的博客 2068

STM32F103通过IIC协议实现温湿度AHT20)的采集

IIC 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。

asd6666jkl的博客 382

STM32通过IIC协议实现温湿度采集

学习到了IIC通信原理及深层知识,也学习到了如何通过AHT20读取采集到的温湿度在实验时要注意传感器的引脚的链接。

Turing_kun的博客 201

STM32下基于IIC协议AHT20温湿度采集

STM32下基于IIC协议AHT20温湿度采集一、软件I2C和硬件I2C软件I2C和硬件I2C的区别AHT20简介二、温湿度采集 一、软件I2C和硬件I2C • I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备现在被广泛地使用在系统内多个集成电路(IC)间的通讯。 在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设;STM32

weixin_50675460的博客 700

基于IIC和SPI协议温湿度采集与OLED显示

基于IIC和SPI协议温湿度采集与OLED显示

a65167252的博客 493

【嵌入式基础】基于IIC和SPI协议温湿度采集与OLED显示

本文主要介绍IIC总线通信协议和SPI协议,并使用STM32系列芯片基于IIC协议实现AHT20温湿度传感器上位机数据采集,基于SPI协议实现OLED显示。

Xicun1984的博客 808
上一篇: 基于中断DMA的串口通信
下一篇: 汉字点阵与OLED屏显
JP13121
博客等级 码龄3年 186粉丝 · 18原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值