打印
[其他ST产品]

STM32HAL库方式实现温湿度传感采集

[复制链接]
2766|35
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
l63t89|  楼主 | 2024-1-31 14:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
I2C介绍
1.1 基本概念
I2C,全名Inter IC Bus,是一种由Philips公司开发的通用数据总线。它只需要两根通信线,即SCL(Serial Clock)和SDA(Serial Data),实现同步半双工通信方式,并支持数据应答机制。这种总线可以支持一个主设备和多个从设备的连接方式,也可以多主多从。这种通信方式被广泛应用于各种电子设备中,例如传感器、LED灯、显示器等,它的优点在于高效、可靠、易于实现、并且方便拓展。

1.2 硬件电路以及基本原理
1.2.1 硬件电路和基本结构
在I2C的硬件电路中,若满足一主一从或一主多从,所有的I2C设备的SCL和SDA都需要连在一起。且设备的SCL和SDA均要配置成开漏输出模式,以便在低电平时置0,在不为0时为浮空状态。SCL和SDA各需要添加一个上拉电阻,其电阻值一般为4.7k左右。硬件电路图如下:


I2C实际上是一个时钟控制模块和数据控制器的结合。主机主导时钟控制,规定读写的频率周期。主机或者从机通过数据控制器将数据发送或者接收。基本结构如下




image.png (74.72 KB )

image.png

image.png (57.08 KB )

image.png

使用特权

评论回复
沙发
l63t89|  楼主 | 2024-1-31 14:34 | 只看该作者
本帖最后由 l63t89 于 2024-1-31 14:37 编辑

1.2.2 起始条件与终止条件
I2C通信的初始条件为:在SCL为高电平期间,SDA从高电平切换到低电平。也就是说,我们利用SDA下拉触发SCL下拉,达成开始读写的条件。

使用特权

评论回复
板凳
l63t89|  楼主 | 2024-1-31 14:37 | 只看该作者
1.2.3 发送与读写一个字节
发送一个字节:SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送一个字节

使用特权

评论回复
地板
l63t89|  楼主 | 2024-1-31 14:38 | 只看该作者
接收一个字节:SCL低电平期间,从机将数据位依次放到SDA线上(高位先行),然后释放SCL,主机将在SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收一个字节(主机在接收之前,需要释放SDA)

使用特权

评论回复
5
l63t89|  楼主 | 2024-1-31 14:38 | 只看该作者
1.2.4 发送与读写应答机制
发送应答:主机在接收完一个字节之后,在下一个时钟发送一位数据,数据0表示应答,数据1表示非应答

接收应答:主机在发送完一个字节之后,在下一个时钟接收一位数据,判断从机是否应答,数据0表示应答,数据1表示非应答(主机在接收之前,需要释放SDA)

使用特权

评论回复
6
l63t89|  楼主 | 2024-1-31 14:38 | 只看该作者
1.3 软件读写I2C
软件I2C主要是通过编程软件(keil,IAR)等对GPIO电平的翻转设置从而对I2C通信的情况进行改变。比如可以通过GPIO的高低电平变化开启读写或者终止读写。通过对相应的GPIO(通用输入输出端口)进行位操作来模拟和实现I2C通信的各种功能。在一些特定的应用场景中,软件I2C具有一些独特的优势和灵活性。

灵活性:软件I2C可以运行在任何具备GPIO的通用MCU(微控制器)平台上,而不受硬件I2C控制器的限制。这使得软件I2C适用于兼容不同硬件平台或具有特殊通信需求的设备。
开销低:由于软件I2C不需要额外的硬件电路支持,因此在成本和电路设计方面开销较低。这对于资源受限的嵌入式系统或电路板设计中的简化和成本控制非常重要。
可定制性:软件I2C在编程上非常灵活,可以根据需求自定义通信协议和时序控制。这使得软件I2C能够适应各种不同的应用需求,并提供更加个性化的定制解决方案。

使用特权

评论回复
7
l63t89|  楼主 | 2024-1-31 14:39 | 只看该作者
软件I2C也有一些限制和劣势:

数据传输延迟:由于软件I2C通信是通过对GPIO进行位操作来模拟传输,而不是使用硬件电路,因此通常速度较慢。相比于硬件I2C,软件I2C的传输速率较低,可能会引入一定的传输延迟。
CPU负载高:软件I2C通信需要CPU的持续干预来完成数据的传输和处理,因此会增加CPU的负荷和资源消耗。这可能会导致系统性能下降,特别是当设备有其他关键任务需要处理时。

使用特权

