<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PIC單片機與串行閃存的SPI接口設(shè)計

          PIC單片機與串行閃存的SPI接口設(shè)計

          作者: 時間:2010-05-27 來源:網(wǎng)絡(luò) 收藏
          引 言

          以性能穩(wěn)定、品種眾多等特點在工業(yè)控制、儀器儀表、家電、通信等領(lǐng)域得到廣泛應(yīng)用。雖然很多型號自身集成了存儲器,但在很多情況下難以滿足系統(tǒng)對大容量存儲的要求,需要外擴非易失性的存儲器。與并行Flash存儲器相比,Flash存儲器占用MCU引腳少,體積小,易于擴展,接線簡單,工作可靠,故而越來越多地應(yīng)用在各類電子產(chǎn)品和工業(yè)測控系統(tǒng)中。本文主要討論16F877AM25P16之間的通信,在要求大容量數(shù)據(jù)存儲且MCU引腳資源有限的情況下具有實用價值。

          1 工作原理

          (Serial Peripheral Interface)是一種常用的,用于MCU系統(tǒng)與外圍設(shè)備的通信,可用來連接存儲器、A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器、實時時鐘、LCD驅(qū)動器、傳感器,甚至其他處理器。SPI主要使用4個信號:MOSI(主機輸出/從機輸人)、MISO(主機輸入/從機輸出)、SCK(串行時鐘)和CS(片選)。其中,SCK由主機產(chǎn)生,作為傳輸?shù)耐綍r鐘,控制所有數(shù)據(jù)傳輸。主機通過觸發(fā)從設(shè)備的CS決定二者之間的SPI傳輸是否能夠進行。主機和外設(shè)都包含1個串行移位寄存器。主機通過向自己的SPI串行寄存器寫入1個字節(jié)來發(fā)起1次傳輸,然后通過MOSI信號線將數(shù)據(jù)傳給外設(shè),同時外設(shè)將自己移位寄存器中的內(nèi)容通過MISO信號線返回給主機,如圖1所示。這樣,兩個移位寄存器中的內(nèi)容就交換了。也就是說,外設(shè)的寫操作和讀操作是同步完成的。在實際應(yīng)用中,如果只進行寫操作,則主機只需忽略收到的字節(jié)即可;如果主機要讀外設(shè)的數(shù)據(jù),必須發(fā)送1個字節(jié)來引發(fā)從機的傳輸,發(fā)送的這個字節(jié)可以是任意數(shù)據(jù)。



          2 M25P16簡介

          M25P16是16 Mb的串行,具有先進的寫保護機制,支持速度高達(dá)50 MHz的SPI總線的存取操作。該存儲器有32個扇區(qū),每個扇區(qū)256頁,每頁256字節(jié)。工作電壓范圍2.7~3.6 V,工作溫度范圍-40~+85℃。數(shù)據(jù)保存長達(dá)20年,每個扇區(qū)可擦寫/編程100 000次。

          M25P16支持的操作指令共有12條。指令格式為:



          其中,8位的命令字是必需的,地址、啞元以及數(shù)據(jù)字節(jié)的有無和長度會因指令的不同而有所差別,詳情如表1所列。所有的命令碼、地址、串行輸入/輸出的數(shù)據(jù),均是高位在前,低位在后。



          對M25P16操作時,先選中芯片(即片選信號S拉低),然后串行輸入操作指令字節(jié),緊接著串行輸入地址字節(jié)(0或3字節(jié)),必要時還要加入啞讀字節(jié),最后串行輸入/輸出數(shù)據(jù)字節(jié),然后把片選信號拉高,之后M25P16啟動內(nèi)部控制邏輯,自行完成相應(yīng)的操作。

          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();