I2C通信详解

什么是I2C通信

物理接口:SCL + SDA

  • (1)SCL(serial clock):时钟线,传输CLK信号,一般是I2C主设备向从设备提供时钟的通道
  • (2)SDA(serial data):数据线,I2C通信的通信数据都通过SDA线来传输

通信特征:串行、同步、非差分、低速率

  • (1)I2C属于串行通信,所有的数据以位为单位在SDA上串行传输
  • (2)同步通信就是通信双方工作在同一个时钟下面,一般是通信的A方通过一根CLK线传输A自己的时钟给B,B工作在A传输的时钟下。所以通信的显著特征就是:通信中有CLK
  • (3)非差分:因为I2C的通信速率不高,所以使用电平信号通信,而且通信双方距离很近,所以使用电平信号通信
  • (4)低速率:I2C一般是用在同一个板子上的两个IC之间的通信,而且用来传输的数据量也不大,所以本身通信速率很低(一般几百KHz,不同的I2C芯片的通信速率可能不同,具体编程的时候要看自己所使用的设备所允许I2C的最高通信速率,不能超过这个速率)

突出特征1:主设备+从设备

  • (1)I2C通信的时候,通信双方地位是不对等的,而是分为主设备和从设备。通信由主设备发起,由主设备主导,从设备只是按照I2C协议被动的接收主设备的通信,并及时响应。
  • (2)谁是主设备,谁是从设备是由我们通信双方来定的,I2C协议并没有规定,一般来说一个芯片可以只做主设备,也可以只做从设备,也可以既当主设备,也当从设备。

突出设备2:可以多个设备同时挂在一条总线上(从设备地址)

  • (1)I2C通信可以一对一(一个主设备对应一个从设备),也可以一对多(一个主设备对应多个从设备)
  • (2)主设备来负责调度总线,决定某一时间和哪个设备从设备通信,注意:同一时间内,I2C总线只能传输一对设备的通用信息。所以同一时间内,只能有一个从设备和主设备通信,而其他从设备处于“”“冬眠”状态,不能出来捣乱,否则通信就会乱套。
  • (3)每一个I2C从设备在通信中都会有一个I2C设备地址,这个设备地址是从设备本身固有的属性,然后通信时,主设备需要知道自己将要通信的那个设备的地址,然后在通信中通过地址来甄别是不是自己要找的那个从设备。(这个地址是一个电路板上唯一的,不是全球唯一的)

主要用途:SoC和周边设外设之间的通信(典型的如EEPROM、电容式触摸屏、各种sensor)

由I2C学通信时序

什么是时序?

I2C的总线空闲状态、起始位、结束位?

时间: 2024-10-11 05:13:40

I2C通信详解的相关文章

Linux的i2c驱动详解

目录(?)[-] 简介 架构 设备注册 I2C关键数据结构和详细注册流程 关键数据结构 详细注册流程 使用I2C子系统资源函数操作I2C设备 Gpio模拟i2c总线的通用传输算法 总结 理清i2c中的个结构体关系 i2c驱动的编写建议 1 简介 I2C 总线仅仅使用 SCL . SDA 两根信号线就实现了设备之间的数据交互,极大地简化对硬件资源和 PCB 板布线空间的占用.因此, I2C 总线被非常广泛地应用在 EEPROM .实时钟.小型 LCD 等设备与 CPU 的接口中. Linux I2

Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解

Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解 (本文转自: http://blog.csdn.net/yinhaide/article/details/44756989) 前言:现在很多APP都需要云的功能,也就是通过网络与服务器交换数据.有的采用tcp/ip协议,但是你必须拥有一个固定ip的服务器,可以购买阿里云服务器之类的,就是贵了点.如果只是个人的小应用的的话可以采用新浪云平台这种免费的服务器,采用的协议是http协议,具体实现方式如下: 方式一.在线

Java串口通信详解(转)

Java串口通信详解(转) 作者:denimcc 日期:2007-05-11 序言    说到开源,恐怕很少有人不挑大指称赞.学生通过开源代码学到了知识,程序员通过开源类库获得了别人的成功经验及能够按时完成手头的工程,商家通过开源软件赚到了钱……,总之是皆大欢喜.然而开源软件或类库的首要缺点就是大多缺乏详细的说明文档和使用的例子,或者就是软件代码随便你用,就是文档,例子和后期服务收钱.                                                        

java网络编程Socket通信详解

Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术.下面就让我们一起揭开Socket的神秘面纱. Socket编程 一.网络基础知识(参考计算机网络)            关于计算机网络部分可以参考相关博客:           <TCP/IP协议栈及OSI参考模型详解> http://wangdy.blog.51cto.com/3845563/

Service通信详解

1.使用Intent进行异步通讯 在Service任务一旦完成后,就发送广播.开发者只需要实现一个BroadcastReceiver来监听响应既可. Activity.startService启动intentService,intentService完成任务后sendBroadcast()发送广播,BroadcastReceiver.startActivity()通知Activity操作结果. 在任务结束后调用sendBroadcast(new Intent(Action)); 然后在广播中通知

嵌入式Linux内核I2C子系统详解

1.1 I2C总线知识 1.1.1  I2C总线物理拓扑结构     I2C总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成.通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递.在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平. 1.1.2  I2C总线特征    I2C总线上的每一个设备都可以作为主设备或者从设备,而且每一个设备都会对应一个唯一的地址(可以从I2C器件的数据手册得知),主

TCP通信详解

一.TCP简介 1.TCP介绍 a>TCP协议:TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为:TCP)是一种面向连接的.可靠的.基于字节流的通信协议 1.面向连接:先连接,再通信,好比打电话模型 2.可靠的,相对于UDP,TCP传输更可靠,TCP通过一序列的机制(面向连接机制.发送应答机制)来保障传输的可靠性 3.基于字节流的,UDP创建UDP socket--DGRAM:基于数据报通信方式,每一次发送的数据都是一个独立的整体,包含目标主机的

I2C驱动详解

I2C讲解: 在JZ2440开发板上,I2C是由两条数据线构成的SCL,SDA:SCL作为时钟总线,SDA作为数据总线:两条线上可挂载I2C设备,如:AT24C08 两条线连接ARM9 I2C控制器,通过控制来控制I2C设备的识别设备地址.读.写操作:如图所示 从中所知:I2C线上可以挂载很多个I2C设备:挂载简单,只需要一根数据线和一根时钟线就可以挂载上去,通过地址来去别每个设备的区别: I2C操作: 对I2C操作主要思想为:1.找到设备  2.进行读写操作 主要原理为: 1.发送开始信号S

java多线程同步以及线程间通信详解&amp;消费者生产者模式&amp;死锁&amp;Thread.join()(多线程编程之二)

本篇我们将讨论以下知识点: 1.线程同步问题的产生 什么是线程同步问题,我们先来看一段卖票系统的代码,然后再分析这个问题: [java] view plain copy print? package com.zejian.test; /** * @author zejian * @time 2016年3月12日 下午2:55:42 * @decrition 模拟卖票线程 */ public class Ticket implements Runnable { //当前拥有的票数 private