i2c总线

SMBus总线概述

情到浓时终转凉″ 提交于 2019-12-30 09:04:15
1.概述: 系统管理总线是一种两线制接口。它基于I2C 总线原理演变而来,可以认为是简化版的I2C总线。 SMBus最初 是 应用到 智能电池 ,如电池充电器和一个微控制器 。其 提供一个系统和电源管理相关的任务控制总线。如今,SMBus总线可以连接的设备类型更多样化,包括与电源相关的设备,系统的传感器,EEPROM的容量等设备的信息通信。 SMBus体现在OSI模型的下三层:物理,数据链路,网络。物理层定义了了SMBus的电气特性;数据链路层部分规范化位、字节的数据传输,仲裁和时钟信号;网络层处理处理SMBus地址解析协议和总线数据传输协议。 2.通用特性: 1)物理层: DC特性: AC特性: 2)数据链路层: 按通用思想,使用电平的高低代表逻辑的0和1: 数据有效性:数据必须在时钟的高电平周期保持稳定,数据的状态只能在时钟低电平的情况下才能改变; 开始和停止条件(与I2C相同): 在SMBCLK 线是高电平时,SMBDAT 线从高电平向低电平切换,表示数据传输开始; 当SMBCLK 线是高电平时,SMBDAT 线由低电平向高电平切换,表示数据传输停止; 总线空闲: SMBCLK 和SMBDAT 线都处于高电平期间,总线空闲。 数据传输: 数据传输以字节为单位,传输的字节数量不限,但是每个字节后必须紧跟一个ACK响应。 首先传输的是数据的最高位MSB。

I2C总线设备驱动解析

痴心易碎 提交于 2019-12-26 18:57:36
1. I2C 协议 1.1 I2C总线工作原理 I2C总线是由数据线SDA和时钟SCL构成的串行总线,各种被控制器件均并联在这条总线上,每个器件都有一个唯一的地址识别,可以作为总线上的一个发送器件或接收器件(具体由器件的功能决定),I2C总线的接口电路结构如图1所示。 1.2 I2C总线的几种信号状态 1. 空闲状态:SDA和SCL都为高电平。 2. 开始条件(S):SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。 3. 结束条件(P):SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。 4. 数据有效:在SCL的高电平期间, SDA保持稳定,数据有效。SDA的改变只能发生在SCL的底电平期间。 5. ACK信号: 数据传输的过程中,接收器件每接收一个字节数据要产生一个ACK信号,向发送器件发出特定的低电平脉冲,表示已经收到数据。 1.3 I2C总线基本操作 I2C总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(SCL),同时控制总线的传输方向,并产生开始和停止条件。 数据传输中,首先主器件产生开始条件,随后是器件的控制字节(前七位是从器件的地址,最后一位为读写位 )。接下来是读写操作的数据,以及 ACK响应信号。数据传输结束时,主器件产生停止条件,具体的过程如图2所示。 2. Linux I2C 结构分析 2.1 层次分析 1. I2C Core

IIC设备驱动程序详解

倾然丶 夕夏残阳落幕 提交于 2019-12-25 15:50:43
转自: http://www.cnblogs.com/lfsblack/archive/2012/09/14/2685783.html IIC设备是一种通过IIC总线连接的设备,由于其简单性,被广泛引用于电子系统中。在现代电子系统中,有很多的IIC设备需要进行相互之间通信 IIC总线是由PHILIPS公司开发的两线式串行总线,用于连接微处理器和外部IIC设备。IIC设备产生于20世纪80年代,最初专用与音频和视频设备,现在在各种电子设备中都广泛应用 IIC总线有两条总线线路,一条是串行数据线(SDA),一条是串行时钟线(SCL)。SDA负责数据传输,SCL负责数据传输的时钟同步。IIC设备通过这两条总线连接到处理器的IIC总线控制器上。一种典型的设备连接如图: 与其他总线相比,IIC总线有很多重要的特点。在选择一种设备来完成特定功能时,这些特点是选择IIC设备的重要依据。 主要特点: 1,每一个连接到总线的设备都可以通过唯一的设备地址单独访问 2,串行的8位双向数据传输,位速率在标准模式下可达到100kb/s;快速模式下可以达到400kb/s;告诉模式下可以达到3.4Mb/s 3,总线长度最长7.6m左右 4,片上滤波器可以增加抗干扰能力,保证数据的完成传输 5,连接到一条IIC总线上的设备数量只受到最大电容400pF的限制 6,它是一个多主机系统

IIC总线的FPGA实现

