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

      最后更新:2021-11-28 07:08:55 手机定位技术交流文章

      一、I2c通讯协议

      I2C通信协议(综合电路)费用较低,有简单、可扩展的硬件,不需要USART和CAN等外部通信设备,目前通常用于系统内许多集成电路之间的通信。

      为了完成信息交流, I2C 需要两个信号线: SCL 时线和 SDA 数据输入/输出线。 这是一个同步的通信, 因为输入和输出数据都使用单线, 通信方向是半双向的 。

      I2C 需要至少两行类似步骤的线条,但许多奴隶装置是可以支持的。 一个 I2C 理论上最多可以达到127个装置, 但是排除了保留地址, 最多可以安装112个装置。

      与SPI不同的是,I2C可能使一个多技术主管系统能够使许多硕士能够与所有奴隶互动(硕士不能通过I2C通信,每位硕士只能轮流使用I2C公共汽车)。

      I2C数据传输率在序列港和SPI之间,大多数I2C设备支持100 KHz和400 KHz版本。

      当传递I2C数据时,有一些额外的消耗:每提供8位数据,就需要增加1位元元数据(ACK或NACK)。

      I2C提供双向数据交换,而且由于只有一个数据线,通信是半双向的。 硬件复杂程度与序列端口和SPI相似,软件实施起来可能相对容易。

      I2C物理层
      在这里插入图片描述

      • 它是辅助设备的公共汽车线路,“住房”是指几个装置共用的信号线,多I2C通信设备可连接到一辆I2C通信公共汽车,以支持多个通信主机和多个通信运营商。

      单一辆I2C公共汽车只有两条公共汽车线:一条双向序列数据线(SDA)和一条字符串时钟(SCL),数据线用于信号数据,而时钟线用于同步数据接收和发送。

      • 与公共汽车连接的每个装置都有自己的地址,东道方可以用来进行设备间通信。

      • 主线通过上下拉动获得电力,当I2C设备闲置时,产生高抗力,当所有设备闲置和高抗力产生时,上脉冲阻力将公共汽车拖入高水平。

      • 当多个主机同时使用公共汽车时,将利用仲裁来确定哪些设备将乘坐公共汽车,以避免数据冲突。

      有三种传输方式:正常模式传输率为100千比特/秒,快速模式传输率为400千比特/秒,高速模式传输率最高为3.4百万比特/秒,但大多数I2C设备尚未支持高速模式。

      I2C协议层
      如图所示,主机的基本结构,例如从机器中写出数据的基本结构,依次如下:
      启动信号 -- -- 读取字母编号 -- -- 数据位置 -- -- 反应位置 -- -- 停止位置

      启动信号( S) : 当 SCL 线高时, SDA 线会从高转到低; 停止信号( S): 当 SCL 线高时, SDA 线会从低到高。

      框架地址: I2C 公共汽车上的每个设备都有自己的独立地址,当主机开始连接时,设备地址(SLAVE_ADPRESS)通过SDA 信号线发送,以找到机器。 I2C 协议指出,设备的地址可能为7或10个,后者被更广泛地使用。

      使用SDA信号线的I2C传输数据,并使用SSL信号线同步数据。SDA数据线在SCL每时钟循环中传输一个数据。在传输时,SL高水平时SDA所代表的数据是正当的,即使用SDA信号线的Ediverssfer数据,使用SSL信号线同步数据。SDA数据线在SCL每时钟循环中传输一个数据。在传输时,SL高水平时SDA显示的数据是有效的,即,在SCL低水平时,SDA数据是无效的,而SDADA通常为下一个数据指示准备就绪。在SCL高水平时,SDA数据是有效的,SDA数据通常为下一个数据指示准备就绪。在SL高水平时,SDADA数据是有效的,而且SDADA通常准备就绪。

      I2C 数据和地址传输使用“回复(ACKs)”和“非回复(NACKs)”信号确认。

      当一个数据接收端接收端收到I2C传送的字节或地址时,必须向另一方提供答(ACK)信号,而保管人将继续发送下一个数据;如果接收方希望结束数据传输,发送人向另一方发送不答复(NCK)信号,当发送人收到该信号时,即建立停止信号,结束信号传输

      I2C功能框图剖析
      在这里插入图片描述

      时钟控制逻辑:

      I2C 界面控制控制时钟登记( CCR) 的 SSCL 线的时钟信号, 且参数主要是时钟频率。 设置 I2C CR 登记册以调整与通信速率相关的参数 。

      对于I2C传输,可使用“标准/仓储”模式,I2C通信速度分别相当于100/400千比特/秒。

      我们知道,I2C协议在SCL高海拔水平对SDA信号进行了取样,SDA准备了SCL低海拔水平的下一个数据,以及SCL高低海拔比率影响数据抽样的变化,但这两种模型的比例并不十分不同,如果不是非常严格,也可以选择。

      CCR登记器还包括一个12位数的配置因子 CCR,该因子与 I2C 输入时钟源协同工作,以生成SCL时钟。 STM32 I2C模块安装在APB1总线上,SCL信号线的输出时钟公式如下:
      在这里插入图片描述

      例如,如果我们有PCLK1 = 36 MHz,并希望配置400 Kbit/s的费率,我们可采取以下行动:

      TPCLK1 = 1/3600PCLK时钟周期

      TSCL = 1/400是目标SCL时钟周期。

      THGH = TSCL/3 THGH = TSCL/3 THGH = TSCL/3 THGHH = TSCL/3 THGH = TSCL/3 TTHH = TSCL/3 TTHHG = TSCL/3 TTHH = TSCL/3 THHG = TSCL/3 TT

      TLOW = 2 * TSCL/3 是SCL时钟周期中的低空时间 。

      CCR = THIGH/ TPCLK1 = 30 计算 CCR值: CCR = THHGH/ TPCLK1 = 30

      计算结果提供了30的计算结果,该计算结果将适用于国际独立调查委员会400千赫的通信率。 即使配置的SCL时钟不完全等于标准400千赫,国际独立调查委员会通信的准确性也不会受到影响,因为只要其时钟频率不大大高于标准,SCL协调了所有数据传输。

      数据控制逻辑:

      I2C SDA信号主要与数据传输登记册连接,其中数据源和目标为数据登记册、地址登记册、PEC登记册和SDA数据线。 当数据发送出去时,数据转换登记册被用作数据源,通过SDA信号线逐个发送数据;当数据从外部接收数据时,数据移动器将数据储存在数据传输登记册上,数据通过SDA信号的一个样本存储数据。 如果数据可以核实,收到的数据将由PCE计算器和储存在登记册中的结果进行计算。 当STM32的I2C I2C从机器模式运行并接收设备地址信号时,数据传输登记册将收到的地址与STM32自己的“I2C地址登记册”的价值进行比较,以便对主机所在地作出反应。 STM32自己的I2C地址可以修改,修改自己的地址登记册,以支持使用分别存放在OAR1和OAR2中的I2C设备地址。

      整体控制逻辑:

      总体控制逻辑协调了整个 I2C 外部配置, 控制逻辑的工作模式也因我们配置的 CR1/ CR2 参数不同而不同。 外部工作时, 控制逻辑根据工作状况改变“ 国家登记册”( SR1 和 SR2), 通过读取这些发报机的适当内存位置, 我们就能理解 I2C 的运行状况。 产生 I2C 中断信号、 DMA 请求和其他 I2C 信号的 。

      通讯过程
      在使用基于I2C的谈话时,它为通信不同阶段的“国家登记员(SR1和SR2)”的不同数据位子写出参数,我们通过阅读这些登记信号来理解通信状态。

      从发送模式:
      在这里插入图片描述

      从接收模式:
      在这里插入图片描述

      根据STM32和LM75A传感器(I2Cs),将继续提供如何配置和利用I2Cs的信息,包括使用I2Cs进行书写和读取数据,继续提供STM32和LM75A传感器的基础,继续提供如何配置和利用I2Cs的信息,包括使用I2Cs进行书写和读取数据。

      二. 执行AHT20收集程序

      打开一个空项, 在野火提供的示例代码中仅包含一个固态仓库。 将代码添加到项目中, 代码的具体内容会在以下链接中引用 :
      https://blog.csdn.net/hhhhhh277523/article/details/111397514
      主要代码分析

      2. AHT20芯片数据读数

      在这里插入图片描述

      温度测量 - OLED 显示

      com/Sunlight-Dazzling/stm32_AHT20_OLED/tree/main/User/usart提供整个项目代码。
      ,在项目中插入已检查的文件
      在这里插入图片描述

      对不起 Bsp_i2c 请在您的 C 文档中添加以下代码 。

      我不知道你们在说什么 但我不知道你们在说什么 但我不知道你们在说什么 但我不知道你们在说什么 但我不知道你们在说什么

      代码由主函数添加 。

      运行结果
      在这里插入图片描述

      四、OLED幻灯片上的字符

      水平移动代码以将其添加到主函数中。

      重庆运输大学必须翻译六个字。
      青青(0) 青青(0) 青青(0) 清(1) 青(0) 青(0) 青(0) 青(0) 清(1) 清(2) 青(2) 青(3) 大(4) 清(5) 清(0) (1) 清(1) 清(1) 青(1) 清(2) 青(2) 青(2) 青(3) 大(4) 大(4) 清(5) 清(0) 清(1)

      {0x00,0x10,0x00,0xF8,0x3F,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x1F,0xF0,0x11,0x10},
      {0x1F,0xF0,0x11,0x10,0x1F,0xF0,0x01,0x00,0x3F,0xF8,0x01,0x00,0xFF,0xFE,0x00,0x00},/“重”,0/
      {0x01,0x00,0x00,0x80,0x3F,0xFE,0x20,0x00,0x20,0x80,0x20,0x80,0x20,0x80,0x2F,0xFC},
      {0x20,0x80,0x21,0x40,0x21,0x40,0x22,0x20,0x42,0x20,0x44,0x10,0x88,0x08,0x10,0x06},/“庆”,1/
      {0x02,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00,0x10,0x10,0x10,0x08,0x20,0x24},
      {0x48,0x24,0x04,0x40,0x02,0x80,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x30,0xC0,0x0E},/“交”,2/
      {0x00,0x00,0x47,0xF8,0x20,0x10,0x21,0xA0,0x00,0x40,0x07,0xFC,0xE4,0x44,0x24,0x44},
      {0x27,0xFC,0x24,0x44,0x24,0x44,0x27,0xFC,0x24,0x44,0x24,0x54,0x54,0x08,0x8F,0xFE},/“通”,3/
      {0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00},
      {0x02,0x80,0x02,0x80,0x04,0x40,0x04,0x40,0x08,0x20,0x10,0x10,0x20,0x08,0xC0,0x06},/“大”,4/
      {0x22,0x08,0x11,0x08,0x11,0x10,0x00,0x20,0x7F,0xFE,0x40,0x02,0x80,0x04,0x1F,0xE0},
      {0x00,0x40,0x01,0x80,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00},/“学”,5/

      添加代码到测试. c。

      结果

      在这里插入图片描述

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

          热门文章

          文章分类