第9章常用的串行接口技术9.1常用的串行总线简介9.2串行E2PROMX5045接口扩展技术9.4串行E2PROM芯片AT24CXX系列9.1几种外部串行总线工作方式9.1.1SPI串行总线9.1.2I2C总线9.1.1SPI串行总线MCS-51系统(主机)SS3MISOMOSISCKSS2SS1SS0A/DE2PROMD/AMCS-51系统(从机)图9.1单片机与多个SPI串行接口设备典型连接SPI(SerialPeripheralInterface串行外设接口)Motorola公司提出的一种同步串行外设接口使MCU与各种外围设备以同步串行通信方式交换信息该总线大量用在与E2PROM、ADC、FRAM和显示驱动器之类的慢速外设器件通信MCS51单片机P1.0P1.1P1.2P1.3SSSCKMOSIMISOSPI从设备图9.2MCS-51单片机I/O口模拟SPI总线接口原理图9.1.2I2C总线I2C(InterIntegratedCircuit)总线由Philips公司推出的芯片间串行传输总线I2C总线以1根串行数据线(SDA)和1根串行时钟线(SCL)实现了全双工的同步数据传输主器件1主器件2从器件1从器件2从器件3SCLSDASDASDASDASDASCLSCLSCLSCL+VCCStart+期间地址+读写命令(器件内部地址)图9.3I2C器件连接实例9.2串行E2PROMX5045接口扩展技术-SPI4种基本功能1.上电复位2.低电压检测3.看门狗定时器WDT4.串行E2PROM存储器CS/WDISOWPVRESETSCKSIV76582341SSCCX5045图9.10X5045引脚图图9.14AT89C51与X5045的典型接口电路CSBITP1.0SOBITP1.2SCKBITP1.1SIBITP1.3WREN_CMDEQU06HWRDI_CMDEQU04HRSDR_CMDEQU05HWRSR_CMDEQU01HREAD_CMDEQU03HWRITE_CMDEQU02H3.看门狗定时器RESETCS/WDItCSTtWDOtRSTtRSTtWDO图9.13X5045看门狗定时器工作示意图(6)子程序名称:CLR_WDTCLR_WDT:CLRCS;产生一个负脉冲NOPNOPNOPNOPNOPSETBCSRET复位X5045看门狗定时器(喂狗)程序4.串行E2PROM存储器(1)写存储单元或寄存器(2)读存储单元或寄存器(1)写写使能寄存器:WRENCSSCK01234567SOSI指令高阻(a)写使能锁存器操作时序写串行数据CSSCK01234567891011121314151617181920212276543210SI765432108地址的第9位指令8位地址字节123242526272829303132333435363738397654321076543210字节3字节26543210字节nSCKCSSI(b)写存储器操作时序(3)子程序名称:SEND【程序入口】ASEND:MOVR6,#8SEND1:RLCACLRSCKLCALLX_SDELAYMOVSI,CSETBSCKLCALLX_SDELAYDJNZR6,SEND1RET往X5045内部送入一个字节的串行数据CSSCK01234567891011121314151617181920212276543210SI765432108地址的第9位指令8位地址字节123242526272829303132333435363738397654321076543210字节3字节26543210字节nSCKCSSI写X5045内部EEPROM内容(2)子程序名称:WR_ROM【入口】R5,R6,R7。R7为要写入地址的低8位,R6为要写入地址的高位,R5写的数值。WR_ROM:MOVB,R6;R6中的内容暂存,R6=0或1CLRCSCLRSCKCLRSILCALLX_SDELAY;短延时MOVA,#WREN_CMD;发WREN允许写指令LCALLSEND;传送一个字节串行数据SETBCS;根据写地址的高位对写指令进行调整LCALLX_SDELAYMOVA,B;处理高位地址RLARLARLAMOVB,AMOVA,#WRITE_CMDADDA,B;生成写命令CLRSCKCLRSICLRCSLCALLSEND;送入写指令CLRSIMOVA,R7LCALLSEND;送入低位地址CLRSIMOVA,R5LCALLSEND;送数据入指定EEPROM地址SETBCSRETCSSCK01234567891011121314151617181920212276543210SI765432108地址的第9位指令8位地址字节123242526272829303132333435363738397654321076543210字节3字节26543210字节nSCKCSSI(2)读读X5045内部EEPROM内部指定地址的内容CSSCK01234567891011121314151617181920212276543210SOSI765432108地址的第9位指令8位地址数据输出高阻MSB(a)读E2PROM阵列操作时序从X5045送出一个字节的串行数据(5)子程序名称:LOAD【程序出口】ALOAD:MOVR6,#8CLRCLOAD1:SETBSCKLCALLX_SDELAYCLRSCKMOVC,SORLCALCALLX_SDELAYDJNZR6,LOAD1RET读X5045内部EEPROM内部指定地址的内容(4)子程序名称:RD_ROM【程序入口】R6,R7。R7要读取地址的低8位,R6为要读取地址的高位。【程序出口】R7。读取的数值在R7中。RD_ROM:CLRCSCLRSCKCLRSILCALLX_SDELAY;短延时MOVA,R6RLARLARLAMOVB,#READ_CMD;根据地址调整读EEPROM指令ADDA,BLCALLSEND;送入读命令MOVA,R7LCALLSEND;送入...