基于I2C硬件协议的AHT20温湿度传感器的数据采集,并将采集的温度-湿度值通过串口输出。
一、什么是“软件I2C”和“硬件I2C”
**软件I2C:**模拟I2C 是通过GPIO,软件模拟寄存器的工作方式,而硬件(固件)I2C是直接调用内部寄存器进行配置
**硬件I2C:**硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的
说明:硬件I2C的效率要远高于软件的,而软件I2C由于不受管脚限制,接口比较灵活。
**区别:**软件I2C是程序员使用程序控制SCL,SDA线输出高低电平,模拟I2C协议的时序。一般较硬件i2c稳定,但是程序较为繁琐,但不难。
硬件I2C程序员只要调用I2C的控制函数即可,不用直接的去控制SCL,SDA高低电平的输出。但是有些单片机的硬件I2C不太稳定,调试问题较多。
二、每隔2秒钟采集一次温湿度数据,并通过串口发送到上位机(win10)
(一)需要的实验器材及软件:
野火调试助手 keil AH20温湿度传感器
(二)硬件连接
注意引脚的对应连接
VCC→3V3,GND→GND,SCL→PB6,SDA→PB7
(三)主要代码块
main.c
#include "stm32f10x.h"
#include "usart.h"
#include "delay.h"
#include "bsp_i2c.h"
int main(void)