I2C 总线协议的简单总结

发布者:廿由人最新更新时间:2016-01-22 来源: eefocus关键字:I2C  总线协议  简单总结 手机看文章 扫描二维码
随时随地手机看文章
一. 技术性能:

  工作速率有100K和400K两种;

    支持多机通讯;

    支持多主控模块,但同一时刻只允许有一个主控;     

    由数据线SDA和时钟SCL构成的串行总线;

    每个电路和模块都有唯一的地址;                   

    每个器件可以使用独立电源

二. 基本工作原理:

    以启动信号START来掌管总线,以停止信号STOP来释放总线;

    每次通讯以START开始,以STOP结束;

    启动信号START后紧接着发送一个地址字节,其中7位为被控器件的地址码,一位为读/写控制位R/W,R. /W位为0表示由主控向被控器件写数据,R/W为1表示由主控向被控器件读数据;

    当被控器件检测到收到的地址与自己的地址相同时,在第9个时钟期间反馈应答信号;

    每个数据字节在传送时都是高位(MSB)在前;

写通讯过程:

    1. 主控在检测到总线空闲的状况下,首先发送一个START信号掌管总线;

    2. 发送一个地址字节(包括7位地址码和一位R/W);

    3. 当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK);

    4. 主控收到ACK后开始发送第一个数据字节;

    5. 被控器收到数据字节后发送一个ACK表示继续传送数据,发送NACK表示传送数据结束;

    6. 主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线;

读通讯过程:

    1. 主控在检测到总线空闲的状况下,首先发送一个START信号掌管总线;

    2. 发送一个地址字节(包括7位地址码和一位R/W);

    3. 当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK);

    4. 主控收到ACK后释放数据总线,开始接收第一个数据字节;

    5. 主控收到数据后发送ACK表示继续传送数据,发送NACK表示传送数据结束;

    6. 主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线;

四. 总线信号时序分析

    1. 总线空闲状态

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

    2. 启动信号START

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

    3. 停止信号STOP

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

    4. 数据传送

    SCL线呈现高电平期间,SDA线上的电平必须保持稳定,低电平表示0(此时的线电压为地电压),高电平表示1(此时的电压由元器件的VDD决定)。只有在SCL线为低电平期间,SDA上的电平允许变化。

    5. 应答信号ACK

    I2C总线的数据都是以字节(8位)的方式传送的,发送器件每发送一个字节之后,在时钟的第9个脉冲期间释放数据总线,由接收器发送一个ACK(把数据总线的电平拉低)来表示数据成功接收。

    6. 无应答信号NACK

    在时钟的第9个脉冲期间发送器释放数据总线,接收器不拉低数据总线表示一个NACK,NACK有两种用途:

    a. 一般表示接收器未成功接收数据字节;

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

五. 寻址约定

    地址的分配方法有两种:

    1. 含CPU的智能器件,地址由软件初始化时定义,但不能与其它的器件有冲突;

    2. 不含CPU的非智能器件,由厂家在器件内部固化,不可改变。

    高7位为地址码,其分为两部分:

    1. 高4位属于固定地址不可改变,由厂家固化的统一地址;

    2. 低三位为引脚设定地址,可以由外部引脚来设定(并非所有器件都可以设定);

关键字:I2C  总线协议  简单总结 引用地址:I2C 总线协议的简单总结

上一篇:RS-485总线的可靠性
下一篇:CAN总线软件编程

推荐阅读最新更新时间:2024-05-03 00:11

飞兆半导体推出针对I2C应用的电压转换器
飞 兆半 导 体公司 (Fairchild Semiconductor) 为设计 人 员 提供 用于I 2C (Inter-Integrated Circuit) 总线 的 电压转换 器 FXM2IC102,在 宽 泛的 电 平 范 围 (1.65V 到 5.5V) 内工作,以适 应 I 2C 低 电压应 用的要求。 FXM2IC102 为设计 人 员应 用 (I 2C 的) 漏极 开 路接口提供了 简单 的 方法,以便于手机与笔 记 本 电脑 和其它 应 用 设备 的 蓝 牙和 显 示屏接 口握手。利用I 2C 接口,全双工通信只需要两条 线 路 ( 时钟线 和数据 线 );而且, 转换 器采用 紧 凑的 1.
[电源管理]
飞兆半导体推出针对<font color='red'>I2C</font>应用的电压转换器
基于I2C接口的LED驱动器优势探讨
  led无疑是当前最热的一个应用,无论是手持设备、游戏机、霓虹灯、广告牌等等,眩目的色彩及高质的光亮,总能第一时间吸引人的眼球。在当前众多的LED控制器面前,如何选择一款功能丰富且性价比又高的产品来迎合自己的设计,无疑是摆在每个设计师面前的问题。   最简单的LED驱动,我们可以用普通的I/O来实现。但I/O控制只能实现LED的ON与OFF,无法用来进行混光、闪烁等功能,而且每个LED都需要占用一个单独的I/O资源,无疑性价比很低。我们也可以用专用的大电流LED控制器来设计,但昂贵的成本首先会成为问题,而且设计复杂,程度也会跟着各种干扰的出现相应地提高。基于这些,恩智浦(NXP)推出一系列使用I2C接口的LED驱动器,它可以
