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