余生颓废 提交于 2019-12-24 19:13:02
一、摘要   DE2_TV中,有关于寄存器的配置的部分,采用的方法是通过IIC的功能,这里对IIC总线的FPGA实现做个说明。 二、实验平台   软件平台:ModelSim-Altera 6.4a (Quartus II 9.0)   硬件平台:DIY_DE2 三、实验原理 1、 IIC 总线器件工作原理   在IIC总线上传送信息时的时钟同步信号是由挂接在SCL时钟线上的所有器件的逻辑“与”完成的。SCL线上由高电平到低电平的跳变将影响到这些器件,一旦某个器件的时钟信号变为低电平,将使SCL线上所有器件开始并保护低电平期。此时,低电平周期短的器件的时钟由低至高的跳变并不影响SCL线的状态,这些器件将进入高电平等待的状态。   当所有器件的时钟信号都变为高电平时,低电平期结束,SCL线被释放返回高电平,即所有的器件都同时开始它们的高电平期。其后,第一个结束高电平期的器件又将SCL线拉成低电平。这样就在SCL线上产生一个同步时钟。可见,时钟低电平时间由时钟低电平期最长的器件决定,而时钟高电平时间由时钟高电平期最短的器件决定。   IIC总线上数据的传输速率在标准模式下可达100kbit/s 在快速模式下可达400kbit/s 在高速模式下可达3.4Mbit/s ,连接到总线的接口数量只由总线电容是400pF 的限制决定。 2、IIC 总线的传输协议与数据传送时序 (1)起始和停止条件

Linux I2C核心、总线和设备驱动

∥☆過路亽.° 提交于 2019-12-20 20:58:24
目录 更新记录 一、Linux I2C 体系结构 1.1 Linux I2C 体系结构的组成部分 1.2 内核源码文件 1.3 重要的数据结构 二、Linux I2C 核心 2.1 流程 2.2 主要函数 三、Linux I2C 适配器驱动 3.1 I2C 适配器驱动的注册于注销 3.2 probe 成员函数 四、Linux I2C 设备驱动 4.1 设备驱动一般过程 4.2 Linux 的 i2c-dev.c 文件分析 4.3 AT24xx EEPROM的I2C设备驱动实例 五、应用程序开发 参考 更新记录 version status description date author V1.0 C Create Document 2019.4.9 John Wan status: C―― Create, A—— Add, M—— Modify, D—— Delete。 注:内核版本 3.0.15,迅为iTop4412开发板 一、Linux I2C 体系结构 1.1 Linux I2C 体系结构的组成部分   Linux 的 I2C 体系结构分为3个组成部分: I2C核心、I2C总线驱动、I2C设备驱动 。 1.1.1 I2C 核心层   I2C 核心: drivers/i2c/i2c-core.c ,主要功能如下:   1) 注册一根 i2c 总线,以及虚拟 i2c 设备驱动;

Tiny210 I2C总线

夙愿已清 提交于 2019-12-20 03:39:46
1、i2c总线简介 I2C BUS(Inter IC BUS)是NXP推出的芯片间串行传输总线,它以2根连线实现了完善的双向数据传送,可以很方便地构成朵机系统和外围器件扩展系统。I2C总线的2根线(串行数据SDA,串行时钟SCL)连接到总线上的任何一个器件,每个器件都应有一个唯一的地址,而且都可以作为一个发送器或者一个接受器。此外,器件在执行数据传输时也可以被看作是主机或从机。 发送器:本次传送中发送数据(不包括地址和命令)到总线的器件。 接受器:本次传送中从总线接受数据(不包括地址和命令)的器件。 主机: 初始化发送、产生时钟信号和终止发送的器件,它可以是发送器或接受器。主机通常是微控制器。 从机: 被主机寻址的器件,它可以是发送器或接收器。 SDA和SCL都是双向线路。连接到总线的器件的输出级必须是漏级开路或集电极开路,都通过一个电流源或上拉电阻连接到正的电源电压,这样才能实现“线与”功能。当总线空闲时,这2条线路都是高电平。 在标准模式下,总线数据传输的速度为0-100kbit/s,在高速模式下,可以达到0-400kbit/s。总线速率与总线上拉电阻的关系:总线速率越高,总线上拉电阻要越小。100kbit/s总线速率,通常使用5.1k的上拉电阻。 2、数据传输格式 2.1、空闲状态 I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态

总线

