浅析通信协议---I2C

目录

        前言

          一.  什么是I2C

二. I2C的一些特征

三. 数据传输的过程


前言:

 这是学习I2C协议时,对一些数据传输的重点进行的总结。

 

一.  什么是I2C

全称:Inter-Integrated Circuit。I2C是芯片间通信的一种标准,有两大显著特征:2根线、低速。下面我们将围绕这两大特点进行介绍:

二. I2C的一些特征

  •   1.两根串行线

   一条串行时钟线SCL,一条串行数据线SDA ,这两条线在空闲时都是高电平,从下图的起始波形也可以看出。

   

  •     2.数据传输的起始条件和终止条件

     起始条件和终止条件一般由主机产生的:

     起始条件:SCL高电平时,SDA从高电平转为低电平

              

     终止条件:SCL高电平时,SDA从低电平转化为高电平

                 

  •  3. 高电平采样

     I2C判定SDA线上的数据是低电平还是高电平是通过每个时钟周期多次采样。

 

  • 4.  SCL在低电平期间,SDA的数据才能发生改变

  • 5. SDA上的数据必须在SCL的高电平期间保持稳定

          其实这也很好理解,I2C是在每个时钟周期多次取样SDA,只有保持稳定,才能准确测出当前SDA上的数据是0还是1

        

  •   6. 低速

        I2C的最大缺点就是速度太慢串行的 8 位双向数据传输位速率在标准模式下可达 100kbit/s 快速模式下可达 400kbit/s 高速模式下也就 3.4Mbi,而且每传一个BYTE就要ACK/NACK,效率实在是低。不过其最大的优点是结构简单。

 

三. 数据传输的过程

  •    1.主机写数据到从机(传输的方向不会改变,即若要改变传输方向必须先发送stop条件

传输的具体细节:

   1.主机控制SDA, 产生起始条件;

   2.主机控制SDA,依次设置要寻址的7位从机地址(A6-A0),外加1位的R/W(置为0);

   3.从机控制SDA,如果可以回应就发送ACK位(拉低SDA), 否则发送NACK(拉高SDA);

   4.主机控制SDA, 依次设置从机中的8位寄存器地址(B7-B0);

   5.从机控制SDA, 如果可以回应就发送ACK位(拉低SDA), 否则发送NACK(拉高SDA);

   6.主机控制SDA,依次设置要发送的8位字节数据;

   7. 重复步骤6,连续发送数据;

   8.主机控制SDA,产生停止条件,停止发送。

 

 

  • 2.主机读取从机中的数据 (传输的方向可以改变,即若要改变传输方向前无需发送stop条件

 

   1)自定义开头读取

传输的具体细节:

   1.主机控制SDA, 产生起始条件;

   2.主机控制SDA,依次设置要寻址的7位从机地址(A6-A0),外加1位的R/W(置为0);

   3.从机控制SDA,如果可以回应就发送ACK位(拉低SDA), 否则发送NACK(拉高SDA);

   4.主机控制SDA, 依次设置从机中的8位寄存器地址(B7-B0);

   5.从机控制SDA, 如果可以回应就发送ACK位(拉低SDA), 否则发送NACK(拉高SDA);

   6.产生重复开始条件Sr + 重新设置要寻址的7位从机地址(A6-A0),外加1位的R/W(这里置为1);

   7. 从机控制SDA, 如果可以回应就发送ACK位(拉低SDA), 否则发送NACK(拉高SDA);

   8.从机控制SDA,  发送字节数据

   9.主机控制SDA, 如果可以回应就发送ACK位(拉低SDA), 否则发送NACK(拉高SDA);如果要发送STOP条件,必须将最后一个字节的响应设置为NACK(拉高SDA)

 

 

2)顺序读取

  

 传输的具体细节:

  这个和自定义读取的内容非常相似,唯一不同的是:从上次读取之后的寄存器地址作为起点,继续读取下去。而自定义读取可以自定义读取的寄存器起点。

 

 

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GPUDirect RDMA是一种高效的GPU通信技术。它通过直接内存访问(RDMA)来提高GPU与其他设备(如网络适配器和存储设备)之间的通信效率,减少了数据在主机内存和GPU内存之间的拷贝次数,大大提高了数据传输速度和性能。 GPUDirect RDMA的工作原理如下:首先,GPU和RDMA适配器联合使用PCIe(Peripheral Component Interconnect Express)总线直接进行通信,绕过CPU的参与,减少了数据的传输路径。其次,GPU通过RDMA适配器的引擎控制器,直接将数据从设备(如网络卡或存储设备)传输到GPU内存,或者将数据从GPU内存传输到设备,无需经过主机内存的拷贝。最后,GPU可以直接访问RDMA适配器的内存,进一步提高了数据传输的效率。 相比于传统的GPU通信技术,例如GPU Direct和P2P(Peer-to-Peer)通信,GPUDirect RDMA具有以下几个优点:首先,减少了CPU的参与,保证了数据传输的低延迟和高吞吐量。其次,减少了数据在主机内存和GPU内存之间的拷贝次数,减少了数据传输的延迟。再次,GPU直接与RDMA适配器通信,无需通过系统内存,提供了更高的带宽和更低的延迟。最后,GPUDirect RDMA还支持在多个GPU之间进行直接通信,提供了更强大的计算和通信能力。 总之,GPUDirect RDMA是一种高效的GPU通信技术,通过RDMA提供了直接内存访问的能力,减少了CPU的参与和数据在内存之间的拷贝次数,从而提高了数据传输的速度和性能。它为GPU与其他设备之间的通信提供了更高的带宽、更低的延迟和更强大的计算能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值