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

    文章

    10990

    浏览量

    206738
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6064

    浏览量

    34614
收藏 人收藏

    评论

    相关推荐

    支持Linux高级客户自行移植内核

    上市)  该项服务具体说明和实施流程参见:支持客户进行Linux移植  需要该服务的客户需与签订技术保密协议,并承诺严格履行协议
    发表于 01-18 13:52

    主板JAVA应用开发简介

    。  鉴于主板主要应用于工业控制和通信管理领域,所以提供的Java硬件支持包主要包括对以太网口、串口、CAN、GPIO、SPI、I2C
    发表于 10-20 13:13

    JAVA操作主板I2C接口简介

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

    I2C总线简介

    本文介绍了互连集成电路( I2C)串行通信协议的基本特征和显着优势。组件之间的通信:通信协议电子系统的一个共同特征是需要在两个或三个或十个单独的组件之间共享信息,这不足为奇。工程师已经
    发表于 09-06 10:16

    I2C简介

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

    了解I2C协议

    了解I2C协议,并能够使用I2C将数据写入和读出,I2C协议I2C
    发表于 08-11 08:35

    I2C通讯协议简介

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

    I2C简介

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

    I2C协议简介

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

    I2C协议以及I2C读写EEPROM

    I2C协议以及I2C读写EEPROM实验文章目录I2C协议以及I2C读写EEPROM实验
    发表于 08-23 08:25

    I2C协议简介

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

    I2C通信协议简介

    一.I2C通信协议简介1.物理层I2C物理层有以下特点:I2C是支持多设备的总线,支持多个通讯主机、多个通讯从机
    发表于 01-13 07:20

    I2C协议介绍

    文章目录I2C 调查标准I2C协议介绍I2C时序介绍起始信号停止信号重启信号总线闲信号总线忙信号读写信号应答信号非应答信号标准I2C
    发表于 01-20 08:04

    I2C总线简介

    I2C 简介I2C 是双线双向的串行总线,它为设备之间数据交换提供了一种简单高效的方法。I2C 标准是一个具有冲突检测机制和仲裁机制的真正意义上的多主机总线。它能防止两个或者多个主机在
    发表于 02-22 06:55

    I2C通信简介

    文章目录I2C简介i2c-dev.hi2c.hTSC2007代码测试设备树I2C简介ls /dev这里拿我们的七寸LVDS屏幕的触摸芯片为例
    发表于 02-23 06:28