基于SPI方式DSP外部E2PROM接口設(shè)計
3.2.1 寫一個字節(jié)操作
寫操作之前必須寫使能,即向X5043先發(fā)送數(shù)據(jù)(06H)。首先將CS拉低,然后向器件輸入WREN指令,在將CS拉高。再次將CS拉低并輸入WRITE指令,后面跟隨8位地址,在后面需要寫入的數(shù)據(jù)。WRITE指令的位3是地址位A8,它選擇是陣列的高半部分還是低半部分。如果CS在WREN和WRITE之間沒變?yōu)楦?,則WRITE指令被忽略。寫操作時序如圖3所示。本文引用地址:http://www.ex-cimer.com/article/152185.htm
在字節(jié)的最后一個位0寫入后,CS必須被拉高。如果它在其他時間拉高,寫操作不完全。在存儲器寫操作之后跟隨一次非易失性寫操作??梢酝ㄟ^讀狀態(tài)寄存器的WIP位來判斷非易失性寫是否結(jié)束。只有非易失性寫結(jié)束之后才可以進行下次寫操作。
值得注意的是McBSP在SPI模式下,只有數(shù)據(jù)發(fā)送的時候CLKX端才有時鐘輸出,F(xiàn)SX端才輸出低電平的幀同步信號。因為在發(fā)送寫使能和寫數(shù)據(jù)指令之間要求CS(即FSX)變高,所以DSP要分兩次把數(shù)據(jù)送給X5043。且這兩次發(fā)送的字長不同(寫使能一個字節(jié),寫數(shù)據(jù)三個字節(jié)),所以在發(fā)送之前需要重新配置McBSP。
3.2.2 讀一個字節(jié)操作
當(dāng)從E2PROM存儲器陣列讀數(shù)據(jù)時,首先CS通過FSX引腳拉低為低電平,然后送READ指令到器件,后面跟隨8位地址,在后面就是發(fā)送8位無意義的數(shù)據(jù)(目的是為了繼續(xù)產(chǎn)生時鐘信號)。發(fā)送結(jié)束后,所選地址中的數(shù)據(jù)從SO端移出到McBSP的數(shù)據(jù)接收引腳。讀操作時序如圖4所示。
讀操作和寫操作一樣,都是發(fā)送三個字節(jié)的數(shù)據(jù),所以McBSP的串口字長要配置為24位。讀操作發(fā)出以后,通過查看SPCR1寄存器的RRDY位來判斷接收數(shù)據(jù)是否完成,若RRDY為1,則讀DRR寄存器獲取數(shù)據(jù)。
3.3 值得注意的地方
無論是寫使能/寫禁止、寫狀態(tài)寄存器還是寫數(shù)據(jù),當(dāng)McBSP相應(yīng)數(shù)據(jù)發(fā)送結(jié)束后,McBSP的時鐘和幀同步信號都將變?yōu)闊o效狀態(tài),這種無效狀態(tài)要保持至少10μs之上(否則數(shù)據(jù)將無法正確寫入),然后在讀取X5043的狀態(tài)寄存器,判斷非易失性寫是否結(jié)束,結(jié)束了才可以進行其他操作。
4 結(jié) 語
通過SPI接口外接E2PROM,簡化了硬件電路,提高了系統(tǒng)的可靠性和開發(fā)難度,具有很實際的應(yīng)用價值。
評論