大容量闪烁存储器AT45D081及其在税控加油机中的应用
理,税控加油机必须达到国家要求的加油精度,并应显示每次加油的油价、加油量及加油金额,同时税控加油机也必须能够存储7年之内每天的加油记录,并提供查询接口。
为了满足税控加油机对数据存储的要求,存储器必须提供足够大的存储空间,且在掉电时不能丢失数据。同时应有较强的防数据误写功能以保证存储在存储器中税务数据的安全。基于多方面考虑?设计中选用了AT45D081。
2.2 税控加油机的功能结构
税控加油机主要由税控CPU、主控CPU以及其它一些外围设备组成。税控CPU和主控CPU之间是通过模拟的SPI总线来通信的。主控CPU通过SKH向税控CPU请求通信,税控CPU通过SKL作应答。通信数据先由一方放到双端口移位缓存中,然后通知对方到缓存中取数据。加油的工作过程如下,主控CPU检测到提油枪信号后将向税控CPU发出加油请求。如果税控CPU允许加油,则一方面使能电机控制输入端A,同时通知主控CPU,主控CPU接到通知后,立即使能电机控制端B,同时计算加油数据并通过SPI协议总线传送到税控CPU,再由税控CPU驱动显示。当主CPU检测到油枪挂起后,它一方面送出关电机信号,另一方面通知税控CPU也送出关机信号。当然,主控CPU也可以通过键盘向税控CPU查询时间及其它信息。
2.3 提高可靠性的设计措施
加油的数据由税控CPU保存在AT45D081中。为提高芯片的抗干扰能力,防止程序对芯片的误写,有效保护片内数据。硬件设计中采取了一些保护措施。其原理如下:
设CS为Q0,RDY为Q1,CPU的复位信号RE-SET为C。AT45D081的复位信号RESET1为Y, 则Y=(Q1Q2)C。因此,当CPU刚上电复位或由于主控CPU运行出错(如程序跑飞)而使“看门狗”芯片MAX813输出复位信号RESET产生热复位时,系统迫使AT45D081复位,同时禁止对该片的任何读写操作。当CPU处于正常工作时,只有该片的片选信号有效,同时芯片处于就绪状态时,才允许对其进行访问,否则迫使芯片处于复位状态并禁止访问,这样就防止了外界对其进行误写,从而有效地保护了片内数据。
图3
2.4 AT45D081的读写软件编程
AT45D081有关引脚接线如图3所示,下面给出针对写缓冲区和连续读主存储器阵列命令的51汇编语言软件编程。
;向缓冲区1写入数据
writebuf:
clr CS
mov a,#84h
lcall Byte_shift_out ;送命令码
clr a
lcall Byte_shift_out ;送8位任意码
mov a,hi_addr
lcall Byte_shift_out ;送高字节地址
mov a,lo_addr
lcall Byte_shift_out ;送低字节地址
writebuf0:
mov a,@r0
;连续读主存储器阵列内容
Readmain:
clr CS
mov a,#68h
lcall Byte_shift_out ;送命令码
clr c
mov a,lopageadd
rlc a
mov a,hi_page_addradd;
;合成24位地址的9~18位
rlc a
lcall Byte_shift_out;送前8位
mov a,hi_addr
rrc a
mov a,lopageadd
rlc a ;合成24位地址0~8位
lcall Byte_shift_out ;送第2个8位
mov a,lo_addr
lcall Byte_shift_out ;送0~7位
clr a
mov r3,#04H
readmain0:
lcall Byte_shift_out
djnz r3,readmain0 ;送32位无关位
readmain1:
lcall Byte_shift_in
mov @r0,a
inc r0 ;
;连续从指定的页及页内地址读出R2个数据
djnz r2,readmain1 ; 送命令码
setb CS
ret
ReadState: ;读状态寄存器内容
clr fmcs
MOV a,#57h;
lcall outcommon
lCALL incommon
setb fmcs
lcall Byte_shift_out; 连续从R0指定的地址写入R2个数据到BUFFER1
inc r0
djnz r2,writebuf0
setb CS
ret
3 结束语
本文设计的税控加油机已通过国家税控认证及电磁兼容试验认证。产品投产5年来,运行一直稳定可靠,各项指标均达到国家要求标准。尚未发现存储在AT45D081中的数据出现丢失和异常现象。
- at45db161驱动(11-29)
- MSP430驱动AT45DB041(Flash)进行读写操作例程(11-13)
- AT45DB021B在电力参数监测中的应用(08-06)
- VxWorks实时操作系统下MPC8260ATM驱动的实现(11-11)
- Platform Builder实践之两个要点(04-11)
- Redhat和服务器相关软件站点全搜集(04-15)