个人笔记-IIC

      最后更新:2022-06-20 17:14:58 手机定位技术交流文章

      STM32F103VET6的注释,野火指南者,中文参考手册, HAL库 开发了手册和网站的野火指南的中级视频。我看过很多中级文章,但它往往不被全面理解,现记下小笔记,用来回顾。属于个人笔记,不用于商业。​​​​​

      IIC,集成电路总线。只用到两根线,SDA表示双向串行数据线,用于表示数据;SCL代表串行时钟线,用来数据收发同步。不需要USART、CAN或其他通信协议的外部接收器和发射器,也就是说,你不需要转换一个平整的芯片。它现在广泛用于系统中多个集成电路(IC)之间的通信。

      物理层

      公共汽车: 由多个设备共享的信号线。

      每个连接到总线的设备都有一个独立的固定地址,该主机可以使用它来访问不同的设备。

      当IIC设备空时,输出高电阻状态。 当设备空时,输出高电阻状态时,上载电阻将总线拉到高压水平。

      当多个主机同时使用总线时,使用仲裁来确定哪些设备占有总线,以防止数据冲突。

      有三种传输模式:标准模式的传输速度为100kbit/s,快模式为400kbit/s,快模式为3.4Mbit/s。

      与同一公共汽车连接的IC数限于公共汽车最大容量400pF。

      协议层

      S 表示由主机的 I2C 接口产生的 传输起始信号 (S) ,这时连接到 I2C 公共汽车上的所有接收器将接收这个信号,在最初信号生成后,机上的每一个人开始等待主机按下一个广播 从机地址信号 (SLAVE_ADDRESS) .在I2C总线上,每个设备的地址是唯一的,当主机广播地址与设备地址相一致时,设备被选定,而未选定的设备会忽略数据信号。

      根据 I2C 协议,这个服务器地址可以是 7位(默认)或 10

      在地址位置之后,是传输方向的选择位置,即 0 然后,它表示后面的数据传输方向是从主机发送到主机,即主机写数据到主机。 相反, 主机从机器里读取数据.

      在收到机器的匹配地址后,主机或机会返回一个答案 (ACK) 或非应答 (NACK) 一个信号, 主机不能继续发送或接收数据,直到它收到响应信号.

      数据的开始和停止

      SCL 线高电平时,SDA线高电平低电平切换,表示通讯的起始

      SCL线 高电平时, SDA 线低电平高电平切换,表示通讯的停止

      数据的有效性

      SDA 数据线在SCL的每个时钟周期中传输一个数据.

      传输时, SCL 为高电平的时候, SDA 所显示的数据是有效的,即目前的SDA 对于高功率,数据是“1”,对于低功率,数据是“0”。

      SCL 为低电平时, SDA 数据无效,目前通常是SDA 执行电位调整开关,为下一次做好数据准备.

      每个数据传输都以字节为单位, 传输的字节数是无限的.

      当阅读数据方向时,主要的机会释放了 SDA 信号线的控制由机器控制. SDA 信号线,主机接收信号,写数据方向,SDA 由主机控制, 从机器接收信号.

      地址及数据方向

      假设设备地址:1100=0x78

      设备的读取地址是:11001=0xf1

      设备的写字地址是:1100=0xf0

      ACK/NACK

      IIC特性及架构

      软件仿真协议:使用CPU直接控制通信附件的电平面,生成符合通信协议标准的逻辑。

      硬件仿真协议:外部安装在STM32IIC芯片上,负责执行IIC通信协议,只要配置好该外设,它将自动生成协议所要求的通信信号,接收、发送和存储数据,CPU只检测外部设备的状态,并访问数据记录,就能完成数据收发。通过外部硬件处理IIC协议的方法减少了CPU的工作量,并使软件的设计更加简单。

      首先,这是为了沟通。

      SMBA线用于SMBUS警告信号,而IIC通信则不使用。

      第二点, 钟控制逻辑.

      SCL 线的时钟信号,由 I 2 C 接口根据 时钟控制寄存器 (CCR) 控制, 控制的参数主要是时钟频率.

      配置 I2C CCR 注册表可以修改与通信速度有关的参数:

      可选择 I2C 通讯的“标准 / 快速模式,两个模式分别 I2C 对应 100/400Kbit/s 的通讯速率。

      在快速模式下可选择 SCL 时钟的占空比,可选 Tlow/Thigh=2 Tlow/Thigh = 16/9模式。I2C 协议在 SCL 高电平时对 SDA 信号采样, SCL 低电平时 SDA 准备下一个数据,

      修改 SCL 电平衡的程度会影响数据采样,但事实上两个模式之间的比例差并不大,除非要求非常严格,这里只是选择和选择。

      • CCR 寄存器中还有一个 12 位的配置因子 CCR ,它与 I2C 外部输入时钟源合作生成SCL时钟, STM32 I2C 外设都挂载在 APB1 总线上,使用 APB1 的时钟源 PCLK1 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) 我们可以通过简单的阅读与这些登记册有关的登记册来理解这一点 I2C 工作状态。 此外,控制逻辑负责对I2C的生产控制 中断信号、 DMA 请求及各种 I2C 通信信号(启动、停止、响应信号等) )

      通讯过程

      主发送器

      过程:

      (1) 起始信号 (S) 由主机端生成并控制初始信号(S) 当一个初始信号发生时,它触发一个事件 EV5 ”,并会对 SR1 寄存器的“ SB ”位置 1 ,表示起始信号已经发送

      (2) 立即发送设备地址,等待响应信号。如果机器响应,发生事件 EV6 ”及“ EV8 ”,这时SR1 寄存器的“ ADDR ”位和“ TXE ”位都被置 1

      ADDR 1 表示地址已经发送 TXE 为 1 表示数据寄存器为空

      (3) 上述步骤是正常执行的, ADDR 位清零后,我们往 I2C 的“数据寄存器 DR 输入将发送的数据,然后TXE 位会被重置 0 ,表示数据寄存器非空 I2C 外设通过 SDA 一个信号线发送数据,然后生成一个"EV8" ”事件,即 TXE 位被置 1,表示数据寄存器为空重复此过程以发送多于一个字节的数据;

      (4) 当我们完成发送数据时,控制 I2C 该设备产生停止信号 (P) ,这个时候会产生 EV8_2 事件,SR1 TXE 位及 BTF 位都被置 1 ,表示通讯结束

      假如我们使能了 I2C 当上述所有事件发生时,会发生中断 I2C 中断信号,输入相同的中断服务函数,到I2C 在中断服务程序后, 再检查注册表来确定哪些事件.

      主接收器

      过程:

      (1) 起始信号 (S)它由主机端子生成,并控制初始信号的生成。初始信号生成后,它产生事件EV5 ”,并会对 SR1 寄存器的“ SB ”位置 1 ,表示起始信号已经发送

      (2) 立即发送设备地址,等待响应信号。如果机器响应,发生事件 EV6 ”这时 SR1 寄存器的“ADDR ”位被置 1 ,表示地址已经发送

      (3) 接收端口地址后,开始向主机端口发送数据。 当主机接收这些数据时,“ EV7 ”事件,SR1 寄存器的 RXNE 被置 1 ,表示接收数据寄存器非空读完登记册后,我们可以清理登记册,以便接收下一个数据。 此时,我们可以控制I2C 发送应答信号 (ACK) 或非响应信号(NACK),如答复,重复上述步骤接收数据,如不答复,停止传输;

      (4) 发送不响应信号后生成一个停止信号 (P) 结束传输

      在发送和接收过程中,有些事件不仅标记上述国家,也可以同时标记诸如东道国等国家,读完后必须清除国家,这更复杂。 库函数直接检测这些事件的复合符号,减少编程困难。

      库函数

      IIC通常用于AT24C06、PCF8563和SD2405。

      如AT24C02。

      IIC配置:

      硬件IIC:时间序列由IIC外部和IIC线的GPIO外部的配置生成。

      软件IIC: 配置IIC线的GPIO外部性,使用内核提高或降低GPIO在IIC通信箱上的电位,模拟时间序列。

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

          热门文章

          文章分类