您现在的位置:首页 > 技术资料 | ![]() |
单片机应用系统 单片机应用系统经常希望有功能全、价格低廉、体积小、及使用方便的接口电路与之配套使用,北京三誉有限公司代理的美国SUMMIT公司的S42WD42就是一款性价比很高的接口电路,它包含有四大功能:上电复位,看门狗,512字节EEPROM,第二电源电压监测。 S42WD42功能简介 ---- 上电复位:S42WD42可以提供130~270ms的上电复位脉冲,同时提供高电平复位和低电平复位引脚。复位电压转折点有三种供选择:2.55V、4.25V、4.5V。 ---- 看门狗定时时间长度为1.6s(标称值)。 ---- EEPROM为512字节×8bit,一次可以写一个字节,也可写一页(16字节/页)。每个单元可反复写入1百万次。无论写入字节或页,写入时间都是最大不超过10ms。 ---- 第二电源电压监测:S42WD42除了主电源电压之外,还提供一个单独的引脚监测其电压,并输出状态。
---- /Vlow:当Vsense < 1.24V时,/Vlow输出低电平。注意此脚是漏极开路输出,需外加上拉电阻。 ---- Vsense:第二监测电压输入。 ---- SDA:I2C总线数据输入/输出。 ---- /RESET:低电平复位输入/漏极开路输出。该脚可手动复位输入一个低电平,对应第7脚RESET输出高电平复位信号。 ---- RESET:高电平复位输入/漏极开路输出。该脚可手动复位输入一个高电平,对应第2脚/RESET输出低电平复位信号。 ---- Vcc:有两个版本芯片,工作电压2.7~5.5V 软件命令 ---- S42WD42支持五种软件命令:写入一个字节;写入一页(16个字节);从当前地址读一个字节;从任意地址随机读一个字节;顺序读若干字节。 ---- 命令编码为:1010xxA8R/W A7A6A5A4A3A2A1A0。第一个字节最低位R/W为1,就是READ;R/W为0,就是WRITE。 ---- 如果软件在1.6s以内没有对S42WD42进行任何读写操作,看门狗就会复位芯片,输出复位脉冲。
软件源代码: ; 8031 external crystal is 11.0592 MHz SCK BIT P1.0 SDA BIT P1.1READ: LCALL START MOV A,DP ; DPTR包含读单元地址(9位) ANL A,#1 RL A ORL A,#10100000B ; R/W=0 LCALL SHIFTOUT LCALL POLLACK MOV A,DPL LCALL SHIFTOUT LCALL POLLACK LCALL START ; START again MOV A,#10100001B ; R/W=1 LCALL SHIFTOUT LCALL POLLACK MOV A,@R0 DEC A MOV R7,A ; read up to 256 bytes sequentially INC R0 ; input bufferRDNXT: LCALL SHIFTIN LCALL ACK ; CPU send out ACK to S42WD42 MOV @R0,A INC R0 DJNZ R7,RDNXT LCALL SHIFTIN LCALL UNACK MOV @R0,A LCALL STOP CLR C RETWRITE: LCALL START MOV A,DPH ; DPTR包含写入单元地址(9位) ANL A,#1 RL A ORL A,#10100000B ; R/W=0 LCALL SHIFTOUT LCALL POLLACK MOV A,DPL LCALL SHIFTOUT LCALL POLLACK MOV A,@R0 DEC A ANL A,#0FH ; write data length varies from 1 to 16 INC A MOV R7,A INC R0 ; point to beginning of output bufferWRNXT: MOV A,@R0 LCALL SHIFTOUT LCALL POLLACK INC R0 DJNZ R7,WRNXT LCALL STOP CLR C RETSTART: SETB C SETB SCL JNB SCL,BUSY SETB SDA JNB SDA,BUSY CLR SDA CLR SCL CLR CBUSY: RET ; C=1 if I2C BUS is busy STOP: CLR SCL NOP CLR SDA SETB SCL SETB SDA RETSHIFTOUT:MOV B,#8OUTNXT: CLR SCL RLC A MOV SDA,C SETB SCL DJNZ B,OUTNXT CLR SCL RETSHIFTIN: MOV B,#8 CLR SCL SETB SDA ; SDA pin as inputINNXT CLR SCL NOP NOP SETB SCL MOV C,SDA RLC A DJNZ B,INNXT CLR SCL RETACK: CLR SCL NOP CLR SDA ; ACK=0 SETB SCL CLR SCL RETUNACK: CLR SCL NOP SETB SDA ; ACK=1 SETB SCL CLR SCL RETPOLLACK: CLR SCL NOP SETB SDA ; ready to input SETB SCL MOV C,SDA ; slave respond with ACK if C=0 CLR SCL JNC ACKED LCALL STOP ; C=1 if no ACK from S42WD42ACKED: RET END
|