I2C协议
I2C协议概述

I2C协议概述概述:I2C(Inter-Integrated Circuit)是一种串行通信协议,用于在集成电路(IC)之间进行数据传输。
它由飞利浦半导体(现在的恩智浦半导体)在1982年开发,并于1992年公开发布。
I2C协议被广泛应用于各种电子设备中,如计算机、手机、数字摄像机等。
一、协议特点:1. 硬件要求简单:I2C协议只需要两根线(SDA和SCL)进行数据传输,相对于其他串行通信协议来说,硬件要求较低。
2. 双向通信:I2C协议支持双向通信,主设备(Master)可以发送和接收数据,从设备(Slave)只能接收数据。
3. 多主设备支持:I2C协议允许多个主设备连接到同一条总线上,通过地址选择来确定通信对象。
4. 传输速率可变:I2C协议支持多种传输速率,最高可达到400Kbps。
5. 时钟同步:I2C协议使用时钟同步机制,确保数据传输的准确性。
二、协议格式:I2C协议的数据传输分为两种模式:地址模式和数据模式。
1. 地址模式:在地址模式下,主设备发送一个包含从设备地址和读/写位的字节,以选择通信对象。
地址模式的格式如下:[起始位] + [从设备地址(7位)+ 读/写位(1位)] + [应答位]- 起始位:始终为低电平,表示传输开始。
- 从设备地址:指定从设备的地址,由7位二进制数表示。
- 读/写位:指定主设备是要读取从设备的数据还是写入数据。
读取数据时为高电平,写入数据时为低电平。
- 应答位:由从设备发送,用于确认地址是否被接收。
2. 数据模式:在数据模式下,主设备和从设备之间进行数据传输。
数据模式的格式如下:[数据字节] + [应答位]- 数据字节:主设备发送或接收的数据,由8位二进制数表示。
- 应答位:由接收方发送,用于确认数据是否被接收。
三、协议流程:I2C协议的通信过程包括起始条件、地址传输、数据传输和停止条件。
1. 起始条件:通信开始时,主设备发送一个低电平的起始位,表示传输开始。
i2c通讯协议

i2c通讯协议1. 引言i2c通讯协议是一种用于连接集成电路的串行通信协议。
它被广泛应用于各种电子设备中,如传感器、存储器、数字转换器等。
i2c是一种简单、高效、可靠的通信协议,具有多主机、多从机的特性,适用于在复杂系统中实现设备之间的通信。
2. i2c通讯协议的基本特性i2c通讯协议具有以下几个基本特性:2.1. 串行通信i2c使用两根线进行通信,即SDA(串行数据线)和SCL(串行时钟线)。
通过在这两根线上传递高电平和低电平来实现数据传输。
2.2. 主从结构i2c通讯协议支持多主机、多从机的结构。
其中,主机是发起通信的设备,从机是被动响应的设备。
主机负责发送指令和接收数据,从机负责执行指令并返回数据。
2.3. 寻址机制i2c通讯协议使用7位或10位的地址来寻址从机。
每个从机都有一个唯一的地址,主机通过发送地址来选择与之通信的从机。
2.4. 时钟同步i2c通讯协议使用时钟来同步数据传输。
时钟由主机提供,从机根据时钟信号进行数据的读取和写入。
2.5. 数据传输方式i2c通讯协议支持两种数据传输方式:字节传输和块传输。
字节传输是指一次只传输一个字节的数据,块传输是指一次传输多个字节的数据。
2.6. 起始和停止条件i2c通讯协议使用起始和停止条件来标识一次通信的开始和结束。
起始条件是SDA从高电平切换到低电平,而SCL保持高电平。
停止条件是SDA从低电平切换到高电平,而SCL保持高电平。
3. i2c通讯协议的使用步骤使用i2c通讯协议进行设备间通信的步骤如下:3.1. 初始化在通信开始之前,需要对i2c总线进行初始化配置。
这包括设置主机的地址模式(7位或10位)、设置时钟频率等。
3.2. 起始条件主机发送起始条件,即SDA从高电平切换到低电平,而SCL保持高电平。
这表示通信的开始。
3.3. 选择从机主机发送从机的地址以选择与之通信的设备。
地址的发送方式与地址模式有关,可以是7位或10位。
3.4. 数据传输主机发送指令和数据给从机,从机执行指令并返回数据给主机。
iic协议讲解

