I2C总线的结构、工作时序与模拟编程.doc

上传人:asd****56 文档编号:70332549 上传时间:2023-01-19 格式:DOC 页数:27 大小:962.80KB
返回 下载 相关 举报
I2C总线的结构、工作时序与模拟编程.doc_第1页
第1页 / 共27页
I2C总线的结构、工作时序与模拟编程.doc_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《I2C总线的结构、工作时序与模拟编程.doc》由会员分享,可在线阅读,更多相关《I2C总线的结构、工作时序与模拟编程.doc(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、I2C总线的结构、工作时序与模拟编程I2C总线(Inter Integrated Circuit)是飞利浦公司于上个世纪 80 年代开发的一种“电路板级”的总线结构。与其它串行接口相比,无论从硬件结构、组网方式、软件编程都有很大的不同。在AT89C51 系统上使用汇编语言模拟I2C总线的各种信号及编程原理,为自主开发、设计具有I2C总线接口的系统打下一个良好的基础,也为其它串口的模拟编程创造一个好的思路和可行的方法。I2C总线的主要特点1. 二线制结构。即双向的串行数据线 SDA、串行同步时钟线 SCL。总线上的所有器件其同名端都分别挂在 SDA、SCL 线上(见图 7.1);2. I2C总线

2、所有器件的SDA、SCL引脚的输出驱动都为漏极开路结构(见图 7.2),通过外接上拉电阻将总线上所有节点的SDA、SCL信号电平实现“线与”的逻辑关系。这不仅可以将多个节点器件按同名端引脚直接挂在SDA、SCL线上,还使I2C总线具备了“时钟同步”、确保不同工作速度的器件同步工作;3. 系统中的所有外围器件都具有一个 7 位的“从器件专用地址码”,其中高 4 位为器件类型地址(由生产厂家制定),低 3 位为器件引脚定义地址(由使用者定义),主控器件通过地址码建立多机通信的机制。因此I2C总线省去了外围器件的片选线,这样无论总线上挂接多少器件,其系统仍然为简约的二线结构;4. I2C总线上的所有

3、器件都具有“自动应答”功能,保证了数据交换的正确性;5. I2C总线系统具有“时钟同步”功能。利用SCL线的“线与”逻辑协调不同器件之间的速度问题;6. 在I2C总线系统中可以实现“多主机(主控器)”结构。依靠“总线仲裁”机制确保系统中任何一个主控器都可以掌握总线的控制权。任何一个主控器之间没有优先级,没有中心主机的特权。当多主机竞争总线时,依靠主控器对其SDA信号的“线与”逻辑,自动实现“总线仲裁”功能;7. I2C总线系统中的主控器必须是带CPU的逻辑模块;而被控器可以是无CPU的普通外围器件,也可以是具有CPU的逻辑模块。主控器与被控器的区别在于SCL的发送权,即对总线的控制权;8. I

4、2C总线不仅广泛应用于电路板级的“内部通信”场合,还可以通过I2C总线驱动器进行不同系统间的通信;9. I2C总线的工作速度分为 3 种版本:S(标准模式),速率为 100kb/s。主要用于简单的检测与控制场合;F(快速模式),速率为 400kb/s;Hs(高速模式),速率为 3.4Mb/s。I2C总线的系统和接口内部结构2.1 I2C总线的系统结构VCCSDASCL 主控器 A外围器件 1外围器件 2外围器件 3主控器 B外围器件 n图 7.1 具有多主机的I2C总线的系统结构2.2 I2C总线接口的内部结构每一个I2C总线器件内部的SDA、SCL引脚电路结构都是一样的,引脚的输出驱动与输入

5、缓冲连在一VCC起。其中输出为漏极开路的场效应管、输入缓冲为一只高输入阻抗的同相器。这种电路具有两个特点:由于 SDA、SCL 为漏极开路结构,借助于外部的上拉电阻实现了信号的“线与”逻辑;引脚在输出信号的同时还将引脚上的电平进行检测,检测是否与刚才输出一致。为 “时钟同步”和SDASCL串行时钟输出串行时钟输入SCL 串行数据输出串行数据输入SDA“总线仲裁”提供硬件基础。I2C总线的工作过程与原理图 7.2 I2C总线接口内部结构总线上的所有通信都是由主控器引发的。在一次通信中,主控器与被控器总是在扮演着两种不同的角色。3.1 主控制器向被控器发送数据 SDA SCL S D A S C

6、L S D A S C L S D A S C L SDA SCL S D A S C L操作过程如下:(1)主控器在检测到总线为“空闲状态”(即 SDA、SCL 线均为高电平)时,发送一个启动信号“S”,开始一次通信的开始;(2)主控器接着发送一个命令字节。该字节由 7 位的外围器件地址和 1 位读写控制位 R/W组成(此时 R/W=0);(3)相对应的被控器收到命令字节后向主控器回馈应答信号 ACK(ACK=0);(4)主控器收到被控器的应答信号后开始发送第一个字节的数据;(5)被控器收到数据后返回一个应答信号 ACK;(6)主控器收到应答信号后再发送下一个数据字节 (7)当主控器发送最后

7、一个数据字节并收到被控器的ACK后,通过向被控器发送一个停止信号 P 结束本次通信并释放总线。被控器收到 P 信号后也退出与主控器之间的通信。S从机地址(7 位)R/WA数据 1A数据 2A数据 1A数据 NAP启动信号地址字节(命令字)应答信号主控器产生的信号N 个数据字节的写入被控器产生的信号停止信号图 7.3主控器向被控器写 N 个数据的过程需要说明的是:主控器通过发送地址码与对应的被控器建立了通信关系,而挂接在总线上的其它被控器虽然同时也收到了地址码,但因为与其自身的地址不相符合,因此提前退出与主控器的通信;主控器的一次发送通信,其发送的数据数量不受限制。主控器是通过 P 信号通知发送

8、的结束,被控器收到 P 信号后退出本次通信;主机的每一次发送后都是通过被控器的 ACK 信号了解被控器的接收状况,如果应答错误则重发。3.2 主控器接收数据的过程过程简述如下:(1)主机发送启动信号后,接着发送命令字节(其中 R/W=1);(2)对应的被控器收到地址字节后,返回一个应答信号并向主控器发送数据;(3)主控器收到数据后向被控器反馈一个应答信号;(4)被控器收到应答信号后再向主控器发送下一个数据 ;(5)当主机完成接收数据后,向被控器发送一个“非应答信号(ACK=1)”,被控器收到ASK=1 的非应答信号后便停止发送;(6)主机发送非应答信号后,再发送一个停止信号,释放总线结束通信。

9、主控器所接收数据的数量是由主控器自身决定,当发送“非应答信号/A”时被控器便结束传送并释放总线(非应答信号的两个作用:前一个数据接收成功,停止从机的再次发送)。S从机地址(7 位)R/WA数据 1A数据 2A数据 1A数据 N/AP启动信号地址字节应答信号主控器产生的信号N 个数据字节的接收被控器产生的信号停止信号I2C总线的信号时序图 7.4主控器接收 N 个数据的过程以主控器向被控器发送一个字节的数据(写操作 R/W=0)为例。整个过程由主控器发送起始信号 S 开始,紧跟着发送一个字节的命令字(7 位地址和一个方向位 R/W=0),得到被控器的应答信号(ACK=0)后就开始按位发送一个字节

10、的数据。得到应答后发送 P 信号,一个字节的数据传送完毕。其数据传送的时序如图 7.5 所示。SDASCL D7 被控器 7 位地址D1R/WD0ACKD7主控器发送 8 位数据D0 ACK主控器发送123456789被控器主控器被控器发送START信号主控器发送命令字节应答主控器发送数据字节应答STOP信号图 7.5 主控器发送一个字节数据的时序在数据传送中数据高位(D7)在先, SDA 线上的数据在时钟脉冲 SCL 为低电平时允许变化(如图所示),在数据稳定后时钟脉冲为高电平期间传送数据有效。主控器接收数据(R/W=1) 的时序类似于发送,主要区别有两点:主机接收到数据后要向被控器发送应答

11、信号(ACK=0);当主机接收完最后一个数据时向被控器返回一个“非应答信号/ACK=1”以通知被控器结束发送操作,最后主控器发送一位停止信号 P 并释放总线(参见图 7.4)。这里具体的时序可以在后面的“接收子程序”中进行描述。I2C总线的时钟同步与总线仲裁I2C总线的SCL同步时钟脉冲一般都是由主控器发出作为串行数据的移位脉冲。每当SDA上出现一位稳定的数据后,在SCL上发送一个高电平的移位脉冲。5.1 SCL 信号的同步如果被控器希望主控器降低传送速度可以通过将SCL主动拉低延长其低电平时间的方法来通知主控器,当主控器在准备下一次传送发现SCL的电平被拉低时就进行等待,直至被控器完成操作并

12、释放SCL线的控制控制权。这样以来,主控器实际上受到被控器的时钟同步控制。可见SCL线上的低电平是由时钟低电平最长的器件决定;高电平的时间由高电平时间最短的器件决定。这就是时钟同步,它解决了I2C总线的速度同步。5.2 I2C总线上的总线仲裁如果在同一个I2C总线系统中存有两个主控器,其时钟信号分别为SCK1、SCK2,它们都具有控制总线的能力。假设两者都开始要控制总线进行通信,由于“线与”的作用,实际的SCL的波形如图 7.6 所示。在总线做出仲裁之前,两个主控器都会以“线与”的形式共同参与SCL线的使用,速度快的主控器 1 等待落后的主控器 2(如图 7.6)。总线得到仲SCK1SCK2主

13、机 1 等待DATA1DATA2 110010裁主控器 1释放总线SCLSDASCLS100图 7.6 SCL 信号的同步图 7.7 I2C总线上的总线仲裁时序图对于 SDA 线上的信号的使用,两个主控器同样也是按照“线与”的逻辑来影响 SDA 上的电平变化。假设主控器 1 要发送的数据 DATA1 为“101 ”;主控器 2 要发送的数据DATA2为“1001 ”。总线被启动后两个主控器在每发送一个数据位时都要对自己的输出电平进行检测,只要检测的电平与自己发出的电平一致,他们就会继续占用总线。在这种情况下总线还是得不到仲裁。当主控器 1 发送第 3 位数据“1”时(主控器 2 发送“0”),

14、由于“线与”的结果 SDA 上的电平为“0”,这样当主控器 1 检测自己的输出电平时,就会测到一个与自身不相符的“0”电平。这时主控器 1 只好放弃对总线的控制权;因此主控器2 就成为总线的唯一主宰者。仲裁过程如图 5.2 所示。不难看出:对于整个仲裁过程主控器 1 和主控器 2 都不会丢失数据;各个主控器没有对总线实施控制的优先级别;总线控制随即而定,他们遵循“低电平优先”的原则,即谁先发送低电平谁就会掌握对总线的控制权。根据上面的描述,“时钟同步”与“总线仲裁”可以总结如下规律:主控器通过检测 SCL 上的电平来调节与从器件的速度同步问题时钟同步;主控器通过检测SDA上自身发送的电平来判断

15、是否发生总线“冲突”总线仲裁。因此,I2C总线的“时钟同步”与“总线仲裁”是靠器件自身接口的特殊结构得以实现的。I2C总线的工作时序与AT89C51 单片机的模拟编程对于具有I2C总线接口的高档单片机来说,整个通信的控制过程和时序都是由单片机内部的I2C总线控制器来实现的。编程者只要将数据送到相应的缓冲器、设定好对应的控制寄存器即可实现通信的过程。对于不具备这种硬件条件的AT89C51单片机来说只能借助软件模拟的方法实现通信的目的。软件模拟的关键是要准确把握I2C总线的时序及各部分定时的要求。单片机与I2C器件的连接及引脚定义由图 7.8 所示,使用伪指令定义对I/O端口进行定义(设单片机的系

16、统时钟fosc为 6M,即单周期指令的运行时间为 2S)。SDA BIT P1.0SCL BIT P1.1AT89C51(主控器) P1.0 P1.1外围器件(被控器)SDASCL图 7.8 单片机与I2C器件的连接6.1 发送启动信号 S在同步时钟线 SCL 为高电平时,数据线出现的由高到低的下降沿。启动信号子程序 STASDASTA: SETBSDASETBSCL4.7SNOP启动信号NOP ;完成 4.7S 定时SCLCLR SDA ;产生启动信号NOPt HD:STANOP CLR SCL RET;完成t HD,STA定时4S图 7.9 启动信号的时序图【注】tHD,STA:起始信号保

17、持时间,最小值为4S。在这个信号过后才可以产生第一个同步信号;6.2 发送停止信号 P在 SCL 为高电平期间 SDA 发生正跳变。停止信号停止信号子程序 STOPSTOP: CLR SDASETBSCLNOPNOP SETBSDANOPNOP ;t SU:SOP定时;t BUF定时SDASCLt SU:SOP4StBUF4.7SCLR SCL CLR SDA RET图 7.10 停止信号的时序图【注】tSU:SOP 停止信号建立时间应大于 4.0S。tBUF P信号和S信号之间的空闲时间应大于4.7S。6.3 发送应答信号 ACK在 SDA 为低电平期间,SCL 发送一个正脉冲。应答信号子程

18、序 MACKMACK:CLR SDASETBSCLNOPNOP ;产生t HIGH定时SDASCLt HIGH4S图 7.11 应答信号 MACK 时序图CLR SCL SETBSDARET【注】t HIGH同步时钟SCL高电平最小时间,应大于 4.0S。 6.4 发送非应答信号 NACK在 SDA 为高电平期间,SCL 发送一个正脉冲。发送非应答信号子程序 MNACKSDAMNACK:SETBSDASETBSCLNOP NOP CLR SCK CLR SDA SCLt HIGH4SRET 6.5 应答位检测子程序 CACK图 7.12 非应答信号 ACK 时序图与上面发送 ACK 和 NAC

19、K 信号不同,这是主控器对接收被控器反馈的应答信号进行的检测处理。在正常情况下被控器返回的应答信号 ACK=0。如果ACK=1 则表明通信失败。在这个子程序中使用了一个位标志 F0 作为出口参数,当反馈给主控器的应答信号 ACK 正确时 F0=0;反之 F0=1。CACK:CEND:SETBSDA ;I/O 端口“写一”为输入做准备SETBSCLCLR F0 MOV C,SDA;对数据线 SDA 采样JNB CEND ;应答正确时转 CENDSETB F0 ;应答错误时标志 F0置一CLRSCLRET 6.6 发送一个字节子程序 WRBYT(过程参见图 7.5) 模拟I2C总线的时钟信号SCL

20、,通过数据线SDA进行一个字节的数据发送。入口参数为累加器A,A中存有待发送的 8 位数据。按照I2C的规范,先从最高位开始发送。WRBYT:MOVR6,#08H;计数器 R6 赋初值 8WLP:RLC A MOV SDA,C;将 A 中的数据高位左移进入 Cy 中;将数据位送入 SDA 线上SETB SCL NOP NOP CLR SCL DJNZ R6,WLPRET 6.7 接收一个字节数据的子程序 RDBYT;产生 SCL 时钟信号;产生t HIGH定时(大于 4S);时钟信号变低;判断 8 次位传送是否结束模拟I2C总线信号,从SDA线上读入一个字节的数据,并存于R2 或A中。RDBY

21、T:MOVR6,#08H RLP:【说明】SETBSDASETBSCLMOV C,SDAMOVA,R2RLC A MOV R2,ACLR SCL DJNZ R6,RLPRET ;采样 SDA 上的数据传到 Cy;R2 为接收数据的缓冲寄存器;将 Cy 中的数据移入 A 中;数据送回缓冲寄存器;时钟信号 SCL 拉低;8 位接收是否完成,未完成转 RLP将I2C总线的各种信号细划分为对应的子程序。当选择具有I2C总线接口的外围器件进行编程时,就可根据具体的器件的特性和要求,合理的组合、调用这些子程序完成相应的功能;为了简化问题,上述的子程序对局部变量(如计数器、数据指针等)没有进行数据保护。为了

22、使这些子程序具有很好的可移植性和通用性,编程者应当对它们进行进栈保护;上面的编程是设 AT89C51 的硬件系统采用 6MH 的系统时钟,这样指令 NOP 的执行时间是 2S,如果采用 12MH 的系统时钟,NOP 指令的周期为 1S,这样程序要作相应的改动以满足定时要求;时序中的定时时间按I2C总线的标准模式(S模式-100KHZ)制定。上面介绍了在AT89C51 单片机系统中,利用软件模拟的方式完成I2C总线的各种基本时序和操作的编程。作为一个单片机系统的设计、开发者应当根据系统设计的需求,选择所需要的外围芯片构成硬件系统,再根据这些芯片的工作原理、控制方式及对应的编程命令来设计、编程,最

23、终完成整个系统的设计工作。如果需要对I2C总线作更详细、深入的了解,读者可以查询相关的资料。需要说明的是:不同的I2C总线接口芯片由于功能的不同,其工作过程和编程步骤是有区别的。但是不论如何编程其具体实施都是运用上述的各个子程序来编写出应用程序来。芯片内部的单元寻址作为I2C总线的外围器件,大多器件还具有芯片内部的地址(如各个控制、状态寄存器,EEPROM的存储单元地址等),因此对大多数I2C外围器件的访问实际上要分别处理“外围器件地址”和“器件内部的单元地址”这两部分内容。7.1 内部单元的单字节访问例如对 EEPROM 24C02 芯片的 00H 单元访问,操作时序如图 7.13 和图 7

24、.14 所示。 S1 0 1 0 0 0 0R/WAE2PROM内部地址A写入的 8 位数据AP启动命令字节R/W=0应答8 位存储单元地址1 个数据字节的写入停止主控器产生的信号被控器产生的信号图 7.13 AT24C02 的一个字节的写入帧格式(器件地址为 A0H)第一次操作写入存储器内部单元地址第二次操作读出存储器对应地址单元中的数据S1 0 1 0 0 0 0R/WAE2PROM内部地址AS1 0 1 0 0 0 0R/WA读出的 8 位数据/AP启动命令字节R/W=0应答8 位内部地址主控器产生的信号再启动命令字节R/W=1被控器产生的信号数据的读出非应答 停止图 7.14 读指定地

25、址存储单元中的一个数据帧格式(器件地址为 A0H) 从图 7.14 中可以见到:一个带芯片内部单元地址的“读操作”是要发送两次命令字节的:(1)首先发送一个“写”操作的控制字(外围芯片地址 A0H 即 R/W=0);(2)紧接着将内部单元地址发送出去(如:00H)。这也是为什么前面是一个“写”命令的原因;(3)当主控器收到外围器件的应答信号后,重新发送一个“启动信号”和一个“读”操作的命令字(A1H 即 R/W=1);(4)外围器件收到命令并返回应答信号后,将内部单元(如 00H)的数据发到 SDA 线上;(5)主控器收到信号后向外围器件返回一个“非应答信号”后,发送一个停止信号并释放总线;(

26、6)外围器件收到主控器发出的“非应答信号”/A 后,停止数据的传送,释放总线。7.2 内部单元的多字节访问 在很多情况下,对内部单元的访问往往是多字节的。如对 EEPROM 几个连续单元数据的读操作或者写操作,又比如:对外围器件中相关几个控制、状态寄存器的访问等。对于具有内部单元地址的I2C接口的外围器件,其内部都设计有一个“内部地址计数器”,每访问一次内部单元(无论是控制、状态寄存器还是EEPROM存储单元)其地址指针就会“自动加一”。这种设计简化了对内部数据的访问操作。因此如果要访问一个数块,只要在发送控制命令时指定一个首地址即可。也就是因为这个原因,在访问内部一些相关的控制、状态寄存器数

27、据时,应当利用这一特点,连续访问这些单元(尽管某些单元的内容无用),这样可以节省对外围器件的访问操作。对于连续访问的数据数量是由主控器来控制的,具体地说是通过向外围器件发送“非应答信号”来结束这个数据的操作。对于数据块的“读、写操作”要注意两点:(1) 在读操作中要发送两次命令字:第一个是带有外围器件地址的“写”命令(R/W=0) ,作用是将后续发出的内部地址写入到外围器件中的“地址计数器”中,第二个是发送带有外围器件的“读”命令(R/W=1),开始真正的“读操作”。两个命令字之间是一个“启动信号 S”来分割的;(2) 在写操作中,某些外围器件(如 EEPROM)其连续写入的数据是受到限制的,

28、如 24C02每次连续写入的数据不能超过 8 个字节(这与其内部输入缓冲器的数量有关)。操作时续如下:S1 0 1 0R/WAE2PROM内部地址A8 位数据AA8 位数据AP启动命令字节 R/W=0主控器产生的信号应答8 位存储单元地址被控器产生的信号N 个数据字节的写入停止图 7.14 24C02 EEPROM 中 N 个字节写入的帧格式第一次操作写入存储器内部单元地址第二次操作读出存储器对应地址单元中的数据S1010000R/WA内部地址AS1010000R/WA数据 1A数据 2数据 N/AP启动命令字节R/W=0应答8 位内部地址命令字节R/W=1应答N 个数据的读出非应答停止图 7

29、.15 读取连续地址单元中的数据帧格式(24C02 EEPROM) 7.7.3 具有内部单元地址的多字节读/写子程序 在下列的两个子程序中包含了前面所描述的各种子程序,对单片机的引脚定义参加见图7.16。在程序的前面还要使用伪指令定义以配合单片机引脚与外围器件的连接Vcc=5VSDA BIT P1.0SCL BIT P1.1(1)具有内部单元地址的多字节读子程序 RDADD.ASM(参见图 7.15);*;通用的 I2C 通讯子程序(多字节读操作);入口参数 :R7 字节数;P1.0 P1.1 89C51 5.1K2SDA SCL ;R0 目标数据块首地址;R2 从器件内部子地址;;R3 器件

30、地址(写);R4 器件地址(读);相关子程序 WRBYT、STOP、CACK、STA、MNACK、RDBYT;*RDADD: PUSHPSW PUSH ACC LCALLSTA MOV A,R3;取器件地址(写)LCALLWRBYT;发送外围地址图 7.16 单片机与I2C芯片的连接发送 S 信号发送写命令字 R/W=0NACK=0?LCALLCACK;检测外围器件的应答信号Y发送内部单元地址JBF0,RDADD;如果应答不正确返回重来MOV A,R2;取内部地址 LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号NACK=0?重发送 S 信号JBF0,RDADD;如

31、果应答不正确返回重来 LCALLSTA MOV A,R4;取器件地址(读)LCALLWRBYT;发送外围地址发送读命令字 R/W=1NACK=0?YLCALLCACK;检测外围器件的应答信号读取数据RDN:JBF0,RDADD;如果应答不正确返回重来LCALLRDBYT ;读入数据(出口参数:A)MOV R0,A;存入缓冲区 DJNZ R7,ACKLCALL MNACKLCALLSTOP POP ACCPOP PSWRET 修改数据指针 R0发送应答信号N发送完?Y发送非应答信号发送停止信号RETACK: LCALL MACKINC R0图 7.17 读 N 个数据的流程图SJMP RDN ;

32、*(2) 具有内部单元地址的多字节写子程序(参见图 7.14) ;* ;通用的 I2C 通讯子程序(多字节写操作);入口参数 ;R7 字节数; ;R0 源数据块首地址;R2 从器件内部子地址;;R3 器件地址(写);R4 器件地址(读);相关子程序 WRBYT、STOP、CACK、STA、MNACK;*WRNBYT: PUSH PSW PUSHACC WRADD:MOV A,R3;取外围器件地地址(包含 r/w=0) LCALLSTA ;发送起始信号 S LCALLWRBYT;发送外围地址LCALLCACK;检测外围器件的应答信号NN发送 S 信号发送命令字ACK=0?Y发送单元地址ACK=0

33、?YJBF0,WRADD;如果应答不正确返回重来发送数据MOV A,R2LCALLWRBYTLCALLCACKJBF0,WRADDWRDA: MOV A,R0LCALLWRBYTLCALLCACKJBF0,WRADDINC R0DJNZ R7,WRDALCALLSTOP ;区内部单元地址;发送内部寄存器首地址;检测外围器件的应答信号;如果应答不正确返回重来 ;写数据代外围器件;检测外围器件的应答信号;如果应答不正确返回重来NACK=0?Y修改数据块指针发送完?Y发送 P 信号RETNPOP ACCPOP PSWRET ;* 图 7.18 写 N 个数据的流程I2C总线外围器件编程实验在DP-5

34、1PROC综合实验台的D5 区,分别设计了三种具有I2C总线接口的外围器件。它们分别是:1PCF8563T 实时时钟 RCT 芯片(芯片外围地址 A2H/A3H);2CAT24WC02 EEPROM 芯片(芯片外围地址 A0H/A1H);3ZLG7290 LED 动态显示、键盘扫描芯片(芯片外围地址 70H/71H)。运用第七章所描述的模拟编程方法可以很方便的实现对上述器件的读写控制及各种实验练习。在完成每一个独立的芯片实验基础上,还可以将它们有机的结合起来构成一个具有一定使用价值的综合设计题目。通过这一章的实践,不仅可以帮助我们掌握对I2C外围器件的编程方法,而且还可以进一步感受到I2C系统

35、的简洁、方便的硬件结构,为将来实际工程应用打下一个良好的基础。8.1 24 系列 EEPROM 芯片 CAT24WC02 结构原理及实验24 系列E2PROM是目前单片机系统中应用比较广泛的存储芯片。采用I2C总线接口,占用单片机的资源少、使用方便、功耗低、容量大,被广泛应用于智能化产品设计中。8.1.1 24 系列 EEPROM 器件简介24 系列E2PROM为串行接口的用电来擦除的可编程COMS只读存储器。擦除次数高达 10 万次以上,典型的擦除时间为 5ms,片内数据存储时间可达 40 年以上。采用单+5V供电,工作电流 1mA,备用状态 10A。 (1) 24 系列E2PROM芯片的引

36、脚定义 引脚说明如下:dSDA:串行数据输入/输出端,漏极开路结构,A0/NCA1/NCA2/NCGND1 82 73 64 5VccWP/TESTSCL SDA使用时必须外接一个 5.1k 的上拉电阻。通信时高位在先;dSCL:串行时钟输入端,用于对输入数据的同步;图 8.1 24 系列E2PROM芯片引脚图dWP:写保护。用于对写入数据的保护。WP=0不保护;WP=1 保护,即所有的写操作失效,此时的E2PROM实际上就是一个只读存储器; dA0A2:器件地址编码输入。I2C总线外围器件的地址由 7 位组成:其中高 4 位为生产厂家为每一型号芯片固定设置的地址也称“特征码”;低 3 位以“

37、器件地址编码输入”的形式留给用户自行定义地址。理论上在同一个I2C总线系统中最多可以使用8 个同一型号的外围器件;dTEST:测试端。生产厂家用于对产品的检验,用户可以忽略;dVcc:+5V 电源输入端;dNC:空脚。 (2) 24 系列E2PROM芯片特性及分类在 24 系列产品中芯片可以划分 4 种类型。由于设计的年代不同,其性能、容量、器件地址编码的方式等各不相同。其中:第一类的芯片属于早期产品,不支持用户引脚自定义地址功能,所以在一个系统中只能使用一个该型号的芯片。同时还不具备数据保护功能;第二类的芯片是目前常用的类型。不仅具备数据保护,还有用户引脚地址定义功能,所以在一个系统中可以同

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