Microchip UNI/O總線技術(shù)及其應(yīng)用
④Bit4~Bit7。為無關(guān)位,讀出時(shí)為0。
(2)包含一個(gè)讀操作地址指針
在進(jìn)行存儲(chǔ)陣列讀操作時(shí),瀆操作地址指針會(huì)在每個(gè)字節(jié)發(fā)送后自動(dòng)指向原地址加1的存儲(chǔ)單元。當(dāng)?shù)竭_(dá)最高地址時(shí),如果主器件仍然發(fā)出MAK選擇繼續(xù)讀取,則地址指針的值會(huì)翻轉(zhuǎn)回到0x00地址處。在上電后,讀地址指針會(huì)保持上一次訪問的存儲(chǔ)單元的地址。
(3)支持頁寫功能
用WRITE指令可以向指定地址的存儲(chǔ)單元或者指定地址開始的存儲(chǔ)器區(qū)域?qū)懭雰?nèi)容任意的數(shù)據(jù)。不過,在寫多個(gè)存儲(chǔ)單元時(shí),必須限制在單個(gè)物理頁面內(nèi)寫。物理頁邊界從頁大小(16字節(jié))整數(shù)倍的地址開始,結(jié)束于頁大小的整數(shù)倍減1的地址。如果WRITE指令試圖跨越物理頁邊界進(jìn)行,其結(jié)果是將超出頁邊界的數(shù)據(jù)寫回到當(dāng)前頁的開始,即覆蓋先前存儲(chǔ)的數(shù)據(jù),而不會(huì)如期望的那樣寫到下一貞。
2.2.3 UNI/O存儲(chǔ)器11XXX的讀寫程序
上電之后,由于11XXX處在關(guān)斷模式,而且總線處于高電平空閑狀態(tài),所以主器件必須先在SCIO上產(chǎn)生一個(gè)高到低再到高的脈沖,使11XXX從關(guān)斷模式退出進(jìn)入空閑模式,這樣11XXX才能按照命令序列所規(guī)定的流程響應(yīng)總線上的其他信號(hào),接收主器件發(fā)來的指令,并按指令要求完成規(guī)定的操作。
(1)寫程序流程
圖6是寫存儲(chǔ)陣列中未保護(hù)區(qū)塊的程序流程。圖中發(fā)送指令的操作可通過調(diào)用發(fā)送指令子程序來完成。圖7給出了發(fā)送指令程序流程。要寫存儲(chǔ)陣列中受保護(hù)的區(qū)塊,只需在執(zhí)行WREN指令之前,用WRSR指令對(duì)BP0、BP1進(jìn)行相應(yīng)的設(shè)置,以暫時(shí)解除待寫區(qū)塊的保護(hù),并在程序的最后再用WRSR指令對(duì)它們進(jìn)行恢復(fù)即可。要全地址空間置1或擦除,必須先解除對(duì)整個(gè)存儲(chǔ)陣列的保護(hù)并使能寫操作,再發(fā)送SETAL或ERAL指令,指令發(fā)送之后用NoMAK來啟動(dòng)內(nèi)部寫操作,內(nèi)部操作完成之后恢復(fù)對(duì)存儲(chǔ)陣列的保護(hù)即可。
(2)讀程序流程
隨機(jī)讀存儲(chǔ)陣列的程序流程是:先發(fā)送READ指令,再發(fā)送待讀單元地址。先高地址字節(jié),后低地址字節(jié)。然后,從器件就會(huì)將該地址中的數(shù)據(jù)送到總線上,主器件收到第一個(gè)數(shù)據(jù)字節(jié)后,若還要讀取更多的數(shù)據(jù),可以發(fā)送應(yīng)答信號(hào)MAK。之后,從器件用SAK應(yīng)答,并送出下一個(gè)數(shù)據(jù)字節(jié)。若要結(jié)束讀操作,主器件只要發(fā)送NoMAK即可。
要從存儲(chǔ)陣列的當(dāng)前位置讀取數(shù)據(jù)可用CRRD指令來進(jìn)行操作,其程序流程除了不需要傳送存儲(chǔ)器單元地址外,其余操作步驟與READ相同。
結(jié)語
UNI/O總線只有一根信號(hào)線,對(duì)I/O端口的占用最少,可有效地減小嵌入式系統(tǒng)的體積并降低產(chǎn)品成本,具有廣闊的應(yīng)用前景。
評(píng)論