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

目录

一、I2C通信协议

1.1 I2C协议简介

1.2 I2C物理层

1.3 I2C协议层

1.4 硬件 I2C 和 软件 I2C

二、AHT20 温湿度传感器

 2.1 原理图

 2.2 相关参数

三、项目实现

3.1 实验准备

3.2 程序代码

3.3 硬件连接

3.4 成果展示 

四、逻辑分析仪分析协议

五、参考文献


本文概述:

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

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

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

一、I2C通信协议

1.1 I2C协议简介

I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、 CAN 等通讯协议的外部收发设备,所以被广泛使用。

1.2 I2C物理层

①物理层特点

(1)它是一个支持设备的总线。“总线”指多个设备共用的信号线。在一个 I2C 通讯总线中,可连接多个 I2C 通讯设备,支持多个通讯主机及多个通讯从机。
(2)一个 I2C 总线只使用两条总线线路,一条双向串行数据线(SDA) ,一条串行时钟线(SCL)。数据线即用来表示数据,时钟线用于数据收发同步。
(3)每一个连接总线的设备都有一个独立的地址,主机可以通过这个地址进行选择连接总线的设备与之通信。
(4)总线通过上拉电阻接到电源。当 I2C 设备空闲时,会输出高阻态,而当所有设备都空闲,都输出高阻态时,由上拉电阻把总线拉成高电平。
(5)多个主机同时使用总线时,为了防止多个设备发送数据冲突,会利用仲裁方式决定由哪个设备占用总线。
(6) 具有三种传输模式:标准模式传输速率为 100kbit/s ,快速模式为 400kbit/s ,高速模式下可达 3.4Mbit/s,但目前大多 I2C 设备尚不支持高速模式。
(7) 连接到相同总线的 IC 数量受到总线的最大电容 400pF 限制 。
备注:
仲裁:SDA线的仲裁也是建立在总线具有线“与”逻辑功能(线与逻辑,即两个以上的输出端直接互连就可以实现“AND”的逻辑功能。两个一出一,一个一出零、没有一出零)的原理上的。节点在发送1位数据后,比较总线上所呈现的数据与自己发送的是否一致。是,继续发送;否则,进行比较,输出低电平进行发送,输出高电平退出。SDA线的仲裁可以保证I2C总线系统在多个主节点同时企图控制总线时通信正常进行并且数据不丢失。总线系统通过仲裁只允许一个主节点可以继续占据总线。

②I2C通讯设备之间的常用连接方式见图

1.3 I2C协议层

S:由主机的 I2C 接口产生的传输起始信号(S),这时连接到 I2C 总线上的所有从机都会接收到这个信号。
SLAVE ADDRESS:从机地址信号。 在 I2C 总线上,每个设备的地址都是唯一的, 当主机广播的地址与某个设备地址相同时,这个设备就被选中了,没被选中的设备将会忽略之后的数据信号。从机地址一般是 7 位或 10 位。
R/W:是传输方向的选择位,该位为 0 时,表示后面的数据传输方向是由主机传输至从机,即主机向从机写数据。该位为 1 时,则相反,即主机由从机读数据。
A | A/:一个应答(ACK)或非应答(NACK)信号。
P:停止传输信。
图中背景有填充的矩形表示数据由主机传输至从机,白色部分表示数据由从机传输至主机

①写数据

讲得简单一点,即主机发送信息、从机阅读信息。配置为方向为“写数据”方向,接受的数据包大小为8位(一个byte),主机每发送完一个字节数据,都要等待从机的应答信号(ACK),重复这个过程,数据的多少可以理论是可以随便的。当数据传输结束时,主机向从机发送一个停止传输信号,表示不再传输数据。
②读数据 

讲得简单一点,即主机阅读信息、从机发送信息。若配置的方向传输位为“读数据”方向,发送的数据包大小也为 8 位,从机每发送完一个数据,都会等待主机的应答信号(ACK),重复这个过程,数据的多少可以理论也是可以随便的。当主机希望停止接收数据时,就向从机返回一个非应答信号(NACK),则从机自动停止数据传输。

