新闻中心

EEPW首页>嵌入式系统>设计应用> UPD78F9211/9212/9210 自写方式编程

UPD78F9211/9212/9210 自写方式编程

作者: 时间:2012-12-11 来源:网络 收藏

如果振荡器时钟/外部时钟被选择为系统时钟,执行指定序列的命令设定自模式后,立即执行NOP 和HALT 指令,在HATL 状态释放后等待8 s,然后执行自
通过使用1 位存储器操作指令验证FPRERR。
模式下和HALT 模式下引脚的状态是相同的。
在自编程模式中,禁止通过on-board/off-board 编程设置安全功能,无论安全功能如何设定,自编程命令都可执行。想要在自编程期间禁止写入或擦除进程,则需要设定保护字节。
在执行自编程命令前,确保对Flash 地址指针H(FLAPH)的第4 ~ 7 位和Flash地址指针H比较寄存器(FLAPHC)清零。如果这些位为1 时执行自编程,设备将会故障。
在设置为自编程模式和普通模式以前,立即将FLCMD 寄存器清零(00H)。

1.3 自编程功能所使用的寄存器
自编程使用以下的寄存器
Flash 编程模式控制寄存器(FLPMC)
Flash 保护命令寄存器(PFCMD)
Flash 状态寄存器(PFS)
Flash 编程命令寄存器(FLCMD)
Flash 地址指针H 和L 寄存器(FLAPH 和FLAPL)
Flash 地址指针H 比较寄存器和FLASH 地址指针L 比较寄存器(FLAPH 和FLAPLC)
Flash 写入缓存寄存器(FLW)
78K0S/KY1+ 在FLASH 存储器的0081H 地址有一个区域被称为保护字节。
(1)Flash 编程模式控制寄存器(FLPMC)
这个寄存器用于在自编程模式下向FLASH 存储器写入数据时设定工作模式,并可用于读取保护字节的值。
只有按特定顺序(参考16.8.3(2) FLASH 保护命令寄存器(PFCMD))才能写入数据,如此就不会因为偶然的噪声干扰或者程序挂起等故障导致应用系统意外停止。
该寄存器可通过一个8 位的存储操作指令来设置。
复位后寄存器状态值不确定。

本文引用地址://m.amcfsurvey.com/article/148202.htm

注 1. 当复位释放时,第0 位(FLSPM)被清零。当复位释放后,保护字节的设定值可从第2 ~6 位(PRSELF0 ~ RESELF4)读出。
2. 第2 ~ 6 位(PRSELF0 ~ RESELF4)是只读的。
注意事项 1. 注意在设定自编程模式的情况下,可参考16.8.2 自编程功能的注意事项。
2. 预先设置CPU 时钟,使在自编程中使CPU 时钟大于等于1 MHz。
3. 执行指定序列的命令设定自编程模式后,立即执行NOP 和HALT 指令,以执行自编程。10μs(最大值)+ 2 CPU 时钟(fCPU)后HALT 指令被自动释放。
4. 如果振荡器时钟/外部时钟被选择为系统时钟,执行指定序列的命令设定自编程模式后,立即执行NOP 和HALT 指令,在HATL 状态释放后等待8 μs,然后执行
自编程。
5. 在设置为自编程模式和普通模式以前,立即将FLCMD寄存器清零(00H)。
(2)Flash 保护命令寄存器(PFCMD)
如果由于噪声或程序挂起等原因引起的故障导致应用系统停止,此时对FLASH 编程模式控制寄存器(FLPMC)进行写入操作将对系统产生严重影响。PFCMD 用来保护FLPMC 的写入,这样就不会使应用系统由于疏忽导致停止。
必须按以下顺序对FLPMC执行写入操作。
1> 写入一特定的值(A5H)到PFCMD 中。
2> 写入设定值到FLPMC 的第0 位(FLSPM)中(此时写入操作是无效的)。
3> 将设定值的反码写入FLPMC 的第0 位(FLSPM)(此时写入操作是无效的)。
4> 将设定值写入FLPMC 的第0 位(FLSPM)(此时写入操作是有效的)。
注意事项 在自编程模式下,不能执行中断服务。在执行指定序列指令设定自编程模式以前,执行指定序列指令设定工作模式为普通模式以后的两点之间,停止中断服务
(通过在MK0= FFH 时,执行DI 指令)。
这样重复写入寄存器,可使寄存器不能被非法写入。
可以通过FLASH 状态寄存器(PFS)的第0 位(FPRERR)来验证是否出现非法的存储操作。
使用1 位存储器操作指令验证FPRERR。
每当FLPMC的值发生改变的时候都必须向PFCMD 写入值A5H。
PFCMD 的值可通过一个8 位的存储器操作指令来设置。
复位后寄存器PFCMD 值不确定。

(3) Flash 钐寄存器(PFS)
如果不能按正确序(入FLASH 保o命令寄存器PFCMD)入受保o的FLASH 程模式控制寄存器(FLPMC)中,FLPMC不能被入并且出F保oe`,PFS 的第0 位(FPRERR)将被置1。
FPRERR 1 r,可以通^直接0 砬0。
自程模式期g可能b生的e`能蛲ㄟ^PFS 的第1位(VCERR)和第2 位(WEPRERR)位反出恚(VCERR)和(WEPRERR)可以通^0 砬0。
要C操作是否绦姓确,PFS 寄存器的必被A先清零。
PFS 可以使用1 位或8 位存ζ鞑僮髦噶钤O定。
}位後PFS被置00H。
注意事 使用1 位存ζ鞑僮髦噶铗CFPRERR。

1. FPRERR 标的操作l件
O置l件>
绦械χ苓寄存器的入命令]有oPFCMD入特定值(PFCMD = A5H)r,PFCMDM行入操作。
在1>之後,如果第一l存χ噶畈僮鞯氖峭獠看ζ鞫不是FLPMC。
在2>之後,如果第一l存χ噶畈僮鞯氖峭獠看ζ鞫不是FLPMC。
在2>之後,如果第一l存χ噶钏的值不同于FLPMC 值的反a。
在3>之後,如果第一l存χ噶畈僮鞯氖峭獠看ζ鞫不是FLPMC。
在3>之後,如果第一l存χ噶钏的值不同于FLPMC 值(在2> 中所)。
渥 在菱形括号内的底于(2) Flash 保o命令字(PFCMD)。
}位l件>
如果FPRERR 标志0
}位信号入
2. VCERR标志的操作l件
O定l件>
擦除校e`
内部入校e`
若VCERR 被O1,tf明Flash ]有被正确的擦除/入。在指定的程序Y要再次Flash M行擦除/入。
渥 l生擦除/入保oe`r,VCERR标也被置1。
}位l件>
VCERR标被置0
外部}位信号入
3. WEPRERR 标操作l件
O置l件>
使用保o字指定一^域防止^域因FLASH 地址指H(FLAPH)和绦邢嚓P命令而引起的擦除/入。
如果“1”被入到一]有被擦除的位(一“0”的位)。
}位l件>
WEPRERR 标被置0
外部}位信号入
(4)FLASH 程命令寄存器(FLCMD)
在自程模式下,FLCMD 被用砣范FLASH 的擦、、校操作。
寄存器可通^1 位或8 位的操作指令碓O置。
}位後寄存器值置00H。



评论


相关推荐

技术专区

关闭