[嵌入式]
基于I2C接口的LED驱动器优势探讨
引人的眼球。在当前众多的LED控制器面前,如何选择一款功能丰富且性价比又高的产品来迎合自己的设计,无疑是摆在每个设计师面前的问题。 最简单的LED驱动,我们可以用普通的I/O来实现。但I/O控制只能实现LED的ON与OFF,无法用来进行混光、闪烁等功能,而且每个LED都需要占用一个单独的I/O资源,无疑性价比很低。我们也可以用专用的大电流LED控制器来设计,但昂贵的成本首先会成为问题,而且设计复杂,程度也会跟着各种干扰的出现相应地提高。基于这些,恩智浦(NXP)推出一系列使用I2C接口的LED驱动器,它可以通过I2C接口的两根线,去同时控制从4个到24个不等LED的ON/OFF、闪烁及RGB混光。在混光方案里,每个LED都是
[电源管理]
基于<font color='red'>I2C</font>接口的LED驱动器优势探讨
STC8H开发(七): I2C驱动MPU6050三轴加速度+三轴角速度检测模块
MPU-6050 MPU-6050是InvenSense生产的六轴运动跟踪芯片, 芯片尺寸4×4×0.9mm, QFN封装. 整合了三轴陀螺仪, 三轴加速度计, 片内温度传感器和数字运动处理器(DMP), 可以使用I2C接口外接三轴电子罗盘的输入,提供完整的九轴运动融合输出. MPU-6050包含6个16位ADC, 3个用于陀螺仪输出, 3个用于加速度计输出. 用户可以设置的陀螺仪满量程范围为±250,±500,±1000,±2000°/秒(dps), 可设置的加速度计满量程范围为±2g, ±4g, ±8g和±16g. 通信使用 400kHz的 I2C接口或 1MHz的 SPI接口(SPI仅MPU-6000可用).
[单片机]
STC8H开发(七): <font color='red'>I2C</font>驱动MPU6050三轴加速度+三轴角速度检测模块
I2C控制的电子万年历(可同另一片MCU通信作其它控制;
带I2C控制的电子万年历(可同另一片MCU通信作其它控制;可扩展到空调控制板上用) A:可用按键设定时间、日期....; B:可显示温度、时间、日期....; C:I2C可通另一块芯片通信作其它控制.....。
[单片机]
带<font color='red'>I2C</font>控制的电子万年历(可同另一片MCU通信作其它控制;
I2C总线AT24C02芯片应用
I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。 起始和终止信号 :SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。 数据传送格式(1)字节传送与应答 每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。 3引角对应,为当前电路中的地址选择线,三根线可选择8个芯片同时连接在电
[单片机]
<font color='red'>I2C</font>总线AT24C02芯片应用
STM8S GPIO模拟I2C的底层代码
底层代码 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 GPIO初始化设置 这颗STM8S上,具有真·开漏功能的引脚是PB4和PB5,这两个引脚也正是片上I2C外设的默认引脚。端口设置如下: PB4 :I2C的SCL时钟线,开漏输出模式 PB5 :I2C的SDA数据线,开漏输出模式 SCL和SDA初始化时,推荐选用高阻态输出 /** * @brief I2C端口初始化 * @param None * @retval None */ void I2C_GPIO_Init(void) {
[单片机]
msp430驱动74hc595(程序+电路)I2C串行通信
#include "msp430G2553.h" int tab ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; int temp; //毫秒延迟函数 void delay(int ms) { int i; while(ms--) for(i=0;i 120;i++); } //纳米延迟函数 void delayns(int ns) { while(ns--); } void display(temp)//现实位置P2.0=SH;P2.1=ST;P2,2=DS { int k,temp1,t
[单片机]
msp430驱动74hc595(程序+电路)<font color='red'>I2C</font>串行通信
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved