I2C接口芯片

2024-09-30

I2C接口芯片(精选6篇)

I2C接口芯片 篇1

0 引言

多模多频段移动数字电视调谐芯片能够兼容CMMB,DVB-H,DAB等标准,设计采用TSMC 0.13μm CMOS工艺。芯片内置数字控制逻辑电路,可以实现从片外对芯片进行控制操作。为了对芯片工作参数实现片外控制,需要通过总线将控制信号输入到调谐芯片内。实现芯片互联的总线协议有多种,如I2C,SPI,SCI等。其中,I2C总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本和复杂度。设计采用基于I2C总线协议的接口电路,基带处理器通过I2C总线与调谐芯片通信,从而实现调谐芯片的工作模式转换、增益控制、信道带宽控制、频道切换以及测试输出控制等。

设计要求I2C接口电路工作在从机模式下,支持7位从机地址寻址,支持8位寄存器地址寻址,数据传输能够支持快速模式速率可以达到400 kbit/s。接口电路有2位片选信号,最大支持4个芯片同时工作在1条I2C总线上。

1 电路设计

1.1 I2C串行总线简介

I2C总线是一种由Philips公司开发的两线式串行总线,使用多主从架构。两条总线中,一条为串行数据总线SDA,用来传输数据;另一条为串行时钟总线SCL,用来同步数据传输。在最新的I2C总线规范2.1版本中给出了总线上数据传输的起始、结束条件,7位寻址以及数据传输等[1]。

1.2 I2C总线格式设计

在满足I2C总线规范要求的前提下,针对数字电视调谐芯片的控制特点与要求[2],制定如图1所示的I2C总线数据传输格式。

I2C总线格式分为读模式和写模式。在两种模式下都增加了1个8 bit寄存器地址寻址,这样可以将控制信号直接写入调谐芯片内指定的寄存器中。在读模式下增加重新开始信号,以便与写模式区别。

1.3 电路总体设计

I2C接口电路工作在从机模式下,模块主要完成芯片与外部控制芯片的数据通信任务。控制芯片可以将控制信号发送到I2C总线上,通过I2C从机接口电路传送给调谐芯片内部寄存器,用以改变调谐芯片内的控制参数,从而完成对调谐芯片的工作模式、增益、信道带宽、频道切换以及测试输出等的控制;同时,当从机工作在读模式下时,外部控制芯片也可以读取调谐芯片内的控制参数。

I2C从机接口电路总体框图如图2所示,显示了输入输出端口。其中,rst为复位端口,设计时采用同步复位,复位信号低电平有效。串行数据端口sda为双向端口,串行时钟端口为scl,ADRSEL1和ADRSEL0为I2C地址片选信号,只有这4个端口连接到调谐芯片外部引脚上。其余的端口均为片内端口,与片内其他模块相连。从这里也可以看出,I2C接口占用很少的芯片管脚,节省了芯片资源。

根据图1所示的I2C总线格式以及协议的具体要求,给出I2C从机接口电路设计结构框图,如图3所示。

其中,时钟总线同步单元的功能是检测SCL总线上同步时钟的上升沿和下降沿,以便检测总线上的开始信号和结束信号。同时也为接收到的数据进行串/并转换时提供时钟参考。

数据总线二级缓冲输入单元用来检测数据总线的上升沿和下降沿。

由于I2C总线的工作模式为半双工,并且数据总线是双向总线,所以同一时刻不能既接收总线上的数据,又向总线发送数据。三态输出单元的作用就是当主机控制总线时,从机释放总线,此时三态输出高阻态;当从机控制总线时,三态输出单元正常输出高低电平。

1.4 状态机设计

根据I2C总线格式,结合I2C从机读模式与写模式工作特点,将状态机划分为7个状态,分别是空闲、I2C地址、I2C地址响应、寄存器地址、寄存器地址响应、数据传输、数据传输响应,如图4所示。

芯片上电后,I2C从机接口电路模块工作在空闲状态。当检测到I2C总线上的开始信号后,状态机状态转换到I2C地址状态。

在I2C地址状态下,从机接收主机发送的8 bit数据,其中高7位为I2C从机地址,最低位为读写控制位。从机将接收到的I2C从机地址与从机预设地址进行比对,若完全一致,则从机状态转移到I2C地址响应,向总线发送响应信号;如果不一致,则回到空闲状态。

在寄存器地址状态下,从机接收主机发送的8 bit寄存器地址并将其转换为并行信号输出给存储器。当接收完毕后状态机将状态转移到寄存器地址响应状态,通过总线向主机发送响应信号。

在数据传输状态下,若从机工作在读模式下,则从机向主机发送数据,8 bit为1帧,当接收到主机的响应信号后,继续发送下一帧数据;若从机工作在写模式下,则从机接收主机发送的数据,8 bit为1帧,当接收完毕后从机向主机发送响应信号,主机接收到响应信号后继续发送下一帧数据。

在数据传输响应状态下,当从机工作在读模式下,检测总线上主机发送的响应信号。当从机工作在写模式下,向总线发送响应信号。

若在其中任意一个状态下检测到结束条件,下一状态转换为空闲状态。

2 前端设计与验证

2.1 RTL代码设计与功能验证

根据I2C接口电路的总体架构以及状态机的设计,使用硬件描述语言verilog-2001[3]编写寄存器传输级(RTL)的电路代码[4,5]。同时,根据测试要求编写对应的testbench代码[6]。

编写测试代码后,用ModelSim软件进行功能仿真。系统时钟为4 MHz,串行总线时钟信号SCL工作频率为400 kHz。结果如图5和图6所示。经验证,逻辑功能完全正确。

2.2 FPGA验证

将RTL级I2C从机接口电路下载到FPGA开发板,再次进行时序验证[7]。FPGA验证所用的FPGA芯片为Xilinx公司的Virtex2P系列XC2VP30[8]。在进行信号观测时,使用Xilinx公司ISE所自带的逻辑分析工具ChipScope进行分析。时序完全正确,完全实现了数据的收发功能。图7与图8分别给出了I2C接口电路工作在写模式下与读模式下主要变量的仿真时序图。从图中可以看出,从机能够准确响应主机发送的开始信号,并按照之前给出的I2C总线格式进行数据的收发。

2.3 版图前时序验证

