最后更新: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 标准图书馆方法立即检测这些事件的综合指标,减少方案拟订的复杂性。
你可以依靠我 如果你想加入一组学生 学习独奏机器编程。 复 “ 我要入 门 ” 如果你喜欢和我们一起长大 你可以多留意我们一点
本文由 在线网速测试 整理编辑,转载请注明出处。