1、I2C 总线规范总线规范I2C应用实例 小型视频记录器(硬盘录像机)视频记录器原理视频记录器原理 CCIR-656数字视频总线数字视频总线 I2C控制总线控制总线模拟视频模拟视频数字视频数字视频FIC8120与视频与视频A/D接口接口I2C总线总线FIC8120与视频与视频A/D接口接口CCIR-656 数字视频总线数字视频总线I2C总线总线什么是什么是I2CnI2C,即Inter IC,是Philips一种简单的双向两线总线,用于IC之间的信息通信nI2C只有两根信号线,因此最大程度简化了芯片之间的连接,使电路板的设计、制造更简单nI2C常用于处理器与外部控制器、处理器与串行存储器、甚至处理
2、器与处理器之间的信息(命令)交互I2C常用术语常用术语术语术语描述描述发送器发送器发送数据到总线的器件接收器接收器从总线接收数据的器件主机主机初始化发送产生时钟信号和终止发送的器件从机从机被主机寻址的器件多主机多主机同时有多于一个主机尝试控制总线但不破坏报文仲裁仲裁是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使报文不被破坏的过程同步同步两个或多个器件同步时钟信号的过程I2C特点特点n总线只有两个信号:SDA和SCLnI2C是一个多主设备总线,具有总线仲裁机制n总线上每个从设备具有唯一的地址,主设备根据地址选择操作的目的设备n总线定义三种传输速率:标准模式下可达100kbit/s
3、;快速模式下可达400kbit/s;高速模式下可达3.4Mbit/sn片上滤波器可以滤去数据线上的毛刺,提高数据传输的可靠性n同一I2C总线上可以挂接的芯片数量只受到总线400pF最大负载电容限制I2C信号信号nI2C总线由两个信号组成:SCL(串行时钟)和SDA(串行数据)nSDA和SCL都是双向信号,电路中通过电阻上拉到正电源,总线空闲时都是高电平nSDA的数据位在SCL的同步下传输n同一I2C总线上各节点的SDA、SCL输出都是集电极开路(OC)或漏极开路(OD)的,信号具有“线与”功能补充:补充:OC与与OD线与:线与:多个多个OC/OD门输出连在一起,其中一个为低,所有的都为低门输出
4、连在一起,其中一个为低,所有的都为低I2C总线信号连接原理总线信号连接原理 I2C拓扑结构拓扑结构I2C电路实例电路实例CPU视频视频A/D串行串行EEPROMI2C总线数据位传输总线数据位传输nI2C是串行数据总线,SCL每个时钟周期传输一个数据位n数据传输过程中,SDA信号只有在SCL为低电平时才允许改变n数据传输过程中,SCL为高电平时,SDA必须保持稳定状态I2C总线的起始与停止总线的起始与停止n空闲状态下,SCL和SDA都为高nSCL为高,SDA由高变低,表示传输起始nSCL为高,SDA由低变高,表示传输结束nSTART和STOP总是由Master发出nSTART发出后,I2C 进入
5、busy状态,STOP发出后,I2C进入free状态STARTSTOPI2C总线的设备寻址总线的设备寻址nI2C总线从设备都有特定的地址,主设备根据地址寻址目标设备n主设备的身份不是固定的,主设备也可能作为从设备被别的主设备寻址nI2C总线两种地址形式:7位地址和10位地址 nI2C地址由I2C总线委员会统一分配 I2C的7位设备地址n7位地址中,其中设备可实际使用的共有112个,有两组(0000 xxx和1111xxx)共16个地址被保留作为特殊用途 从设备地址从设备地址R/W#说明说明0000 0000广播呼叫地址广播呼叫地址0000 0001起始字节起始字节0000 001xCBUS地址
6、地址0000 010 x保留给不同的总线格式保留给不同的总线格式0000 011x保留到将来使用保留到将来使用0000 1xxx高速模式主设备码高速模式主设备码1111 1xxx保留给将来使用保留给将来使用1111 0 xxx10位地址扩展位地址扩展I2C的7位与10位设备地址7位地址位地址10位地址位地址I2C的数据传输的数据传输n一个字节8个二进制位,MSB在前,LSB在后,按位传输n每个字节后都要有一个应答位,应答由接收器发出n如果SLAVE因事(如处理中断)不能收/发下一个完整的字节,可将SCL拉到低电平,从而使Master进入等待状态I2C数据传输应答数据传输应答n时钟由master
7、发出n响应脉冲期间,发送器释放SDA(置为高)n响应脉冲期间,接收器把SDA置为低I2C设备寻址设备寻址n起始命令之后,master紧跟着发出控制字节,其中包含slave地址和读写控制信息STARTSTOP 地址地址 读读/写写 应答应答数据数据1 应答应答数据数据2 应答应答I2C可能的数据传输格式可能的数据传输格式1n主机发送器发送到从机接收器传输的方向不会改变I2C可能的数据传输格式可能的数据传输格式2n在第一个控制字节后,主机立即读从机数据。在第一次响应后,主机发送器变成主机接收器,从机接收器变成从机发送器第一次响应仍由从机产生。I2C可能的数据传输格式可能的数据传输格式3n复合格式:
8、传输改变方向的时侯起始条件和从机地址都会被重复,但R/W 位取反读写方向改变读写方向改变I2C的同步时钟的同步时钟n所有主机在SCL 线上产生它们自己的时钟来传输I2C 总线上的报文n数据只在时钟的高电平周期有效n不同device的SCL信号通过线与连接I2Cmaster 2 时钟时钟SCL实际状态实际状态master 1 时钟时钟I2C的仲裁的仲裁nI2C没有中央主机,总线也没有任何定制的优先权 n主机只能在总线空闲的时侯启动传送 n当SCL 线是高电平时,仲裁在SDA 线发生;在其他主机发送低电平时,发送高电平的主机将断开它的数据输出级,因为总线上的电平与它自己的电平不相同 主设备主设备1
9、主设备主设备2实际实际总线总线信号信号I2C应用实例应用实例24C01 n嵌入式系统中广泛应用串行EEPROMn24Cxx是一个I2C接口串行EEPROM系列n24Cxx 包括:24C01(128B)、24C02(256B)、24C04(512B)、24C08(1024B)、24C16(2048B)n下面以24C01为例进行讨论 24C01 S-EEPROM引脚名称引脚名称功能功能说明说明VCC芯片的电源引脚工作电压范围宽,如1.8V5.5V,不同厂家产品可能略有差别VSS信号地SCLI2C总线时钟信号24C01是I2C总线上可读、可写的从设备SDAI2C总线数据信号WP芯片写保护信号WP为高
10、电平时,芯片被设置为写保护状态,只能读,不能写A0、A1、A2芯片I2C地址设置对应着芯片I2C地址的低三位,没有外部连接时默认为“0”24C01地址设置n24C01芯片I2C地址的高4位固定为“1010”n通过A0A2设置I2C地址的低三位 nA0A2在没有外部连接时默认为“0”,若A0、A1、A2三个引脚悬空,这时芯片的7位I2C地址为“1010000”n通过对A0A2的设置,一个I2C总线上最多可挂接8个24C01芯片 1 10 01 10 0A A2 2A A1 1A A0 0R R/W W#M MS SB BL LS SB B固固定定高高4 4位位地地址址可可设设置置低低3 3位位地
11、地址址24C01字节写操作字节写操作 n24C01有两种写模式:“字节写字节写”和“页写页写”n在“字节写”模式下,I2C主设备(如微处理器)首先发出起始条件和24C01(从设备)的7位地址及读写标志位(此时该位为“0”)n主设备收到24C01的响应位后,再向24C01发出8位需要写入数据的字节地址 n主设备收到24C01另一个响应位后,发出要写入的数据 n24C01再次发出响应位,随后主设备产生停止条件 n而24C01开始内部数据的擦写,在内部擦写过程中,24C01不再响应主设备的任何操作 24C01字节写操作过程字节写操作过程24C01页写操作页写操作n“页写”模式下,24C01可一次写入
12、8 个字节数据 n数据“页写”操作的启动和“字节写”一样 n不同之处在于主设备传送了1个字节数据后并不产生停止条件,而是连续再发送7个字节的数据,最后才给出停止条件 n如果在发送停止条件之前主器件发送超过8个字节,最后面的数据会覆盖最前面的数据 n在接收到8字节数据和主器件发送的停止条件后,24C01启动内部写周期将数据写到数据区24C01“立即地址读立即地址读”n24C01有三种读操作:“立即地址读立即地址读”、“选择选择读读”和“连续读连续读”n24C01内部有地址计数器,每次读一个字节数据后,地址计数器加1,指向下一个字节的地址 n“立即地址读”操作中,主设备总线发出总线起始条件、从设备
13、地址和读标志位(为“1”),对应地址上的24C01给出响应位后,将当前地址的一个字节数据发给主设备 n主设备接收到一个字节的数据后,给出“非响应位”(即保持SDA为高电平),随后发出停止条件,结束总线操作 24C01“立即地址读立即地址读”操作过程操作过程24C01“选择读选择读”n主设备可以读24C01的任意地址 n主设备首先向总线发出起始条件,并以写操作写操作的形式寻址24C01 n得到响应后,向24C01写入要写入的字节地址 n再次得到24C01的响应后,主设备发出重复起始重复起始条件条件 n并用读操作的形式再次寻址24C01 n24C01在发出响应位后,即可输出对应地址的一个字节数据
14、n主设备在接收到需要的数据后,给出“非响应位”,结束本次总线操作 24C01“选择读选择读”操作过程操作过程24C01“连续读连续读”n“连续读”操作可通过通过“立即读立即读”和和“选择读选择读”操操作启动作启动 n在24C01发送完一个8位字节数据后,主设备产生一个响应位(单个字节的读操作中主设备发出“非响应位”),告知24C01主设备要求连续地读下一个字节的数据 n对应主设备产生的每个响应位,24C01将发送一个8 位数据字节 n当主设备不发送响应位、并发出停止位时结束此次总线“连续读”操作 24C01“连续读连续读”过程过程实实际际应应用用中中的的24C0824C08SchematicSCL时钟信号时钟信号SDA数据信号数据信号I2C信号上拉电阻信号上拉电阻24C08课后作业(资料见FTP)n学习I2C总线标准n研究24CXX芯片数据手册n研究ARM7原理图及PCB设计 ARM7DESIGN.ddb hf44b0使用说明书.pdf