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

上传人:jin****ng 文档编号:50332072 上传时间:2022-01-20 格式:DOC 页数:35 大小:869.50KB
收藏 版权申诉 举报 下载
I2C总线的结构、工作时序与模拟编程_第1页
第1页 / 共35页
I2C总线的结构、工作时序与模拟编程_第2页
第2页 / 共35页
I2C总线的结构、工作时序与模拟编程_第3页
第3页 / 共35页
资源描述:

《I2C总线的结构、工作时序与模拟编程》由会员分享,可在线阅读,更多相关《I2C总线的结构、工作时序与模拟编程(35页珍藏版)》请在装配图网上搜索。

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

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

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

4、线的控制权;同系统间的通信;9. I2C总线的工作速度分为3种版本:S (标准模式),速率为100kb/s。主要用于简单的检测与控制场合;F (快速模式),速率为400kb/s; Hs (高速模式),速率为3.4Mb/s。I C总线的系统和接口内部结构2.1 I C总线的系统结构每一个I2C总线器件内部的SDA SCL引脚电路结构都是一样的,引脚的输 出驱动与输入 缓冲连在一VCC时钟同步”和SDASCLSCL SDA串行时钟串行数据输出输出串行时钟串行数据输入输入图 7.2 I2c总线接口内部结构起。其中输出为漏极开路的场效应管、输入缓冲为 只高输入阻抗的同相器。这种电路具有两个特点: 由于

5、 SDA、 SCL 为漏极开路结构,借助于外部的上 拉电阻实现了信号的“线与”逻辑;引脚在输出信号的同时还将引脚上的电平进行检 测,检测是否与刚才输出一致。为 “总线仲裁”提供硬件基础。SDSCSCLSDASDSCLSDSCLSDSCL总线上的所有通信都是由主控器引发的。在一次通信中,主控器与被控器总是在扮演着 两种不同的角色。3.1 主控制器向被控器发送数据操作过程如下:(1) 主控器在检测到总线为“空闲状态”(即 SDA、SCL线均为高电平)时,发送一个启 动信号“ S”,开始一次通信的开始;(2) 主控器接着发送一个命令字节。该字节由7位的外围器件地址和 1位读写控制位 R/W组成(此时

6、R/W=0);(3) 相对应的被控器收到命令字节后向主控器回馈应答信号ACK( ACK=0);(4) 主控器收到被控器的应答信号后开始发送第一个字节的数据;(5) 被控器收到数据后返回一个应答信号ACK ;(6) 主控器收到应答信号后再发送下一个数据字节 (7) 当主控器发送最后一个数据字节并收到被控器的ACK后,通过向被控器发送一个停止信号P结束本次通信并释放总线。被控器收到P信号后也退出与主控器之间的通信。IS从机地址(7位)R/WA |数据1A数据2A数据1A ! H数据NApVX0 V t启动信号地址字节应答信号N个数据字节的写入停止信号(命令字)主控器产生的信号匚|被控器产生的信号图

7、7.3主控器向被控器写 N个数据的过程需要说明的是:主控器通过发送地址码与对应的被控器建立了通信关系,而挂接在 总线上的其它被控器虽然同时也收到了地址码,但因为与其自身的地址不相符合,因此提前 退出与主控器的通信;主控器的一次发送通信,其发送的数据数量不受限制。主控器是通 过P信号通知发送的结束,被控器收到P信号后退岀本次通信;主机的每一次发送后都是通过被控器的 ACK信号了解被控器的接收状况,如果应答错误则重发。3.2主控器接收数据的过程过程简述如下:(1) 主机发送启动信号后,接着发送命令字节(其中 R/W=1 );(2) 对应的被控器收到地址字节后,返回一个应答信号并向主控器发送数据;(

8、3) 主控器收到数据后向被控器反馈一个应答信号;(4) 被控器收到应答信号后再向主控器发送下一个数据;(5)当主机完成接收数据后,向被控器发送一个“非应答信号( ACK=1 )”,被控器收到ASK=1的非应答信号后便停止发送;(6)主机发送非应答信号后,再发送一个停止信号,释放总线结束通信。主控器所接收数据的数量是由主控器自身决定,当发送“非应答信号/A ”时被控器便结束传送并释放总线(非应答信号的两个作用:前一个数据接收成功,停止从机的再次发送)从机地址(7位)R/WI A数据1A数据2A数据1IAVN个数据字节的接收0yr启动信号地址字节应答信号数据N /A I P停止信号匚|主控器产生的

