基于I2C硬件协议的AHT20温湿度传感器的数据采集
I2C通信协议
I2C简介
I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。
主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件。然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下,主机负责产生定时时钟和终止数据传送。
百度百科
软件I2C
将芯片的两个GPIO引脚分别用作SCL及SDA,按照I2C的时序要求,直接控制引脚的输出信号(若是接收数据时则读取 SDA 电平),就可以实现I2C通讯。由于是直接控制GPIO引脚的高低电平产生通讯时序,需要由CPU控制每个时刻的引脚状态,所以称为“软件模拟协议”方式即软件I2C方式。
硬件I2C
硬件I2C对应芯片上的I2C外设,具有相应的I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率要远高于软件模拟的I2C,但是程序较为繁琐。硬件I2C是直接调用内部寄存器进行配置。
对于硬件I2C来说,它需要I2C片上外设专门负责实现I2C通讯协议,只要配置好该外设,它就会自动根据协议要求产生I2C的通讯信号,收发数据并缓存起来,CPU只要检测该外设的状态和访问数据寄存器,就能完成数据收发。这种由硬件外设处理I2C协议的方式减轻了CPU的工作负担,并且使软件开发更简单。
实现AHT20温湿度传感器的数据采集
- 连接好硬件
- 代码
提取码:tcbb - 实现效果
Ardunio IDE串口通信程序
- 安装Ardunio IDE
- 配置开发环境
工具–>开发板–>开发版管理器
安装Arduino SAM开发板
选择硬件类型与下载方式
- stm32串口通信
连接端口
打开例程
改写代码
String rString = ""; // 接收到达字符串
int flag=1; //发送或接收标志
String Stop_flag = "stop"; //停止发送
String Begin_flag = "begin"; //重新发送
void setup()
{
Serial.begin(115200); // 串口初始化
}
void loop()
{
while(Serial1.available() > 0) //接收缓存区有数据
{
rString = Serial1.readString(); //将接收数据存到接收字符串里
}
if (rString == Stop_flag)
{
flag = 0; //表明停止发送
}
if (rString == Begin_flag)
flag = 1; //表明恢复发送
if (flag == 1)
{
Serial.println("Hello World");
delay(1000);
}
}
编译后下载
是否还有需要开发MCU集成开发平台
有,人在进步,软件不能一成不变,总会有新的硬件出现,而软件跟不上就会被舍弃,所以只有不断更新或谋新的软件才能脱颖而出。
总结
需要实操,没那么乏味了