iic协议讲解
IIC(I2C)是一种用于在电子设备之间进行通信的串行通信协议。
IIC全称是Inter-Integrated Circuit,通常也称作I2C(Inter-IC,简称2-wire)。
由飞利浦(Philips)公司在20世纪80年代初开发并发布。
IIC协议使用双线制(SDA和SCL线)进行通信,其中SDA (Serial Data Line)是数据线,负责发送和接收数据;SCL(Serial Clock Line)是时钟线,用于同步数据传输。
这两条线都是双向的,可以通过连接多个设备实现多主控制。
在IIC协议中,有两种主要的设备,分别是主设备和从设备。
主设备负责发起和控制总线上的通信,而从设备则接受和执行主设备的请求。
从设备可以是各种外设,如传感器、存储器等。
IIC协议的通信过程包括起始信号、地址传输、数据传输和停止信号。
起始信号和停止信号是用于标志一次通信的开始和结束。
在起始信号和停止信号之后是8位的地址传输,其中最高位是设备地址,用于标识目标设备。
地址传输之后是数据传输阶段,可以发送或接收多个字节的数据。
IIC协议还支持两种传输模式,分别是7位地址模式和10位地址模式。
在7位地址模式下,可以有128个不同的设备地址,而在10位地址模式下,可以有1024个不同的设备地址。
总的来说,IIC协议是一种灵活简洁的串行通信协议,广泛应用于各种电子设备之间的通信。
它简化了硬件连接,提供了可靠的数据传输和多主控制的能力,同时也具有较低的通信成本。
iic通信协议

iic通信协议I2C通信协议(I2C protocol),全称Inter-Integrated Circuit,是一种串行通信协议,常用于连接电子设备(如传感器、存储器和其他外设)之间的数据传输。
I2C协议最早由飞利浦半导体(现在的恩智浦半导体)在1982年提出,目前已成为电子设备之间最流行的通信协议之一。
I2C通信协议的特点之一是使用了两根传输线(SDA和SCL),简化了设备之间的连接,并且可以同时连接多个设备。
其中,SDA(Serial Data Line)用于传输数据,SCL(Serial Clock Line)用于同步设备之间的时钟信号。
这种双线的设计使得多个设备可以在同一条总线上进行通信,同时还能够实现主设备(Master)和从设备(Slave)之间的数据传输。
在I2C协议中,通信始于主设备向从设备发起一个开始条件(Start condition)。
主设备发送一个地址字节给从设备,这个地址字节由从设备的地址和读写位组成。
地址字节的最高位为0表示写操作,为1表示读操作。
从设备会检测收到的地址是否与自己的地址相匹配,如果匹配成功,则将执行后续的操作,否则从设备将忽略后续的操作。
在开始条件之后,主设备和从设备可以通过交替发送数据和确认信号(ACK)来完成数据的传输。
每个数据字节的传输都由8个时钟周期组成,其中第一个时钟周期用于传输起始位,接下来的8个时钟周期用于传输数据位和ACK位。
接收设备在成功接收完8个数据位之后,会发送ACK位来确认数据的接收,发送设备在接收到对应的ACK位之后才会继续发送下一个数据字节。
传输完成后,主设备通过发送停止条件(Stop condition)来结束通信。
I2C通信协议还具有寻址灵活、速度可调节等特点。
对于设备地址的寻址,I2C协议支持7位和10位两种方式,使得可以连接大量的设备。
此外,通信速度可以根据系统需求进行调节,最高可以达到400kbps。
如果在需要更快的速度下进行通信,可以使用高速模式(Fast Mode)或超高速模式(High-Speed Mode),其速度分别可以达到1Mbps和3.4Mbps。
I2C通讯协议

