实验一
1、解释什么是“软件I2C”和“硬件I2C”
硬件 I2C:对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,效率远高于软件模拟的I2C;一般也较为稳定,但是程序较为繁琐。硬件(固件)I2C是直接调用内部寄存器进行配置;而软件I2C是没有寄存器这个概念的。
软件 I2C:一般是用GPIO管脚,用软件控制管脚状态以模拟I2C通信波形,不受管脚限制,接口比较灵活。
主要对比:
1)硬件IIC用法比较复杂,模拟IIC的流程更清楚一些。
2)硬件IIC速度比模拟快,并且可以用DMA。
3)模拟IIC可以在任何管脚上,而硬件只能在固定管脚上。
软件i2c是程序员使用程序控制SCL、SDA线输出高低电平,模拟i2c协议的时序。一般较硬件i2c稳定,但是程序较为繁琐,不难。
硬件i2c是只要调用i2c的控制函数即可,不用直接的去控制SCL,SDA高低电平的输出。但是有些单片机的硬件i2c不太稳定,调试问题较多。
2、AHT20温湿度传感器的数据采集,并将采集的温度-湿度值通过串口输出。
(1)下载代码
代码地址:https://github.com/Sunlight-Dazzling/stm32-AHT20/tree/master
(2)打开工程文件
(3)编译代码
(4)硬件连接
AHT20的SCL,GND,SDA,VCC分别对应接stm32f103核心板的B6,GND,B7,5V
USB转TTL模块的GND,3V3,RXD,TXD分别对应接stm32f103核心板的GND,3v3,A9,A10
实物连接:
(5)文件烧录
把产生的hex文件烧录到stm32中
(6)串口调试
打开串口调试助手,最终结果如下图所示
实验二 OLED屏显
1、下载代码
代码地址:https://pan.baidu.com/s/1gMCljDEFuVtfhPN38MX9dA
提取代码:bphx
2、打开工程文件
(3)字库取模
把所取的中文点阵编码,存放到oledfont.h中
取模
字模代码
{
"唐",0x00,0x00,0x3F,0x22,0x2A,0x2A,0x2A,0xAA,0x7F,0x2A,0x2A,0x2A,0x2F,0x22,0x22,0x00,0x02,0x0C,0xF0,0x00,0xBF,0xA2,0xA2,0xA2,0xE2,0xA2,0xA2,0xA2,0xBF,0x00,0x00,0x00,/*"唐",0*/
"珲",0x21,0x21,0x3F,0x21,0x21,0x10,0x64,0x44,0x47,0x5C,0x45,0x44,0x44,0x54,0x60,0x00,0x08,0x0C,0xF8,0x10,0x10,0x00,0x08,0xC8,0x48,0x48,0xFF,0x48,0x48,0x48,0x08,0x00},/*"珲",1*/
4、修改代码
test.c函数
void TEST_MainPage