在进行布局布线之前,用VCS对DC综合后生成的门级网表进行仿真验证,以确保时序正确。由于I2C总线在读模式和写模式下的通信帧格式定义不同,故在仿真时,分别在读模式和写模式下对从机进行仿真,以便完整验证从机接口电路功能。经验证,I2C接口电路时序满足协议中对从机的要求。

3 后端设计及仿真

3.1 布局布线

将RTL级代码经Synopsys公司的综合工具DesignCompiler综合后得到I2C从机的门级网表文件。通过Cadence公司的布局布线工具SocEncounter进行布局、添加全局变量、添加电源环、时钟树综合、布线以及时序优化,并填充core filler和metal filler后得到抽象版图,其核心利用率(core utilization)达到了0.886 45,最终得到较小的版图面积为4 490.65μm2,功耗为372.2μW。

用Encounter提取寄生参数文件和标准时延文件后,将生成的GDS文件导入到Virtuoso进行DRC和LVS检查,经过修改,最终通过了DRC和LVS检查。

3.2 版图后仿真

在布局布线、时钟树综合与时序优化后,对门级网表进行更新。将生成的标准时延文件(SDF文件)反标注到testbench中,对更新后的网表文件用VCS进行时序仿真,并在DVE中运行仿真,得到如图9和图10所示的仿真结果。

图9中所示为写模式下I2C接口电路的版图后仿真结果。图中6根白色竖线从左至右依次为M1~M6。其中M1处变量start_con值为1,表示从机检测到总线上主机发送的总线开始信号。M2处变量addr_match值为1,表示从机接收到的主机寻址地址与自身预设地址是一致的。M2与M3之间是从机发送响应信号,sda输出为低电平。M3与M4之间从机接收主机发送的寄存器地址,M4处变量Register_addr值为8’h02,与sda总线发送值一致。M4与M5之间从机发送响应位,将sda信号拉低为低电平。M5与M6之间,主机向从机发送的第一帧数据,M6处变量Register_DI的值为8’h01,与sda总线发送值一致。

图10中所示为读模式下I2C接口电路的版图后仿真结果。图中9根白色竖线从左至右依次为M1~M9。M4之前的从机工作状态与写模式下工作状态完全一致,读模式下这一部分的作用是为了向从机写入寄存器地址,以便读取指定位置的寄存器的值。M5处变量stop_con值为1,表示从机正确检测到主机发送的结束信号。M6处变量start_con值为1,表示从机正确检测到总线上主机发送的重新开始信号。M6与M7之间从机接收I2C地址信号与读控制位信号。M7与M8直接所示为从机发送响应信号将sda总线拉低。M8与M9之间为从机向主机发送的第一帧数据8’h2c,从sda的波形中可以看出,从机正确发送了这帧数据。

通过对读、写模式下从机的仿真波形分析可以看出,从机数据传输完全满足之前制定的I2C总线格式,时序满足I2C协议要求,故从机时序完全正确,满足设计要求。

4 结论

根据I2C规范2.1版本以及调谐芯片的具体要求设计了移动数字电视调谐器芯片内I2C接口电路。电路采用TSMC 0.13μm CMOS工艺。根据数字ASIC设计流程,在前端设计、后端设计都进行了详细的仿真与验证,时序满足了I2C协议的要求。仿真结果表明,在100 MHz系统时钟下,电路建立时间裕量达到了7.252 ns,保持时间裕量为0.126 ns,满足了时序要求。最终版图面积为4 490.65μm2,功耗为372.2μW,能够满足移动数字电视调谐芯片的应用要求。

摘要:采用TSMC0.13μm CMOS工艺,对多模多频段移动数字电视调谐芯片内I2C接口电路进行设计和验证。采用数字集成电路设计流程,详细验证接口电路的时序。布局布线后得到较为理想的版图面积与功耗。版图后仿真结果表明,在100MHz时钟下,电路满足I2C协议的时序要求,可广泛应用于移动数字电视调谐芯片中。

关键词:I2C协议,移动数字电视,调谐器,接口电路

参考文献

[1]Philips Semiconductors.The I2C-Bus Specification V-2.1[S].2000.

[2]KUO Mingching,KAO Shiauwen,CHEN Chihhung.A1.2V114mWd ual-band direct-conversion DVB-Htuner in0.13um CMOS[J].IEEEJ ournal of Solid-State Circuits,2009,44(3):740-750.

[3]IEEE.IEEE standard verilog hardware description language[EB/OL].[2010-06-20].http://ieeexplore.ieee.org/xpl/mostRecentIssue.jsp?p unumber=7578.

[4]CILETTI M D.Verilog HDL高级数字设计[M].张雅绮,李锵,译.北京:电子工业出版社,2005.

[5]张延伟,杨金岩,葛爱学.Verilog HDL程序设计实例详解[M].北京:人民邮电出版社,2008.

[6]NAVABI Z.Verilog数字系统设计——RTL综合、测试平台与验证[M].李广军,陈亦欧,译.2版.北京:电子工业出版社,2007.

[7]胡文静,李外云,刘锦高.I2C总线接口的FPGA实现研究[J].计算机工程与应用,2005(12):116-118.

[8]田耘,徐文波,胡彬.Xilinx ISE Design Suite10.x FPGA开发指南——逻辑设计篇[M].北京:人民邮电出版社,2008.

I2C接口芯片 篇2

I2C总线是一种简单、双向二线制同步串行总线, 它只需要两根线 (串行时钟线和串行数据线) 即可在连接于总线上的器件之间传送信息。I2C总线接口的电气结构如图1所示, 组成I2C总线的串行数据线SDA和串行时钟线SCL必须经过上拉电阻Rp接到正电源上, 连接到总线上的器件的输出级必须为“开漏"或“开集”的形式, 以便完成“线与”的功能。

I2C总线可以构成多主从数据传送系统, 但只有带CPU的器件可以成为主器件。主器件发送时钟、启动位、数据工作方式, 从器件则接收时钟及数据工作方式。接收或发送根据数据的传送方向决定。I2C总线上数据传送时的启动、结束和有效状态都由SDA、SCL的电平状态决定, 在I2C总线规约中启动和停止条件规定如下:

启动条件:在SCL为高电平时, SDA出现一个下降沿则启动I2C总线。

停止条件:在SCL为高电平时, SDA出现一个上升沿则停止使用I2C总线。

除了启动和停止状态, 在其余状态下, SCL的高电平都对应于SDA的稳定数据状态。

