STM32常用协议之IIC协议详解

      最后更新:2022-04-01 14:02:15 手机定位技术交流文章

      提示:撰写文章后,可自动生成目录,以及如何创建右侧可访问的帮助页面。

      IIC协议详解

      • 前言
      • 一、IIC协议简介
        • 1.1 简介
        • IIC 物理层第2号
        • 1.3 协议层
          • IIC 基本阅读和写作程序(一.三.1)
        • 一、一、一、一、一、一、三、三、三、三、三、三、三、三、三、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、七、七、七、六、六、六、六、七、六、六、六、六、七、六、六、六、六、六、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十
        • 一.三.3 数据可靠性
        • 一.三.4 地址和数据的方向
        • 1.3.5 响应
      • 二、IIC特性
        • 软件模拟议定书第2号
          • 2.1.1 引言
          • IIC 初始化职能 2.1.1.2
          • 二.一.3 启动信号
          • 等待回答信号二. 1.4
          • 2.1.5 反应信号
          • 二点一六分停止信号
          • 交付了2.17个国际独立调查委员会字节。
          • IIC读为第二.one.8小节。
        • 2.2 硬件协议
          • IIC 初始化职能编号:二.二.1
      • 三、IIC实验
        • 3.1 OLED实验
        • 3.2 逻辑分析仪
      • 总结

      前言

      STM32 CPS(共同议定书系列)

      在这里插入图片描述

      一、IIC协议简介

      1.1 简介

      Philips创建了ITC大客车。工作方式是 半双工 、 同步 、串行传输。尽管建筑是基本的[两条双向信号线SDA和SCL]但其传输距离较短,传输率通常在数百千位/秒之间。主要用于 数据率低,数据数量少因计算机科学中,分权有助于简化大多数困难情况。这一点也以多层次的方式加以解释。处理协定的最基本分层方式是将其分为实物和礼宾层面。其中,通信中的机械和电气方面由物理层提供。保证物理媒介的原始数据传输。协议层面有效地界定了通信逻辑。收件者和发件人采用一致的数据包装和包装标准。“物理规则是用嘴唇或肢体进行交流”,协议是说英语还是说普通话。我不知道我该怎么办。

      IIC 物理层第2号

      常见的IIC系统
      上图描述了连接通信设备的流行方法,其特点如下:

      1. 多种国际电算通信设备可与国际电算公司通信总线连接,以容纳多个通信主机和多个通信运营商。
      2. 一辆国际独立调查委员会公共汽车只载有两条主线[SCL公共汽车和SDA公共汽车],而SCL公共汽车是同步数据接收和发送的时钟巴士,SDA公共汽车是数据表达的双向线数据线。
      3. 由于与公共汽车相连的每件设备都有自己的地址,东道主可使用地点搜索来查看每件设备。
      4. 通过发起抵抗,主线连接到电源当 IC 装置耗尽时,会输出** 高阻态 **,等所有设备齐备后都输出高阻态时,公交车被上拉阻力拉到高水平。如果任何连接公交车的装置 产生低高度,这会减少公交车信号众所周知的装置SDA和SCL是以电线为基础的“与”关系。
      5. 仲裁用于选择哪些设备将使用公共汽车,以防止在众多主机同时使用公共汽车时发生数据冲突。
      6. 有三种传输模式:标准[100千位/秒]、快速[400千位/秒]和高速[3.4千位/秒](大多数设备尚未支持这种高速变体)。
      7. 400pF的公交车最大容量限制可能与同一辆公交车相连的IC的数量。

      说明:关于第5和第7点,个人目前不完全了解其机制。

      1.3 协议层

      协议层逻辑框图

      IIC 基本阅读和写作程序(一.三.1)

      IIC基本读写过程

      主机写数据到从机中

      • 第1步:初始信号(S)是从主机的 IIC 接口创建并发送到公交车,供所有与公交车连接的人接收。 [注:在任何特定时间只有一个主机可以激活。 ]
      • 步骤02:在信号启动后,那些开始等待主机在计算机地址发出信号后立即广播的人。当主机广播地址与设备地址相同时,这个工具已经被选中了后继的数据信号将被未选中的设备忽略; 在选择机器地址后,需要选择传输方向,这里是写数据,所以该位置‘0’。
      • 03:当从机器收到信号时,ACK或NACK信号将发回主机。
      • 步骤 04:收到ACK信号后,主机可传输数据[一次一个字节]。
      • 从机器上得到后 向主机发出ACK反应信号
      • ..这是N -Data。
      • Stepen:当主机从飞机上返回NACK信号时,主机传送机器的停止信号;或者当主机从机器发送数据时,机器的停止信号即刻发送;当主机从飞机上返回NACK信号时,主机传送机器的停止信号;或者当主机从机器发送数据时,机器的停止信号直接发送。

      主机读数据到从机中
      从主机到主机的各个阶段基本相同,但下列例外情况除外:

      • 第一步是改变传输方向并读取数据。
      • 其次,当主机希望停止接收数据时,必须向主机归还一个不响应的NACK信号和向接收器发送停止信号的主要机会。 但是,当主机无法接收NACK信号时,发送停止信号是不可行的[没有发出停止信号的许可 。

      东道主的读写数据[IIC复合格式]
      前两项之间的区别至关重要,具体如下:

      • 在整个传输过程中,有两个初步信号(S)。通常在初次广播期间主机正在使用 SLVE 地址从设备后面搜索 。发送“数据”(通常是从装置的内存或发件人的地址发送);在第二次发送中,您只能读写地址的内容 。换句话说,最初的传输是机器发送的读写信息。第二是实际的读写材料。

      一、一、一、一、一、一、三、三、三、三、三、三、三、三、三、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、六、七、七、七、六、六、六、六、七、六、六、六、六、七、六、六、六、六、六、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十、十

      • 一般来说,主机是发出启动和停止信号的主机。
      • (a) 启动信号:当SCL是一个高级信号时,自失能系统从高到低的开关表示通信的开始。
      • 当SCL是一个高级别信号时,SDA从低级转换为高级,表示连接结束。
        通信的起始和终止信号

      一.三.3 数据可靠性

      数据有效性

      为了发送数据,国际投资公司使用SDA信号线。数据同步使用SCL信号线。每个SCL时钟周期,SDA数据线传输一个数据。如上图所示。传输时,当SCL处于高峰时SDA 显示的数据是正确的 。当SDA处于高水平且数据为“ 1” 时,情况就是如此。反之则为“0” 。当短链氯化石蜡处于低水平时,SDA提供的数据无效。宇宙开发事业团此时此刻正在交换数据准备显示下一个数据点 。至于为什么现在应该进行更替,在我们开始之前,让我们考虑 如何启动和停止信号。

      一.三.4 地址和数据的方向

      地址及数据方向

      • IC总线上每个设备都有独特的地址
      • 服务地点可以是7或10个,其中7个最普遍。
      • 数据传输方向:1读读/0写
      • 在读取数据方向时,主机将自控的自控大客车释放出来,主机获得信号;在写数据方向时,主机控制着自控大客车,机器接收信号。

      1.3.5 响应

      响应

      当设备(无论是从机器还是从IIC)从IIC获得字节数据或地址时,数据和地址传输都有作为数据接收端的响应[ACK和NACK信号]:

      • 如果预期另一方继续向发件人发送ACK信号,发件人将不断发送下一个数据,预计另一方将继续向发件人发送ACK信号,发件人将不断发送下一个数据。
      • 如果数据传输要停止,“不响应的NACK”信号将发送到另一方,发送者收到信号并生成停止信号,从而终止传输。

      二、IIC特性

      注:本节主要依据的是大人物的文章, 水果的弟弟。

      软件模拟议定书第2号

      2.1.1 引言

      如果我们直接控制STM32的两个GPIO他们被称为SCL和SDA。根据这些信号的时间序列直接控制基站输出(如果收到数据),与LED一样。这篇文章是全球之声在线特稿的一部分。我就能和IC联系了USART也是如此。它还允许与美国进行联系。所以只要遵守协议,就是标准的通信,不管如何实现它,是否来自 ST 的 ATMEL 控制函数的内存,两者均可根据来文议定书进行互动。GPIO的直接控制用于构建通信时间序列。每时每刻的状态都由CPU控制它被称为“软件模拟器”方法。
      IIC软件模拟协议

      IIC 初始化职能 2.1.1.2

      设置IIC时钟线和数据线。

      由于它是国际独立调查委员会的软件模拟,我们选择了略为随意的介绍国际独立调查委员会通讯,利用基于STM32参考手册的特殊查询。 PB6和PB7被选为国际独立调查委员会的数据和时钟。Set 用于推动输出。

      二.一.3 启动信号

      函数: CPU 发送 IRC 公共汽车启动信号 。

      起始信号产生后,他们都在STM32号之后 立即开始等待机器地址发出的信号在IIC总线上,每个工具都有自己独特的地址当主机广播地址与设备地址相同时,这个工具已经被选中了未选中的设备将忽略随后的数据传输 。根据IIC协议,可能在机器地址的7到10个地点之间在地址位之后,是转让方向的选择。该位为 0时,这意味着数据正在从主机向后机传输。即将数据从计算机写入主机该位为 1时,则相反,这意味着主机是从计算机读取的 。

      等待回答信号二. 1.4

      函数: CPU 生成一个时钟, 读取设备的 ACK 响应信号 。

      此函数允许 STM32 作为发件人等待和处理接收器的响应或无响应信号, 也就是说, 这种方法通常在先前的 IIC_ SendByte 函数之后调用 。
      STM32负责SDA高抗力输出的信号线。让它放弃对民主行动党的控制接收器控制着在高水平和低水平之间摇摆的SCL信号线。产生一个时钟信号,根据IIC协议,如果接收器将SDA配置为低水平,这表示将发送“回复”信号。如果民主行动党继续维持目前水平,SSL 在低水平和高水平之间的切换, 这意味着返回一个“ 不响应” 信号 。在确保接收者有足够的时间对响应信号作出反应方面存在一个问题。等待后, 使用宏 READ_ SDA 读取 SDA 线的水平 。基于平面值的重置变量分配值; 函数结束时返回给再置的值,收到答复后,返回0。未收到回复时,此函数返回 1。当用作数据接收器时,STM32在调用 IC_ReadByte 函数后,您必须回复发件人或发送非回复信号 。目前,已经具备了IIC_Ack和IIC_Nack的功能。此程序与 IIC_ Wait_Ack 函数冲突 。STM32目前也控制着SDA线。

      2.1.5 反应信号

      CPU生成了ACK信号

      对国际电算中心的数据和地址传输作了答复。反应中既有“反应(ACKs)”的信号,也有“不反应(NACKs)”的信号。作为数据接收端时,当设备从IIC获得字节数据或地址时,允许您继续发送数据 。重要的是将“ACK”信号传送到贴有标签的“Access to the ACK”(Acquis)”和“Access to the ACK”(ACK)(Acc)信号的标签上的另一面。发送者将着手进行下一次数据传输;如果接收者决定终止数据传输,寄到另一边的贴有标签的“NACK”(“NACK”), 然后寄到另一边的“NACK”(“NACK”), (“NACK”), (“NACK”), (“N-N-N-K”), (“N-N-N-K”), (“N-N-N-K”), (“N-N-K), (“N-N-K”), (“N-N-K”), (“N-N-K), (“N-N-K), (“N-N-K”), (“N-N-N-K), (“N-N-K”), (“N-N-K”), (“NN-N-K), (“NN-N-K”), (“N-N-K)), (“N-N-K”), (“N-N-K”), (“N-N-K”), (“N-K”) (“N-N-K”)。当发送者收到信号时,它产生一个停止信号。结束信号传输。
      代码的具体程序取决于它是返回“响应”还是“不响应”信号。首先,准备SDA线的水平。在 IIC_Ack 函数中,将SDA 线设为低水平。表示“应答”信号,在 IIC_Nack 函数中,将 SDA 线设为高水平 。这是一个“无响应”信号;它分别控制低层和高层开关的SCL线。产生一个时钟信号,添加 SCL 线的高值和低值之间的延迟 。确保另一方有足够时间进行沟通,以获得自失能系统信号线的水平;在IC_Ack函数结束时,信号传输后为了放弃对公共汽车的管理,正在将民主行动党线路重新定位为高级别。方便后续的通讯。

      二点一六分停止信号

      函数: CPU 发送 IIC 公共汽车站信号 。

      直视时间序列可以提供停止信号。 当 SL 和 SDA 都很低时, 时钟线最初会被拖上, 然后是数据线 SDA, 而 IIC 终止传输 。
      这是国际电算中心协议软件模拟。在大多数情况下,我们不需要知道这些精确的代码。理解一下国际投资协议的逻辑一般来说,我们用的是别人编的代码。我们现在要做的就是用它。如果你的密码跟我的不一样 也没什么区别如果你能够有效地沟通,你将能够这样做。当然 如果你的设计在发展阶段遇到任何问题或者显示不正常,我们也并不专注于底线。全部归结到你的代码的其余部分

      交付了2.17个国际独立调查委员会字节。

      函数: CPU 将 8 位数据传输到 IIC 公共汽车设备 。

      函数将输入参数用作使用 IIC 协议导出的数据,该协议是一个字节大小。函数对象的周期为八次,循环执行将传输外部数据,也就是该字节在周期结束时的结尾。
      第一个程序计算字节和 0x80 作为输入参数 。这是身居最高职位的逻辑价值。SDA输出的高度控制为1。控制自失能系统输出值为 0 的低水平; 然后延迟,这稳定了民主行动党电力线的发电量。由于开展了后续活动,对SCL线的控制导致低层和高层公寓跳跃。在独立调查委员会议定书中,这就是构成SCL线的通信时钟;在SCL线的高度与低电量之间有延误。在延误期间,SCL线保持高电高度。根据 IIC协议,此时数据有效,在这一点上,传送的另一方将阅读自失能线的平面逻辑。数据1是在收到高电量电时获得的。否则,是零;循环已经结束。字节将一个字节移动到左方以在下一个环中传输下一个数据;在八个环中,字节将一个字节移动到左方以发送下一个数据显示器将一个字节移动到左方,在下一个环中传输下一个数据;在八个环中,字节将一个字节移动到左方以发送下一个数据。要完成, 发送 Byte 中的 8 位数据位置 。最后发送完成后(回路柜台i=7)控制SDA线输出1(高抗力)。这表明发件人已经放行了SDA公共汽车。等待接收方的响应信号

      IIC读为第二.one.8小节。

      CPU在其功能中读取了来自IIC总线设备的8位比特数据。

      IIC_ReadByte 函数也以循环为基础,循环进行八次,然后是字节数据,详情如下:
      要开始, 请使用变量值保存以保存将接收的数据 。每个周期完成后, 将值移到值 1 位的左边 。要提供值变量的位数,新接收的数据槽将缓存在 Bit0 中 。一个接一个的,一个接一个的,一个的,一个的,一个的,一个的,一个的,一个的,一个的,一个的,一个的,一个的,一个的,一个的,一个的,一个的,一个的,一个的,一个的,一个的,去。最后,生成了全部八位数的数据集,而SSL线被控制为低和高开关。IC 协议通信的时钟; 连接 SSL 线到低高度开关 。有个延时,延误保证了数据发送者有足够的时间处理数据。换句话说,发送者在由SCL时钟控制的SDA信号线上提供了一条统一逻辑信号。而这个延时之后,数据接收端为STM32,使用宏SDA_RED读取SDA信号线的水平。若信号线为 1,这是一个令人兴奋的时刻 成为它的一部分。也就是说,将位数设为位数 1 。如果你不这样做,那行不通(你的分数是0)。这就是一个数据是如何读取的; 然后, SSL 线被切换到低层次, 然后 SSL 线被切换到低层次 。加入延时,使接收端能够根据需要更改SDA线输出数据;在周期完成之前,数据 1 字节中的可变值存储点 。将返回值作为函数返回。

      2.2 硬件协议

      相对来说,基础直接由使用外部设置的硬件IIC控制。CPU的工作量可以降低。另一方面,使用二氧化二氮硬件必须辅以使用永久引信,如SCLs和自失能装置。程序使用任何GPIO模拟IIC。相对比较灵活。STM32外部的国际投资协定可用作主机或通信接口。支持100kbit/秒和400kbit/秒的费率。支持了7位数和10位数的设备地址。数据数据传输得到支持。并包括数据验证机制ITC的外部支持也支持SMBus2 我们什么也没有SMBus协议与国际独立调查委员会协议类似。它主要用于膝上型计算机细胞管理。STM32芯片提供了各种IIC设置。他们的IIC信号被传送到 各种GPIOs。使用此特性时, 您必须设置这些特定的拉动 。GPIO的背对背特征,见STM32F1xx灰尘。以它为准。

      IIC 初始化职能编号:二.二.1

      因为是基础直接由使用外部设置的硬件IIC控制。因此,我们将选择 IIC的脚, 这将是更固定的。具体使用的引脚见STM32F1xx灰尘。以它为准。从可以看出,PB6和PB7可用来连接国际投资协定。PB6代表SCL时钟线。事实并非如此,但事实并非如此。并设置为开漏输出。
      为什么我们要把它建起来 作为泄露信息的手段?
      这是因为通过软件模拟了国际投资协定模式。此外,IC协议的GPIO必须设定为泄漏模式。当高级电解液输出时,泄漏输出模式会产生高抗药性。当ITC大客车的所有设备 都处于高抗力状态时从外面拉升到最高层此外,当STM32的GPIO 设定为泄漏输出模式时,它仍然可以读取GPIO的输入数据登记册,以便把外部输入水平提高到脚上。换句话说,它也有浮动输入模式函数。因此,在控制SDA线外部输出或读取SDA线在后方的级别信号时,没有必要改变GPS模式。
      此外,国际电算中心硬件协议有与软件模拟国际电算中心协议相同的起始信号、等待信号、响应信号和停止信号,我在这里不会重复这些信号。

      三、IIC实验

      3.1 OLED实验

      实验描述: 通过 MCU.96 英寸 OLED 屏幕, 0 0 通过 MCU.96 英寸 OLED 屏幕在 16 *16 中写“ A” 字符 。
      实验图片:实验图片
      实验相关材料:

      • A 16X16 字符模型: 0x00, 0x00, 0x00, 0x00, 0x38, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3C, 0x23, 023, 0x02, 0x02, 0x02, 0x02, 0x02, 0x27, 0x38, 0x2,“A”,33/
      • 0X3C在96英寸的 欧莱德面板中点零

      3.2 逻辑分析仪

      注:由于IIC传输率在千位Kbps范围内,取样率大约是取样率的十倍,而这里我大约是6M。

      以下是徽标分析器的结果:
      逻辑分析仪结果展示
      根据Logo Analyzer抽样的数据,MCU正在将数据写入SLVE [0x3c] 所在地,以下是数据分析的结果。
      在这里插入图片描述
      在这里插入图片描述
      字符“ A” 分开两次,然后从 MCU 传送到 OPED 面板上,如上图所示。这里提到 OLED_ShowChar 函数 。
      在这里插入图片描述
      由于从大小1中选择了16个,因此需要根据大小2的计算来选择16个周期,16个周期。在所示字节中,可以看到字符是在上下区域处理的。因此,逻辑分析器所记录的数据被分离成两个与方法相符的传输。

      总结

      • (a) 软件模拟规程,其中只包括底码,但不包括试验,但没有试验;
      • 协定的若干方面尚待执行,但对国际独立调查委员会协定有基本理解,但后来的用途略有变动和调整。
      • 逻辑分析器的基本用途没有问题,然而,该分析器的先进用途有若干问题;

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

          热门文章

          文章分类