0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术I2C接口协议的简介与用途

英创信息技术 来源:英创信息技术 作者:佚名 2019-10-31 15:24 次阅读

I2C总线介绍

I2C(Inter-Integrated Circuit)总线是由Philips公司开发的一种双向二线制同步串行总线,它只需要两条线(SDA,SCL)即可在连接于总线上的器件之间传送信息。I2C总线的工作速率有100k、400k和4M三种,支持多机通讯,支持多主控模块但同一时刻只允许有一个主控端。

SCL(Serial Clock):边沿触发方式,上升沿将数据输入到EEPROM,下降沿驱动EEPROM输出数据。

SDA(Serial Data Line):双向数据线,OD门,每次传输8bit。

成都英创ETA202 I2C矩阵键盘扩展模块

I2C总线中主要定义如下:

发送机(Transmitter):向总线传输数据的设备。

接收机(Receiver):从总线接收数据的设备。

主机(Master):产生时钟、启动发送、发送I2C命令、停止发送的设备。

从机(Slave):监听总线并且被主机寻址的设备。

多主控(Multi-master):总线上可以有多个主机,每一个都可以发送命令。

仲裁(Arbitration):在有多个主机同时尝试控制总线时,只允许其中一个控制总线并使报文不被破坏的过程。

同步():两个或多个设备同步时钟信号的过程。

SCL和SDA信号都是双向的,他们通过电阻连接到电源上,总线空闲时两条线都处于高电平状态。I2C总线上的设备都必须有集电极开路或者漏极开路管脚,激活总线意味着拉低其电平。单个总线上的设备数量几乎是无限的,唯一的要求是总线电容不超过400pF。由于逻辑1取决于电源电压的大小,因此没有标准的总线电压。

I2C总线挂载设备示意图

I2C时序分析

总线空闲

SDA和SCL两条信号线都处于高电平,即总线上所有的器件都释放总线,两条信号线的上拉电阻把电平拉高。

启动信号START

时钟信号SCL保持高电平,数据信号SDA的电平被拉低。启动信号必须是跳变信号,而且在建立该信号前必须保证总线处于空闲状态。

停止信号STOP

时钟信号SCL保持高电平,数据线被释放,使SDA返回高电平,停止信号也必须是跳变信号。

I2C启动信号START与停止信号STOP

应答信号ACK

发送器每发送一个字节之后,在时钟的第9个脉冲期间释放数据总线,由接收器发送一个应答信号ACK(将SDA的电平拉低)来表示数据成功接收。

无应答信号NACK

在时钟的第9个脉冲期间发送器释放数据总线,而接收器不拉SDA电平,则表示一个无应答信号NACK,NACK有两种用途:

(1)一般表示接收器未成功接收数据字节。

(2)当接收器是主机时,它收到最后一个字节后,应发送一个NACK信号,以通知从机结束数据发送,并释放总线,以便主机发送停止信号STOP。

数据传输

每个时钟脉冲传输1比特数据。SDA信号只在SCL处于低电平时变化,SCL处于高电平期间,SDA电平必须保持稳定。

I2C数据传输时SDA与SCL电平变化情况

I2C数据传输流程

I2C总线协议

基本工作原理

主设备以启动信号START来掌管总线,以停止信号STOP来释放总线。主设备启动的每一个I2C命令均以START开始,以STOP结束。

启动信号START后紧接着发送一个地址字节,其中7位为被控器件的地址码,一位为读/写控制位R/W。R/W为0表示主机向从机写数据,R/W为1表示主机从从机读取数据。当从机检测到收到的地址与自己的地址相同时,在第9个时钟期间反馈应答信号。每个数据字节在传送时都是高位(MSB)在前。

I2C基本工作流程

写数据过程

1、主机检测到总线空闲之后,发送启动信号START信号掌管总线。

2、主机发送一个地址字节(包括7位地址码和1位R/W)。

3、当从机检测到主机发送的地址与自己的地址相同以后,发送应答信号(ACK)。

4、主机收到应答信号ACK后,开始发送第一个数据字节。