每一个被传送的数据位由SDA线上的高、低电平表示, 对于每一个被传送的数据位都在SCL线上产生一个时钟脉冲。在时钟脉冲为高电平期间, SDA线上的数据必须稳定, 否则被认为是控制信号。SDA只能在时钟脉冲SCL为低电平期间改变。启动条件后总线为“忙”, 在结束信号过后的一定时间总线被认为是“空闲”的。在启动和停止条件之间可转送的数据不受限制, 但每个字节必须为8位。首先传送最高位, 采用串行传送方式, 但在每个字节之后必须跟一个响应位。主器件收发每个字节后产生一个时钟应答脉冲, 在这期间, 发送器必须保证SDA为高, 由接收器将SDA拉低, 称为应答信号 (ACK) 。主器件为接收器时, 在接收了最后一个字节之后不发应答信号, 也称为非应答信号 (NOT ACK) 。当从器件不能再接收另外的字时也会出现这种情况。I2C总线的数据传送格式如图2所示。

I2C总线中每个器件都有唯一确定的地址, 启动条件后主机发送的第一个字节就是被读写的从器件的地址, 其中第8位为方向位, “0” (W) 表示主器件发送, “1” (R) 表示主器件接收。无论是主发、主收还是从发、从收都由主器件控制。在主发送方式下, 由主器件先发出启动信号 (S) , 接着发从器件的7位地址 (SLA) 和表明主器件发送的方向位0 (W) , 即这个字节为SLA+W。寻址的从器件在收到这个字节后, 返回一个应答信号 (A) , 在确定主从握手应答正常后, 主器件向从器件发送字节数据, 从器件每收到一个字节数据后都要返回一个应答信号, 直到全部数据都发送完止。在主接收方式下, 主器件先发出启动信号 (S) , 接着发从器件的7位地址 (SLA) 和表明主器件接收的方向位1 (R) , 即这个字节为SLA+R。在发送完这个字节后, SCL继续输出时钟, 通过SDA接收从器件发来的串行数据。主器件每接收到一个字节后都要发送一个应答信号 (A) 。当全部数据发送或接收完毕后, 主器件应发出停止信号 (P) 。图3、图4所示为主器件发送和接收数据的过程。

1 X1202工作原理

2.1 X1202的引脚功能

X1202是Xicor公司生产的一种具有I2C接口的实时时钟芯片, 使用32768Hz晶振输入, 可以精确地走时, 从秒、分、时到月、日、年, 并提供闰年校正, 能对2000年问题和小于31天的月自动进行调整。它有两个独立的闹钟, 报警可按秒、分、时、日、月及星期几设置。工作电源及备份电池电源都有宽的电压范围。

X1202还提供一个看门狗定时器, 具有3种定时时间可选择。

X1202有两种封装形式, 其引脚排列如图5所示。

(1) 串行时钟SCL。SCL输入端, 用于使所有数据随时钟同步输入或输出。此引脚上的输入缓冲器总是激活的 (不选通) 。

(2) 串行数据SDA。SDA是双向引脚, 用于把数据送入和送出器件。它具有漏极开路的输出, 可以与其它漏极开路或集电极开路输出端进行线“或”。输入缓冲器总是激活的 (不选通) 。

(3) VBACK输入端。接备用电源电压。在VCC电源故障时VBACK供电。

(4) 复位输出undefined。这是一个复位信号输出端。此信号通知主处理器:看门狗时间期限已超过, 或电源电压VCC已低于门限值。它是漏极开路低电平有效输出端。

(5) X1, X2外接晶体端。可在X1端接收外部32.768kHz的方波基准或被配置成片内振荡器。片内振荡器使用32.768kHz石英晶体。推荐使用的晶体是VT-200或EPSON C-002RX。晶体为时钟/振荡器提供时基。使用外部时基时, 内部时钟可由X1端的外部信号驱动, X2悬空。图6为推荐的晶体接法。

2.2 X1202的寄存器

X1202的寄存器分为状态寄存器、实时日历/时钟寄存器、控制寄存器和两组独立闹钟寄存器, 片内地址见表1。

两组闹钟寄存器分别与实时日历/时钟寄存器相对应, 其地址分别为:0000-0007, 0008-000F。

2.3 实时时钟读写

由于X1202具有双端口的时钟和闹钟寄存器, 使得读写操作不影响时钟的精确性。

启动读命令, 并指定对应于实时时钟 (RTC) 寄存器的地址可以读RTC。因为时钟是连续运行且读操作要花费一定的时间, 所以在读操作期间时钟可能有变化。为了避免在读操作期间时钟的变化, 用读命令 (在RTC数据输出之前ACK位时钟的下降沿) 把时间锁入单独的锁存器, 时钟继续运行。在读期间产生的报警不受读操作的影响。

从X1202的RTC寄存器中读出一个字节的过程为:先发出起始信号, 接着发出X1202的地址SLAW (R/W为0) , 再进行RTC寄存器地址的写入操作, 然后发出重复起始信号和X1202地址SLAR (R/W为1) , 开始接收来自RTC寄存器的数据值data, 如图7所示。

此外, X1202还包括现行地址读和序列读功能。

时钟和日期可通过写RTC寄存器来设置。

为了避免不完全的写操作改变当前时间, 在RTC数据输入此前ACK位时钟的下降沿, 当前时间值被装入单独的缓冲器, 时钟继续运行。新的串行输入数据代替缓冲器内的内容。这个新的RTC值由有效写时序末尾的停止位装回到RTC寄存器中。无效的写操作使时间更新过程失败, 缓冲器的内容被丢弃。在有效的写操作之后, RTC将反映新装载的数据, 它从停止位之后第一个一秒时钟周期开始。在RTC寄存器正在进行写的同时, RTC继续更新时间, 在任何非易失性写序列期间RTC继续运行。单个字节可以被写至RTC而不影响其它字节。

向X1202的RTC寄存器中写数据的过程为:先发出起始信号, 接着发出X1202的地址SLAW (R/W为0) , 再进行RTC寄存器地址的写入操作, 然后写入数据值data, 如图8所示。

注意:在进行写RTC寄存器的过程之前, 一定要先向RTC的状态寄存器中先写入02, 再写入06, 否则就不能进行写RTC寄存器的操作。此外, X1202还包括页写入功能, 可一次写入8个数据。

2 X1202的应用

X1202与89C51的接口电路如图9所示

由于51系列单片机没有内部硬件I2C总线接口, 下面采用C51实现模拟I2C总线接口的具体编程方法。