I2C通讯协议协议名称:I2C通讯协议一、引言I2C(Inter-Integrated Circuit)通讯协议是一种串行通讯协议,用于在集成电路(IC)之间进行数据传输。
本协议旨在定义I2C通讯的标准格式和规范,以确保不同设备之间的互操作性和数据传输的可靠性。
二、定义和缩写词1. I2C总线:用于连接不同设备的双线制串行通讯总线。
2. 主设备(Master):控制I2C总线并发起数据传输的设备。
3. 从设备(Slave):响应主设备请求并进行数据传输的设备。
4. SDA:串行数据线,用于传输数据。
5. SCL:串行时钟线,用于同步数据传输。
6. START:主设备发起数据传输的起始信号。
7. STOP:主设备结束数据传输的终止信号。
8. ACK:从设备发送的应答信号,表示数据传输成功。
9. NACK:从设备发送的非应答信号,表示数据传输失败。
三、协议规范1. 物理连接a. I2C总线由一对双向线路组成:SDA和SCL。
b. SDA和SCL线由上拉电阻连接到VCC电源线。
c. 主设备和从设备通过SDA和SCL线连接。
2. 信号传输a. 通信始于主设备发送START信号,结束于主设备发送STOP信号。
b. 数据传输以字节为单位进行,每个字节由8位数据组成。
c. 数据传输的起始和终止由START和STOP信号标识。
d. 数据传输的时钟由SCL线上的脉冲控制。
e. 数据传输过程中,SDA线上的数据在SCL上升沿之前稳定。
3. 寻址a. 主设备发送设备地址和读/写位来选择要通信的从设备。
b. 设备地址由7位二进制数表示,最高位为0表示写操作,为1表示读操作。
4. 数据传输a. 主设备发送数据时,数据位由高位到低位依次发送。
b. 从设备接收数据时,数据位由高位到低位依次接收。
c. 主设备和从设备在每个字节传输后都会发送ACK信号。
d. 数据传输完毕后,从设备发送ACK信号表示数据接收成功。
5. 错误处理a. 如果主设备在发送数据位后未接收到ACK信号,则表示数据传输失败。
i2c协议

i2c协议1. 简介I2C(Inter-Integrated Circuit)是一种串行通信协议,最初由Philips公司开发,用于在低速设备之间进行通信。
它是一种简单而又有效的通信协议,常被用于连接各种外设,如传感器、显示屏、存储器等。
2. 基本原理I2C协议基于两根总线线路:SDA(Serial Data Line)和SCL(Serial Clock Line)。
SDA线用于数据传输,SCL线用于时钟同步。
在I2C总线上,可以同时连接多个设备,每个设备都有一个唯一的地址。
数据传输是以字节为单位进行的,每个字节都由8个位表示。
在I2C通信中,主设备(master)和从设备(slave)的角色是固定的。
主设备负责发起通信,并控制总线上的时钟信号。
从设备则根据主设备的指令进行响应。
3. 信号传输I2C协议中的信号传输主要分为两种类型:地址传输和数据传输。
3.1 地址传输地址传输用于确定通信的目标设备。
在开始一次通信时,主设备首先发送一个起始信号(Start),然后发送包含目标设备地址和读写方向的字节。
目标设备根据其地址来判断是否需要响应当前通信。
如果地址匹配成功,目标设备会发送一个应答信号(Acknowledge,简称ACK),表示准备好进行数据传输。
如果地址匹配失败或目标设备忙碌,目标设备会发送一个非应答信号(Not Acknowledge,简称NACK)。
3.2 数据传输数据传输是在地址传输成功后进行的。
主设备发送数据或指令时,目标设备必须发送一个应答信号(ACK)作为确认;而当目标设备向主设备传输数据时,主设备则需要发送一个应答信号(ACK)。
数据传输时,每个数据字节都会在时钟的边沿进行传输。
主设备发送数据时,每个数据位都会在时钟的下降沿稳定,目标设备则在时钟的上升沿开始读取数据。
数据传输完成后,主设备会发送一个停止信号(Stop)来结束本次通信。
4. 速度和模式I2C协议支持不同的速度和模式,这取决于设备的类型和要求。
I2C协议概述

