基于HAL库的AHT20温湿度采集

一、I2C总线通信协议

1.I2C介绍

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

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

注意IIC是为了与低速设备通信而发明的,所以IIC的传输速率比不上SPI

I²C最重要的功能包括:

只需要两条总线; 没有严格的波特率要求,例如使用RS232,主设备生成总线时钟; 所有组件之间都存在简单的主/从关系,连接到总线的每个设备均可通过唯一地址进行软件寻址; I²C是真正的多主设备总线,可提供仲裁和冲突检测; 传输速度: 标准模式:Standard Mode = 100 Kbps 快速模式:Fast Mode = 400 Kbps 高速模式: High speed mode = 3.4 Mbps 超快速模式: Ultra fast mode = 5 Mbps 最大主设备数:无限制; 最大从机数:理论上是127。

2.I2C物理层

I2C 总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,SCL和SDA被上拉电阻Rp拉高,使SDA和SCL线都保持高电平。

I2C通信方式为半双工,只有一根SDA线,同一时间只可以单向通信,485也为半双工,SPI和uart通信为全双工。

主机和从机的概念:

主机就是负责整个系统的任务协调与分配,从机一般是通过接收主机的指令从而完成某些特定的任务,主机和从机之间通过总线连接,进行数据通讯。 发布主要命令的称为主机,接受命令的称为从机

3.I2C协议层

I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答信号。

开始信号SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。 ​ 结束信号SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。 ​ 应答信号接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。

这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。

4.软件IIC和硬件IIC

IIC分为软件IIC和硬件IIC

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

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

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

直接利用 STM32 芯片中的硬件 I2C 外设。 使用: 只要配置好对应的寄存器,外设就会产生标准串口协议的时序。在初始化好 I2C 外设后,只需要把某寄存器位置 1,此时外设就会控制对应的 SCL 及 SDA 线自动产生 I2C 起始信号,不需要内核直接控制引脚的电平。

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

二、使用CubeMX创建工程

1.新建工程,选择芯片

2.配置RCC

 3.配置SYS

 4.配置USART1

 5.配置I2C

 

 6.NIVC

 7.GPIO

8.时钟配置

 9.创建工程

 

 三、修改代码

1.去奥松官网下载AHT20芯片代码与芯片的相关信息介绍文档: 软件下载-温湿度传感器 温湿度芯片 温湿度变送器模块 气体传感器 流量传感器 广州奥松电子股份有限公司

官方代码使用的是PB14,PB15引脚,需要修改引脚为PB6,PB7 才可以正常使用。

2.进入到下载的AHT20芯片代码文件夹中,复制两个C语言代码文件

3.找到刚刚利用HAL库生成的工程文件,在其中找到Core文件夹下的Inc文件夹,并且进入其中 ,将AHT20-21_DEMO_V1_3.h复制在此Inc文件夹下:

 4.找到刚刚利用HAL库生成的工程文件,在其中找到Core文件夹下的Src文件夹,并且进入其中 ,将AHT20-21_DEMO_V1_3.c复制在此Src文件夹下:

 

5.进入到 keil5工程文件中,添加AHT20-21_DEMO_V1_3.c文件:

 6.修改main.c

/* USER CODE BEGIN Header */
/**
  *******************************
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值