目录

一、题目要求

二、关于I2C

1、什么IIC

2、IIC的主要特点

3、IIC协议数据传输过程

三、关于DHT20

1、概述

2、引脚参数

四、DHT20温湿度采集

1、程序代码分析

2、实验效果展示

五、总结

六、参考资料


一、题目要求

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

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

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

二、关于I2C

1、什么IIC

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

在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,高速 IIC 总线一般可达 400kbps 以上。

IIC一共有只有两个总线: 一条是双向的串行数据线SDA,一条是串行时钟线SCL

SDA(Serial data)是数据线,D代表Data也就是数据,Send Data 也就是用来传输数据的

SCL(Serial clock line)是时钟线,C代表Clock 也就是时钟 也就是控制数据发送的时序的

软件IIC:软件IIC通信指的是用单片机的两个I/O端口模拟出来的IIC,用软件控制管脚状态以模拟I2C通信波形,软件模拟寄存器的工作方式。

硬件IIC :一块硬件电路,硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,硬件(固件)I2C是直接调用内部寄存器进行配置。

硬件I2C的效率要远高于软件的,而软件I2C由于不受管脚限制,接口比较灵活。

2、IIC的主要特点

通常我们为了方便把IIC设备分为主设备和从设备,基本上谁控制时钟线(即控制SCL的电平高低变换)谁就是主设备。

· IIC主设备功能:主要产生时钟,产生起始信号和停止信号

· IIC从设备功能:可编程的IIC地址检测,停止位检测

· IIC的一个优点是它支持多主控(multimastering), 其中任何一个能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。

· 支持不同速率的通讯速度,标准速度(最高速度100kHZ),快速(最高400kHZ)

· SCL和SDA都需要接上拉电阻 (大小由速度和容性负载决定一般在3.3K-10K之间) 保证数据的稳定性,减少干扰。

· IIC是半双工,而不是全双工 ,同一时间只可以单向通信

· 为了避免总线信号的混乱,要求各设备连接到总线的输出端时必须是漏极开路(OD)输出或集电极开路(OC)输出。这一点在等下我们会讲解

3、IIC协议数据传输过程

主设备和从设备进行数据传输时遵循以下协议格式。数据通过一条SDA数据线在主设备和从设备之间传输01的串行数据。串行数据序列的结构可以分为,开始条件,地址位,读写位,应答位,数据位,停止条件。

 开始条件

当主设备决定开始通讯时,需要发送开始信号,需要执行以下动作:
· 先将SDA线从高压电平切换到低压电平;
· 然后将SCL从高电平切换到低电平;
在主设备发送开始条件信号之后,所有从机即使处于睡眠模式也将变为活动状态,并等待接收地址位。

 从机应答/非应答

· 主机每次发送完数据之后会等待从设备的应答信号ACK
· 在第9个时钟信号,如果从设备发送应答信号ACK,则SDA会被拉低若没有应答信NACK,则SDA会输出为高电平,这过程会引起主设备发生重启或者停止

结束条件 

当主设备决定结束通讯时,需要发送停止信号,需要执行以下动作
· 先将SDA线从低电压电平切换到高电压电平
· 再将SCL线从高电平拉到低电平

三、关于DHT20

1、概述

DHT20采用I2C通讯协议,响应迅速,配有一个全新设计的ASIC专用芯片、一个经过改进的MEMS半导体电容式湿度传感元件和一个标准的片上温度传感元件,是一款全新升级的智能温湿度传感器模块,在测量精度、供电电压、测量范围等方面的性能参数都有大幅提升,超出了前一代传感器的可靠性水平,即使在恶劣环境下也能保持性能稳定。每一款产品出厂时都经过严格的校准和测试。由于对传感器做了改良和微型化改进,因此它的性价比更高。

2、引脚参数

四、DHT20温湿度采集

1、程序代码分析

read_DHT20_once();   //I2C读取传感器温度

void  read_DHT20_once(void)
{delay_ms(10);reset_DHT20();                //复位DHT20delay_ms(10);init_DHT20();             //初始化DHT20delay_ms(10);startMeasure_DHT20();        //准备开始测量DHT20温湿度    delay_ms(80);read_DHT20();              //通过IIC读取DHT20采集的温湿度delay_ms(5);
}

main() ;函数

int main(void)
{   delay_init();                  //延时函数初始化          uart_init(115200);                //串口初始化IIC_Init();                      //IIC协议初始化NVIC_Configuration();        //设置NVIC中断分组2:2位抢占优先级,2位响应优先级     OLED_Init();                     //初始化OLED  OLED_Clear(0); while(1){printf("温度湿度显示");read_DHT20_once();             //I2C读取传感器温度OLED_Clear(0);                  delay_ms(1500);}
}

工程代码文件传送门:工程代码

2、实验效果展示

温湿度采集实验

五、总结

温湿度采集实验是一个很有趣的实验,通过温湿度采集基本了解了IIC通信协议的相关知识,以及学会了如何运用IIC协议读取数据,很有帮助;实验过程也遇到了一些问题,对于温湿度采集传感器的供电特别注意,需要5v供电可能才能正常读取采集数据,一开始3.3v供电怎么都读取不了温度。