I2C协议概述一、引言I2C(Inter-Integrated Circuit)是一种串行通信协议,用于在集成电路(IC)之间进行数据传输。
该协议由飞利浦公司(现在的恩智浦半导体)于1982年开发,旨在解决多个IC之间的通信问题。
I2C协议广泛应用于各种领域,包括电子设备、嵌入式系统、工业自动化等。
二、协议特点1. 硬件简单:I2C协议只需要两根线路(SDA和SCL)进行通信,减少了硬件成本和复杂度。
2. 主从结构:I2C通信中,存在一个主设备和多个从设备。
主设备负责发起通信请求,而从设备则被动响应。
3. 串行传输:I2C协议采用串行传输方式,通过时钟信号同步数据传输。
4. 双向通信:I2C协议支持双向通信,主设备可以发送数据给从设备,同时也可以接收从设备发送的数据。
三、协议格式I2C协议的数据传输分为两种模式:传输模式和地址模式。
1. 传输模式在传输模式下,主设备向从设备发送数据或者从设备接收数据。
传输模式的格式如下:- 起始位(Start Bit):主设备发送一个低电平信号作为起始位。
- 从设备地址(Slave Address):主设备发送从设备的地址,标识要进行通信的从设备。
- 读/写位(Read/Write Bit):主设备发送一个位来指示是读操作还是写操作。
- 应答位(Acknowledge Bit):接收设备发送一个应答位,表示是否成功接收数据。
- 数据字节(Data Byte):主设备发送或接收的数据字节。
- 应答位(Acknowledge Bit):接收设备再次发送一个应答位。
2. 地址模式在地址模式下,主设备向从设备发送地址信息,以确定要与哪个从设备进行通信。
地址模式的格式如下:- 起始位(Start Bit)- 从设备地址(Slave Address)- 应答位(Acknowledge Bit)四、时序图以下是I2C协议的时序图,以便更好地理解协议的工作流程。
(时序图内容可以根据实际情况进行编写和插图)五、应用案例I2C协议在各种领域都有广泛的应用。
i2c通信协议

