一、学习I2C总线通信协议
1.解释什么是“软件I2C”和“硬件I2C”
硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的;软件I2C一般是用GPIO管脚,用软件控制管脚状态以模拟I2C通信波形。硬件I2C的效率要远高于软件的,而软件I2C由于不受管脚限制,接口比较灵活。模拟I2C 是通过GPIO,软件模拟寄存器的工作方式,而硬件(固件)I2C是直接调用内部寄存器进行配置。
2.采集温湿度数据实验
- 连接管脚
- AHT20
| AHT20 | STM32F10X |
|---|---|
| SCL | PB6 |
| SDA | PB7 |
| VCC | 3V3 |
| GND | GND |
- 串口
| STM32F10X | USB转TTL |
|---|---|
| PA9 | TXD |
| PA10 | RXD |
| 3V3 | 3V3 |
| GND | GND |

编写代码
代码方面使用的是正点原子的代码
编译并下载程序

使用野火串口调试助手调试程序

二、Ardunio IDE的实践
1.下载并安装ardunio
安装过程中会弹出这三个驱动,点击安装


2.配置ardunio
在Ardunio IDE的工具的开发板"Arduino Uno"点击开发板管理器,然后搜索ARM安装与stm32板子芯片相应的Cortex-M3

选择芯片
3.编写代码
代码如下
void setup() {
// put your setup code here, to run once:
//串口初始化,波特率115200
Serial.begin(115200);
}
//判断标志
int flag=1;
//停止字符串标志
String stopstring="stop\n";
//输入字符串
String inputstring="";
void loop() {
// put your main code here, to run repeatedly:
//发送helloworld
if(flag==1)
{
Serial.println("hello world");
delay(500);
}
//串口接收到了数据,可以读取
while(Serial.available()>0)
{
//读取数据
inputstring=Serial.readString();
delay(10);
}
//判断是否为停止标志
if(inputstring==stopstring)
{
flag=0;
Serial.println("收到停止");
//输入字符串初始化,清零
inputstring="";
}
}
4.编译上传运行
设置波特率
编译程序
运行结果
版权声明:本文为weixin_45134710原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。