部分程序清单如下:

参考文献

[1]Philips Semiconductors.The I2C Bus Concept and Specification.1992.

I2C接口芯片 篇3

I2C总线是由NXP半导体(原Phlips半导体)在20多年前开发的一种简单的双向二线制串行通信总线。它具有总线协议简单、支持器件多、可裁减性好、通信速率高等优点。目前已成为业界嵌入式应用的标准解决方案,被广泛地应用在各种基于微控制器的专业、消费与电信产品中,作为控制、诊断与电源管理总线。

I2C总线的信号线包括串行数据线SDA和串行时钟线SCL,它们一起来完成全双工数据传送。原则上说,只要符合I2C总线标准的器件都可以通过同一条I2C总线进行通信,而不需要额外的地址译码器。在具体应用过程中,当前端处理器提供了I2C总线接口时,SCL、SDA信号线可以直接与外围芯片相应引脚相连。如果前端处理器不具备I2C总线接口时,有两种解决方法:①采用专用的I2C串行总线控制器;②利用软件模拟实现I2C总线接口功能。本文要做的就是利用Verilog HDL语言设计同步有限状态机在FPGA上实现I2C总线接口功能,并进行功能和时序仿真。

1 总线的工作原理

I2C总线在传送数据的过程中共有三种类型信号,它们分别是:启动信号、结束信号和应答信号。

启动信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。

结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。

应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。CPU向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况做出是否继续传递信号的判断。若未收到应答信号,则判断为受控单元出现故障。

图1显示了I2C总线上一次数据传输的工作时序,在A段,SDA和SCL均为高电平,总线处于非忙状态;在B段,SCL为高电平时SDA产生下降沿,出现“启动”信号,数据传输开始;在C段,SCL为高时SDA产生上升沿,出现“停止”信号,数据传输停止;在D段,当SCL为高电平时,SDA所处状态就是要传送的数据,而SDA上数据的改变必须在SCL为低电平时完成。

2 I2C总线模块的设计与实现

2.1 接口模块的结构

图2为I2C总线接口框图,主要包括以下几个单元。

I2CXSR:发送移位寄存器,将地址信息或数据信息经过并/串转换后,在时序控制逻辑的控制下发送到SDA线上。

I2CRSR:接收移位寄存器,将SDA线上接收的数据经过串/并转换后存入数据寄存器,再由主机来读取。

I2CDXR:数据发送寄存器,存储I2C总线接口要发送的数据。

I2CDRR:数据接收寄存器,存储I2C总线接口已接收的数据。

总线仲裁和时钟同步:多个主设备开始一个数据发送时,由仲裁机制来决定到底谁掌握总线控制权,这就要求进行时钟同步,可利用SCL线与的特性来完成。

分频器:由于FPGA外部时钟频率很高,需要经过分频来满足I2C总线接口协议规定的数据传输速率。

控制/状态寄存器组:传输所有时序控制逻辑都由它来产生,是整个I2C总线接口的核心。

本文接下来将设计一个对接口存储器进行读写的模块。

2.2 电路模型的搭建

为了实现对I2C接口存储器的读写,不仅要设计接口模块,还要搭建存储器的行为模型以及激励模块,本文选定二线制I2C串行EEPROM AT24C02作为存储器来构建行为模型,图3是在QUARTUSII 7.1环境下生成的三个模块的结构图。

其中SIGNAL为信号源模块,能产生读/写、并行地址和并行数据信号,并可以接收EEPROM读写器件的应答信号(ACK),并以此来调节发送或接收数据的速度;EEPROMWR为EEPROM读写器模型,它接收来自信号源模型产生的读/写、并行地址和并行数据信号,并把它们转换为相应的串行信号发送到EEPROM的行为模型中。它还可以发送应答信号(ACK)到信号源模型,以便让信号源调节发送或接收数据的速度;EEPROM为EEPROM的一个简化行为模型,能完成一个字节数据的读写。

在上面的三个模块中,EEPROM读写器模块可以综合,信号源模块和EEPROM模块只用于仿真验证,不可综合成电路网表。

2.3 用FSM设计I2C总线接口

根据I2C总线传输协议可知,I2C在传输过程中存在着几个固定的状态,对EEPROM读写来说,用5个状态时钟可以完成写操作,7个状态时钟可以完成读操作。而读写操作中有几个状态是一致的,因此用一个嵌套的同步有限状态机FSM来设计I2C总线接口。整个状态机共有7个状态:空闲(Idle)、准备(Ready)、启动(Start)、写(Write)、读(Read)、停止(Stop)、应答(Ack),状态转移如图4所示:

Idle:I2C总线处于空闲状态。

Ready:当从器件发出读/写信号(WR=1/RD=1)时,读写标志WF/RF置1 ,转入准备状态。

Start:当标志寄存器FF=1时,发送启动信号。

Write:向从器件发送写控制字和地址信号,若WRbit=1,则逐个写入数据并接收应答位,直到所有数据写完Stopbit=1时,转入Stop状态启动停止信号;若WRbit=0,则转入Read状态。

Read:重新启动I2C总线,发送读控制字。当WRbit=0时,则向从器件逐个读出数据并发送非应答位;直到所有数据读完Stopcit=1时,转入Stop状态启动停止信号。

Stop:发送停止信号。

Ack:从器件发出应答信号,FF置0, 转入应答状态。

该状态机采用FPGA器件常用的独热(one-hot)编码来完成状态分配,可以有效提高电路的速度和可靠性,也有利于提高器件资源的利用率。

3 仿真验证

用Verilog HDL语言编写好状态机实现代码和测试程序TestBech后,本文采用目前业界最流行的仿真工具ModelSim SE 6.3a来对I2C总线接口时序进行仿真,结果如图5所示。

图5是I2C总线写时序的仿真波形。从波形图中可以看到,在WR产生高电平信号后,当SDA在SCL高电平期间产生由高电平到低电平的跳变时,EEPROM读写控制器发出“启动”信号,I2C总线开始数据传输,先送出I2C总线器件特征编码1010和三位EEPROM芯片地址/页地址XXX,并加上写状态R/W位(=0)构成一个控制字节,然后EEPROM产生一个应答位,接着读写控制器发送一个字节的EEPROM存储单元地址,EEPROM接收到这个地址后,又一次产生应答信号,使读写控制器发送要写入的一个字节数据到EEPROM存储单元。传送完毕后,EEPROM再次产生一个应答信号,读写控制器收到后,当SDA在SCL高电平时产生由低电平到高电平的跳变时,EEPROM读写控制器发出“停止”信号,数据传输停止,并等待写入下一个字节数据。