5、从机收到数据字节后,发送应答信号ACK表示继续传送数据,发送NACK表示数据传送结束。

6、主机发送完全部数据后,发送停止信号STOP,结束通讯并释放总线。

读通讯过程

1、主机检测到总线空闲之后,发送启动START信号掌管总线。

2、主机发送一个地址字节(包括7位地址码和1位R/W)。

3、当从机检测到主机发送的地址与自己的地址相同以后,发送应答信号ACK。

4、主机收到应答信号ACK后释放数据总线,开始接收第一个数据字节。

5、主机收到数据字节后,发送应答信号ACK表示继续传送数据,发送NACK表示数据传送结束。

6、主机完成接收以后,发送停止信号STOP,结束通讯并释放总线。

同步

每个主机必须生成自己的时钟信号,只有当时钟信号电平为低时,数据才能改变。执行总线仲裁必须有同步时钟。当某个主机拉低时钟电平时,时钟会并保持低电平,直到所有主机均将时钟拉至高电平。同样,时钟会处于高电平状态,直到第一个主机将其拉低。这样,通过观察SCL信号,主设备可以同步它们的时钟。

仲裁

对于I2C总线上的正常数据传输过程而言,只允许一个主机进行控制。如果出于某种原因,两个主机同时启动I2C命令,则仲裁过程决定哪个主机获得控制权并且可以继续执行命令。仲裁是通过SDA信号执行的,此时SCL信号处于高电平。每个主机检查总线上的SDA信号是否对应于自己生成的SDA信号。如果总线上的SDA信号应该是高电平但它却处于低电平,那么这个主机就在仲裁过程中失败。仲裁失败的I2C主设备可以产生SCL脉冲直到字节结束,然后必须释放总线并进入从设备模式。仲裁过程可以持续到所有数据传输完毕以后。这意味着在多主机系统中,每个I2C主机必须监控I2C总线并执行相关操作。

I2C总线典型电路

现在的ARM CPU芯片普遍直接支持I2C总线,直接从CPU中将相应管脚引出,即可以外接I2C功能模块或者芯片,然后通过软件进行控制操作。

下图为一个典型的I2C应用扩展(成都英创ETA202 I2C矩阵键盘扩展模块部分电路),使用TCA8418芯片扩展出8x8矩阵键盘。直接将SDA、SCL、键盘中断信号KEY_INT#和复位信号RST#接入芯片,并接上电源和地,即可以控制8x8矩阵键盘。

I2C总线在英创主板平台上的应用

支持I2C接口的芯片都可以直接和英创主板连接,并执行相应的功能。历年来,大量用户使用英创主板进行I2C应用和数据处理,英创也累积了丰富的工程经验。下面整理出了英创网站发表的相关技术文档供用户参考。虽然有一些方案文档中提到的英创主板是较老的型号,用户在新产品开发的时候未必会使用这些老主板产品,但是文中的软硬件使用技巧、编程技巧和方法等技术细节,是值得用户参考或者直接使用的。

使用方法与技巧

英创工业主板EM9160的GPIO应用于I2C通讯嵌入式Linux工控板EM9160的I2C功能及其应用

EM9170工控主板I2C总线使用方法JAVA操作英创主板I2C接口简介

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11354

    浏览量

    210657
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6087

    浏览量

    35672
