大概印象:430的flash好像有點像arm的flash,只不過是arm的flash要比430的大很多,而且430的flash不同于E2PROOM,這一點需要值得注意
MSP430flash的基本特點:
1,擁有內置的編程電壓發(fā)生器
2:可以進行位,字節(jié),還有字的尋址
3:可以進行段擦除,和整體的擦除
注意:對flash進行操作的時候,flash的操作編程電壓必須要大于2.7V,如果小于2.7v的話,將會出現(xiàn)不可預知的錯誤
還是先來看看430的整體的基本框圖:這張框圖集合了430flash的所有的操作
標號1,定時器發(fā)生器:注意這里的定時器的編程頻率必須處于257KHz到476KHz之間,
標號2:編程電壓發(fā)生器,這里必須產生一個大于2.7v的電壓
標號3:三個可以操作的寄存器
標號4:這里就是flash區(qū)域,430的flash大小為4KB+256byte
其中4KB是主記憶區(qū),256byte是信息記憶區(qū)
這里需要注意的是flash的擦除是以段為最小單位進行擦除,在主存儲區(qū)4KB中,flash是以512個字節(jié)為一段,在信息存儲區(qū),256byte是以128個字節(jié)為一個段
430flash支持比特,字節(jié)還有塊數(shù)據(jù)的寫入,同時也支持三種擦除方式:1擦除一個段,2,擦除所有的主存儲區(qū),3擦除所有flash區(qū)域
擦除
方式1:代碼是從flash中取出
注意擦除flash的流程圖,這里也是看懂這一個流程圖就可以了
標號1:步驟一,要關閉所有的中斷和看門狗,MSP430的低功耗模式設計,在擦除的時候,cpu被強制的掛起,這時,外部的所有中斷不能響應,看門狗如果沒有關閉,在擦除過程中會導致程序復位而產生不可預知的結果
標號2:設置flash的控制位和擦除模式
標號3:偽寫入一個數(shù)據(jù)
標號4:重新喚醒cpu
方式2:代碼是從RAM中取出的話,cpu可以讓他不休眠,這樣可以繼續(xù)執(zhí)行下面的代碼
這是原先把flash中的程序拷貝到RAM中,之后在將pc程序指針指向RAM中的地址,那樣就可以擦除flash了,這里也只是需要看懂擦鞋的流程圖就可以了
當代碼是從RAM中讀出的時候,這是cpu就可以不必被強制掛起,這時候需要注意的是,還是要關閉程序的所有中斷,并且要判斷BUSY這個標志位,因為BUSY==1,表示flash正在進行讀寫操作,所以,要等BUSY==0的時候才能進行讀寫操作
這里看一下流程圖就可以知道了
1:關閉所有的中斷和看門狗
2:之后判斷flash的操作狀態(tài),當flash沒有進行操作的時候,進行如下的操作
3:設置flash的操作,和擦除的模式
4:偽寫入
5:之后判斷flash的操作狀態(tài),當flash沒有進行操作的時候,重新開啟中斷還有看門狗
之后就是對flash的寫操作
寫操作可以有兩種操作方式:1:字節(jié)和比特的寫入,2:塊寫入
寫操作與擦除的流程圖是相似的,也分為從flash中讀出指令,和從RAM中取出指令
這個時候的操作和擦除過程神似
還有就是塊寫入,就是在進行塊寫入的時候,寫入的時間是不能超過累計編程時間的,累計編程時間是4毫秒,這是因為在對flash進行操作的時候,要對flash加一個比較高的電壓,如果持續(xù)的時間過長,高電壓會對flash有損壞,在進行塊寫入的時候代碼必須是從RAM中取出
這是塊寫入的操作流程