图6是I2C总线读时序仿真波形,同样也是在ModelSim SE 6.3a环境下的仿真结果。

由图6可知,在RD产生高电平信号后,当SDA在SCL高电平期间产生从高电平到低电平的跳变时,同样开始启动I2C总线,EEPROM读写控制器发送一个“启动”信号和控制字节(其中R/W=0)到EEPROM,EEPROM产生应答后,读写器通过写操作设置EEPROM存储单元地址(写入的是地址指针),之后EEPROM又产生一个应答信号,接着读写器重新发送另一个“启动”信号和控制字节(此时R/W=1),EEPROM收到后发出应答信号,然后,要寻址存储单元的数据就从SDA线上输出,EEPROM再次产生应答,然后当SDA在SCL高电平时产生由低电平到高电平的跳变时,EEPROM读写控制器发出“停止”信号,数据传输停止,并等待写入下一个字节数据。

4 结束语

从上面对读写时序波形的分析可以看出,利用有限状态机设计的I2C总线接口模块EEPROMWR在功能上完全满足I2C总线协议,而它的Verilog HDL代码也是可综合的,在布局布线后笔者在对其进行了后仿真,波形除SCL和SDA与CLK有些延迟外,信号的逻辑关系也与前仿真完全一致,这就表明可以将生成的配置文件加载到芯片中进行测试,并完成特定功能,这也体现了FPGA器件的特点。

参考文献

[1]何立民.I2C总线应用系统设计[M].北京:北京航空航天大学出版社,1995.

[2]董春霞,安连祥,张胜利,等.I2C总线技术及其在智能仪表中的应用[J].中国仪器仪表,2003(4):102-105.

[3]夏宇闻.Verilog数字系统设计教程[M].北京:北京航空航天大学出版社,2003.

I2C接口芯片 篇4

I2C(Inter-Integrated Circuit ) 总线是一种由Philips公司开发的两线式串行总线,用于连接微控制器及其外围设备。由于I2C总线仅用两根信号线,并支持多主控工作方式,所以I2C总线在电子产品设备中应用非常普遍。文献[1]使用NiosⅡ的PIO接口模拟I2C时序完成对接口芯片的读写,而目前基于NiosⅡ的IP核越发丰富。基于此,本文使用免费的IP核——I2C-Master Core,实现了对I2C接口芯片的读写操作,扩充了一种新的设计方法。本文首先介绍了I2C总线结构和工作原理,然后详细说明了基于NiosⅡ的I2C-Master Core的使用方法,最后给出了C语言的编程代码。

1 I2C总线基本原理

I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU 与被控IC 之间、进行双向传送,最高传送速度100 kbit/s。

I2C总线在传送数据的过程中共有4种基本类型信号,分别是:开始信号、数据传输信号、应答信号和结束信号。

a) 开始信号:SCL为高电平时,SDA 由高电平向低电平跳变,开始传送数据。所有的命令都必须在开始条件以后进行。

b) 结束信号:SCL 为低电平时,SDA 由低电平向高电平跳变,结束传送数据。所有的操作都必须在停止条件以前结束。总线开始和停止数据传送的时序如图1所示。

c) 数据传输信号:在开始条件以后,时钟信号SCL的高电平周期期间,当数据线稳定时,数据线SDA的状态表示数据有效,即数据可以被读走,开始进行读操作。在时钟信号SCL的低电平周期期间,数据线上数据才允许改变。每位数据需要一个时钟脉冲。I2C总线的数据位传送时序如图2所示。

d) 应答信号:接收数据的从器件收到8 bit 数据后,向发送数据的主控器件发出特定的低电平脉冲,表示已收到数据。这要求主器件必须产生一个与确认位相应的额外时钟脉冲(第9个脉冲)。若主控器件确认失败,主控器件必须发送一个数据结束信号给从器件。这时从器件必须使SDA线保持高电平,使主控器件能产生停止条件。总线的应答信号时序见图3。

2 I2C 接口芯片AT24C01/02 工作原理

AT24CXX系列芯片是采用I2C总线标准的常用的串行EEROM芯片。本文以AT24C02为例介绍。AT24C02具有256×8(2 k)bit的存储容量,即总共32页,每页有8字节的容量。每次写入数据是从主器件发送来的片内选择地址开始写人,如果写到页末尾,主器件还在继续发送的话,不会自动转到下一页,而是从该页的头地址开始继续写入,覆盖该页的原有数据,而造成数据丢失。AT24C02工作于从器件方式,它的地址由外围的3个引脚A2、A1、A0决定,如图4所示。在I2C总线上总共可以连接8个AT24C02接口芯片,每个器件硬件地址与控制寄存器的地址内容保持一致,就能够自由地与主控器件进行数据传输。

1)器件字节写操作

在字节写模式下,发送器件写控制字,控制字包括4位固定器件码,3位片选码,以及一位低电平的写控制位。主器件在收到从器件产生应答信号后,主器件发送一个8 位字节地址写入AT24C02。主器件在收到从器件的另一个应答信号后,再发送数据到被寻址的存储单元。AT24C02再次应答,并在主器件产生停止信号后开始内部数据的擦写,在内部擦写过程中,AT24C02不再应答主器件的任何请求。时序见图5。

2)器件随机地址读操作

对AT24C02 读操作的初始化方式和写操作时一样,仅把R/W位置为1。

图6 所示为AT24C02 随机地址读时序图。随机读操作允许主器件对寄存器的任意字节进行读操作,主器件首先通过发送起始信号、从器件地址和它想读取的字节数据的地址执行一个伪写操作。在AT24C02 应答之后,主器件重新发送起始信号和从器件地址,此时R/ W 位置1,AT24C02响应并发送应答信号,然后输出所要求的一个8 位字节数据,主器件不发送应答信号但产生一个停止信号。

3 I2C-Master Core工作原理

基于NiosⅡ的IP核应用非常简便,因此越发受到青睐。Altera公司已经提供了一些通用的IP核可供使用,但没有提供I2C核。文献[3]提供了免费的I2C-Master Core,经笔者的应用与长时间测试,证明该Master Core使用方便可靠,工作稳定。该Master Core的内部结构如图7所示,主要由时钟发生器、字节命令控制器、比特命令发生器和数据移位寄存器4个模块组成。其他模块是一些相关接口和临时数据存储器。