③读和写数据

除了基本的读写,I2C 通讯更常用的是复合格式,该传输过程有两次起始信号(S)。一般在第一次传输中,主机通过 SLAVE_ADDRESS 寻找到从设备后,发送一段“数据”,这段数据通常用于表示从设备内部的寄存器或存储器地址(注意区分它与 SLAVE_ADDRESS 的区别);在第二次的传输中,对该地址的内容进行读或写。也就是说,第一次通讯是告诉从机读写地址,第二次则是读写的实际内容。
 

1.4 硬件 I2C 和 软件 I2C

  • 硬件(固件) I2C 对应芯片上的 I2C 外设,有相应 I2C 驱动电路,其所使用的 I2C 管脚也是专用的
  • 软件(模拟) I2C
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: AHT10是一种温湿度传感器,它可以测量环境中的温度和湿度。它可以用于各种应用,如温室控制、恒温恒湿环境监控、工业过程控制等。AHT10拥有高精度和高稳定性,并且可以在极端温度条件下工作。此外,AHT10还有一个I2C接口,可以与其他电子设备相连,方便数据采集和处理。 ### 回答2: AHT10温湿度传感器是一种高精度的数字温湿度传感器,采用了先进的CMOSens®技术。它可以测量温度和湿度,并将结果以数字形式输出。AHT10具有很高的精确度和稳定性,能够提供可靠的温湿度测量结果。 AHT10传感器的特点之一是其小巧的封装和低功耗设计。它采用超薄的封装,适用于空间有限的应用场景,例如智能手机、电子设备等。同时,AHT10传感器的功耗非常低,可以在长时间使用的情况下保持高精度的温湿度测量。 此外,AHT10传感器还具有很好的抗干扰能力和快速的响应时间。它采用数字传感技术,能够有效抵抗电磁干扰和温度梯度变化对温湿度测量的影响,确保测量结果的准确性和稳定性。同时,AHT10传感器响应时间快,能够迅速对环境的温湿度变化做出反应。 除了以上特点,AHT10传感器还具有多种应用领域。它可以应用于室内环境监测、气象观测、温湿度控制等领域。在智能家居领域,AHT10传感器可以与其他智能设备进行连接,实现智能温湿度控制和环境监测。在农业领域,AHT10传感器可以应用于温室监测和农作物生长环境控制,提高农作物产量和质量。 总的来说,AHT10温湿度传感器是一种高精度、稳定性好、功耗低的数字温湿度传感器。它具有多种应用领域,能够满足不同场景的温湿度测量需求。 ### 回答3: AHT10温湿度传感器是一种具有高精度和可靠性的传感器,用于测量环境中的温度和湿度。它具有很多特点和优势,以下是对AHT10温湿度传感器的回答。 首先,AHT10温湿度传感器采用表面贴装技术,可以方便地集成到各种设备和系统中。它的体积小、重量轻,适合于嵌入式应用和对空间有要求的领域。它还具有超低功耗,在节能环保方面具有较大优势。 其次,AHT10温湿度传感器具有高度的精确度和稳定性。它采用了先进的温湿度校准算法和数字信号处理技术,可以实时准确地测量和反馈环境中的温度和湿度数据。同时,它还具有较低的误差和漂移,保证了传感器的可靠性和长期稳定性。 另外,AHT10温湿度传感器具有广泛的应用领域。它可以被应用于气象观测、环境监测、空调系统、智能家居等领域。无论是工业生产还是日常生活,AHT10温湿度传感器都能够提供准确的温湿度数据,帮助我们更好地了解和控制环境条件。 总结起来,AHT10温湿度传感器是一种功能强大、高精度和可靠性的传感器。它的小体积、超低功耗使得它在嵌入式应用和对空间有要求的领域具有较大优势。它的高度精确度、稳定性和广泛的应用领域使得它成为了温湿度测量领域的重要组成部分。无论是在工业生产还是日常生活中,AHT10温湿度传感器都能够为我们提供准确的环境温湿度数据,帮助我们更好地了解和控制环境条件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值