9、信号匚被控器产生的信号图7.4主控器接收N个数据的过程I C总线的信号时序以主控器向被控器发送一个字节的数据(写操作R/W=0)为例。整个过程由主控器发送起始信号S开始,紧跟着发送一个字节的命令字(7位地址和一个方向位R/W=0),得到被控器的应答信号(ACK=0后就开始按位发送一个字节的数据。得到应答后发送P信号,一个字节的数据传送完毕。其数据传送的时序如图7.5所示。化(如图所示),在数据稳定后时钟脉冲为高电平期间传送数据有效。主控器接收数据(R/W=1)的时序类似于发送,主要区别有两点:主机接收到数据后要向被控器发送应答信号(ACK=0 :当主机接收完最后一个数据时向被控器返回一个“非应

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

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

12、TA2;1 00/SDA口 /SCL Is 丨_厂L - . I图7.7 I C总线上的总线仲裁时序图对于SDA线上的信号的使用,两个主控器同样也是按照“线与”的逻辑来影响SDA上的电平变化。假设主控器1要发送的数据 DATA1为“101”;主控器 2要发送的数据DATA2为“ 1001”。总线被启动后两个主控器在每发送一个数据位时都要对自己的输 岀电平进行检测,只要检测的电平与自己发岀的电平一致,他们就会继续占用总线。在这种情况下总线还是得不到仲裁。当主控器1发送第3位数据“ 1”时(主控器2发送“ 0”),由于“线与”的结果 SDA上的电平为“ 0”,这样当主控器 1检测自己的输出电平时,

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

14、身接口的特殊结构得以实现的。I C总线的工作时序与AT89C51单片机的模拟编程对于具有l2C总线接口的高档单片机来说,整个通信的控制过程和时序都是由单片机内部的l2C总线控制器来实现的。编程者只要将数据送到相应的缓冲器、设定好对应的控制寄存器即可实现通信的过程。对于不具备这种硬件条件的AT89C51单片机来说只能借助软件模拟的方法实现通信的目的。软件模拟的关键是要准确把握l2C总线的时序及各部分定时的要求。单片机与l2C器件的连接及引脚定义由图7.8所示,使用伪指令定义对I/O端口进行定义(设单片机的系统时钟fosc为6M,即单周期指令的运行时间为2 口 S)。SDA BIT P1.0SCL

15、 BIT P1.1AT89C51(主控器)外围器件(被控器)SDASCL图7.8单片机与I2C器件的连接6.1发送启动信号S在同步时钟线 SCL为高电平时,数据线出现的由高到低的下降沿启动信-号子程序STASTA :SETBSDASETBSCLNOPNOP;完成4.7 口 S定时CLRSDA;产生启动信号NOPNOP;完成t HD,STA定时CLRSCLRET【注】t HD,STA :起始信号保持时间,最小值为步信号6.2发送停止信号P在SCL为高电平期间 SDA发生正跳变。停止信号子程序STOPSTOP: CLRSDASETBSCLNOPNOPSETBSDANOPNOPCLRSCLCLRSD

16、ARET;t SU: SOP定时;t BUF疋时SDASCLt HD: STA 4 口S启动信号7.9启动信号的时序图4 口 S。在这个信号过后才可以产生第一个同SCL;t SU: SOP| 4 口S7停止信号SDA jtBUF 4.7 口 S :图7.10停止信号的时序图【注】tsU: SOP停止信号建立时间应大于4.0 口 So tBUF P信号和S信号之间的空闲时间应大于4.7 口 So6.3发送应答信号ACK在SDA为低电平期间,SCL发送一个正脉冲应答信号子程序 MACKMACK :CLR SDASETB SCLNOPNOP;产生t HIGH定时图7.11应答信号 MACK 时序图C

17、LR SCLSETB SDARET【注】t HIGH同步时钟SCL高电平最小时间,应大于4.0 口 So6.4 发送非应答信号 NACK在SDA为高电平期间,SCL发送一个正脉冲发送非应答信号子程序 MNACKSDAMNACK : SETB SDASETB SCLNOPNOPCLR SCKCLR SDARETSCL t HIGH p: 4 口S 图7.12非应答信号 ACK时序图6.5 应答位检测子程序CACK与上面发送 ACK和NACK信号不同,这是主控器对接收被控器反馈的应答信号进行的检测处理。在正常情况下被控器返回的应答信号ACK=0 o如果 ACK=1则表明通信失败。在这个子程序中使用

18、了一个位标志F0作为岀口参数,当反馈给主控器的应答信号ACK正确时F0=0;反之 F0=1 oCACK :SETBSDA;I/O端口“写一”为输入做准备SETBSCLCLRF0MOVC, SDA;对数据线SDA采样JNBCEND;应答正确时转 CENDSETBF0;应答错误时标志 F0置一一CEND:CLRSCLRET6.6发送一个字节子程序 WRBYT(过程参见图7.5 )模拟l2C总线的时钟信号SCL,通过数据线SDA进行一个字节的数据发送。入口参数为累加器A , A中存有待发送的8位数据。按照l2C的规范,先从最高位开始发送。WRBYT :MOVR6, #08H计数器 R6赋初值8WLP

19、 :RLC A;将A中的数据高位左移进入 Cy中MOV SDA, C;将数据位送入 SDA线上SETBSCL;产生 SCL 时钟信号NOPNOP产生t HIGH定时(大于 4 口 S)CLRSCL;时钟信号变低DJNZ R6, WLP; 判断 8 次位传送是否结束RET6.7 接收一个字节数据的子程序RDBYT模拟12C总线信号,从SDA线上读入一个字节的数据,并存于 R2或A中RDBYT :MOVR6, #08HRLP:SETBSDASETBSCLMOVC, SDA;采样 SDA 上的数据传到 CyMOVA , R2;R2 为接收数据的缓冲寄存器RLCA;将 Cy 中的数据移入 A 中MOV

20、R2, A;数据送回缓冲寄存器CLRSCL; 时钟信号 SCL 拉低DJNZ R6, RLP;8 位接收是否完成,未完成转 RLPRET【说明】 将IC总线的各种信号细划分为对应的子程序。当选择具有IC总线接口的外围器件进行编程时,就可根据具体的器件的特性和要求,合理的组合、调用这些子程序完成相应的功能; 为了简化问题,上述的子程序对局部变量(如计数器、数据指针等)没有进行数据保护。 为了使这些子程序具有很好的可移植性和通用性,编程者应当对它们进行进栈保护; 上面的编程是设 AT89C51 的硬件系统采用 6MH 的系统时钟,这样指令 NOP 的执行时间 是2 口 S,如果采用12MH的系统时

21、钟,NOP指令的周期为1 口 S,这样程序要作相应的改动 以满足定时要求; 时序中的定时时间按l2C总线的标准模式(S模式-100KHZ )制定。上面介绍了在AT89C51单片机系统中,利用软件模拟的方式完成l2C总线的各种基本时序和操作的编程。作为一个单片机系统的设计、开发者应当根据系统设计的需求,选择所需 要的外围芯片构成硬件系统,再根据这些芯片的工作原理、控制方式及对应的编程命令来设 计、编程,最终完成整个系统的设计工作。如果需要对l2C总线作更详细、深入的了解,读者可以查询相关的资料。需要说明的是:不同的l2C总线接口芯片由于功能的不同,其工作过程和编程步骤是有 区别的。但是不论如何编

22、程其具体实施都是运用上述的各个子程序来编写出应用程序来。芯片内部的单兀寻址作为IC总线的外围器件,大多器件还具有芯片内部的地址(如各个控制、状态寄存器,EEPROM存储单元地址等),因此对大多数 IC外围器件的访问实际上要分别处理“外围器件 地址”和“器件内部的单元地址”这两部分内容。7.1内部单元的单字节访问例如对EEPROM 24C02芯片的00H单元访问,操作时序如图 7.13 和图7.14 所示。R/W=O口主控器产生的信号口被控器产生的信号Sl1 0 1 0 0 0 0 1R/WAE2PROM内部地址A写入的8位数据AP应答8位存储单元地址VT1个数据字节的写入停止启动命令字节图7.

23、13 AT24C02 的一个字节的写入帧格式(器件地址为AOH)第一次操作写入存储器内部单元地址第二次操作读岀存储器对应地址单元中的数据应答 8位内部地址LS1 0 1 0 0 0 0 1R/WA再启动A E2PROM内部地址命令字节R/W=1读出的8位数据 /A P数据的读岀 非应答停止S 1 0 1 0 0 0 0 |r/w0y 启动命令字节R/W=O主控器产生的信号口被控器产生的信号AOH)图7.14读指定地址存储单元中的一个数据帧格式(器件地址为从图7.14中可以见到:一个带芯片内部单元地址的“读操作”是要发送两次命令字节AOH 即 R/W=O);的:(1)首先发送一个“写”操作的控制

24、字(外围芯片地址(2)紧接着将内部单元地址发送岀去(如:00H)。这也是为什么前面是一个“写”命令的原因;(3 )当主控器收到外围器件的应答信号后,重新发送一个“启动信号”和一个“读”操作的命令字(A1H即R/W=1);(4)外围器件收到命令并返回应答信号后,将内部单元(如 00H )的数据发到SDA线上;(5 )主控器收到信号后向外围器件返回一个“非应答信号”后,发送一个停止信号并释放总线;(6)外围器件收到主控器发出的“非应答信号”/A后,停止数据的传送,释放总线。7.2内部单元的多字节访问在很多情况下,对内部单元的访问往往是多字节的。如对EEPROM几个连续单元数据的读操作或者写操作,又

25、比如:对外围器件中相关几个控制、状态寄存器的访问等。对于具有内部单兀地址的 器”,|2C接口的外围器件,其内部都设计有一个“内部地址计数每访问一次内部单元(无论是控制、状态寄存器还是EEPRO存储单元)其地址指针就会“自动加一”。这种设计简化了对内部数据的访问操作。因此如果要访问一个数块,只要在发 送控制命令时指定一个首地址即可。也就是因为这个原因,在访问内部一些相关的控制、状 态寄存器数据时,应当利用这一特点,连续访问这些单元(尽管某些单元的内容无用),这 样 可以节省对外围器件的访问操作。对于连续访问的数据数量是由主控器来控制的,具体地说是通过向外围器件发送“非 应答信号”来结束这个数据的

26、操作。对于数据块的“读、写操作”要注意两点:(1)在读操作中要发送两次命令字:第一个是带有外围器件地址的“写”命令(R/W=O),作用是将后续发出的内部地址写入到外围器件中的“地址计数器”中,第二个是发 送带有外围器件的“读”命令(R/W=1,开始真正的“读操作”。两个命令字之 间是一个“启动信号 S来分割的:(2)24C0晋件(女口EEPRP每次连续写入的数据不能超过 8个字节(这与其内部输入缓冲器的数量有关)。 操作时续如下:S 1 0 1 0 XXX R/W AE2PROM内部地址 A 8位数据 AA 8位数据A命令字节R/W=0 应答18位存储单元地址N个数据字节的写入主控器产生的信号

27、被控器产生的信号图7.14 24C02 EEPROM 中N个字节写入的帧格式第一次操作写入存储器内部单元地址第二次操作读岀存储器对应地址单元中的数据S 1010000 R/W A 内部地址 A S 1010000 R/W A 数据 1 A 数据 2数据 N /A P启动 命令字节应答8位内部地址R/W=0命令字节R/W=1应答 N 个 非应答 停止数据的读出图 7.15 读取连续地址单元中的数据帧格式( 24C02 EEPRO)M具有内部单元地址的多字节读 / 写子程序在下列的两个子程序中包含了前面所描述的各种子程序,对单片机的引脚定义参加见图7.16。在程序的前面还要使用伪指令定义以配合单片

28、机引脚Vcc=5V5.1KX2与外围器件的连接SDA BIT P1.0SCL BIT P1.1(1)具有内部单元地址的多字节读子程序RDADD.ASM(参见图7.15) *JJ通用的I2C通讯子程序(多字节读操作);入口参数:R7字节数;;R0目标数据块首地址;R2从器件内部子地址;;R3器件地址(写);R4器件地址(读)P1.0P1.189C51SDASCL图7.16单片机与I2C芯片的连接;相关子程序 WRBYT STOP CACK STA MNACK RDBYT*RDADD:PUSHPSWPUSHACCLCALLSTAMOVA,R3LCALLWRBYTLCALLCACKJB F0,RDA

29、DDMOV A,R2LCALLWRBYTLCALLCACKJB F0,RDADDLCALLSTAMOVA,R4LCALLWRBYTLCALLCACKJB F0,RDADDRDN:LCALLRDBYTMOVR0,ADJNZR7,ACKLCALLMNACKLCALLSTOPPOP ACCPOP PSWRETACK:LCALLMACKINC R0;取器件地址(写);发送外围地址;检测外围器件的应答信号;如果应答不正确返回重来;取内部地址;发送外围地址;检测外围器件的应答信号;如果应答不正确返回重来;取器件地址(读);发送外围地址;检测外围器件的应答信号;如果应答不正确返回重来;读入数据(出口参数:A

30、);存入缓冲区修改数据指针R0图7.17读N个数据的流程图WRNBYT: PUSHPSWPUSHACCWRADD: MOVA,R3LCALLSTALCALLWRBYTLCALLCACKJBF0,WRADDMOVA,R2LCALLWRBYTLCALLCACKJB F0,WRADD;取外围器件地地址(包含 r/w=0 );发送起始信号S;发送外围地址;检测外围器件的应答信号;如果应答不正确返回重来;区内部单元地址;发送内部寄存器首地址;检测外围器件的应答信号;如果应答不正确返回重来;写数据代外围器件;检测外围器件的应答信号;如果应答不正确返回重来SJMP RDN*(2)具有内部单元地址的多字节写子

31、程序(参见图7.14 )*;通用的I2C 通讯子程序(多字节写操作);入口参数;R7字节数;;R0源数据块首地址;R2从器件内部子地址;R3器件地址(写);R4器件地址(读);相关子程序WRBYT STOP CACK STA MNACKWRDA: MOV A,R0LCALL WRBYTLCALL CACKJB F0,WRADD INC RODJNZ R7,WRDALCALL STOPPOP ACCPOP PSWRET*I2C总线外围器件编程实验在DP-51PR0综合实验台的D5区,分别设计了三种具有IC总线接口的外围器件。它们分 别是:1. PCF8563T实时时钟 RCT芯片(芯片外围地址

32、A2H/A3H);2. CAT24WC02 EEPRO芯片(芯片外围地址 A0H/A1H);3. ZLG7290 LED动态显示、键盘扫描芯片(芯片外围地址 70H/71H )。运用第七章所描述的模拟编程方法可以很方便的实现对上述器件的读写控制及各种实验练习。在完成每一个独立的芯片实验基础上,还可以将它们有机的结合起来构成一个具有 一定使用价值的综合设计题目。通过这一章的实践,不仅可以帮助我们掌握对I2C外围器件的编程方法,而且还可以进一步感受到I2C系统的简洁、方便的硬件结构,为将来实际工程应用打下一个良好的基础。8.1 24 系列EEPROM芯片 CAT24WC 02结构原理及实验24系列

33、E2PRO是目前单片机系统中应用比较广泛的存储芯片。采用IC总线接口,占用单片机的资源少、使用方便、功耗低、容量大,被广泛应用于智能化产品设计中24 系列EEPROM器件简介24系列E2PRO为串行接口的用电来擦除的可编程COM只读存储器。擦除次数高达10万次以上,典型的擦除时间为5ms,片内数据存储时间可达40年以上。采用单+5V供电,工作电流1mA,备用状态 10 口 AA0/NC 厂1J VccA1/NC r27 1WP/TESTA2/NC r36 15 SCLGND L5J SDA图8.124系列E2PRO芯片引脚图(1) 24系列E2PRO芯片的引脚定义弓I脚说明如下:SDA串行数据

34、输入/输出端,漏极开路结构, 使用时必须外接一个5.1k的上拉电阻。通信 时高位在先;SCL串行时钟输入端,用于对输入数据的同步;WP写保护。用于对写入数据的保护。WP=0不保护;WP=1保护,即所有的写操作失效,此时的EPRO实际上就是一个只读存储器;A0A2:器件地址编码输入。IC总线外围器件的地址由7位组成:其中3位以“器件地址12C总线系统中最多可以使用高4位为生产厂家为每一型号芯片固定设置的地址也称“特征码”;低编码输入”的形式留给用户自行定义地址。理论上在同一个8个同一型号的外围器件;TEST测试端。生产厂家用于对产品的检验,用户可以忽略;Vcc: +5V电源输入端;NC空脚。(2

35、)24系列EPRO芯片特性及分类在24系列产品中芯片可以划分 4种类型。由于设计的年代不同,其性能、容量、器件地址编码的方式等各不相同。其中:第一类的芯片属于早期产品,不支持用户引脚自定义地址功能,所以在一个系统中只能使用一个该型号的芯片。同时还不具备数据保护功能;第二类的芯片是目前常用的类型。不仅具备数据保护,还有用户引脚地址定义功能,所以在一个系统中可以同时使用18个该信号的芯片;第三类芯片基本上类似于第二类,区别在于器件地址的控制比较特殊;第四类芯片的主要特点是大容量,并支持全部的器件定义地址,因此在一个系统中可同时使用8个该型号的芯片类别型号容量页数连续写入数据个数器件地址 编码-一-

36、AT24C01128X8不支持AT24C01A128X8A2 A1 A0AT24C02256X8A2 A1 A0-二二AT24C04512216A2 A1 NCAT24C081K416A2 NC NCAT24C162K816NC NC NC三AT24C1642K816A2 A2 A0四AT24C324KX32A2 A2 A0AT24C648KX32A2 A2 A0系统可用硬件保护区域命令字节格式型号特征地址引脚页地址R/W数量D7 D6 D5 D4D3 D2 D1D01不支持1 0 1 0X X X1/08全部1 0 1 0A2 A1 A01/08全部1 0 1 0A2 A1 A01/04高2

37、561 0 1 0A2 A1 P01/02不支持1 0 1 0A2 P1 P01/01咼1K1 0 1 0P2 P1 P01/08咼1K1 A2 A1 A0P2 P1 P01/08咼1K1 0 1 0A2 A1 A01/08咼2K1 0 1 0A2 A1 A01/0表8.1 24系列E2PRO芯片特性、分类表表8.1列出了 24系列E2PROM芯片的特性与分类。对于表中内容说明如下: “容量”是指字节数,如128是指128X 8,即128个字节、每个字节为 8bit ; “页数”是指将存储器中每256个字节为一页。当芯片的存储容量小于等于256个字节时其容量实际上局限于一页的范围之内;通的SR

38、AM储器不同,在写数据过程中 EPRO要占用大量的时间来完成存储器单元的擦除、写入操作。为了提高整个的系统运行速度,在芯片的设计中采用了“写入数据缓冲器”结构,即主控器通过总线高速将待写入的数据先送入到EPRO内部的数据缓冲器中,然后留给EPRO自己逐一写入。这种设计方法可以极大地提高主控器的工作效率,当EPRO在烧写数据时主控器可以进行其他的工作。在24系列EPRO中,不同的芯片其内部的缓冲单元的数量是不同的,在编程中一次连续写入EPRO的数据字节数不能超过缓冲器的单元数,否则会出现错误。因此所谓的“写入块字节数”实际上就是指E2PROM“写入数据缓冲器”的数量; “器件地址编码”指器件 7

39、位地址码中低3位引脚地址的定义功能。理论上 l2C总线外围的低 3 位地址是由器件本身的 3 个引脚的电平来确定的,这种方法为在一个系统中使 用多个同一型号的芯片带来了灵活性。但在实际设计中 7 位地址码中的低 3 位不全留 给使用者使用和定义。这在IC总线外围器件中也是常见的; “系统可用数量”是指在同一个 l2C总线系统中可同时使用某一型号芯片的数量。不难看出,这个数据实际上是由芯片本身的“器件地址编码”功能来决定的; “硬件写保护区域”是指对 EPRO存储器中原先写入的数据进行保护。与普通的SRA不同,EPRO存储的数据往往是一些重要的参数(如表格、程序运行参数等),采用保护 措施后可以

40、防止误操作而破坏系统的软件系统。保护功能是通过芯片的W引脚接高电平实现的。在实际应用中可由主控器(单片机)的一个 I/O 口线控制或直接与Vcc或接 地处理; “命令字节格式”是指芯片的地址码加方向控制 R/W 位。这实际上是主控器寻址外围 器件的命令字。在这个字节中,除了最低位 D0 是由主控器发出的“读”或“写”控制 码外,高 7 位中的高 4 位由厂家已经定义为 1010 (AT24C164 除外),其余低 3 位根据 芯片型号(容量)的不同而不同。这低 3位(d3、d2、di)的定义实际上与芯片的“器 件地址编码”即引脚地址定义功能有关:(I)对于A2A0引脚全部参与器件地址定义的情况

41、,注意这也是存储单元不分页的芯片。因此, 7 位地址码实际上是一种规范的“ 4+3” 格式,即 4 位特征码加上 3 位器件地址码。只要使用者在硬件上将芯片的A2A0引脚处理好,则该芯片的地址就被唯一的确定下来。以 AT24C01A为例:将芯片的 A2A0全部接地,这样芯片的 7位地 址为 1010000,主控器要去读该芯片中的数据,其命令字节为10100001 (R/W=1);(H)对于芯片引脚 A2A0部分参与器件地址定义的芯片(如 AT24C04/08 ),其没有参与地址定义的引脚(如 A0/A0、A1)实际上在命令字的对应位置上起到一个“页选 Pi” 的功能,其页选数正好与不参与器件地

42、址定义引脚的个数有关;(川)对于芯片引脚 A2A0全不介入器件引脚定义的芯片(如AT24C16),虽然其硬件引脚A2 A0 无用,但在命令字对应的位置上实际上成为页地址的选择位,所以主控器寻 址该器件时,其命令字中的 7 位地址实际上是 4 位特征码加 3 位“页地址”。(W)对于第三类芯片 AT24C164而言,其A2A0全部参与器件地址定义,存储区域又分为8 页。那么如何将这些“器件地址”和“页地址”信息通过命令字表达出来呢?只有占用原来特征码的三个位的位置了,这是一种较为特殊的寻址方式;(V)对于第四类芯片(AT24C32/64),虽然其存储容量大大超过了256字节,但采用了不分页的处理

43、方法。这就意味着主控器必须使用双字节的地址信息来确定具体的存储 单元(而其它型号的存储单元地址为单字节)。 “R/W读写控制位,也称方向位。R/W=1为读操作;R/W=0为写操作;( 3)芯片寻址与存储单元寻址EPRO作为IC总线的外围器件不仅需要芯片的地址( 4位特征码+3位器件地址)供主控 器寻址,还要有与读写操作相关的存储单元地址。这就决定了主控器对EPRO的访问不同于其它常规外围器件的操作过程。对于绝大多数的24系列EPRO芯片对于容量超过256字节的芯片都具有页选功能,这样 通过芯片地址来指向芯片和要访问的页,然后再使用一个字节的“页内地址”来指明存储单 元。所以在这种情况下其存储单

44、元地址是单字节结构;而对 AT24C32/64 型号的芯片,因为 其存储区域没有分页,而存储容量又大大的超出 256 个字节。所以对 4K/8K 的访问只能采用 13 位地址,实际上就不得不采用二个字节的形式来指明访问的存储单元。8.1.2 24 系列EEPROMS片的读写操作(一) 写操作写操作分为字节写和数据块写两种模式。(1)字节写在这种方式中,主控器首先发送一个命令字(特征码+器件地址+R/W,待得到外围器件的应答信号ACK后,再发送一个字节/二个字节的内部单元地址,这个内部单元地址被写入到EPROMS地址指针中去。主控器收到E2PRO的应答信号后就向 EPROMS送一个字节的数据(高

45、位在先),EPRO将SDA线上的数据逐位接收存入输入缓冲器中,并向主控器反馈应答信号当主控器收到应答信号后,向 EPRO发出停止信号P并结束操作、释放总线。而 EPRO收到P信号后,激活内部的数据编程周期,将缓冲器中的数据烧写到指定的存储单元中。在E2PROM的数据编程周期中为了保证数据烧写的正确性和完整性,对所有的输入都采取无效处理、不T主控器产生的信号产生任何的应答信号,直到数据编程周期结束,数据被写入指定的单元后,EPRO才恢复正S 11 010 XXXR/WAE2PROM内部地址A写入的8位数据A |LPi个数据字节的写入停止V V Y启动命令字节R/W=0 应答 8位存储单元地址被控

46、器产生的信号的字节写入帧格式图 8.2 AT24C01/02/04/08/16常的工作状态。(2)数据块写基本操作类同字节写,但有几点应当注意:连续写入的数据数量不能超过芯片本身“数据缓冲器”单元的数量(详见表8.1);主控器通过发送停止信号P作为操作过程的结束,实际上起到控制写入数量的作用;主控器产生的信号被控器产生的信号当存储器收到主控器的停止信号后,激活“数据编程周期”,开始数据的烧写过工o1 1np1 0 1 0低位地址字节E 2PROM内部地址 AE2PROM|内部地址 A一写入的8位数据 A1个数据字节的写入停止启动命令字节R/W=0应答 口 位地址字节图8.3 AT24C32/6

47、4 的字节写入帧格式在这个过程结束前,存储器不接收外部的任何信号; 烧写数据的时间取决于数据的数量,如数量N=8,则时间约为8ms;如果N=32,贝时间为32ms。S 11 0 1 0 XXXR/WAE2PROM内部地址A8位数据AA8位数据A IPr!L/7AT24C32/64 的数据块类同 AT24C01/02/04/08/16 (见图 2.3)停止N个数据字节的写入主控器产生的信号启动 命令字节R/W=0 应答 8位存储单元地址匚|被控器产生的信号个字节写入的帧格式图 8.4 AT24C01/02/04/08/16N) 读操作 与写操作不同,读操作分为两个步骤完成: 利用一个写操作(R/

48、W=0发出寻址命令并将内部的存储单元地址写入EPROM地址 指针中。在这个过程中EPRO反馈应答信号,以保证主控器判断操作的正确性; 主控器重新 发岀一个开始信号S、再发送一个读操作的命令字(R/W=1),当E2PRO收到命令字后,返回 应答信号并从指定的存储单元中取出数据通过SDA线送出另外,因为读操作没有“数据烧写”操作,因此不使用 数据缓冲器。这样连续读数 据的 数量不受数据缓冲器数量的限制。读操作有三种情况:(1)读当前地址单元中的数据在串行E2PROI芯片内部有一个可以自动 加一的地址指 针。每当完成一次读/写操作时 其指针都会自动加一指向下一个单元。只要芯 片不断电,指针中的内容就

49、一直保留。当主控 器没有指定某一存 储单元地址时,则EPROMS1 010 XXXR/W I AI读出的8位数据/A|Prr。110启动命令字节读岀非应答停止R/W=1主控器产生的信号被控器产生的信号图8.5读当前地址单元数据的帧格式按当前地址指针中的地址内容寻址、操作。在这种情况下,因为不用对EPRO中的地址指 针重新赋值,所以省去 对EPROI的写操作(见图8.5)。(2) 读指定地址存 储单元中的数据首先利用一个写操作(R/W=0发出寻址命令以便 将后续的内部地址写入EPRO的地址指针中。然后主控器重新 发岀一个开始信号S、再发送一个读操作的命令字(R/W=1), 当E2PROI收到命令

50、字后,回 应答信号并从指定的存 储单元中取岀 数据通过SDA线送岀(参S 11 010 XXXR/W|A IE2PROM内部地址|AS |1 010 XXXR/WA读出的8位数据/A P第一次操作写入存储器内部单元地址第二次操作 读岀存储器对应地址单元中的数据启动 命令字节R/W=0 应答 8位地址字节10数据的读岀 非应答停止被控器产生的信号命令字节R/W=1主控器产生的信号图8.6 读指定地址存 储单元中的数据帧格式(AT24C01/02/04/08/16 )见图8.6 )(3) 读取连续地址单元中的数据在进行连续数据读操作时应当注意:连续操作时地址不要超出 该芯片所规定的页内地址的范围,

51、否则将发 生地址重 叠错误。在图2.7 中给岀的是 AT24C01/02/04/08/16 芯片的操作帧格式,AT24C32/64型号的区别在于第一次 写操作时的存储单元地址为双字节字节(参见1第一次操作写入存储器内部单元地址第二次操作读岀存储器对应地址单元中的数据Is |1 010 XXXR/W IA高位地址A低位地址AS1 010 XXXR/WA |8位数据|/A| p启动 命令字节R/W=0应答 双字节存储单兀地址再次启动命令字节R/W=1数据的读出 非应答 停止图8.7读指定地址存 储单元中的数据帧格式(AT24C32/64)图8.3),其余部分是一 样的。8.1.3 24 系列EEP

52、ROM芯片的读写软件编程(参见的内容)。8.1.4 CAT24WC02 EEPROM写编程实验与24系列EPROMS片相同,在DP-51PRO实验台上的CAT24WC02与前面描述的AT24C02具有相同的 参数和特征。利用 DP-51PROC上的硬件 资源、编写对AT24C02的数据写入、数据读出来验证其功能,掌握I2C总线外围器件的编程方法。Is |1 0 1 0 xxxR/WA内部地址AS |1 0 1 0 XXXR/WA |rLJL4第一次操作写入存储器内部单元地址第二次操作 读岀存储器对应地址单元中的数据启动命令字节R/W=0应答 8位地址字节8位数据 EL 8 位数据/A P命令字

53、节R/W=1应答 N个数据的读出 非应答 停止图8.8 读取连续地址单元中的数据帧格式(AT24C01/02/04/08/16 )(1)实验内容及要求整个实验分为两种运行模式:烧写数据、读出数据。当烧写、读出操作正常后,关闭实验台的电源系统;重新为实验台上电,直接读出EEPROM中前一次所 烧写的数据,以验证EEPROM中数据的“非易失性”。两种运行模式由SW1控制:当运行于第一种模式时,SW1必须事先至于高电平(逻辑“1”); 第二种运行模式时,SW1要事先置于低 电平(逻辑“ 0”)。两种模式之间要有一次停 电的过 程,以验证EEPROM掉电时数据不丢失的特点。(2)实验电路与连接使用两条

54、连接线实现I2C的组网联接,另使用一条连接线将P1.7与SW1连接作为程序的读写控制信号(如图8.9所示)首先在单片机的30H-37H中建立一个内容为00H-07H的数据块,然后分别将其烧写到EEPROM勺00H-07H 单元中。再 将EEPROM中所 烧写进 的8个数据读回到单片机内存38H-3FH中来。在调试程序时,采用“断点”的运行方式,在EEPROM所烧写的数据读回到单片机的 存储器后,利用 观察窗口对存储器中的38H-3FH数据进行观察、验证,看一下是否 为烧写的数据。(4) 实验的参考程序清单*;这是一个I2C 总线EEPROM_24C02的实验程序*SDABITP1.0SCLBI

55、TP1.1WSLAEQU0A0HRSLAEQU0A1HORG 8000HLJMP 8100H*;主程序.*START:LOOP:ORG 8100H SETBJNBMOVMOVCLRMOVINCINCDJNZP1.7;P1.7 设定为输入口P1.7,LOOP11 ;如果 P1.7=0 则读 R7,#08HR0,#30HAR0,AROAR7,LOOP;如果P1.7=1则先写入后读出AA:MOVMOVMOV MOV LCALLR7,#08HR0,#30HR2,#00H R3, #WSLA WRNBYT;数据块的写操作开始;设定写入数据字节个数;设定源数据块的首地址;设定外围芯片的内部地址LOOP11: MOVMOVMOVMOVMOVLCALLSJMPR7,#08HR0,#38HR2

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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