I2C-Master Core内部功能寄存器如表1所示。

时钟发生器主要是产生SCL信号,该时钟的频率可由预分频寄存器设置,控制子计算公式如下:

预分频undefined

例如:SCL频率为100 kHz,NiosⅡ工作频率为50 MHz,则预分频=99,PRERlo=99,PRERhi=0。

字节命令控制器在字节级连接命令寄存器、状态寄存器和比特命令控制器。通过将表2所示命令寄存器相应的比特位置1,可以产生I2C接口的开始、结束、确认等信号,以及读写控制。这些有效控制通过字节命令控制器转送到比特命令控制器,使其发生作用,在信号产生后,这些比特位自动清0。

NiosⅡ向发送寄存器写数据实现数据输出,读接收寄存器获取从器件输出的数据。数据的读写是否完成可通过中断或查询方式得知。如采用中断方式,状态寄存器中的IF状态位置1;如采用查询方式,数据处理过程中,状态位TIP置1,处理完毕后置1。

4 应用实例

笔者在NiosⅡ IDE7.1环境下编写了使用该Master Core的C语言代码,现把部分主程序代码列出。

1)IP-Master Core初始化

完成对预分频器的设置,确定SCL时钟频率;控制寄存器中I2C-Master Core使能位置1,使其工作。

void init_i2c(void)

{

IOWR_OC_I2C_MASTER_PRERLO(I2C_MASTER_CLASSIC_BASE, 0xC7); //配置预分频器

IOWR_OC_I2C_MASTER_PRERHI(I2C_MASTER_CLASSIC_BASE, 0x00);

IOWR_OC_I2C_MASTER_CTR(I2C_MASTER_CLASSIC_BASE, 0x80); //打开I2C使能

}

2)查询确认信号

数据收发是否完成,通过查询TIP状态位来确定。

void Check_Ack(void)

{

alt_u32 status;

do

{

status= IORD_OC_I2C_MASTER_SR(I2C_MASTER_CLASSIC_BASE);

}

while((status&OC_I2C_MASTER_SR_TIP)= =0);//查询状态位

}

3)写字节操作

单字节写入按图5操作流程:

void I2C_WRITE(unsigned char I2C_ADDR,unsigned char I2C_DATA)

{

IOWR_OC_I2C_MASTER_CR(OC_I2C_MASTER_CLASSIC_0_BASE,0x90); //产生起始信号

IOWR_OC_I2C_MASTER_TXR(OC_I2C_MASTER_CLASSIC_0_BASE,0xA0); //写器件地址

Check_Ack( ); //查询

IOWR_OC_I2C_MASTER_TXR(OC_I2C_MASTER_CLASSIC_0_BASE,I2C_ADDR); //写存储器地址

Check_Ack();

IOWR_OC_I2C_MASTER_TXR(OC_I2C_MASTER_CLASSIC_0_BASE,I2C_DATA); //写数据

Check_Ack( );

IOWR_OC_I2C_MASTER_CR(OC_I2C_MASTER_CLASSIC_0_BASE,0x50); //产生停止信号

}

4)随即地址读操作

随即地址读字节按图6流程操作:

unsigned char I2C_READ(unsigned char I2C_ADDR)

{

unsigned char byte;

IOWR_OC_I2C_MASTER_CR(OC_I2C_MASTER_CLASSIC_0_BASE,0x90); //产生起始信号

IOWR_OC_I2C_MASTER_TXR(OC_I2C_MASTER_CLASSIC_0_BASE,0xA0); //写器件地址

Check_Ack( );

IOWR_OC_I2C_MASTER_TXR(OC_I2C_MASTER_CLASSIC_0_BASE,I2C_ADDR); //写存储器地址

Check_Ack( );

IOWR_OC_I2C_MASTER_CR(OC_I2C_MASTER_CLASSIC_0_BASE,0x90); //产生起始信号

IOWR_OC_I2C_MASTER_TXR(OC_I2C_MASTER_CLASSIC_0_BASE,0xA1); //读器件地址

Check_Ack( );

byte=IORD_OC_I2C_MASTER_RXR(OC_I2C_MASTER_CLASSIC_0_BASE); //读数据

IOWR_OC_I2C_MASTER_CR(OC_I2C_MASTER_CLASSIC_0_BASE,0x68); //产生停止和NACK信号

return(byte);

}

以上是使用I2C-Master Core的关键代码,若向地址0x50写入0x5A,再将其读出,可按下面写法:

I2C_WRITE(0x50,0x5A);

Dealy time( ); //延时10ms

DATA=I2C_READ(0x50);

若操作正确,DATA的值应该位为0x5A。

5 结束语

本文探讨了使用免费I2C-Master Core的方法,方便地实现了基于NiosⅡ的I2C接口芯片的开发,为I2C的电子工程设计使用提供了一种简单快捷的方法。

摘要:简要介绍了I2C总线的基本结构和规范、I2C总线接口芯片的基本工作原理以及I2C-Mas-terCore的工作原理,并着重介绍了在NiosⅡ上使用I2C-MasterCore实现对I2C接口芯片AT24C02读写过程,最后给出了C语言的编程代码。

关键词:I2C总线,NiosⅡ,I2C-MasterCore

参考文献

[1]李渔.基于NIOS的I2C总线接口芯片AT24C16读写的实现[J].信息技术,2006(2):99-102.

[2]The I2C-bus specification[M].Philips Semiconductors.2000.

[3]HERVEILLE R.I2C-master core specification[M].2003.

I2C接口芯片 篇5

随着电子技术的不断发展和进步, 集成电路向着高速度、高集成度和低功耗的系统集成方向发展。系统设计规模不断趋于小型化和快速化。以SOPC为嵌入式系统核心, 集软硬件为一体, 并追求产品系统最大包容的集成, 是电子领域IP设计的必然趋势和最终目标。采用SOPC技术来设计牛乳检测仪, 在单片FPGA上集成多个控制IP软核, 能极大地减小系统硬件规模, 且编程配置灵活, 开发周期短, 能够满足数据处理的实时性[1]。