若如初见. 提交于 2019-12-15 20:58:04
总线有三种:内部总线、系统总线和外部总线。内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连;而系统总线是微机中各插件板与系统板之间的总线,用于插件板一级的互连;外部总线则是微机和外部设备之间的总线,微机作为一种设备,通过该总线和其他设备进行信息与数据交换,它用于设备一级的互连。 除了总线外,还有一些接口,他们是多种总线的集合体,或者说来者不拒。 SPI SPI(Serial Peripheral Interface): MOTOROLA公司提出的同步串行总线方式。高速同步串行口。3~4线接口,收发独立、可同步进行。 因硬件功能强大而被广泛应用。在单片机组成的智能仪器和测控系统。如果对速度要求不高,采用SPI总线模式十个不错的选择。他可以节省I/O端口,提高外设的数目和系统性能。标准SPI总线由四根线组成:串行时钟线(SCK)、主机输入/从机输出线(MISO)、主机输出/从机输入线(MOSI)和片选信号(CS)。有的SPI接口芯片带有中断信号线或没有MOSI。 SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或者主设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。如果用通用IO口模拟SPI总线,必须要有一个输出口

I2C上拉电阻选择

空扰寡人 提交于 2019-12-14 01:12:44
在一些PCB的layout中,大家往往会看到在I2C通信的接口处,往往会接入一个4.7K的电阻,有的datasheet上面明确有要求,需要接入,有的则没有要求。 I2C接口 对于单片机来讲,有些IO内部的上拉电阻可以使能,这样就省去了外部的上拉电阻,这是对于单片机带有标准I2C通信协议接口,若是只带有模拟I2C协议接口,那么就需要考虑接入上拉电阻问题。下图是摄像头进行配置通信时SCL和SDA需要进行上拉电阻的连接。 在大多数情况下,由于I2C接口采用Open Drain机制,器件本身只能输出低电平,无法主动输出高电平,只能通过外部上拉电阻RP将信号线拉至高电平。因此I2C总线上的上拉电阻是必须的,如图1所示。 图1 因为I2C总线在空闲时必须拉高,只有是高的才能拉成低的,所以这是之所以规定空闲时必须为高的一个原因,要是保持“低”的话,那是不可能成为“多主”总线的。 其实I2C总线接口在工作时只会检测高低电平,他不会在乎有无上拉电阻的问题,所以总线必须满足时序要求。 上拉电阻的大小,会牵扯到两个问题,一个是功耗,一个是速度问题,两者是一个矛盾体。如果你想尽量提高速度,那么就牵涉到总线电容的问题,其实很容易理解,上拉电阻与总线的电容形成了RC,高速时将直接影响通讯!因为总线拉高时有个充电时间以及高电平的阀值

I2C接口开漏输出输入双向

十年热恋 提交于 2019-12-13 22:03:17
I2C接口 原创 朝辞暮见 发布于2018-06-13 19:45:25 阅读数 8265 收藏 展开 一、I2C总线协议内容 1. I2C总线引脚定义 SDA (I2C数据引脚) CLK (I2C数据引脚) 2. I2C 总线物理连接 I2C总线物理连接如下图所示,SDA和CLK连接线上连有两个上拉电阻,当总线空闲时,两根线均为高电平。连到总线上的任一器件输出的低电平,都将使总线的信号变低。 二、I2C总线的数据传送 1. 数据位的有效性规定 I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化 1 scl处于高电平的时候,如果sda处于低电平:传输数据0,sda处于高电平:传输数据1 2.在scl处于高电平的时候,sda用来传输数据,必须保持电平稳定 3.如果要产生数据即sda需要变化时,只能在scl处于低电平的时候 2. 起始和终止信号 SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。 1. 信号的发起和终止,由主机发起,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。 2. scl处于高电平的时候,sda由高->低的跳变, 表示发起传输,产生起始信号s, 如果低-

I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态

我与影子孤独终老i 提交于 2019-12-12 20:17:50
I2C总线基本工作原理:   以启动信号START来掌管总线,以停止信号STOP来释放总线;   每次通讯以START开始,以STOP结束;   启动信号START后紧接着发送一个地址字节,其中7位为被控器件的地址码,一位为读/写控制位R/W,R. /W位为0表示由主控向被控器件写数据,R/W为1表示由主控向被控器件读数据;   当被控器件检测到收到的地址与自己的地址相同时,在第9个时钟期间反馈应答信号;   每个数据字节在传送时都是高位(MSB)在前;      I2C总线写通讯过程:   1. 主控在检测到总线空闲的状况下,首先发送一个START信号掌管总线;   2. 发送一个地址字节(包括7位地址码和一位R/W);   3. 当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK);   4. 主控收到ACK后开始发送第一个数据字节;   5. 被控器收到数据字节后发送一个ACK表示继续传送数据,发送NACK表示传送数据结束;   6. 主控发送完全部数据后,发送一个停止位STOP,结束整个通讯并且释放总线;   总线信号分析    1. 总线空闲状态   I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态,即释放总线,由两条信号线各自的上拉电阻把电平拉高。   2.