六、参考资料

IIC原理超详细讲解---值得一看

I2C协议靠这16张图彻底搞懂(超详细)

stm32通过I2C接口实现温湿度(AHT20)的采集

STM32基于I2C温湿度采集相关推荐

  1. 基于I2C温湿度采集

    基于I2C温湿度采集 一.什么叫AHT20 二."软件I2C"和"硬件I2C" 三.I2C-读写 EEPROM 1.I2C 物理层 2.I2C协议层 3.STM ...

  2. STM32通过I2C接口采集温湿度

    目录 一.I2C总线协议 1. I2C总线简介 1.1 物理接口 1.2 通讯特征 1.3 I2C总线状态 2. I2C总线通信协议 2.1 起始位和结束位 2.2 数据格式与应答 2.3 数据传输通 ...

  3. 基于stm32的DHT11温湿度采集LCD显示Proteus仿真

    *本设计:* 基于stm32温湿度采集Proteus仿真(仿真+程序) 仿真图protues 8.9 程序编译器:keil 5 编程语言:C语言 *设计编号:C0041* *功能描述:* 通过STM3 ...

  4. (嵌入式)I2C温湿度采集

    目录 一.硬件I2C和软件I2C 二.使用AHT20采集温湿度 1.实验工具 2.实验步骤 (1).编写代码 (2).硬件连接 (3).往核心板内烧入程序 (4).运行结果 三.参考链接 一.硬件I2 ...

  5. stm32通过I2C实现温湿度(AHT20)采集

    目录 一.I2C总线通信协议 1.1 I2C介绍 1.2 I2C物理层 1.3.I2C协议层 1.4.软件IIC和硬件IIC 1.5 IIC数据传送 1.6 IIC发送数据 1.7 IIC读数据: 二 ...

  6. I2C总线通信协议及实操stm32通过I2C实现温湿度(AHT20)采集

    I2C总线通信协议及实操stm32通过I2C实现温湿度(AHT20)采集 一实验要求 二.12C总线通信协议 1.12C介绍 2.I2C物理层 3.I2C协议层 4.软件IIC和硬件IIC 三.STM ...

  7. 基于stm32温湿度采集平台开发

    基于stm32温湿度采集平台开发 ==这里记录一下自己以前课设报告,但是论文中图片和文字.公式太多了,懒得粘贴了,需要完整的私信== 摘 要 关键词 第一章 绪论 1.1 研究背景 1.1.1国内研究 ...

  8. 基于I2C硬件协议的AHT20温湿度传感器的数据采集

    基于I2C的温湿度采集 硬件I2C和软件I2C 温湿度采集 任务要求 硬件连接 添加代码 最终效果 硬件I2C和软件I2C 硬件I2C对应芯片上的baiI2C外设,有相应I2C驱动电路,其所使用的I2 ...

  9. STM32实现基于I2C的AHT20温湿度采集

    STM32实现基于I2C的AHT20温湿度采集 I2C通信协议 软件I2C与 硬件I2C 代码实现 烧录 硬件连接 烧录并运行 参考 I2C通信协议 I2C协议简介 IC( Inter-- Integ ...

最新文章

  1. Intelij IDEA注册码生成代码
  2. spring 初始化数据库
  3. mongo 唯一约束索引_快速掌握mongoDB(三)——mongoDB的索引详解
  4. (97)FPGA手写RAM(Verilog)
  5. sqlmap安装和使用
  6. 【下载】快速通过Python笔试?学大家一样先把LeetCode答案私藏了
  7. edius裁剪快捷键_Edius剪辑视频的两种方法
  8. javaweb JAVA JSP员工绩效考核管理系统(员工考核管理系统)员工考勤管理系统人事考勤
  9. python如何获取鼠标位置_python实时得到鼠标的位置
  10. 21cn邮箱服务器端,21CN 免费邮箱常见问题
  11. Vue脚手架安装详解
  12. 14.VRP介绍以及AC初始化配置_AC和AP的软件升级方法
  13. jmeter参数化的用法和用途
  14. node 文字生成图片
  15. 震惊全国的汶川大地震
  16. Error: EPERM: operation not permitted(权限问题 errro permit)
  17. 高通平台使用64位win7系统无法安装驱动的解决方法
  18. kafka-manager安装采坑日志
  19. python画树叶-用Python绘图,感受编程之美
  20. 现在什么都二维码了,我干脆用二维码写博客算了

热门文章

  1. 基于JAVA+SpringMVC+Mybatis+Vue+MYSQL的房屋租赁系统
  2. jsonobject json对象里面_将json字符串转为json对象,从对象中取需要的数据
  3. UE4中蓝图实现小地图——雷达图篇
  4. 智慧医疗时代的数据标注如何更精准?
  5. 数据分析如何入门?如何做职业规划?
  6. Win2K”秘密武器”之删除工具(转)
  7. Linux 实用命令汇总
  8. 阿里云高并发解决方案
  9. 蒋雯晴不准看我blog
  10. 食用油详细 制造工艺、等级划分、国家标准号和注意事项