在牛乳检测系统中, 系统检测精度是系统的关键性能指标。仪器采用激光散透比法来检测牛乳中蛋白质和脂肪含量。采用两支光电池采集激光经过比色皿后的透射光和散射光。经过放大电路将放大的电压值送往AD转换器, 进行数据处理。为提高系统检测精度, 必须要设计高精度的模拟量数据采集系统。本文采用两片I2C总线接口的ADS1110作为系统AD转换器件。通过在FPGA上构建I2C的控制器IP核, 再将其挂到AVALON总线上, 方便在Nios IDE中进行数据处理。

1 系统硬件组成

I2C 接口是一个2线漏极开路输出接口, 支持多个器件和主机共用一条总线。整个系统利用I2C总线的多主机特性, 将两路ADS1110挂接到I2C总线控制器上。I2C控制器负责与ADS1110进行通信, 同时采集透射光强和散射光强转换后的电压值。上拉电阻对SDA和SCL线都是必要的, 因为I2C总线驱动器是漏极开路驱动器, 这些电阻的大小取决于总线的工作速度和总线电容。系统硬件图如图1所示。系统采用1kΩ的上拉电阻接正电源, 使I2C总线在空闲期间保持高电平。

2 ADS1110简介

ADS1110是精密的连续自校准模/数A/D转换器, 带有差分输入和高达16位的分辨率。片内2.048V的基准电压, 提供范围为2.048V的输入差分电压。ADS1110使用可兼容的I2C串行接口, 在2.7V至5.5V的单电源下工作。ADS1110可每秒采样15、30、60或240次以进行转换。片内可编程的增益放大器PGA提供高达8倍的增益, 并且允许以高分辨率对较小的信号进行测量。

2.1 ADS1110的读操作

用户可从ADS1110中读出输出寄存器和配置寄存器的内容。为做到这一点要对ADS1110寻址, 并从器件中读出三个字节。前面的两个字节是输出寄存器的内容, 第三个字节是配置寄存器的内容。不要求一定要读出配置寄存器字节, 在读操作中允许读出的字节个数少于三个。从ADS1110中读取多于三个字节的值是无效的。从第四个字节开始的所有字节将为FFH。ADS1110的读时序如图2所示。

2.2 ADS1110的写操作

为了对配置寄存器进行写操作, 要对ADS1110寻址, 并写入一个字节。这个字节被写入配置寄存器中。注意输出寄存器不能被写入。对ADS1110写入多个字节无效。ADS1110将忽略第一个字节以后的任何输入字节, 并且它只对第一个字节作出应答。对ADS1110写操作的时序如图3所示[2]:

3 I2C控制器IP核设计

一条I2C总线由两条线路组成:SDA线和SCL线。SDA传送数据, SCL提供时钟。I2C总线是双向的, SDA线可用来发送和接收数据。当主机从从机中读取数据时, 从机驱动数据线;当主机向从机发送数据时, 主机驱动数据线。主机总是驱动时钟线, ADS1110 绝不会驱动SCL, 因为它不能用作主机。在ADS1110 中SCL 只是一个输入端。每个连接到总线的器件都有一个唯一的地址。ADS1110的I2C地址是1001aaa, 其中aaa是出厂时的默认设置。ADS1110有8种不同的类型, 每种类型都有一个不同的I2C地址。例如ADS1110A0的地址为1001000, 而ADS1110A3的地址则为1001011。

主机可以作为主机发送器或主机接收器。如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏。串行的8位双向数据传输位速率在标准模式下可达100kbit/s, 快速模式下可达400kbit/s, 高速模式下可达3.4Mbit/s。连接到相同总线的IC数量只受到总线的最大电容400pF限制[3]。

ADS1110通过一个I2C (内部集成) 电路接口通信。所有数据以8位为一组通过I2C总线传送。为了在I2C总线上传送1位数据, 须在SCL为低电平时驱动SDA线至适当的电平 (SDA为低则表明该位为0, 为高则表明该位为1) 。一旦SDA线稳定下来, SCL线被拉高, 然后变低。SCL线上的脉冲以时钟将SDA位一位一位地移入接收器的移位寄存器中。

I2C总线的读写控制逻辑:

(1) 开始条件

在开始条件下, 当SCL为高电平时, SDA由高转为低。

(2) 停止条件

在停止条件下, 当SCL为高电平时, SDA由低转为高。

(3) 确认信号

在接收方应答下, 每收到一个字节后便将SDA电平拉低。

(4) 数据传送

I2C总线启动或应答后SCL高电平期间数据串行传送;低电平期间为数据准备, 并允许SDA线上数据电平变换。总线以字节 (8bit) 为单位传送数据, 且高有效位 (MSB) 在前。

采用Verilog HDL硬件描述语言来编写I2C控制器IP核, 图4为I2C控制器在Quartus II下的BSF图。

图中addr为I2C模块给NiosII处理器的地址信号, 用于选择数据寄存器或状态寄存器;rst-l为异步复位信号, 低电平有效;clock为时钟信号;rd-wr-l为读写脉冲信号, 低电平时读, 高电平时写;cs-l为片选信号, 低电平有效;reg-clk-in用于锁存字地址信号。data为双向数据寄存器, 用于保存接受和发送的字节数据, 与AVALON总线同名信号相连;ack-l是I2C从设备给主机的应答信号;reg-clk-out产生锁存字地址信号;scl-pin为I2C时钟引脚;sda-pin为I2C数据引脚。片选信号假定与时钟信号同步;地址, 数据和读写信号只有在片选信号有效的情况下才能设为有效。

4 I2C控制器仿真

在ModelSim环境下, 编写测试程序对所设计的I2C控制器IP核进行功能仿真, 仿真图如图5所示。

所选FPGA的系统时钟为50MHz, 采用I2C-CLK计数模块来产生scl时钟, scl频率为10μs。当addr=01时, 指向数据寄存器, 这时的数据寄存器保存的是数据线的信息, 由时序控制模块data寄存器传递。当addr=10或11时, 指向状态寄存器, 输出的是I2C总线器件的信息, 包括总线准备好信号、错误信号和总线响应信号。当addr=00, 指向控制器的字地址寄存器, 这时触发状态机的启动信号, 在使能端, 或命令信号无效的时候, 或复位有效的时候, 总线处于空闲状态, 数据线SDA和时钟线SCL都处于高电平。否则, 在SCL高电平期间, SDA从高向低转换, 表示I2C总线开始, 先传送器件地址1001000, 紧接着在SCL高电平期间器件发出一个低电平响应位, 再继续传输数据。当写完一个字节数据后, 在SCL高电平期间, SDA从低向高跳变, 即发出停止信号。仿真结果表明时序合理, 逻辑正确。