评论回复
8
l63t89|  楼主 | 2024-1-31 14:40 | 只看该作者
1.4 硬件读写I2C
除了我们手动改变电平控制外,STM32也自带了专门的硬件接口来实现I2C通信。在电路设计中,通常会使用硬件I2C控制器,该控制器集成了硬件电路来执行I2C通信的各种功能。硬件I2C控制器通常被集成在主控芯片或单片机中,提供了高速、可靠且高效的数据传输。硬件I2C具有以下特点:

高速传输:硬件I2C通常支持更高的传输速率,可达到几百Kbps甚至几Mbps。这使得在短时间内传输大量数据成为可能,适合需要高速通信的应用。
低处理器负载:硬件I2C在数据传输过程中,不需要CPU的大量干预,减轻了主控芯片或单片机的处理负荷。这使得主控芯片能够同时处理其他任务,提高了系统整体性能。
硬件支持:硬件I2C控制器集成了电平转换、时钟同步和数据接收发送等硬件电路,大大简化了外部电路的设计,并提高了通信的稳定性和可靠性。

使用特权

评论回复
9
l63t89|  楼主 | 2024-1-31 14:41 | 只看该作者
相对而言,软件I2C是通过软件编程实现的I2C通信协议。与硬件I2C相比,软件I2C的实现更为灵活,但也带来了一些限制和劣势:

低速传输:软件I2C的传输速率一般较慢,通常仅在几十Kbps或更低级别。这可能会造成数据传输延迟,对于需要快速通信的应用,软件I2C可能无法满足需求。
CPU负荷高:软件I2C通信通常需要CPU的协助来完成数据的传输和处理,这会导致CPU负荷增加,降低了系统的整体性能。
灵活性高:软件I2C允许用户通过编程方式自定义通信协议和时序控制,适用于一些特定的应用场景,例如需要兼容不同硬件平台或具有特殊通信需求的设备。

使用特权

评论回复
10
l63t89|  楼主 | 2024-1-31 14:41 | 只看该作者
二、AHT20介绍
AHT20产品是基于I2C通信协议的温湿度传感器。

AHT20在尺寸与智能方面建立了新的标准:它嵌入了适于回流焊的双列扁平无引脚SMD 封装,底面 3 x 3mm ,高度1.0mm。传感器输出经过标定的数字信号,标准 I2C 格式。AHT20 配有一个全新设计的 ASIC专用芯片、一个经过改进的MEMS半导体电容式湿度传感元件和一个标准的片上温度传感元件,其性能已经大大提升甚至超出了前一代传感器的可靠性水平,新一代温湿度传感器,经过改进使其在恶劣环境下的性能更稳定。每一个传感器都经过校准和测试,在产品表面印有产品批号。由于对传感器做了改良和微型化改进,因此它的性价比更高,并且最终所有设备都将得益于尖端的节能运行模式。

使用特权

评论回复
11
l63t89|  楼主 | 2024-1-31 14:41 | 只看该作者
由于其稳定性和可靠性,其被广泛应用于暖通空调 、除湿器、测试及检测设备、消费品、汽车 、自动控制、数据记录器、气象站、家电、湿度调节、医疗及其他相关温湿度检测控制。

使用特权

评论回复
12
l63t89|  楼主 | 2024-1-31 14:41 | 只看该作者
大致结构图如下:

使用特权

评论回复
13
l63t89|  楼主 | 2024-1-31 14:42 | 只看该作者
三、创建工程以及基本配置
3.1 创建工程
我们打开STM32CubeMX,在主页面选择新建工程

使用特权

评论回复
14
l63t89|  楼主 | 2024-1-31 14:42 | 只看该作者
在弹出来的界面中选择STM32F103C8T6

使用特权

评论回复
15
l63t89|  楼主 | 2024-1-31 14:43 | 只看该作者
3.2 基本配置
在工程配置界面,首先,使能高速时钟以打开时钟模块,在左栏点击“RCC”。

使用特权

评论回复
16
l63t89|  楼主 | 2024-1-31 14:43 | 只看该作者
再配置SYS

使用特权

评论回复
17
l63t89|  楼主 | 2024-1-31 14:43 | 只看该作者
打开串口通信USART1,设置为异步模式

使用特权

评论回复
18
l63t89|  楼主 | 2024-1-31 14:44 | 只看该作者
随后我们打开时钟配置“clock configuration”,设置为内部时钟模式并把频率设置为72MHz。

使用特权

评论回复
19
l63t89|  楼主 | 2024-1-31 14:44 | 只看该作者
随后我们需要选择两个引脚作为SDA与SCL,我们这里就选择PB6与PB7。

使用特权

评论回复
20
l63t89|  楼主 | 2024-1-31 14:45 | 只看该作者
随后,我们点击“I2C1”,打开I2C,并将发送TX和接收RX端口进行配置,并打开I2C事件中断

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

776

帖子

1

粉丝