UPD78F9211/9212/9210 自寫方式編程
如果振蕩器時(shí)鐘/外部時(shí)鐘被選擇為系統(tǒng)時(shí)鐘,執(zhí)行指定序列的命令設(shè)定自編程模式后,立即執(zhí)行NOP 和HALT 指令,在HATL 狀態(tài)釋放后等待8 s,然后執(zhí)行自編程。
通過使用1 位存儲(chǔ)器操作指令驗(yàn)證FPRERR。
自編程模式下和HALT 模式下引腳的狀態(tài)是相同的。
在自編程模式中,禁止通過on-board/off-board 編程設(shè)置安全功能,無論安全功能如何設(shè)定,自編程命令都可執(zhí)行。想要在自編程期間禁止寫入或擦除進(jìn)程,則需要設(shè)定保護(hù)字節(jié)。
在執(zhí)行自編程命令前,確保對(duì)Flash 地址指針H(FLAPH)的第4 ~ 7 位和Flash地址指針H比較寄存器(FLAPHC)清零。如果這些位為1 時(shí)執(zhí)行自編程,設(shè)備將會(huì)故障。
在設(shè)置為自編程模式和普通模式以前,立即將FLCMD 寄存器清零(00H)。
1.3 自編程功能所使用的寄存器
自編程使用以下的寄存器
Flash 編程模式控制寄存器(FLPMC)
Flash 保護(hù)命令寄存器(PFCMD)
Flash 狀態(tài)寄存器(PFS)
Flash 編程命令寄存器(FLCMD)
Flash 地址指針H 和L 寄存器(FLAPH 和FLAPL)
Flash 地址指針H 比較寄存器和FLASH 地址指針L 比較寄存器(FLAPH 和FLAPLC)
Flash 寫入緩存寄存器(FLW)
78K0S/KY1+ 在FLASH 存儲(chǔ)器的0081H 地址有一個(gè)區(qū)域被稱為保護(hù)字節(jié)。
(1)Flash 編程模式控制寄存器(FLPMC)
這個(gè)寄存器用于在自編程模式下向FLASH 存儲(chǔ)器寫入數(shù)據(jù)時(shí)設(shè)定工作模式,并可用于讀取保護(hù)字節(jié)的值。
只有按特定順序(參考16.8.3(2) FLASH 保護(hù)命令寄存器(PFCMD))才能寫入數(shù)據(jù),如此就不會(huì)因?yàn)榕既坏脑肼暩蓴_或者程序掛起等故障導(dǎo)致應(yīng)用系統(tǒng)意外停止。
該寄存器可通過一個(gè)8 位的存儲(chǔ)操作指令來設(shè)置。
復(fù)位后寄存器狀態(tài)值不確定。
本文引用地址:http://2s4d.com/article/148202.htm
注 1. 當(dāng)復(fù)位釋放時(shí),第0 位(FLSPM)被清零。當(dāng)復(fù)位釋放后,保護(hù)字節(jié)的設(shè)定值可從第2 ~6 位(PRSELF0 ~ RESELF4)讀出。
2. 第2 ~ 6 位(PRSELF0 ~ RESELF4)是只讀的。
注意事項(xiàng) 1. 注意在設(shè)定自編程模式的情況下,可參考16.8.2 自編程功能的注意事項(xiàng)。
2. 預(yù)先設(shè)置CPU 時(shí)鐘,使在自編程中使CPU 時(shí)鐘大于等于1 MHz。
3. 執(zhí)行指定序列的命令設(shè)定自編程模式后,立即執(zhí)行NOP 和HALT 指令,以執(zhí)行自編程。10μs(最大值)+ 2 CPU 時(shí)鐘(fCPU)后HALT 指令被自動(dòng)釋放。
4. 如果振蕩器時(shí)鐘/外部時(shí)鐘被選擇為系統(tǒng)時(shí)鐘,執(zhí)行指定序列的命令設(shè)定自編程模式后,立即執(zhí)行NOP 和HALT 指令,在HATL 狀態(tài)釋放后等待8 μs,然后執(zhí)行
自編程。
5. 在設(shè)置為自編程模式和普通模式以前,立即將FLCMD寄存器清零(00H)。
(2)Flash 保護(hù)命令寄存器(PFCMD)
如果由于噪聲或程序掛起等原因引起的故障導(dǎo)致應(yīng)用系統(tǒng)停止,此時(shí)對(duì)FLASH 編程模式控制寄存器(FLPMC)進(jìn)行寫入操作將對(duì)系統(tǒng)產(chǎn)生嚴(yán)重影響。PFCMD 用來保護(hù)FLPMC 的寫入,這樣就不會(huì)使應(yīng)用系統(tǒng)由于疏忽導(dǎo)致停止。
必須按以下順序?qū)LPMC執(zhí)行寫入操作。
1> 寫入一特定的值(A5H)到PFCMD 中。
2> 寫入設(shè)定值到FLPMC 的第0 位(FLSPM)中(此時(shí)寫入操作是無效的)。
3> 將設(shè)定值的反碼寫入FLPMC 的第0 位(FLSPM)(此時(shí)寫入操作是無效的)。
4> 將設(shè)定值寫入FLPMC 的第0 位(FLSPM)(此時(shí)寫入操作是有效的)。
注意事項(xiàng) 在自編程模式下,不能執(zhí)行中斷服務(wù)。在執(zhí)行指定序列指令設(shè)定自編程模式以前,執(zhí)行指定序列指令設(shè)定工作模式為普通模式以后的兩點(diǎn)之間,停止中斷服務(wù)
(通過在MK0= FFH 時(shí),執(zhí)行DI 指令)。
這樣重復(fù)寫入寄存器,可使寄存器不能被非法寫入。
可以通過FLASH 狀態(tài)寄存器(PFS)的第0 位(FPRERR)來驗(yàn)證是否出現(xiàn)非法的存儲(chǔ)操作。
使用1 位存儲(chǔ)器操作指令驗(yàn)證FPRERR。
每當(dāng)FLPMC的值發(fā)生改變的時(shí)候都必須向PFCMD 寫入值A(chǔ)5H。
PFCMD 的值可通過一個(gè)8 位的存儲(chǔ)器操作指令來設(shè)置。
復(fù)位后寄存器PFCMD 值不確定。
(3) Flash 釤寄存器(PFS)
如果不能按正確序(入FLASH 保o命令寄存器PFCMD)入受保o的FLASH 程模式控制寄存器(FLPMC)中,F(xiàn)LPMC不能被入并且出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 標(biāo)的操作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> 中所)。
渥 在菱形括號(hào)內(nèi)的底于(2) Flash 保o命令字(PFCMD)。
}位l件>
如果FPRERR 標(biāo)志0
}位信號(hào)入
2. VCERR標(biāo)志的操作l件
O定l件>
擦除校e`
內(nèi)部入校e`
若VCERR 被O1,tf明Flash ]有被正確的擦除/入。在指定的程序Y要再次Flash M行擦除/入。
渥 l生擦除/入保oe`r,VCERR標(biāo)也被置1。
}位l件>
VCERR標(biāo)被置0
外部}位信號(hào)入
3. WEPRERR 標(biāo)操作l件
O置l件>
使用保o字指定一^域防止^域因FLASH 地址指H(FLAPH)和絳邢嚓P(guān)命令而引起的擦除/入。
如果“1”被入到一]有被擦除的位(一“0”的位)。
}位l件>
WEPRERR 標(biāo)被置0
外部}位信號(hào)入
(4)FLASH 程命令寄存器(FLCMD)
在自程模式下,F(xiàn)LCMD 被用砣范FLASH 的擦、、校操作。
寄存器可通^1 位或8 位的操作指令碓O(shè)置。
}位後寄存器值置00H。
評(píng)論