5 结束语

采用FPGA来进行系统设计灵活, 方便, 易修改, 可反复编程。由于I2C总线与并行扩展总线相比具有电路结构简单、程序编写方便, 易于实现系统软硬件的模块比、标准化等特点。在FPGA开发中应用IC总线来控制两片ADS1110进行数据采集, 可以减少器件片选线的连接, 还可以对单个ADS1110工作状况进行检测, 从而实现对硬件系统简单灵活的扩展与控制。以上的设计, 经实际应用测试, 具有较好的性能。在牛乳检测仪中, Nios II处理器可以不间断无数据丢失地进行数据采集。达到了检测系统要求的检测精度。

参考文献

[1]吴继华, 王诚.Altera FPGA/CPLD设计 (高级篇) [M].人民邮电出版社, 2005.

[2]ADS1110数据手册[Z].2003.

I2C接口芯片 篇6

1.1 TDA8020HL是Philips公司生产的一款能够读写符合ISO7816-3 T=0、T=1标准的IC卡,也支持符合EMV3.1.1(Europay,MasterCard,VISA)标准的卡的专用接口芯片。系统CPU通过I2C总线向TDA8020HL发送命令和回读其状态。通过TDA8020HL的I/Ou C口向IC卡发送和接收数据。能够支持两个不同地址的智能IC卡,其地址由2个地址选择引脚组合来决定,共有四种地址组合。

TDA8020HL既支持5V卡(A类卡)也支持3V卡(B类卡),电压范围比较宽,从2.7V到6.5V。TDA8020HL向IC卡提供时钟信号。时钟信号的频率应符合:A类卡,时钟应在1~5MHz;B类卡,时钟应在1~4MHz。IC卡接口触点ESD保护可达6KV,系统CPU通过I2C总线来控制TDA8020H L。下面是TDA8020HL的框图(见图1):

1.2 ISO7816标准中规定对卡的激活和释放,有很严格的时序要求。TDA8020HL是符合ISO7816标准的读写卡的专用芯片,对卡的激活和释放过程如下:

(1)激活过程

当卡在激活前,VCC,CLK,RST,I/O处于低电平状态。

在t0时刻TDA8020HL的振荡器一定要升频;

在t1时刻TDA8020HL的内部直流转换器启动;

在t2时刻打开IC卡的电源VCC(5V或3V)并以0.14V/u S开始上升;

在t3时刻IC卡的I/O电平稳定到VCC;

在t4时刻IC卡的CLK开始加载,RST复位开始;

如果在42100个CLK内,IC卡没有应答,在t5时刻RST返回高电平。

(2)释放过程

当信息交换结束时,系统CPU复位START//STOP到低电平,开始IC卡的释放过程。

在t11时刻IC卡的RST置为低电平;

在t12时刻IC卡的CLK停振;

在t13时刻将I/O置为低电平;

在t14时刻释放VCC;

在t15时刻将TDA8020HL的内部直流转换器关闭;

TDA8020HL的振荡器做降频处理。

2 TDA8020HL的应用

2.1 TDA8020HL应用的硬件设计

下面是TDA8020H L与32位嵌入式ARM系统的接口电路设计,如图2:

图中,ARM系统通过I2C总线与TDA8020HL连接。TDA8020HL管理两个IC卡,分别是IC_CARD1和IC_CARD2,TDA8020HL的输入时钟由有源晶振3.5795MHz供给。ARM系统通过I2C总线向TDA8020HL发送命令和回读其状态,两个卡的数据通道分别通过ARM系统的GPIO口GPF2、GPF3与TDA8020HL的I/O1u C、I/O2u C来传递。通过两个数字三极管及常开卡座组成一个自动识检测卡插入的电路。

2.2 TDA8020HL的软件设计

2.2.1 向TDA8020HL发送命令的格式

ARM系统通过I2C总线向TDA8020HL发送命令控制字0x E3H(选择冷复位,5V卡,对输入时钟不分频,I/O与I/Ou C连接)初始化IC_CARD1(I2C地址:0x40H)和IC_CARD2(I2C地址:0x48H)。

2.2.2 回读TDA8020HL的状态的格式

ARM系统通过I2C总线分别从TDA8020HL回读IC_CARD1(地址:0x41H)和IC_CARD2(地址:0x49H)的状态字,以便了解IC_CARD1和IC_CARD2的状态。

当检测到卡插入后,给卡加载5V电源,CLK,复位开始,进入卡的激活过程。

2.2.3 ARM系统与卡数据交换

当卡被激活后,ARM系统就可以通过GPIO口GPF2、GPF3与TDA8020HL的I/O1u C、I/O2u C数据通道分别与IC_CARD1和IC_CARD2进行数据交换。当过载、过热、卡被拔出等TDA8020HL都会产生一个中断信号并通知ARM系统,ARM系统就会对这个异常作出处理。

在应用TDA8020HL时笔者认为有两点值得大家注意:第一,系统处理器与卡进行数据交换的通道是通过I/Ou C完成而不是I2C总线。由于TDA8020HL的数据手册关于这一点讲的很少,使得初次使用TDA8020HL时易犯错;第二,TDA8020HL为卡提供的电源VCC有时会有几百豪伏的纹波,无法正常使用,最好进行滤波处理。

总之,IC卡读写芯片从接口方式分有并行、串行、I2C总线三种通信方式,但从其性能上看同时能满足A类卡和B类卡,又具有高达6KV的ESD和过载保护的功能,又符合ISO7816的标准,对于一个具有I2C总线接口的ARM系统来讲,TDA8020HL的确是设计者一个不错的选择。

摘要:介绍了Philips公司的一款I2C总线通信方式读写IC卡的专用芯片TDA8020HL,它的工作原理以及其在ARM系统中的应用和实际应用时的注意事项。

关键词:ISO7816,I2C总线,TDA8020HL,ARM

参考文献

[1]TDA8020HL Data Sheet[Z].2002.

【I2C接口芯片】推荐阅读:

接口芯片08-15

USB接口芯片05-25

节能芯片07-21

时钟芯片05-10

电机芯片05-19

网络芯片06-07

芯片功能06-08

无线芯片07-01

组织芯片08-04

终端芯片08-04

上一篇:软件开发工作者下一篇:工业企业电子商务研究