带你了解STM32中的I2C

      最后更新:2022-05-20 15:38:13 手机定位技术交流文章

      带你了解 STM32 中的 I2C

      如果你想研究一台机器, 你可以听我的, 信任我个人, 或者在评论部分回应我。 我们直接控 STM32 的两 GPIO 引脚,分别用 SCL SD A ,根据上述信号的时间序列,直接控制 LED 灯那样控制引脚的输 ( 若是接收数据时则读 SDA ) I2 C 这将使我们能够进行对口,同样,如果我们按 USAR T 你想做什么 管理你的脚是正确的。 USAR T 通信。 只要协议得到遵循, 能按通讯标准交互。

      直接控 GPIO 当脚趾水平生成电信时间序列时,您需要它。 CPU 随时控制推力状态。 这个方式叫作 软件模拟协

      当然 硬件协 方式 STM32 I2C 片上外设专门负责实 I2C 通讯议定书,只要它已经建立。 这个 对外,它将产生一个协议要求的通信信号,发送和接收数据,并储存数据。 CP U 只要检测到网站和访问数据储存库的状态,数据就会得到接收和传送,这是一种硬件安排。 I2 C 协议的方式减轻 CPU 的工作, 而且让 软件设计更加简单。

      STM32 I2C 外设简介

      STM32 I2C 外部通信托管和支助 100Kbit/s 400Kbit/s 的速率,支 7 10 位设备地址,支 DMA 它负责数据传输和验证。 I2C 外设还支 SMBus2.0 协议 SMBus 协议 I2C 同样,它主要用于膝上型计算机细胞管理。

      STM32 I2C 架构剖析

      通讯引脚

      I2C 地图的左边是所有硬件建设的基础。 SCL 线 SDA 线展开 ( 其中 SMBA 线用 SMBUS 的警告信号 I2C 通讯没有使 ) STM32 芯片有多 I2C 外设,它们 I2C 通讯信号引出到不同 GPIO 在使用脚的时候,你必须适应这些特定的脚。 GPI O 引脚的复用功能,以 使用手册 为准。

      时钟控制逻辑

      SCL 线的时钟信号, I2C 接口根据时间调节存款 。 (CCR ) 控制。参数大多是时钟频率。 I2C CCR 登记册可以改变通信费率特点,例如:

      可选 I2C 通讯 / 模式,这两个模式分 I2C 100/400Kbit/s 的通讯速率。

      在快速模式下可选 SCL 时钟的占空比,可 Tlow/Thigh=2 Tlow/Thigh=16/ 9 模式,我们知 I2C 协议 SCL 高电平时 SDA 信号采样 SCL 低电平 SD A 准备下一个数据,修 SCL 数据抽样受高低比率的影响。

      CCR 寄存器中还有一 12 位的配置因 CC R ,它 I2C 外部时钟源协作、产出 SCL 时钟 STM32 I2C 外设都挂载 APB1 总线上,使 APB1 的时钟 PCLK 1 SCL 信号线输出时钟公式如下:

      计算结果得 CCR 3 0 要控制, 请将此值写入此登记槽 。 IIC 的通讯速率 400KH z ,其实即使配置出来 SCL 时钟不完全等于标准 400KH z IIC 传输的准确性将不受影响,就象所有数据通信一样。 SCL 只要保持时钟频率,它就得到协调。 偏差不要太大就行

      数据控制逻辑

      I2C SDA 信号主要与数据传输登记册及其数据来源和目标有关。 (DR ) 、地址寄存 (OAR ) PEC 寄存器以 SDA 数据行。在传输数据时,使用数据转换登记册。 数据寄存 逐项获取数据源的数据。 SDA 当从外部收到数据时,发出信号线;使用数据传输登记册。 SDA 由信号线取样的数据一次保存一个。 数据寄存 在这里,如果数据可以确认,发送的数据将被视为有效。 PCE 计算器操作和数据存储 PEC 寄存 中。

      STM32 I2C 在机器操作时,当收到设备地址信号时,数据传输记录器收到地址。 STM32 的自身 I2C 地址寄存 回应主机所在位置 STM32 的自 I2C 地址可通过修 自身地址寄存 修改以允许两者使用 I2C 为设备地址分别保留两个地址。 OAR1 OAR2 中。

      整体控制逻辑

      合并协调的整体控制逻辑 I2C 用来管理逻辑的劳动模式 是由我们的设置决定的 控制寄存 (CR1/CR2 ) 参数影响控制逻辑。 外部工作时, 控制逻辑是根据外部任务的工作状态确定的 。 状态寄存 (SR1 SR2 ) 我们只需要读读这些 与保管人有关的空位。 I2 C 控制逻辑还负责根据需要管理生产。 I2C 中断信号 DM A 请求及各 I2C 的通讯信 ( 启动,暂停,并回复信号。 )

      通讯过程

      使 I2C 在对外通讯方面,它将在不同层次的通讯上进行。 状态寄存 (SR1 SR2 ) 数据比特存储在参数中,我们可以通过读取这些内存标记来确定通信状况。

      主发送器

      图中的 主发送 流程,即作 I2C 在发送来文时通过何种程序发送数据。

      主发送器通讯过程

      以下是主要发件人发送程序和事件说明:

      (1) 控制产生起始信 (S ) 当信号被激活时,会发生一些事情 EV 5 ,并会 SR1 寄存器 S B 1 表示已发送初始信号;

      (2) 传送装置的地址 等待反应信号 如果机器响应 就会出事 EV 6 EV 8 ,这 SR1 寄存器 ADD R TX E 位被 1 ADDR 1 表示地址已经发送 TXE 1 此值表示数据储存库为空 。

      (3) 以上步骤正常执行并 ADDR 位清零后,我们 I2C 数据寄存 D R 这里您正在写入您要传输的数据 。 TXE 位会被重 0 ,表示数据登记册不是空的。 I2C 外设通 SDA 数据通过信号线发送和生成。 EV 8 事件, TXE 位被 1 ,然后用数个字节的数据重复操作;

      (4) 当我们完成传输数据后 控制器就完成了 I2C 设备产生一个停止信 (P ) ,这个时候会产 EV8_2 事件 SR1 TXE BTF 位都被 1 ,表示通讯结束。

      假如我们使能 I2C 如果发生上述所有情况,它们就会形成。 I2C 信号中断,使用相同的中断服务功能。 I2C 服务恢复后我们就出发 查看 寄存器 确定是哪一种情况。

      主接收器

      然后,审查并执行初级接收程序。 I2C 当通信托管时,从外部世界接收数据的过程。

      以下是关键接收接收程序和事件:

      (1) 连同主启动信息一起发送 (S ) 它来自主机端,有一个起始信号, 和它有任何关系。 EV 5 ,并会 SR1 寄存器 S B 1 表示已发送初始信号;

      (2) 传送装置的地址 等待反应信号 如果机器响应 就会出事 EV 6 SR1 寄存器 ADD R 位被 1 ,表示地址已经发送。

      (3) 在从服务器获取数据到地址后,您开始向主机端发送数据。当主机获得数据时,它会创建数据。 EV 7 事件 SR1 寄存器 RXNE 1 表示接收数据登记册不是空的,当我们阅读登记册时,我们可以将数据登记册清空,以便接收下一个数据。 I2C 发送应答信 (ACK ) 或非应答信 (NACK ) 重复前述接收数据的步骤,如果没有收到答复,则停止传送;

      (4) 当发出无响应信号时,将创建停止信。 (P ) ,结束传输。

      在发送和接收过程中发生了一些事件,这些事件不仅标志着我们以前讨论过的立场,而且还可能同时标出立场,例如东道国,在阅读之后,标记必须消除,这更加困难。 STM32 标准图书馆方法立即检测这些事件的综合指标,减少方案拟订的复杂性。

      你可以依靠我 如果你想加入一组学生 学习独奏机器编程。 我要入 如果你喜欢和我们一起长大 你可以多留意我们一点

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

          热门文章

          文章分类