I2C串行接口介绍
- 格式:pdf
- 大小:1.18 MB
- 文档页数:48
iic的接口标准
IIC(Inter-Integrated Circuit)是一种智能互连标准,它是
一种基于串行总线的接口电路,用于控制多个芯片之间的通信。
I2C接
口有很多优点,它的最大优势是允许多个芯片同时使用一条总线,这
样芯片数量可以被有效压缩,比如,可以把多个传感器和外围设备连
接到单个I2C上,然后所有设备都可以通过单个信号总线来收发数据。
I2C接口具有支持多种不同设备的能力,I2C接口支持的设备可以
在不同的总线频率下工作,设备的速率从10KHz到400KHZ不等。
从硬
件上来说,I2C接口只包含两根信号线:SDA(数据线)和SCL(时钟线),其中SDA用于传输数据,SCL用于传输时钟信号以确保数据的正
确发送和接收,并且I2C接口还可以使用内部电源,简化了外部设备
对电源的需求。
I2C接口也是一种低成本、易于维护的接口标准,所有设备都可以
通过简单的握手操作来发现其他设备,大大减少了开发者在硬件编程
过程中遇到的繁琐耗时的过程,并且I2C接口具有良好的容错性,因
此可以有效地防止数据收发的紊乱。
除了芯片间的通信标准,I2C接口还被广泛应用于其他类型的外部
设备,比如硬件传感器、外围芯片、小电磁阀等,I2C接口可以通过一
条线将许多传感器和外围芯片集中在一起,使得系统的功耗大大降低,同时可以为用户提供更加方便快捷的操作体验,将单板电脑和PCB板
设计融为一体,从而简化系统的结构,提升系统的稳定性。
【基本知识】I2C接⼝1.简介 I2C总线是PHILIPS公司推出的⼀种在电⼦通信控制领域常⽤的串⾏通信总线,是⼀种简单、双向通信、⼆线制、同步的串⾏总线,具有连接线少、控制简单、通信速率⾼等优点。
⽤数据线SDA和时钟线SCL构成通信线路,各器件可并联到总线上实现数据收发,器件间彼此独⽴,通过唯⼀的总线地址区分。
I2C标准速率为100kb/s,快速模式500kb/s 除了发送器和接收器外,在执⾏数据传输时,器件也可以被看作主器件(主机)或从器件(从机)。
主器件是⽤于启动总线传送数据,并产⽣时钟的器件,此时任何被寻址的器件均被认为是从器件(⼀主多从)。
在总线上主和从、发和收的关系取决于此时的数据传送⽅向,⽽不是恒定的。
如果主机要发送数据给从器件,则主机⾸先寻址从器件,然后主动发送数据⾄从器件,最后由主机终⽌数据传送;如果主机要接收从器件的数据,⾸先由主器件寻址从器件,然后主机接收从器件发送的数据,最后由主机终⽌接收过程。
在这种情况下,主机负责产⽣定时时钟和终⽌数据传送。
I2C总线的接⼝均为集电极开路(OC)或漏极开路(OD)的形式输出,其主要是为防⽌I2C总线上的信号混乱, I2C总线上的输出端没有安装上拉电阻时,只能输出低电平,如果需要保证I2C总线正常⼯作,就需要在I2C总线的输出端加上拉电阻R1和R2。
所有I2C设备的SDA或是SCL的端⼝连接到⼀块,如果任意⼀个I2C设备输出低电平都将控制I2C总线(即总线处于“忙”状态),即各I2C 设备的时钟串⾏线SCL是线“与”的关系,各I2C设备的数据串⾏线SDA也是线“与”的关系。
2.⼯作信号 默认状态(IDLE):当I2C不⼯作时,SDA和SCL都处于⾼电平; 开始传输(START):当 SCL保持为⾼电平,SDA由⾼电平变成低电平时表⽰传输开始(简写S); 停⽌传输(STOP):当 SCL保持为⾼电平,SDA由低电平变成⾼电平时表⽰传输结束(简写SP)。
米思齐i2c 参数米思齐(Misiqi)I2C参数详解I2C(Inter-Integrated Circuit)是一种双向二线制同步串行总线,它允许连接多个设备到单个总线上,并由一个主设备控制数据传输。
在米思齐(Misiqi)的设备或模块中,I2C接口被广泛应用,以实现设备之间的数据通信。
下面将详细介绍米思齐I2C的相关参数。
I2C地址:每个I2C设备都有一个唯一的地址,用于在总线上识别。
米思齐的设备通常会在其数据手册或规格说明书中提供其I2C地址。
这个地址是设备在总线上被寻址的依据。
数据格式:I2C通信通常使用8位或16位的数据格式。
米思齐的设备会明确指定其数据格式,以便正确地与设备进行通信。
通信速度:I2C通信的速度可以通过调整SCL(时钟线)的频率来改变。
米思齐的设备会指定其支持的I2C通信速度范围,以确保设备之间的兼容性。
电源要求:使用I2C接口的设备通常需要外部电源供电。
米思齐的设备会明确其电源要求,包括电压范围和电流消耗等。
通信协议:I2C通信遵循一定的协议规范,包括起始条件、数据传输、停止条件等。
米思齐的设备会遵循这些规范,以确保与其他I2C设备的兼容性。
寄存器映射:米思齐的I2C设备通常会有一系列的寄存器,用于配置和控制设备。
这些寄存器的地址和功能会在设备的数据手册中详细说明。
通信模式:I2C通信有两种模式:标准模式和快速模式。
米思齐的设备会根据其性能和需求选择适合的通信模式。
总的来说,了解米思齐I2C的相关参数对于正确使用和配置I2C设备至关重要。
在实际应用中,建议参考设备的数据手册或规格说明书以获取最准确和详细的信息。
linux系统i2c协议详解I2C总线概述I2C(两线接口)是一种串行通信协议,用于连接嵌入式系统中的集成电路(IC)。
它以其低成本、低功耗和高可靠性著称。
I2C总线需要两条双向信号线:串行数据线(SDA)和串行时钟线(SCL)。
这些信号线由一个主设备控制,可以与多个从设备通信。
I2C通信I2C通信由以下步骤组成:起始条件:主设备将SDA线下拉至低电平,同时保持SCL线为高电平。
设备地址:主设备发送7位或10位从设备地址,后跟一个读/写位。
数据传输:主设备和从设备交换数据。
停止条件:主设备将SDA线拉至高电平,同时保持SCL线为高电平。
主设备和从设备I2C总线上的设备分为两种:主设备和从设备。
主设备:发起通信并控制总线。
通常是主微控制器或处理器。
从设备:响应主设备请求并提供或接收数据。
可以是传感器、执行器或其他外围设备。
I2C寻址从设备通过唯一的7位或10位地址进行寻址。
地址的最高位表示是否可读/写,0表示写,1表示读。
I2C模式I2C协议支持以下模式:主写从读:主设备向从设备写入数据,然后从从设备读取数据。
主读从写:主设备从从设备读取数据,然后向从设备写入数据。
从读从写:两个从设备在主设备的监督下进行通信。
I2C传输速率I2C传输速率通常在10kbps到400kbps之间。
速率由主设备设置。
I2C错误检测I2C协议包含几个错误检测机制,例如校验和和超时。
这些机制有助于确保数据的可靠传输。
I2C应用I2C总线用于各种应用,包括:传感器和执行器接口EEPROM和闪存编程LED和LCD控制模拟-数字转换器(ADC)和数字-模拟转换器(DAC)接口电源管理时钟同步I2C优点I2C协议的优点包括:低成本:无需额外的硬件接口低功耗:仅使用两根信号线高可靠性:错误检测机制确保数据完整性容易使用:简单的协议易于实施广泛采用:支持广泛的设备和库I2C缺点I2C协议的缺点包括:数据速率低:与其他串行接口相比,数据速率较低主机限制:总线上只能有一个主设备总线无仲裁:在总线冲突的情况下,没有内置的仲裁机制有限的寻址范围:仅支持有限数量的设备地址I2C技术演进I2C协议正在不断发展,以满足新应用的需求。
i2c参数I2C(Inter-Integrated Circuit)是一种串行通信接口,可在多个设备之间进行数据传输。
它是由飞利浦公司(现在的恩智浦半导体)开发的,并已成为一种广泛应用于各种电子设备中的串行通信接口。
I2C接口使用两条线(SDA和SCL)进行通信。
SDA线用于数据传输,SCL线用于时钟同步。
I2C支持多主机和多从机的架构,可以连接多个设备并在它们之间进行数据交换。
每个设备在总线上具有唯一的地址,以便其他设备可以正确识别并与之通信。
I2C接口具有一些重要的参数,下面将对其中一些常见的参数进行解释:1.时钟频率(Clock Frequency): I2C总线的时钟频率是指在通信中数据在总线上的传输速率。
它通常以赫兹(Hz)为单位表示。
I2C总线的标准时钟频率有百分二十五千赫兹(25 kHz)、百分一百千赫兹(100 kHz)、百分四百千赫兹(400 kHz)等。
2.位传输(Bit Transfer):位传输指的是在一个时钟周期内传输一个数据位。
I2C接口中的数据传输是按位进行的,设备在每个时钟周期内发送或接收一个位。
3.起始条件(Start Condition):起始条件表示I2C通信开始时的状态。
起始条件是当SDA线上的电压在SCL线时钟信号为高电平时,SDA线上的从高电平切换到低电平。
4.停止条件(Stop Condition):停止条件表示I2C通信结束时的状态。
在停止条件下,SDA线上的电压由低电平切换到高电平,而SCL线保持高电平。
5.传输速率(Data Rate):传输速率指的是数据在总线上的传输速度。
在I2C通信中,传输速率也可以以字节为单位表示。
6.主机设备(Master Device):主机设备是I2C通信中发起数据传输的设备。
它负责生成时钟信号和控制总线上的其他设备进行数据传输。
7.从机设备(Slave Device):从机设备是I2C通信中接收数据的设备。
它从主机设备接收时钟信号,并在合适的时候发送或接收数据。
SPII2CUART三种串行总线协议及其区别SPI(Serial Peripheral Interface)是一种常见的串行总线协议,主要用于单片机和外部设备之间的通信。
SPI协议需要同时使用多个信号线,包括时钟信号、主从选择信号、数据输入信号和数据输出信号。
SPI协议是一种全双工的通信方式,数据可以双向传输。
SPI通信协议的特点包括以下几点:1.时钟信号:SPI协议中的设备之间使用了共享的时钟信号,时钟信号用于同步数据传输。
时钟信号由主设备控制,并且时钟频率可以根据需要调整。
SPI协议没有固定的时钟频率限制,可以根据实际需求进行调整。
2.主从选择信号:SPI协议中的从设备需要通过主从选择信号进行选择。
主设备通过拉低从设备的主从选择信号来选择与之通信的从设备。
可同时与多个从设备通信。
3.数据传输:SPI协议是一种由主设备控制的同步通信协议,数据在时钟的边沿上升移位。
主设备在时钟的上升沿将数据发送给从设备,从设备在时钟的下降沿将数据发送给主设备。
SPI协议的优势在于速度快、可靠性高,适合于需要高速传输的应用,如存储器、显示器驱动等。
I2C(Inter-Integrated Circuit)是一种常见的串行总线协议,主要用于集成电路之间的通信。
I2C协议仅需要两根信号线:序列时钟线(SCL)和串行数据线(SDA)。
I2C协议是一种半双工通信方式,数据只能单向传输。
I2C通信协议的特点包括以下几点:1.序列时钟线(SCL):SCL是在主设备和从设备之间共享的信号线,用于同步数据传输。
主设备通过拉高和拉低SCL来控制数据传输的时钟频率。
2.串行数据线(SDA):SDA负责数据的传输。
数据在SCL的上升沿或下降沿变化时,主设备或从设备将数据写入或读取出来。
3.地址寻址:I2C协议使用7位或10位的地址寻址,从设备可以根据地址进行选择。
I2C协议的优势在于可以连接多个设备,节省了引脚,适用于多设备之间的通信,如传感器、温度传感器、压力传感器等。
SPI、I2C、UART三种串⾏总线协议的区别和SPI接⼝介绍(转)SPI、I2C、UART三种串⾏总线协议的区别第⼀个区别当然是名字:SPI(Serial Peripheral Interface:串⾏外设接⼝);I2C(INTER IC BUS)UART(Universal Asynchronous Receiver Transmitter:通⽤异步收发器)第⼆,区别在电⽓信号线上:SPI总线由三条信号线组成:串⾏时钟(SCLK)、串⾏数据输出(SDO)、串⾏数据输⼊(SDI)。
SPI总线可以实现多个SPI设备互相连接。
提供SPI串⾏时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。
主从设备间可以实现全双⼯通信,当有多个从设备时,还可以增加⼀条从设备选择线。
如果⽤通⽤IO⼝模拟SPI总线,必须要有⼀个输出⼝(SDO),⼀个输⼊⼝(SDI),另⼀个⼝则视实现的设备类型⽽定,如果要实现主从设备,则需输⼊输出⼝,若只实现主设备,则需输出⼝即可,若只实现从设备,则只需输⼊⼝即可。
I2C总线是双向、两线(SCL、SDA)、串⾏、多主控(multi-master)接⼝标准,具有总线仲裁机制,⾮常适合在器件之间进⾏近距离、⾮经常性的数据通信。
在它的协议体系中,传输数据时都会带上⽬的设备的设备地址,因此可以实现设备组⽹。
如果⽤通⽤IO⼝模拟I2C总线,并实现双向传输,则需⼀个输⼊输出⼝(SDA),另外还需⼀个输出⼝(SCL)。
(注:I2C资料了解得⽐较少,这⾥的描述可能很不完备)UART总线是异步串⼝,因此⼀般⽐前两种同步串⼝的结构要复杂很多,⼀般由波特率产⽣器(产⽣的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,⼀根⽤于发送,⼀根⽤于接收。
显然,如果⽤通⽤IO⼝模拟UART总线,则需⼀个输⼊⼝,⼀个输出⼝。
第三,从第⼆点明显可以看出,SPI和UART可以实现全双⼯,但I2C不⾏;第四,看看⽜⼈们的意见吧!wudanyu:I2C线更少,我觉得⽐UART、SPI更为强⼤,但是技术上也更加⿇烦些,因为I2C需要有双向IO的⽀持,⽽且使⽤上拉电阻,我觉得抗⼲扰能⼒较弱,⼀般⽤于同⼀板卡上芯⽚之间的通信,较少⽤于远距离通信。
第四章I2C串行总线接口电路设计I2C(Inter-Integrated Circuit)是一种串行总线接口,广泛应用于各种电子设备中。
在本章中,我们将讨论如何设计一个I2C串行总线接口电路。
首先,我们需要了解I2C总线的基本原理。
I2C总线由两根线组成,即串行数据线(SDA)和串行时钟线(SCL)。
数据在SDA线上传输,而时钟信号在SCL线上传输。
每个设备都有一个唯一的7位地址,可以通过该地址在总线上寻址。
接下来,我们将介绍如何设计一个基本的I2C接口电路。
首先,我们需要一个主设备和一个或多个从设备。
主设备负责发送数据和控制总线的时钟信号,而从设备负责接收数据并响应主设备的命令。
在电路设计中,我们需要考虑以下几个关键点:1.I2C总线电平:I2C总线使用的是开漏输出,因此我们需要在总线上加上上拉电阻,将总线拉高至VCC电平。
同时,我们还需要确保总线上的电平向下兼容,以适应不同的设备。
2.I2C总线保护:由于I2C总线是一个共享总线,因此我们需要保护总线免受外部噪声和电磁干扰的影响。
我们可以通过使用滤波电容和抑制器来过滤掉噪声,并使用瞬态电压抑制器来保护总线免受电磁干扰。
3.I2C总线速率:I2C总线可以工作在不同的速率下,通常有标准模式(100kHz)和快速模式(400kHz)两种速率。
我们需要根据具体的应用需求选择合适的速率,并相应地配置主设备和从设备。
4.I2C总线电源:由于I2C总线上的设备可以使用不同的电源电压,我们需要确保电源电压的稳定性,并根据设备的要求为主设备和从设备提供适当的电源。
5.I2C总线延长:在一些特殊应用中,I2C总线的长度可能超过规定的最大长度(一般为一到两米)。
为了解决这个问题,我们可以使用I2C 总线延长器或者光电耦合器来实现远距离传输。
最后,我们需要对设计的I2C接口电路进行测试和验证。
我们可以使用示波器或逻辑分析仪来检查总线上的信号波形,并确保数据的准确传输和设备的正常通信。
I2C串行总线通信原理采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。
同时,系统的更改和扩充极为容易。
常用的串行扩展总线有:I2C (Inter IC BUS)总线、单总线(1-WIRE BUS)、SPI(Serial Peripheral Interface)总线等。
本章仅讨论I2C串行总线。
一、IIC概述IIC(Inter-Integrated Circuit)总线,许多文献写作I2C,主要用于同一电路板内各集成电路模块(IC)之间的连接。
IIC采用双向2线制串行数据传输方式,简化IC之间的通信连接。
IIC协议是PHILIPS公司于二十世纪八十年代初提出,其后,PHILIPS和其他厂商提供了种类丰富的IIC兼容芯片。
目前,IIC总线标准已经成为世界性的工业标准。
各大半导体公司推出了大量的带有IIC接口的芯片,如RAM、EEPROM、Flash ROM、A/D、D/A转换、LED/LCD驱动、I/O接口、实时时钟等。
二、IIC总线特点在硬件结构上,它采用数据(SDA)和时钟(SCL)两根线来完成数据的传输及外围器件的扩展,任何一个具有IIC总线接口的外围器件,不论其功能差别有多大,都具有相同的电气接口,因此都可以挂接在总线上,使其连接方式变得十分简单。
对各器件的寻址是软寻址方式,因此节点上没有必须的片选线,器件地址给定完全取决于器件类型与单元结构,这也简化了IIC系统的硬件连接。
另外IIC总线能在总线竞争过程中进行总线控制权的仲裁和时钟同步,并且不会造成数据丢失,因此由IIC总线连接的多机系统可以是一个多主机系统,支持多主控。
串行的8位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。
三、IIC总线的相关术语①主机(主控器):在IIC总线中,提供时钟信号,对总线时序进行控制的器件。
主机负责总线上各个设备信息的传输控制,检测并协调数据的发送和接收。
主机对整个数据传输具有绝对的控制权,其它设备只对主机发送的控制信息作出响应。
如果在IIC系统中只有一个MCU,那么由MCU担任主机。
②从机(被控器):在IIC系统中,除主机外的其他设备均为从机。
主机通过从机地址访问从机,对应的从机作出响应,与主机通信。
从机之间无法通信,任何数据传输都必须通过主机进行。
③地址:每一个IIC器件都有自己的地址,以供自身在从机模式下使用。
在标准的IIC中定义从机地址是7位(扩展IIC允许10位地址)。
④发送器:发送数据到总线的器件。
⑤接收器:从总线接收数据的器件。
⑥SDA(Serial DAta):串行数据线。
⑦SCL(Serial CLock):串行时钟线。
四、IIC总线工作原理下图给出一个由MCU作为主机,通过IIC总线带3个从机的单主机IIC总线系统。
这是最常用、最典型的IIC总线连接方式。
IIC系统由一条串行数据线SDA和一条串行时钟线SCL组成。
I2C总线通过上拉电阻接正电源。
当总线空闲时,两根线均为高电平。
连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。
上拉电阻一般为10k1、总线上数据的有效性规定IIC 总线是以串行方式传输数据,I 2C 总线进行数据传送时,从数据字节的最高位开始传送,每一个数据位在SCL 上都有一个时钟脉冲相对应。
时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
(一)、I 2C 总线的数据传送2、起始、终止信号和应答信号起始信号(START):如下图所示,当SCL为高电平时,SDA由高电平向低电平跳变,主机就向从机产生开始信号。
当总线空闲的时候,主机通过发送开始(START)信号建立通信。
停止信号(STOP):如下图所示,当SCL 为高电平时,SDA由低电平向高电平跳变,产生停止信号。
主机通过发送停止信号,结束数据通信。
起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态,其它器件不能再产生开始信号。
在终止信号产生后,总线就处于空闲状态。
连接到I2C总线上的器件,若具有I2C总线的硬件接口,则很容易检测到起始和终止信号。
应答信号:应答信号(A):接收数据的IC在接收到8位数据后,向发送数据的IC发出的低电平脉冲应答。
每一个数据字节后面都要跟一位应答信号,表示已收到数据。
应答信号在第9个时钟周期出现(scl=1),这时发送器必须在这一时钟位上释放数据线,由接收设备拉低SDA电平来产生应答信号。
所以,一个完整的字节数据传输需要9个时钟脉冲。
非应答信号:如果接收设备保持SDA的高电平则产生非应答信号。
如果从机作为接收方向主机发送非应答信号,这样,主机方就认为此次数据传输失败;如果是主机作为接收方,在从机发送器发送完一个字节数据后,发送了非应答信号,从机就认为数据传输结束,并释放SDA线。
不论是以上哪种情况都会终止数据传输。
应答信号由接收器产生,总线上带有IIC总线接口的器件很容易检测到这些信号。
3、数据传送格式I2C总线发送器送到SDA线上的每个字节必须为8位长,传送时高位在前,低位在后。
与之对应,主器件在SCL线上产生8个脉冲;第9个脉冲低电平期间,发送器释放SDA线,接收器把SDA线拉低,以给出一个接收确认位;每传1个字节需要9个时钟脉冲4、主机向从机读写数据的过程I2C总线上传送的数据信号是广义的,既包括地址信号,又包括真正的数据信号。
(1)主机向从机写入一个字节数据的操作过程STO PA 数据A 被访A 0从START W 应答主机写的一个字节数据主机要向从机写1个字节数据时,主机首先产生START信号,然后紧跟着发送一个从机地址,这个地址共有7位,紧接着的第8位是数据方向位(R/W),0表示主机发送数据(写),1表示主机接收数据(读),这时候主机等待从机的应答信号(A),当主机收到应答信号时,发送要访问的子地址,继续等待从机的应答信号,当主机收到应答信号时,发送1个字节的数据,继续等待从机的应答信号,当主机收到应答信号时,产生停止信号,结束传送过程。
(2)主机要从从机读出1个字节数据的操作过程ST A 数据A 1从机地址star A 被子地址A 0从star 应答信号应答信号R 主机读入的一个字节数据非应答信号主机要从从机读1个字节数据时,主机首先产生START信号,然后紧跟着发送一个从机地址,注意此时该地址的第8位为0,表明是向从机写命令,这时候主机等待从机的应答信号(A),当主机收到应答信号时,发送要访问的地址,继续等待从机的应答信号,当主机收到应答信号后,主机要改变通信模式(主机将由发送变为接收,从机将由接收变为发送)所以主机发送重新开始信号,然后紧跟着发送一个从机地址,注意此时该地址的第8位为1,表明将主机设置成接收模式开始读取数据,这时候主机等待从机的应答信号,当主机收到应答信号时,就可以接收1个字节的数据,当接收完成后,主机发送非应答信号,表示不再接收数据,主机进而产生停止信号,结束传送过程。
5、从机的寻址约定为了消除IIC总线系统中主控器与被控器的地址选择线,最大限度地简化总线连接线,IIC总线采用了独特的寻址约定,规定了开始信号后的第一个字节为寻址字节,用来寻址被控器件,并规定数据传送方向。
寻址字节的位定义D7~D1位组成从机的地址。
D0位是数据传送方向位,为“0”时表示主机向从机写数据,为“1”时表示主机由从机读数据。
主控器发送开始信号后,立即发送寻址字节,这时,总线上的所有器件都将寻址字节中的7位地址与自己器件地址比较。
如果两者相同,则该器件认为被主控器寻址,并发送应答信号,被控器根据读,写位确定自身是作为发送器还是接收器。
从机的地址由固定部分和可编程部分组成。
在一个系统中可能希望接入多个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。
如一个从机的7位寻址位有4位是固定位,3位是可编程位,这时仅能寻址8个同样的器件,即可以有8个同样的器件接入到该I2C总线系统中。
五、8051单片机模拟IIC总线通信协议一、典型信号模拟为了保证数据传送的可靠性,标准的I2C总线的数据传送有严格的时序要求。
I2C总线的起始信号、终止信号、应答发送“0”及非应答发送“1”的模拟时序:单片机在模拟IIC总线通信时,需要写出如下几个关键部分的程序:总线初始化、启动信号、应答信号、停止信号、写一个字节、读一个字节,下面结合前面的时序图及文字描述写出这些相应的子函数1、总线初始化Void init( ){SCL=1;SDA=1;delay( );//将总线拉高以释放总线}2 、起始信号Void T2CStart(void){SDA=1;SCL = 1;delay( );SDA = 0;delay();//scl高电平器件,sda一个下降沿启动信号}3、终止信号void Stop(void) {SDA = 0;SCL = 1;delay();SDA = 1;delay();}4、应答信号Void ack( ){uchar i;scl=1;while((sda==1)&&(i<200))i++;scl=0;delay( );}5、写入一个字节子函数void i2csend8bit(uchar date){uchar i, temp;temp=date;for(i=0;i<8;i++){temp=temp<<1;scl=0;// pay attention to the clock signdelay();sda=CY;delay();scl=1;delay();}scl=0;delay();sda=1;//r8位数据传送完之后要进行总线的释放 delay();}6、读出一个字节子函数uchar i2creceive8bit(void){uchar i, rec;scl=0;delay();sda=1;delay(); //we should release the bus before the receive beginnin g for(i=0;i<8;i++){scl=1;delay();rec=(rec<<1)|sda;//read in the sdascl=0;delay();}return(rec);}六、串行E2PROM AT24C02与单片机的通信六、串行E2PROM AT24C02与单片机的通信ATMEL公司的AT24C系列:AT24C01:128字节(128×8位);AT24C02:256字节(256×8位);AT24C04:512字节(512×8位)AT24C08:1K字节(1K×8位);AT24C16:2K字节(2K×8位);(2)写入过程AT24C系列E2PROM芯片地址的固定部分为1010,A2、A1、A0引脚接高、低电平后得到确定的3位编码。