i2c通信协议I2C通信协议一、简介I2C (Inter-Integrated Circuit),即集成电路互连,是用于在集成电路之间进行通信的串行通信协议。
它是由Philips(飞利浦)公司于1982年提出,并在当今的电子设备中广泛应用。
I2C通信协议采用两根总线:串行数据线SDA(Serial Data Line)和串行时钟线SCL(Serial Clock Line)。
不同于其他协议,I2C通信协议具有简单、节约外设引脚的特点,被广泛应用于各种嵌入式系统中,如传感器、温度计、数字信号处理器等。
二、基本原理在I2C通信协议中,设备之间的通信通过主从关系进行。
主设备负责生成时钟信号和控制总线的传输,从设备则根据主设备的请求进行响应。
主设备和从设备之间的通信是基于传输一个字节数据的方式进行的。
传输的字节数据由一个起始位、八位数据位、一个奇偶校验位和一个停止位组成。
信息按照从高位到低位的顺序传输,同时由时钟信号进行同步。
三、通信过程I2C通信协议的通信过程主要包括起始信号、地址传输、数据传输和停止信号四个阶段。
1. 起始信号起始信号由主设备产生,用于标识接下来的通信过程开始。
起始信号的产生是通过将数据线(SDA)从高电平切换到低电平时完成的。
在通信开始之前,主设备需要发送起始信号来获取总线控制权。
2. 地址传输主设备在发送起始信号后,紧接着发送一个I2C从设备的地址。
地址由7位或10位组成,其中7位地址方式是I2C通信协议最常用的方式。
地址中的最高位表示对从设备进行读取(1)或写入(0)操作。
通过这个地址,主设备可以选择与特定从设备进行通信。
3. 数据传输地址传输完成后,主设备和从设备之间的数据传输开始。
数据的传输顺序是从高位到低位。
主设备向从设备传输数据时,从设备通过拉低SDA线来接收数据。
从设备向主设备传输数据时,主设备必须确认数据的接收情况,操作是保持SDA线为高电平。
4. 停止信号通信结束时,主设备发送停止信号,用于标示通信过程的结束。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
I2C总线串行接口应用设计I2C是一种较为常用的串行接口标准,具有协议完善、支持芯片较多和占用I/O线少等优点。
I2C总线是PHILIPS公司为有效实现电子器件之间的控制而开发的一种简单的双向两线总线。
现在,I2C总线已经成为一个国际标准,在超过100种不同的IC集成电路上实现,得到超过50家公司的许可,应用涉及家电、通信、控制等众多领域,特别是在ARM嵌入式系统开发中得到广泛应用。
1 实例说明本实例介绍I2C总线接口在ARM中的应用,以及它在ARM平台中的I/O交互拓展能力。
在ARM嵌入式系统开发中,系统和外围设备的信息交换能力非常重要。
传统的方式多采用地址和数据总线来完成,但是由于嵌入式系统总线资源的限制,利用有限的I/O接口和足够的通信速度来扩展多功能的外围器件就显得十分必要。
I2C总线正好可以满足这一嵌入式系统设计的需要。
在嵌入式系统中应用I2C总线,可以在很大程度上简化系统结构,模块化系统电路,而I2C总线上各节点独立的电气特性也可以使整个系统具有最大的灵活性。
2 I2C设计原理2.1 12G主从模式I2C采用两根I/O线:一根时钟线(SCL串行时钟线),一根数据线(SDA串行数据线),实现全双工的同步数据通信。
I2C总线通过SCL/SDA两根线使挂接到总线上的器件相互进行信息传递。
ARM通过寻址来识别总线上的存储器、LCD驱动器、I/O扩展芯片及其他I2 C总线器件,省去了每个器件的片选线,因而使整个系统的连接极其简洁。
总线上的设备分为主设备(ARM处理器)和从设备两种,总线支持多主设备,是一个多主总线,即它可以由多个连接的器件控制。
典型的系统构建如图15-1所示。
每一次I2C总线传输都由主设备产生一个起始信号,采用同步串行传送数据,数据接收方每接收一个字节数据后都回应一个应答信号。
一次I2C总线传输传送的字节数不受限制,主设备通过产生停止信号来终结总线传输。
数据从最高位开始传送,数据在时钟信号高电平时有效。
通信双方都可以通过拉低时钟线来暂停该次通信。
2.2 I2C工作原理SDA和SCL都是双向线路,各通过一个电流源或上拉电阻连接到正的电源电压。
当总线空闲时这两条线路都是高电平,连接到总线的器件输出必须是漏极开路或集电极开路才能执行线与的功能。
I2C总线上数据的传输速率在标准模式下可达100kb/s,在快速模式下可达400kb/s,在高速模式下可达3.4Mb/s。
连接到总线的接口数量由总线电容是400pF的限制决定。
图15-2(a)显示了I2C总线上的数据稳定规则,SCL为高电平时SDA上的数据保持稳定,SCL为低电平时允许SDA变化。
如果SCL处于高电平时,SDA上产生下降沿,则认为是起始位,SDA上的上升沿认为是停止位。
通信速率分为常规模式(时钟频率100kHz)和快速模式(时钟频率400kHz)。
同一总线上可以连接多个带有I2C接口的器件,每个器件都有一个唯一的地址,既可以是单接收的器件,也可以是能够接收发送的器件。
图15-2(b)显示了I2C总线的起始位和停止位。
每次数据传输都是以一个起始位开始,而以停止位结束。
传输的字节数由ARM控制和决定,没有限制。
最高有效位将首先被传输,接收方收到第8位数据后会发出应答位。
数据传输通常分为两种:主设备发送从设备接收和从设备发送主设备接收。
这两种模式都需要主机发送起始位和停止位,应答位由接收方产生。
从设备地址一般是1或2个字节,用于区分连接在同一I2C上的不同器件。
3 I2C硬件电路设计3.1 I2C串口存储器在嵌入式系统中会用到各种带I2C接口的芯片,这里以I2C串口存储器CSl 24WC256为例,说明I2C电路在ARM嵌入式系统中的应用。
CSl24WC256是美国CAllALXST公司的一款芯片,是一个256K位支持I2c总线数据传送协议的串行CMOS串口存储器,可用电擦除,可编程自定时写周期(包括自动擦除时间不超过10ms,典型时间为5ms),具有64字节数据的页面写能力。
串行存储器一般具有两种写入方式,一种是字节写入方式,另一种是页写入方式。
允许在一个写周期内同时对1个字节到一页的若干字节的编程写入,1页的大小取决于芯片内页寄存器的大小。
先进的CMOS技术实质上降低了器件的功耗,可在电源电压低到1.8V的条件下工作,等待电流和额定电流分别为0和3mA,特有的噪声保护施密特触发输入技术,可保证芯片在极强的干扰下数据不丢失。
芯片管脚排列图如图15-3所示,其管脚功能描述如表15-l所示。
其中:·SCL:串行时钟。
输入管脚,用于产生器件所有数据发送或接收的时钟。
·SDA:串行数据/地址。
双向传输端,用于传送地址和所有数据的发送或接收。
它是一个漏极开路端,因此要求接一个上拉电到Vcc端(典型值为100kHz时为10K,400kHz时为lK)。
对于一般的数据传输,仅在SCL为低期间SDA才允许变化;在SCL为高期间变化,留给指示Start(开始)和Stop(停止)条件。
·AO/A1/A2:器件地址输入端。
这些输入端用于多个器件级联时设置器件地址,当这些脚悬空时默认值为空。
·WP:写保护。
如果WP管脚连接到Vcc,则所有的内容都被写保护(只能读):当 WP管脚连接到Vss或悬空时,则允许器件进行正常的读/写操作。
3.2电路原理图如图15-4所示为串行存储器电路原理图,具有串行存储的功能,速率为10 0kHz,所R2/R3为IOK。
如果将编码开关任一位打开,则对应的地址线为“l”;如果将编码开关任一位闭合则对应的地址线就为“0”。
4软件设计4.1 I2C读写过程设计ARM在系统中一直作为主设备,所以在I2C总线中只有主发送和主接收两种操作方式。
在系统初始化时,由指令控制CPU送出相关的数据,经接口送到I2C 寄存器内。
通过初始化这些寄存器,可以实现I2C总线的主模式控制,以及实现I2C总线上的从设备读写。
当主设备和其中的一个从设备交换数据时,主设备首先发出一个启动Start信号,这个信号被所有的从设备接收。
即从设备准备接收CPU的信号,然后主设备再发出它要通信的从设备地址。
接下来,所有的从设备将收到的这个地址和它们自己的地址进行比较。
如果收到的地址和它们自己的地址不同,则什么都不做,只是等待主设备发出停止stop信号;如果收到的地址和它自己的地址相同,它就发出一个信号给主设备,这个信号称为应答Acknowledge信号。
当主设备收到应答信号后,它就开始向从设备发送数据或者从从设备接收数据。
当所有操作都进行完毕时,主设备发出一个Stop信号,通信完毕,释放I2C总线;然后所有的从设备都等待下一次Start信号的到来。
而在I2C串口存储器中,主要涉及的是读和写过程。
读写流程图如图15-5所示。
1.写过程(1)上电后等待一个延时(1ms)。
(2)器件寻址,给一个起始信号(SCL为高电平时SDA给一个下降沿)。
发送从器件地址,高5位为10110,然后根据A1/A0(如果和器件的地址相同则那个器件会应答)进行读/写控制(O为读)。
(3)应答,器件在SCL的第9个周期时SDA给出一个低电平,作为应答信号。
(4)开始写有两种模式:字节写模式和页写模式。
·字节模式:给出A15~A8应答,给出A7~A0应答;然后给出DATA和停止信号 (SCL为高电平时,SDA给出一个上升沿),接着要等待一个擦写时间。
·页写模式:给出地址以后连续给出64个数据。
如果多于64个数据,则地址计数器自动翻转。
(如果少于64昵,估计是没有问题的,但是需要实验验证。
)(5)判断擦写操作是否完毕的一个方法(应答查询),如果器件还处于擦写状态,则不会应答器件寻址;如果有应答,则说明擦写完毕。
2.读过程(1)上电以后等待一个延时(lms)。
(2)器件寻址。
(3)应答。
(4)开始读有三种模式:立即当前地址读、选择/随机读、连续读。
·立即当前地址读:如果上次读/写的操作地址为N,则现在是N+1。
不需要ACK,但是需要Stop信号。
·选择/随机读:先伪写(用于给出一个地址),然后再次启动,读取数据。
·连续读:读取一个以后给一个应答,这样器件会再给出下一个地址的数据内容。
(5)开始数据传输Start后、停止数据传输Stop前,SCL高电平期间,SDA 上为有效数据。
4.2程序代码说明以下是I2C函数的程序代码,其中DataBuff为读写数据输入/输出缓冲区的首址,ByteQuantity为要读写数据的字节数量,Address为I2C串口存储器片内地址,ControlByte为I2C串口存储器的控制字节,具体形式为(1)(0)(1)(O)(A 2)(A1)(A0)(E/W)。
其中R/W=1表示读操作,R/W=0为写操作。
ERRORCOUNT为允许最大次数,若出现ERRORCOUNT次操作失效,则函数中止操作,并返回1。
SDA和SCL由用户自定义。
此程序设计时考虑了通用性,与ARM CPU无关,与ARM速度也无关。
时序的等待时间严格按照芯片文档上描述的,定义在I2C.h文件中。
使用时只需要定义SCL和SDL的引脚,以及I2C使用的电压(修改ⅡC_v宏定义)。
5实例总结I2C总线硬件电路结构简单,符合系统设计向小型化低功耗方向发展的趋势。
在其软件方面,由于使用平台模式的ⅡC软件包,保证了在较短的时间内开发出高稳定性的驱动程序。
同一总线上可以连接多个带有I2C接口的器件,每个器件都有一个惟一的地址,既可以是单接收的器件,也可以是能够接收发送的器件。
发送器或接收器可以在主模式或从模式下操作,这取决于芯片是否必须启动数据的传输还是仅仅被寻址。
本章以I2C串口存储器为例,给出了在ARM平台中I2C总线的软硬件实现方法,软件设计上I2C总线读和写模块的函数流程图,以及具体驱动程序的设计。
实验证明,I2C总线能很好地扩展ARM系统的I/O交互能力。
在设计I2C串口存储器时需注意以下几点问题。
·SCL不能太快,这只要限制高低电平的时间就可以了。
·Start信号需要建立和保持一段时间。
·Stop信号需要一定的建立时间,之后就是总线空闲时间。