最后更新:2021-10-15 09:13:16 手机定位技术交流文章
I2C通信协议是菲利普斯创建的双向、双向、同步连锁公共汽车,用于在与公共汽车相连的装置之间传输数据。
I2C是连接通信装置的常用方法,如图像所示。

其物理层包括以下特征:
(1) 它是多设备总线,“住房”是指由若干装置共用的信号线,多I2C通信装置可与I2C通信总线连接,使多个通信主机和多个通信操作员能够接通。
(2)I2C公共汽车只有两条公共汽车线,一条双线数据线(SDA)和一条时钟线(SCL)。数据线用于代表数据,而时钟线用于同步数据接收和发送。
(3) 与公共汽车相连的每个装置都有自己的地址,东道方可以用来进行设备间通信。
当I2C装置闲置、产生高抗药性时,当所有设备自由、产生高抗药性时,上脉冲阻力将公共汽车推到高水平。
(5) 当许多东道主同时使用公共汽车时,将利用仲裁来选择哪些设备将使用公共汽车,以避免数据冲突。
(6) 有三种通信方式:正常模式传输率为100千比特/秒,快速模式传输率为400千比特/秒,高速模式传输率为3.4百万比特/秒,但大多数I2C设备目前没有处理高速模式。
(7) 公交车的最大容量400pF,限制可与同一辆公交车连接的IC的数量。
为了利用FPGA进行I2C通信,我们必须首先了解其可接受的时间序列,如下图所示。

I2C协议整体时序大致分为四节:
1 自由状态:序列钟信号SCL和序列数据信号SDA仍然处于高度状态,没有I2C装置在运行。
开始状态 2 : SCL 仍然很高, SDA 从高向低下降, 当所有与公交车连接的 I2C 设备在检测到启动信号后从空闲中跳出时, 当等待控制字节输入时, SL 会生成启动信号 。
3 数据读/写状况:在现阶段,数据读/写是可能的,包括从设备地址、数据存储地址、数据写入、数据读、数据读.,如图像所示。

可以看到,当SCL高时,关于SDA的数据仍然完好无损,当SCL低时,关于SDA的数据可能会改变,每传送8比特,每个组等待反应位置(通常由设备提供),然后下一个组等待整个传输停止。
4 停止状态 : 当读/ 写任务完成时, 停止状态 。 当 SCL 设定为高时, SDA 生成向上线, I2C 公交车返回闲置状态 。
I2C协定的一般时间顺序以前曾得到承认,下文将详细解释具体的阅读和写作活动。
首先讲解I2C 写操作由于可能同时写入的数据数量不同,I2C的写作过程可分为一个字节写作作业和一个页面写作作业,而后者是这项工作的主题。

整个阶段可分为三部分:
1 从设备地址( 7 比特) 发送, 加上写入标记( 1 比特) 。
2 发送数据存储地址,或者如果是单字节,只有8位数,或16位数,以两个字节计,先高8位数,再低8位数。
3 发送数据以8比特的递增来写, 上上下下。
I2C读操作它可分为随机阅读作业和顺序阅读作业,随机阅读活动与写作作业具有非常相似的操作时间序列,如图所示。

整个阶段可分为四节(或两节+二节):
1 从设备地址( 7 比特) 发送, 加上写入标记( 1 比特) 。
2 发送数据存储地址,或者如果是单字节,只有8位数,或16位数,以两个字节计,先高8位数,再低8位数。
3 从设备地址( 7 位) 发送 3 个设备地址( 7 位) + 读标记 (1 位)
读为 8 位数据 8 位数据
可以看出,阅读作业和写作作业的前两个要素是相同的,必须密切注意:
(1) 书面作业有一个起步位置和一个停机位,阅读作业有两个起步位置和一个停机位。
(2) 数据读完后,反应位置不是由设备(造成低电解水平)提供的,而是由主要设备提供的,主要设备正在积极增加,然后停止。
我们可以利用国家机器,按照I2C工作时间序列(如图所示)很好地完成这项工作。

除了所需的 i2c_scl 和 i2c_sda 端口之外,我们还产生一个i2c_clk时钟信号,是 i2c_scl 频率的四倍,这样我们就可以很容易地调节SCL 和 SDA 线的年表。
如图所示,为时间序列控制准备 i2c_ctrl 模块。

该图描述了其港口说明。

在模拟中,我们首先写作,然后阅读。
模拟写入操作的一些参数 :
1010_0110是设备地址加上写标记。
byte_addr = 0x8421 ---> 1000_0100_0010_0001
wr_data = 0xaa ---> 1010_1010
读操作的参数:
1010_0111是设备地址加上读数标记。
i2c_sda = 0101_0101 ---> 0x55
仿真结果如图所示。

缩放并按图中描述的方式写入。

读操作如图所示。

正如我们预料的那样,该试验在模拟方面是有效的。
参考: Altera EP4CE10 FPGA Verilog 发展业务指南
本文由 在线网速测试 整理编辑,转载请注明出处。