NXP TPMS芯片之-闪存操作2
部分命令序列可以通过在写入内存数组之后、写入清除FCBEF并启动完整命令的1之前的任何时间向FCBEF写入0来手动中止。以这种方式中止命令将设置FACCERR访问错误标志,在启动新命令之前必须清除该标志。
必须遵守严格监督的程序,否则命令将不被接受。这将对闪存内容进行任何意外更改的可能性降至最低。命令完成标志(FCCF)指示命令何时完成。必须清除FCBEF以启动命令,才能完成命令序列。下图9是执行除突发编程之外的所有命令的流程图。在使用任何FLASH命令之前,必须初始化FCDIV寄存器。重置后只能执行一次。
4 突发程序执行
突发程序命令用于在比使用标准程序命令所需的时间更短的时间内编程连续字节的数据。这是可能的,因为闪存阵列的高电压不需要在程序操作之间禁用。通常,当发出程序或擦除命令时,必须启用与闪存相关的内部电荷泵,以便向阵列提供高电压。命令完成后,电荷泵关闭。
当发出突发程序命令时,电荷泵启用,然后在突发程序操作完成后保持启用状态,前提是满足以下两个条件:
•在当前程序操作完成之前,下一个突发程序命令已排队。
•下一个顺序地址选择与正在编程的当前字节相同的物理行上的一个字节。一行闪存由64个字节组成。行中的字节由地址A5到A0选择。当地址A5到A0都为零时,新行开始。
在突发模式下编程的一系列连续字节的第一个字节的编程时间与在标准模式下编程的字节的编程时间相同。如果满足上述条件,则随后的字节将在突发程序时间中编程。如果下一个连续地址是新行的开始,则该字节的程序时间将是标准时间,而不是突发时间。这是因为阵列的高电压必须先禁用,然后再启用。
如果在当前命令完成之前新的突发命令尚未排队,则电荷泵将被禁用,并且高压将从阵列中移除。
闪存通过BDM功能的编程时间取决于特定的外部BDM接口工具和正在使用的软件。有关编程时间,请咨询工具供应商。
5访问错误
只要违反命令执行协议,就会发生访问错误。
以下任何特定操作都将导致在FSTAT中设置访问错误标志(FACCERR)。在处理任何命令之前,必须通过在FSTAT中向FACCERR写入1来清除FACCERR。
•在通过写入FCDIV寄存器设置内部闪存时钟频率之前写入闪存地址
•在未设置FCBEF时写入闪存地址(在命令缓冲区为空之前,无法启动新命令。)
•在启动前一个命令之前,第二次写入闪存地址(每个命令只有一次写入闪存地址)
•在启动上一个命令之前,第二次写入FCMD(每个命令只有一次写入FCMD)
•写入闪存地址后,写入除FCMD以外的任何闪存控制寄存器
•将五个允许代码(0x05、0x20、0x25、0x40或0x41)以外的任何命令代码写入FCMD
•在将命令写入FCMD后,访问(读或写)除写入FSTAT之外的任何闪存控制寄存器(清除FCBEF并启动命令)。
•当程序或擦除命令正在进行时,MCU进入停止模式(命令被中止)
•在MCU处于安全状态时,使用后台调试命令写入字节程序、突发程序或页擦除命令代码(0x20、0x25或0x40)(后台调试控制器只能在MCU处于安全状态时执行空白检查和批量擦除命令)
•将0写入FCBEF以取消部分命令。
注:整理自网络