1、第第9 9章章 串行总线扩展技术串行总线扩展技术 单片机总线扩展技术单片机总线扩展技术:分为分为并行并行总线和总线和串行串行总总线两类线两类.串行总线连线少串行总线连线少,结构简单结构简单,占用单片机占用单片机的的I/OI/O口资源较少口资源较少,已是一种发展已是一种发展趋势趋势.51.51系列单系列单片机可用并行片机可用并行I/OI/O口线通过软件方法口线通过软件方法模拟模拟串行总串行总线时序线时序,与具串行接口的器件直接连接与具串行接口的器件直接连接.常见有常见有四种四种串行总线:串行总线:SPISPI总线总线、I2CI2C总线、总线、SMBusSMBus总线总线以及以及单总线单总线.9.
2、1 9.1 SPISPI总线扩展技术总线扩展技术 9.1.1 9.1.1 SPISPI总线概述总线概述 1 SPISPI总线是一种总线是一种同步串行同步串行外设接口技术外设接口技术,允许允许MCU(MCU(称称主设备主设备、主机或主器件、主机或主器件)与外围设备与外围设备(称称从设备从设备、从机或从器件、从机或从器件)通过通过4 4条条逻辑信号线以逻辑信号线以串行方式数据交换串行方式数据交换.外围设备如串行外围设备如串行E E2 2PROMPROM、串、串行行A/DA/D或或D/AD/A转换器、串行日历转换器、串行日历/时钟、串行时钟、串行UARTUART控制器和串行控制器和串行LEDLED显
3、示驱动器等显示驱动器等.SCLKSCLK-串行时钟线串行时钟线(由主设备发出由主设备发出)MOSIMOSI-串行主出从入信号线串行主出从入信号线(由主设备发出由主设备发出)MISOMISO-串行主入从出信号线串行主入从出信号线(由从设备发出由从设备发出)SSSS-从设备片选线从设备片选线(主设备发出主设备发出,低电平有效低电平有效)*不计及片选线不计及片选线SSSS时称为时称为三线制三线制总线总线.2SPISPI总线的总线的单主单从单主单从设备的连接关系图设备的连接关系图:目前广用的一种目前广用的一种非标准非标准SPISPI总线命名如下总线命名如下:SCK,CLKSCK,CLK-串行时钟线串行
4、时钟线(由主设备发出由主设备发出)SDI,DI,SISDI,DI,SI-串行数据输入线串行数据输入线SDO,DO,SOSDO,DO,SO-串行数据输出线串行数据输出线nCS,CS,Nss,STEnCS,CS,Nss,STE-从设备片选线从设备片选线(由主设备发由主设备发 出出,低电平有效低电平有效)31.SPI1.SPI总线的主要特点:总线的主要特点:1 1)全双工模式,可以同时发送和接收数据全双工模式,可以同时发送和接收数据.2 2)主从工作方式主从工作方式.3 3)提供提供4 4种频率可编程时钟种频率可编程时钟.4 4)具有发送结束中断标志具有发送结束中断标志.5 5)具有写冲突保护具有写
5、冲突保护.6 6)具有总线竞争保护具有总线竞争保护.2.2.集成了集成了SPISPI总线功能的总线功能的MCU MCU 许多厂商生产的许多厂商生产的MCUMCU和外围器件都集成了和外围器件都集成了SPISPI硬件接口硬件接口,代表性代表性MCUMCU型号见书本型号见书本附录附录E E.43.3.集成了集成了SPISPI总线功能总线功能的外围器件的外围器件 SPISPI总线的良好的数据传输特性已越来越多地总线的良好的数据传输特性已越来越多地集成在各种集成在各种功能器件功能器件中中,此类器件见书本此类器件见书本附录附录F F.9.1.2 9.1.2 SPISPI总线扩展电路总线扩展电路 可有多方式
6、组成可有多方式组成,如一个主如一个主MCUMCU接一个或几个接一个或几个从从MCU,MCU,一个主一个主MCUMCU接一个或几个从外围器件等接一个或几个从外围器件等.5 图例是图例是一个一个主设备接主设备接三个三个从设备从设备.从设备可以从设备可以是是MCUMCU或外围器件或外围器件,视需要而定视需要而定.(1)(1)串行信号线串行信号线.主入从出信号线主入从出信号线(MISOMISO)和主和主出从入信号线出从入信号线(MOSIMOSI)各自连接各自连接,实现主从设备的实现主从设备的收收/发发双向双向通信通信.若从设备只接收不发送若从设备只接收不发送,该从设该从设备的备的MISOMISO线可悬
7、空线可悬空.若从设备只发送不接若从设备只发送不接,该从该从设备的设备的MOSIMOSI线可悬空线可悬空.全双工的情况下主设备把一位数据全双工的情况下主设备把一位数据送到送到 MOSIMOSI线、从设备从线、从设备从MOSIMOSI线线读取读取该位数据的同时该位数据的同时,从设从设备也把一位数据备也把一位数据送到送到MISOMISO线上线上,主设备从主设备从MISOMISO线线读入读入该位数据该位数据.6 (2)(2)串行时钟串行时钟.串行时钟线串行时钟线(SCLKSCLK)用作用作MISOMISO和和MOSIMOSI的同步传输的同步传输.主设备的主设备的SCLKSCLK由由MCUMCU内部时钟
8、内部时钟总线提供同步时钟总线提供同步时钟输出输出;从设备的从设备的SCLKSCLK则作同步则作同步时钟时钟输入输入.每个字节的传输均自动在每个字节的传输均自动在SCLKSCLK产生产生8 8个时钟脉冲个时钟脉冲,脉冲跳变时进行移位和采样脉冲跳变时进行移位和采样.主设主设备必须小于或等于从设备的最大备必须小于或等于从设备的最大SPISPI时钟频率时钟频率.(3)(3)从设备片选线从设备片选线.片选线用作主设备选择从片选线用作主设备选择从设备设备,向每个从设备提供独立的控制线向每个从设备提供独立的控制线,低电平低电平生效生效,以防止数据传输冲突以防止数据传输冲突.每次只会有一个被每次只会有一个被选
9、中的从设备参与通信选中的从设备参与通信,SCLK,SCLK和和MOSIMOSI的信号对其的信号对其他的从设备不起作用他的从设备不起作用.79.1.3 9.1.3 SPISPI总线数据交换原理总线数据交换原理 主从设备之间主从设备之间SPISPI串行数据交换原理图如下串行数据交换原理图如下:主从设备内部均含有一个主从设备内部均含有一个8 8位的移位寄存器位的移位寄存器,时钟发生器时钟发生器,数据寄存器数据寄存器(SPDR),(SPDR),控制寄存控制寄存器器8(SPCR)(SPCR)和状态寄存器和状态寄存器(SPSR).(SPSR).通过通过MOSIMOSI和和MISOMISO信号线使两者的移位
10、寄存器形成一个环路信号线使两者的移位寄存器形成一个环路.SPI SPI控制控制寄存器的寄存器的SPCRSPCR位定义为:位定义为:SPI SPI状态状态寄存器的寄存器的SPSRSPSR位定义为:位定义为:9 寄存器复位后均为寄存器复位后均为0 0,数据从数据从高高位到位到低低位传输位传输,控制寄存器控制寄存器SPCRSPCR的的MSTRMSTR(方式位方式位)置置1 1设定为设定为主主设设备备,SSSS线送出低电平线送出低电平选中选中从设备从设备,把数据写入数把数据写入数据寄存器据寄存器SPDRSPDR,不经过缓冲直接进入移位寄存器不经过缓冲直接进入移位寄存器,由由SCLKSCLK脉冲作用从脉
11、冲作用从MOSIMOSI线上串行线上串行移出移出,从设备的从设备的数据则从数据则从MISOMISO线线移入移入主设备主设备(由数据寄存器由数据寄存器SPDRSPDR作缓冲作缓冲).).经经8 8个个串行脉冲后主、从设备数据交换串行脉冲后主、从设备数据交换结束结束,状态寄存器状态寄存器SPSRSPSR的的SPIFSPIF(中断标志位中断标志位)置置1 1,产生中断请求产生中断请求.主设备所接收到的数据主设备所接收到的数据暂存暂存在寄存器在寄存器SPDRSPDR中中,传输传输下一个数据之前需要把数据从下一个数据之前需要把数据从SPDRSPDR读出读出,使使10标志位标志位SPIFSPIF清零清零.
12、控制寄存器控制寄存器SPCRSPCR的的MSTRMSTR位位清清0 0,器件设定为器件设定为从从设备设备,数据在主设备数据在主设备SCLKSCLK脉冲的作用下进入移位脉冲的作用下进入移位寄存器后寄存器后,被送到数据寄存器被送到数据寄存器SPDR.SPDR.在在接收接收下一下一字节的数据之前字节的数据之前,需要先需要先读出读出SPDRSPDR中的数据中的数据,并并把要传输到主设备的数据把要传输到主设备的数据存入存入SPDRSPDR中中.不再传输数据时不再传输数据时,主设备停止发送时钟信号并主设备停止发送时钟信号并取消从设备的片选信号取消从设备的片选信号,主、从通信结束主、从通信结束.9.1.4
13、9.1.4 SPISPI时钟相位和极性时钟相位和极性 不同的不同的SPISPI外围设备的电平和采样方式要求不外围设备的电平和采样方式要求不11同同,可通过软件设定控制寄存器可通过软件设定控制寄存器SPCRSPCR中的中的CPOLCPOL(极性位极性位)和和CPHACPHA(相位位相位位)来实现来实现,SCLKSCLK信号的信号的4 4种模式为:种模式为:12 极性位极性位CPOLCPOL置时钟线的空闲电平置时钟线的空闲电平,相位位相位位CPHACPHA置数据线采样的时钟跳变沿置数据线采样的时钟跳变沿.*极性极性CPOLCPOL0,SCLK0,SCLK脉冲脉冲低低电平空闲电平空闲,高高电平电平有
14、效有效;CPOL;CPOL1,1,脉冲脉冲高高电平空闲电平空闲,低低电平有效电平有效.*相位相位CPHACPHA0,SCLK0,SCLK脉冲脉冲前沿前沿(上跳上跳/下跳下跳)采采采样数据采样数据,后沿后沿跳变允许数据变动跳变允许数据变动.*相位相位CPHACPHA1,SCKL1,SCKL脉冲脉冲后沿后沿(下跳下跳/上跳上跳)采采样数据样数据,前沿前沿跳变数据可变动跳变数据可变动.采样前的半个时采样前的半个时钟周期数据必须稳定钟周期数据必须稳定,结束后才允许变动结束后才允许变动.较为常用模式是较为常用模式是MODE0MODE0和和MODE3MODE3,主、从设备所主、从设备所选的模式必须选的模式
15、必须一致一致.13几种几种SCLKSCLK信号模式下信号模式下SPISPI通信的通信的格式格式介绍介绍:1 1)相位位相位位CPHACPHA0 0时时(极性位极性位CPOLCPOL0 0的低电平的低电平空闲和空闲和CPOLCPOL1 1的高电平空闲的高电平空闲).).片选线片选线SSSS下降沿下降沿启动传输启动传输,SCLK,SCLK前沿跳变时采样最高位前沿跳变时采样最高位.8.8位数据位数据传送完成后片选线传送完成后片选线SSSS返回高电平返回高电平,通信结束通信结束.14 2 2)相位位相位位CPHACPHA1 1时时(极性位极性位CPOLCPOL0 0的低电平的低电平空闲和空闲和CPOL
16、CPOL1 1的高电平空闲的高电平空闲).).片选线片选线SSSS下降沿下降沿启动传输启动传输,SCLK,SCLK前沿跳变时采样最高位前沿跳变时采样最高位.8.8位数据位数据传送完成后片选线传送完成后片选线SSSS返回高电平返回高电平,通信结束通信结束.159.1.5 9.1.5 SPISPI总线采样的软件实现总线采样的软件实现 5151系列单片机没有系列单片机没有SPISPI接口接口,可由可由I/OI/O口用口用软件软件模拟模拟SPISPI总线时序总线时序,使与外围使与外围SPISPI器件同步串行通器件同步串行通信信.单片机作单片机作主主设备设备,外围串行器件作外围串行器件作从从设备设备,数
17、数据按据按高位高位在前在前低位低位在后的格式传输在后的格式传输.软件模拟的软件模拟的SCLKSCLK信号信号,其其极性极性和和相位相位根据外围器件的电气特根据外围器件的电气特性决定性决定.整体设计需考虑以下整体设计需考虑以下两两方面因素方面因素.1.1.对外围串行器件输入对外围串行器件输入/输出特性的要求输出特性的要求 1 1)单片机如果没有单片机如果没有片选线片选线控制外围器件的输控制外围器件的输入入,则需增加则需增加门电路门电路以控制以控制SCLKSCLK的输入的输入,否则因否则因16该器件一直被选通而无法连接更多的该器件一直被选通而无法连接更多的SPISPI器件器件.2 2)单片机如果没
18、有单片机如果没有三态控制三态控制端使未被选中的端使未被选中的器件输出呈高阻器件输出呈高阻,则需增加则需增加三态门三态门电路控制电路控制MISOMISO的数据输出的数据输出,否则只能单独连接该器件否则只能单独连接该器件.2.2.外围串行器件对时钟信号的要求外围串行器件对时钟信号的要求 若外围串行器件在若外围串行器件在SCLKSCLK脉冲的脉冲的上升沿上升沿输入数输入数据据,在在下降沿下降沿输出数据输出数据,则则SCLKSCLK信号应初始化为信号应初始化为高电平高电平,通信结束后置为通信结束后置为低电平低电平.相反若在相反若在SCLKSCLK脉冲脉冲下降沿下降沿输入数据输入数据,上升沿上升沿输出数
19、据输出数据,应初始化为应初始化为低电平低电平,结束后置结束后置高电平高电平.173.3.单片机模拟单片机模拟SPISPI接口输入数据接口输入数据 5151系列单片机作为主设备系列单片机作为主设备,软件软件模拟模拟SPISPI接口接口串行输入数据的串行输入数据的主要步骤主要步骤:1 1)单片机设置从设备单片机设置从设备SCLKSCLK信号所需的初始电平信号所需的初始电平.2 2)选择从设备进行数据通信选择从设备进行数据通信(片选允许片选允许).).3 3)根据数据位数设定循环次数根据数据位数设定循环次数.4 4)改变改变SCLKSCLK线的电平状态线的电平状态(从设备送出数据从设备送出数据).)
20、.5 5)读取从设备输出端数据读取从设备输出端数据,保存至进位位保存至进位位CY.CY.6 6)累加器累加器ACCACC带进位位循环左移带进位位循环左移1 1位位.7 7)恢复恢复SCLKSCLK线为初始电平状态线为初始电平状态.8 8)循环次数未完则重复步骤循环次数未完则重复步骤4)4)7).7).18 9 9)保存所输入的字节保存所输入的字节,通信结束通信结束.4.4.单片机模拟单片机模拟SPISPI接口输出数据接口输出数据 1 1)单片机设置从设备单片机设置从设备SCLKSCLK信号所需的初始电平信号所需的初始电平.2 2)选择从设备选择从设备(片选允许片选允许).).3 3)设定位数循
21、环次数设定位数循环次数,把发送的数据存累加器把发送的数据存累加器A.A.4 4)累加器累加器ACCACC带进位位循环左移带进位位循环左移1 1位位.5 5)进位位进位位CYCY的数据送至从设备接收端的数据送至从设备接收端.6 6)改变改变SCLKSCLK线的电平状态线的电平状态(主设备送出数据主设备送出数据).).7 7)恢复恢复SCLKSCLK线为初始电平状态线为初始电平状态.8 8)循环次数未完则重复步骤循环次数未完则重复步骤4)4)7).7).9 9)通信结束通信结束.195.5.单片机模拟单片机模拟SPISPI接口输入接口输入/输出数据输出数据 1 1)单片机设置从设备单片机设置从设备
22、SCLKSCLK信号所需的初始电平信号所需的初始电平.2 2)选择从设备选择从设备(片选允许片选允许).).3 3)根据数位设定循环次数根据数位设定循环次数.4 4)待发送的数据装入累加器待发送的数据装入累加器ACC.ACC.5 5)改变改变SCLKSCLK线的电平状态线的电平状态(从设备送出数据从设备送出数据).).6 6)把从设备输出端数据读入进位位把从设备输出端数据读入进位位CY.CY.7 7)累加器累加器ACCACC带进位位循环左移带进位位循环左移1 1位位.8 8)进位位进位位CYCY的数据送至从设备接收端的数据送至从设备接收端.9 9)恢复恢复SCLKSCLK为初始电平状态为初始电
23、平状态(主设备送出数据主设备送出数据).).1010)循环次数未完则重复步骤循环次数未完则重复步骤5)5)9).9).20 1111)通信结束通信结束.9.1.6 9.1.6 5151系列单片机的系列单片机的SPISPI扩展应用扩展应用 51 51系列单片机扩展系列单片机扩展SPISPI的软件模拟方法实例的软件模拟方法实例,用两片级联的串行用两片级联的串行/并行转换器件并行转换器件,作两位作两位LEDLED数数码管显示只需三条口线码管显示只需三条口线.若用若用5.2.35.2.3节的并行总节的并行总线技术线技术,则软件译码的动态扫描显示方案需占用则软件译码的动态扫描显示方案需占用1010条条I
24、/OI/O口线口线,硬件译码的静态显示方案要占用硬件译码的静态显示方案要占用6 6条条I/OI/O口线口线.显示位数多则显示位数多则SPISPI总线是更好选择总线是更好选择.1.1.实例电路的组成实例电路的组成 单片机的单片机的P1.2P1.2口模拟串行数据输出线口模拟串行数据输出线MOSIMOSI,连接连接 2122第一片串行第一片串行/并行转换器的串行输入端并行转换器的串行输入端DSDS;P1.3P1.3口模拟串行时钟线口模拟串行时钟线SCLKSCLK,分别接两芯片的移位脉分别接两芯片的移位脉冲输入端冲输入端SH-CPSH-CP,单片机作单片机作只发不收只发不收演示演示,不必模不必模拟输入
25、线拟输入线MISOMISO.两芯片的并行输出控制线两芯片的并行输出控制线ST-CPST-CP均由均由P1.4P1.4口控口控制制,MRMR接高电平使片选均有效接高电平使片选均有效,三态输出控制线三态输出控制线OEOE均接低电平使并行输出均有效均接低电平使并行输出均有效.Q0Q0Q7Q7分别作分别作LEDLED数码管的段驱动器数码管的段驱动器,经电阻经电阻限流后连接数码管段端口限流后连接数码管段端口a ag g,第一芯片串行输第一芯片串行输输出线输出线Q Q7 7以级联方式接第二芯片串行输入线以级联方式接第二芯片串行输入线DSDS.2.2.实例电路的工作原理实例电路的工作原理23 串串/并转换器
26、件在并转换器件在串行串行时钟脉冲的上升沿对输时钟脉冲的上升沿对输入数据采样入数据采样,在在并行并行控制脉冲的上升沿输出数据控制脉冲的上升沿输出数据.以显示两位数字以显示两位数字0 09 9为例为例:累加器装显示累加器装显示“0 0”的数据的数据,P1.3P1.3口口8 8个个SCLKSCLK脉冲通过脉冲通过P1.2P1.2口依次把口依次把数据从高位到低位送入数据从高位到低位送入74HC595(1).74HC595(1).接着累加器接着累加器装入显示装入显示“1 1”的数据的数据.此时此时74HC595(1)74HC595(1)会把显会把显示示 “0 0”的数据通过串行输出线移位到的数据通过串行
27、输出线移位到74HC595(2).74HC595(2).P1.4P1.4口发出控制信号口发出控制信号,使两芯片的使两芯片的并行并行输出口输出口同时输出数据同时输出数据,分别显示分别显示“1 1”和和“0 0”.每按动一每按动一次开关次开关S S,后续两个为一组的十进制数按同样方,后续两个为一组的十进制数按同样方法法送入送入74HC595,74HC595,循环分组显示数字循环分组显示数字0 09.9.24 74HC59574HC595的并行输出用于直接驱动数码管的的并行输出用于直接驱动数码管的7 7段段a ag.g.共阳极型属各段共阳极型属各段低电平低电平点亮点亮,在编写在编写0 09 9的显示
28、程序时的显示程序时,通常采用查段字节码通常采用查段字节码转换表转换表的的方式来编写十六进制转换程序方式来编写十六进制转换程序.本例关系如下本例关系如下.253.3.实例电路的程序流程实例电路的程序流程 实现的是实现的是0 09 9共十个共十个数字的分组循环显示数字的分组循环显示.从从0 0开始相邻两个数开始相邻两个数字为一组字为一组,偶数偶数显示在显示在右边右边数码管数码管,奇数奇数显示显示在在左边左边数码管数码管.系统上电显示系统上电显示“0 0”和和“1 1”,S S按动一次显示下按动一次显示下一组一组,第五组第五组“8 8”和和“9 9”显示完毕后重新显示完毕后重新循环循环.264.4.
29、实例电路的实例电路的C C语言程序语言程序 实例电路中的程序根据流程图采用实例电路中的程序根据流程图采用C C语言编语言编写写,源代码见书本源代码见书本P.292P.292293293.9.2 9.2 MicrowireMicrowire总线扩展技术总线扩展技术 9.2.1 9.2.1 MicrowireMicrowire总线概述总线概述 MicrowireMicrowire总线总线(3-Wire,(3-Wire,又称为又称为3 3线线制总线制总线),),属属同步同步串行通信接口技术串行通信接口技术.只允许有一个主设只允许有一个主设备备,其余都是从设备其余都是从设备.改进的改进的Microwi
30、re/PlusMicrowire/Plus总总线线,允许同时有多个主设备存在允许同时有多个主设备存在.3.3线分别是:线分别是:27SISI:串行输入线串行输入线(主、从设备中均作同步接收主、从设备中均作同步接收)SOSO:串行输出线串行输出线(主、从设备中均作同步发送主、从设备中均作同步发送)SKSK:串行时钟线串行时钟线(主、从设备分别作输出主、从设备分别作输出/输入输入)每个从设备需配置一条片选线每个从设备需配置一条片选线CSCS,数据按最高数据按最高位在前最低位在后方式传送位在前最低位在后方式传送.另一命名方式是另一命名方式是DODO表示串行输出线表示串行输出线,DIDI表示串行输入线
31、表示串行输入线.Microwire/Plus Microwire/Plus总线与总线与SPISPI总线相互总线相互兼容兼容.9.2.2 9.2.2 MicrowireMicrowire总线扩展电路总线扩展电路 主、从设备是分别集成了主、从设备是分别集成了MicrowireMicrowire总线的单总线的单片机和外围器件片机和外围器件.扩展电路的连接方式如下扩展电路的连接方式如下:28 例中例中一个一个主设备扩展主设备扩展三个三个从设备从设备,扩展量由主扩展量由主设备所能提供的片选线决定设备所能提供的片选线决定.主设备主设备SOSO线和线和SISI线线分别接所有从设备的分别接所有从设备的SISI
32、线和线和SOSO线线,SK,SK线则接所有线则接所有从设备的从设备的SKSK线线,从设备片选线从设备片选线CSCS需独立提供需独立提供.29 注意注意:片选信号的极性片选信号的极性.单片机作从设备时片单片机作从设备时片选选CSCS低低有效有效,该类串行器件作从设备时该类串行器件作从设备时CSCS高高有效有效.9.2.3 9.2.3 MicrowireMicrowire总线串行总线串行E E2 2PROMPROM的数据传输的数据传输 以常用的以常用的3 3线制串行线制串行E E2 2PROMPROM为例为例,分析总线数分析总线数据传输的工作据传输的工作原理原理以及需严格遵循的指令以及需严格遵循的
33、指令时序时序.1.Microwire1.Microwire总线串行总线串行E E2 2PROMPROM 串行串行E E2 2PROM(PROM(电可写擦只读存储器电可写擦只读存储器)代表性系列代表性系列:(1)(1)NMC9306/46;NMC9306/46;(2)NMC93C06/C26/C46/C56/C66;(2)NMC93C06/C26/C46/C56/C66;(3)NMC93CS06/CS26/CS46/CS56/CS66(3)NMC93CS06/CS26/CS46/CS56/CS6630 共同特点共同特点是是:与与MicrowireMicrowire总线兼容总线兼容;以以1616位
34、位的格式的格式串行串行传输数据传输数据;内部内部擦写擦写周期自定时周期自定时;输输出端能提供内部擦写出端能提供内部擦写“忙忙”的状态指示的状态指示.后期后期均均采用功耗低的采用功耗低的CMOSCMOS技术技术,可擦写可擦写1010万次万次,数据可数据可保留保留10104040年以上年以上.均为均为8 8引脚封装引脚封装.a a)是是1616位数据格式配置位数据格式配置,6,6和和7 7脚不接脚不接;b b)是是8 8位位/16/16位数据格式可选配置位数据格式可选配置,ORG,ORG接接VCCVCC为为 1616位数据格式位数据格式,接地为接地为8 8位数据格式位数据格式 31 系列系列(1
35、1)写入数据之前要先执行擦写操作写入数据之前要先执行擦写操作.系列系列(2 2)()(3 3)写入时内部自动执行擦写操作写入时内部自动执行擦写操作.系列系列(3 3)设置了写保护功能设置了写保护功能,能避免误写操作能避免误写操作.*型号带有后缀型号带有后缀A A则属于改进型则属于改进型,祥情需查阅相祥情需查阅相关器件的技术手册关器件的技术手册.上述上述3 3个系列个系列E E2 2PROMPROM的的主要差别主要差别为为:2.Microwire2.Microwire总线串行总线串行E2PROME2PROM的指令集的指令集 共有共有7 7条条操作指令操作指令,以以NMC93C06(NMC93C0
36、6(容量容量256256位位,组组态态16161616位位)和和MNC93C46(MNC93C46(容量容量10241024位位,64,641616位位组态组态)为例为例,这些指令也适用于其他的型号这些指令也适用于其他的型号.32 地址码地址码A5A5A0A0为为6 6位位.更大容量的器件地址码更大容量的器件地址码扩大到扩大到A7A7A0A0共共8 8位位,增加了两个地址位进行寻增加了两个地址位进行寻址址.各指令均由各指令均由1 1位位前导码、前导码、2 2位位操作码、操作码、6 6或或8 8位位地址码和地址码和1616位位数据数据(写入模式时写入模式时)组成组成.333.Microwire3
37、.Microwire总线串行总线串行E E2 2PROMPROM指令功能和时序指令功能和时序 (1 1)READREAD指令指令(Read,(Read,读出读出):):对指令和地址译码对指令和地址译码,把目标地址的数据送到把目标地址的数据送到1616位移位寄存器位移位寄存器,D0,D0口先输出逻辑口先输出逻辑“0 0”,随后输出随后输出数数据位据位D15D15D0,D0,片选片选CSCS变低电平操作结束变低电平操作结束.34(2 2)WENWEN指令指令(Erase/Write Enable,(Erase/Write Enable,擦擦/写允许写允许)又命名为又命名为EWEN,EWEN,因上电
38、时会自动执行因上电时会自动执行WDSWDS指令指令(擦擦/写功能写功能),),所以在执行任何擦所以在执行任何擦/写指令之前写指令之前,须先执行须先执行WENWEN指令指令.符号符号“X X”可为任意值可为任意值,WENWEN指令的效果维持到指令的效果维持到执执行行WDSWDS指令或切断供电电源才会结束指令或切断供电电源才会结束.35(3 3)ERASEERASE指令指令(Eease,(Eease,擦除擦除)把目标地址所在的数据位擦除为逻辑把目标地址所在的数据位擦除为逻辑“1 1”.最最后一位地址后后一位地址后,片选片选CSCS下降沿启动内部擦下降沿启动内部擦/写周写周期期,经经tcstcs(2
39、50(250微秒微秒)后后CSCS恢复高恢复高.DO.DO为逻辑为逻辑“0 0”时表示擦除时表示擦除“忙忙”,逻辑逻辑“1 1”时表示擦除完成时表示擦除完成.36(4 4)WRITEWRITE指令指令(Write,(Write,写入写入)把把1616位数据写入内部指定地址位数据写入内部指定地址.SKSK上升沿把上升沿把DIDI最后一位送入后最后一位送入后,片选片选CSCS须在下一个须在下一个SKSK上升沿之上升沿之前设为低前设为低,其下降沿启动内部擦其下降沿启动内部擦/写周期写周期,250,250微微秒后秒后CSCS恢复高电平恢复高电平.DO.DO可指示内部写入状态可指示内部写入状态.37(5
40、 5)ERALERAL指令指令(Erase All,(Erase All,整块擦除整块擦除)把整块储存器的全部数位擦除为逻辑把整块储存器的全部数位擦除为逻辑“1 1”,与与ERASEERASE指令类似指令类似.D0.D0可指示出擦除的状态可指示出擦除的状态.38(6 6)WRALLWRALL指令指令(Write All,(Write All,整块写入整块写入)把把1616位数据写入到整块储存器中位数据写入到整块储存器中.DO.DO可指示出可指示出写入状态写入状态.39(7 7)WDSWDS指令指令(Erase/Write Disable,(Erase/Write Disable,擦擦/写禁止写
41、禁止)有时候也被命名为有时候也被命名为EWDSEWDS.该指令的功能是禁止该指令的功能是禁止所有的擦所有的擦/写操作写操作,防止数据被误擦写防止数据被误擦写.409.2.4 9.2.4 5151系列单片机与系列单片机与MicrowireMicrowire串行串行E E2 2PROMPROM 的应用的应用 5151系列单片机内部没有集成系列单片机内部没有集成MicrowireMicrowire总线功总线功能能,可以利用软件方法通过可以利用软件方法通过I/OI/O口口模拟模拟MicrowireMicrowire时序时序,只需只需4 4条条口线就能扩展实现与口线就能扩展实现与 MicrowireMi
42、crowire串行串行E E2 2PROMPROM的数据交换的数据交换.图例的图例的93C4693C46由由ORGORG接地接地,组成组成1281288 8位格式位格式,单片机上电后自动在单片机上电后自动在93C4693C46地址编号为地址编号为1 1的存储的存储器写入从高到低的器写入从高到低的1616位数位数 00011000,0110011000011000,01100110.开关开关S S按一次按一次,从从93C4693C46读出并显示读出并显示高高8 8位位,按二次按二次显示显示低低8 8位位,按三次发光二极管显示按三次发光二极管显示全熄全熄.41AT89C52AT89C52与与93C
43、4693C46的的实例电路实例电路 421.1.实例电路的程序流程实例电路的程序流程 先对芯片作一次先对芯片作一次擦除擦除操作操作,接着把数据分接着把数据分两两个个8 8位字节写入位字节写入,再逐次再逐次按动按动S S,把数据读出作显把数据读出作显示检验示检验.在显示的数据中约定在显示的数据中约定1 1为为LEDLED发亮发亮,0 0为熄灭为熄灭.如果从高到低要显示如果从高到低要显示00011000(00011000(18H18H),),则则P1P1口口需送出需送出11100111(11100111(E7HE7H).).432.2.实例电路的实例电路的C C语言程序语言程序 采用采用C C语言
44、按上述流程图编写程序语言按上述流程图编写程序,93C46,93C46使用使用8Bit8Bit数据模式数据模式,读读和和写写地址都为地址都为7 7位位,程序中把地程序中把地址与操作码的最后一位址与操作码的最后一位合并合并成一个字节写入成一个字节写入.源源代码见书本代码见书本P.299P.299303303.9.3 9.3 I I2 2C C总线扩展技术总线扩展技术 9.3.1 9.3.1 I I2 2C C总线概述总线概述 I I2 2C C总线又写成总线又写成I2CI2C或或IICIIC,是一种是一种2 2线制线制世界范世界范围内的工业接口标准围内的工业接口标准,单片机可以作为主设备与单片机可
45、以作为主设备与作为作为2 2线制线制外围从设备进行同步双向串行传输外围从设备进行同步双向串行传输.44 I I2 2C C总线采用总线采用2 2条条信号线信号线:串行数据线串行数据线SDASDA和串行和串行时钟线时钟线SCLSCL.所有主从设备均接在这两条线上所有主从设备均接在这两条线上,每每个从设备都有个从设备都有唯一唯一的地址的地址.从设备量受到器件地从设备量受到器件地址的限制址的限制,且总线的最大电容量不应超过且总线的最大电容量不应超过400pF400pF.传输速率没有最低限制传输速率没有最低限制,最低可以为零最低可以为零.1.I1.I2 2C C总线的主要特点总线的主要特点 1 1)主
46、从工作方式主从工作方式.2 2)从设备由分配的唯一地址与主设备通信从设备由分配的唯一地址与主设备通信,从从 设备之间不能通信设备之间不能通信.3 3)共用一条双向串行数据线共用一条双向串行数据线SDASDA作输入作输入/输出输出,与时钟线与时钟线SCLSCL配合产生各种所需信号配合产生各种所需信号.454 4)主从设备是漏极或集电极开路结构主从设备是漏极或集电极开路结构,因此因此2 2 线必须接上拉电阻线必须接上拉电阻.5 5)总线驱动能力强总线驱动能力强,2,2线制总线的外围器件由线制总线的外围器件由 CMOSCMOS技术制造技术制造,功耗低功耗低,总线的长度和总线总线的长度和总线 器件的数
47、量由器件的数量由电容电容负载和从设备负载和从设备地址地址决定决定.2.I2.I2 2C C总线扩展连接总线扩展连接 图中的图中的I I2 2C C总线连接了总线连接了1 1个个主设备主设备(MCU,(MCU,如有多如有多个则属多主设备个则属多主设备 )和和3 3个个从设备从设备,只要把所有主只要把所有主从设备的从设备的SDASDA线、线、SCLSCL线相互连接线相互连接,两线分别由两线分别由上拉电阻连接电源上拉电阻连接电源VCCVCC,就构成整个传输系统就构成整个传输系统.463.I3.I2 2C C总线接口的电气结构总线接口的电气结构 属双向同步串行总线属双向同步串行总线,SDASDA和和S
48、CLSCL两线的内部结两线的内部结构相同构相同,通过上拉电阻接电源正极通过上拉电阻接电源正极.总线输出端总线输出端的场效应晶体管的场效应晶体管FETFET为集电极开路结构为集电极开路结构,总线空总线空闲时两线为高电平闲时两线为高电平.输出级共同构成线输出级共同构成线“与与”关关系系.47 SDASDA或或SCLSCL对应的对应的FETFET管管截止时截止时,线输出线输出“1 1”;FETFET管管导通时导通时,线输出线输出“0 0”.总线上的总线上的I I2 2C C器件通器件通过过SDASDA输入缓冲器、输入缓冲器、SCLSCL输入缓冲器获取总线上输入缓冲器获取总线上的数据、时钟信号的数据、
49、时钟信号.484.4.多主式系统的总线仲裁多主式系统的总线仲裁 主设备需由具有主设备需由具有I I2 2C C总线接口的总线接口的MCUMCU担任担任,如如果有两个或多个主设备果有两个或多个主设备(MCU),(MCU),称为称为多主式多主式系统系统,会出现会出现总线竞争总线竞争的现象的现象.MCU MCU可直接把自身的可直接把自身的SDASDA和和SCLSCL口线接入系统口线接入系统,两线内部的硬件电路能通过线两线内部的硬件电路能通过线“与与”操作自动操作自动完完成时钟的成时钟的同步同步和总线的和总线的仲裁仲裁,防止多主设备同防止多主设备同时启动数据传输而产生竞争现象时启动数据传输而产生竞争现
50、象,使总线在同使总线在同一时刻内只有一时刻内只有一个一个主设备传送数据主设备传送数据.若总线只有一个主设备若总线只有一个主设备,称为称为基本系统基本系统,不会不会出现总线出现总线竞争竞争,不存在总线仲裁问题不存在总线仲裁问题.495.I5.I2 2C C总线接口的单片机和外围器件总线接口的单片机和外围器件 I I2 2C C总线使用简便总线使用简便,已经广泛地集成在各类器已经广泛地集成在各类器件中件中.附录附录G G为为常见的常见的I I2 2C C总线总线单片机单片机,附录附录H H为为部分部分I I2 2C C总线的总线的器件器件,供检索参考供检索参考.9.3.2 9.3.2 I I2 2