收藏 人收藏

    评论

    相关推荐

    JAVA操作主板I2C接口简介

    访问硬件资源,提供了Java硬件支持包,主要支持的工控接口有:以太网、串口、CAN、GPIO、SPI、I2C、RTC等。本文主要介绍使用Java语言调用
    发表于 10-20 13:20

    I2C简介

    一.I2C 简介I2C(内部集成电路)总线接口用作微控制器和 I2C 串行总线之间的接口。它提供
    发表于 08-10 08:10

    I2C通讯协议简介

    I2C简介I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯
    发表于 08-19 07:00

    I2C协议简介

    这里写自定义目录标题一、I2C 协议简介二、I2C的分类1、软件I2C2、硬件I2C3、区别三、
    发表于 08-23 07:27

    I2C协议简介

    I2C协议简介协议 (计算机学科概念)对于通讯协议,我们以分层的方式来理解,分为物理层和协议层。
    发表于 01-12 07:25

    I2C总线接口模块设计

    本实验是基于EasyFPGA030的I2C总线接口模块设计,用EasyFPGA030开发套件通过I2C协议实现对二线制I2C串行EEPROM
    发表于 11-02 17:01 41次下载

    电平转换在I2C总线中的应用()

    电平转换在I2C总线中的应用()
    发表于 07-23 16:16 29次下载

    LPC1100 I2C 接口技术与可靠性设计(I2C器件应用方案

    LPC1100 I2C 接口技术与可靠性设计(I2C器件应用方案
    发表于 09-29 19:11 6次下载
    LPC1100 <b class='flag-5'>I2C</b> <b class='flag-5'>接口技术</b>与可靠性设计(<b class='flag-5'>I2C</b>器件应用方案

    LPC1100 I2C 接口技术与可靠性设计I2C器件应用方案

    LPC1100 I2C 接口技术与可靠性设计I2C器件应用方案
    发表于 10-09 09:26 8次下载
    LPC1100 <b class='flag-5'>I2C</b> <b class='flag-5'>接口技术</b>与可靠性设计<b class='flag-5'>I2C</b>器件应用方案

    信息技术EM9170工控主板I2C总线介绍

    的两条信号线上均要加上拉电阻才能正常使用I2C功能。 在CE6.0操作系统中,I2C资源的使用,需要系统驱动程序作为支持。所以使用时,可以反复调用DeviceIoControl来实现。为了方便使用,
    的头像 发表于 01-14 15:00 1673次阅读

    信息技术JAVA操作主板SPI接口简介

    资源,提供了Java硬件支持包,主要支持的工控接口有:以太网、串口、CAN、GPIO、SPI、I2C、RTC等。本文主要介绍使用Java语言调用
    的头像 发表于 02-06 11:09 2019次阅读
    <b class='flag-5'>英</b><b class='flag-5'>创</b><b class='flag-5'>信息技术</b>JAVA操作<b class='flag-5'>英</b><b class='flag-5'>创</b>主板SPI<b class='flag-5'>接口</b><b class='flag-5'>简介</b>

    信息技术JAVA操作主板I2C接口简介

    资源,提供了Java硬件支持包,主要支持的工控接口有:以太网、串口、CAN、GPIO、SPI、I2C、RTC等。本文主要介绍使用Java语言调用
    的头像 发表于 02-06 11:06 1753次阅读
    <b class='flag-5'>英</b><b class='flag-5'>创</b><b class='flag-5'>信息技术</b>JAVA操作<b class='flag-5'>英</b><b class='flag-5'>创</b>主板<b class='flag-5'>I2C</b><b class='flag-5'>接口</b><b class='flag-5'>简介</b>

    信息技术工控主板接口与应用需求对应表

    通讯接口 以太网口 所有主板型号 标准配置为2路以太网口 异步串口 RS485 / RS232是常用的接口形式 CAN总线
    的头像 发表于 02-07 10:53 1315次阅读
    <b class='flag-5'>英</b><b class='flag-5'>创</b><b class='flag-5'>信息技术</b>工控主板<b class='flag-5'>接口</b>与应用需求对应表

    什么是I2C协议

    I2C协议是一个允许多个 “从机” 芯片和一个或更多的 “主机” 芯片进行通讯的协议。它就像串行外设接口(SPI)一样,只能用于短距离通信。又像异步串行
    发表于 10-11 16:46 4597次阅读

    什么是I2C协议

    I2C协议是一个允许多个 “从机” 芯片和一个或更多的 “主机” 芯片进行通讯的协议。它就像串行外设接口(SPI)一样,只能用于 **短距离通信** 。又像异步串行
    的头像 发表于 02-17 10:58 2619次阅读
    什么是<b class='flag-5'>I2C</b><b class='flag-5'>协议</b>?