使用 I2C/SPI 公共汽车和 OLED 显示器进行温度测量

      最后更新:2021-11-20 17:47:31 手机定位技术交流文章

      实验一

      实验目的

      使用 STM32F103 完成基于 I2C 协议的 AHT20 温度湿度传感器的数据收集,然后通过串口输出获得的温度湿度值, 来理解 I2C 公共汽车通信协议 。

      1) “软 I2C”和“硬件 I2C”有什么区别?

      2) 阅读AHT20的数据文件,AHT20旨在每两秒钟收集温度和湿度数据,然后通过一个序列端口将数据传送到较高级的机器(win10)。

      I2C简介

      第一,I2C协议是什么?
      Philips发明了I2C通讯协议(Inter-In综合电路),现在该协议广泛用于系统内许多集成电路(IC)之间的通讯,因为它的脚足较少,硬件简单且可扩缩,不需要USART和CAN等外部接收和发送设备。

      二. I2C 的物理和礼宾级别
      ①物理层
      I2C是辅助设备的主要线路。 多个 I2C 通信设备可以连接在一起,为多个通信主机和众多通信操作员服务。 I2C 公共汽车只有两条公共汽车线,一条双向线数据线(SDA)和一条字符串时钟线(SCL )。
      I2C通讯装置的共同连接器(参考野火信息)在这里插入图片描述

      ②协议层

      它主要描述通信的启动和停止信号、数据有效性、反应、仲裁、时钟同步和地址广播。

      通讯信号开始和结束
      在这里插入图片描述

      数据有效性
      在这里插入图片描述

      该图显示,当I2C通信时,SDA数据传输只有在SCL处于高电高度时才有效。SDA信号线用于发送数据,而SCL信号线用于确保数据同步。
      响应在这里插入图片描述

      当SDA发送数据时, 接收者会回复收到的数据。 如果您想要继续发送数据, 请对响应信号( 低级别) 作出反应, 或者对非响应信号( 高级别) 作出反应 。

      采用I2C有三种途径:硬件I2C和软件I2C。
      ①硬件I2C
      STM32芯片直接使用外部I2C硬件。

      只要相关内存被配置, 硬件 I2C 的使用将产生一个典型的序列协议的时间序列。 在外部初始化 I2C 后, 只要插入一个登记即可 。
      1 目前,外部环境将控制适当的SCL和SDA线路,产生I2C启动信号,而没有直接操纵上岗腿的内核。

      ②软件I2C
      直接使用CPU内核来控制全球定位系统组织在I2C协议所要求的低层次和高层次的输出,从而模拟I2C。

      当I2C初始信号建立时,需要控制作为SCL线的GPIO高级输出,然后控制为SDA线。
      此时,GPIO完成高到低的开关,最终控制SCL线开关到低的开关,提供常规的I2C启动信号。

      ③两者的差别
      硬件 I2C 直接利用外部设置来控制基点,从而最大限度地减少CPU负担。 然而,硬件 I2C 有义务使用特定的固定拖曳作为SCLs和SDAs, 而软件则使用任意的GPIO来复制I2C, 后者比较灵活。 硬件 I2C 的使用更为复杂,软件 I2C 的过程更清楚。

      实验过程

      main.c

      使用了AHT20芯片。

      AHT20芯片正在读取数据。

      然后注意连接板子

      SCL链接到PB6,而SDA链接到PB7。
      vcc and gnd, 依此顺序排列。
      然后打开野火
      得到如下结果
      请添加图片描述
      您可以看到发送的温度和湿度。
      完成

      实验二

      实验目的

      理解 OLED 屏幕显示器和 Han点阵列编码概念,并利用 STM32F103 的 SPI 或 IIC 界面来履行下列功能:

      1. (a) 显示他们的学习编号和名称。

      2. 显示 AHT20 的温度和湿度。

      3. 长字符如「欢迎来到重庆交通大学材料网络205室! 」, 出现在上下或周围的幻灯片上, 或诗歌或歌词(理想的硬件屏幕模式)上。

      SPI简介

      SPI是摩托罗拉公司引入的高速、全时同步通信总线的串行周边界面的缩略语,这是摩托罗拉公司在ADC、LCD和MCU之间通信率高的情况下常用的高速、全时同步通信总线。SPI总线系统可能直接连接到各公司提供的大量标准外围系统。界面通常使用四条线:序列时线(SCK)、主机输入/来自机器输出数据线MISO的主机输入/来自机器输入数据线MOST的输出和低级别有效机器选择线C/S(一些SPI接口芯片包括断线信号线INT或INT,其他SPI接口芯片没有机输入数据线MOSI的主机输出/来自机器输入数据线MOSI的输出)。
      在这里插入图片描述

      1.SPI时序

      以上图像中的时间序列只有四种通信形式之一的 SPI, 关键区别在于当总线是免费的时钟状态和数据取样的时间。 在此引入“ 时钟极 CPOL” 和“ 时钟阶段 CPHA ” 的概念是为了简单参考 。
      CSCOL是SCK信号线(即NSS线高时SCK状态和SPI通信装置自由)在SPI通信开始之前的平方信号。 CPOL = 0, SCK 自由时是低方信号线, CPOL = 1, 反向信号线是低方信号线。
      当时钟阶段 CPHA = 0时,MOSI 或 MISO 数据线上的信号会按照SCK 时钟的“奇缘”取样。当CPHA = 1时,数据线会按照SCK 时钟的“偶边缘”取样。

      2.SPI工作模式
      SPI根据CPOL和CPHA的不同状态分为四种模式,如下文所示,即主机和机器必须以同样的模式运作,以便正确沟通,实际上它更“模式0”和“模式3”。

      在这里插入图片描述

      3.SPI 优缺点
      SPI 优点

      支持全时复式通信、基本通信和数据传输速度区块。

      SPI 缺点

      没有提供流动控制,也没有确认数据接收的应对机制,因此数据可靠性与国际投资委员会公共汽车协议相比受到影响。

      OLED简介

      1.OLED原理
      OLED(有机激光激光光学二极管),又称有机电激光显示,有机光半导体(有机电光显示,OLED)。 OLED是一个电子类型的有机发光器,通过电流的注入和复合而发光,电流的强度与注入的电流成正比。 OLED作为电场,将电极产生的洞穴和阴极产生的电子分别移动到空气传输层和电子传输层,并迁移到光层。 当两个电流在光层相遇时,它们产生一种能量动力,触发光分子最终产生可见光。

      以下是七张使用 SPI 通讯的 OLED 图像:
      在这里插入图片描述

      2. 强调编码概念和显示
      汉字点阵编码

      在汉域中,每个字节代表一个点,由矩形点组成,0表示无点,1表示一点点,0和1表示0和1
      它们以不同颜色绘制,形成中文单词,常用点数组为121212、1414、16*16字体。
      视字节数量而定,将字面分为水平和垂直矩阵,现在大多数字面都储存在水平矩阵中(最经常使用的应该是早期的UCDOS)。
      纵向矩阵是1个Becaemploy 所以液晶显示器使用垂直扫描显示器, 所以它是垂直创建的, 以加速显示速度, 将显示器从矩阵转换中保存 。

      OLED点阵显示

      像素分为128列X64行,每行128像素单位的阴极作为公共极(COM)连接在一起,每列64像素单位的阳极作为段落(SEG)连接在一起。行交叉点上的LED是一个显示器,像素。通过向像素所在的电极提供正电压,将像素作为像素。
      可见, 整个屏幕的显示只能是随时间而扫描, 一次一行, 一次一行。 方向驱动器反过来产生低水平的行扫描, 以列驱动的读和显示数据被逐个添加到列电极中。 扫描时间线被称为线循环, 完成一个完整的屏幕扫描被称为框架。 一般框架频率大于60, 无法观察到任何一行的视图 。 每条扫描线显示一个时空比率, 一个较小空间比率, 以驱动当前实现相同的亮度。 SSD1306 驱动着最多100 uA 的当前, 当整个行的所有128个像素被点亮时, 电极会流动12乘以8mA 当前 。

      实验过程

      显示您的电话号码和姓名 :
      主要函数:
      main.c

      您只需引用主页函数 。

      在 C 文件的测试中。 Change 函数
      TEST_MainPage():

      在旧fond.h 添加要显示的 16*16 字体

      使用模板,必须从软件中删除电缆。
      修改字模选项如下
      请添加图片描述
      然后,模子将复制到上述文件。
      在这里插入图片描述
      OLED 主要函数

      连线如下
      在这里插入图片描述
      结果如下
      请添加图片描述
      (注:我在这里看到闪光屏幕,因为LTE记录框架率与OLED屏幕上框架率之间存在时间差。 )

      显示 AHT20 的温度和湿度 :

      主要函数
      这是显示温度和湿度的函数 。

      main函数

      结果如下请添加图片描述

      长长的字符被滑过 上,下,周围:
      main函数

      搞定了,在C档案中添加以下功能

      它就位。 声明此函数将被添加到 h 文件 。
      然后导航到位置fond。 字体必须包含在 h 文件中 。

      运行结果
      请添加图片描述

      参考文献

      https://blog.csdn.net/qq_43279579/article/details/111597278
      https://blog.csdn.net/qq_45237293/article/details/111712565
      https://blog.csdn.net/qq_43279579/article/details/111414037

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/13642.html

          热门文章

          文章分类