国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

PIC單片機與串行閃存的SPI接口設計

發布時間:2010-8-20 14:32    發布者:lavida
關鍵詞: PIC , spi , 串行 , 單片機 , 閃存
PIC單片機以性能穩定、品種眾多等特點在工業控制、儀器儀表、家電、通信等領域得到廣泛應用。雖然很多型號自身集成了存儲器,但在很多情況下難以滿足系統對大容量存儲的要求,需要外擴非易失性的存儲器。與并行Flash存儲器相比,串行Flash存儲器占用MCU引腳少,體積小,易于擴展,接線簡單,工作可靠,故而越來越多地應用在各類電子產品和工業測控系統中。本文主要討論PIC16F877A單片機與串行閃存M25P16之間的SPI通信,在要求大容量數據存儲且MCU引腳資源有限的情況下具有實用價值。  

1 SPI工作原理  

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


  
2 M25P16簡介  

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

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


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


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

3 SPI硬件設計  

PIC16F877A單片機具有非常完善的SPI接口(RC3/SCK、RC4/SDI、RC5/SDO、RA5/SS),只有PIC16F877A作為從機時,RA5/SS引腳才作為SPI腳,PIC16F877A為主機時,SS可作為普通I/O使用。通過該接口,可比較容易地實現PIC16F877A與SPI Flash的通信。PIC16F877A與M25P16的硬件接口如圖2所示。其中,SCK、SDI、SDO為MCU的SPI專用引腳,分別與存儲器的對應引腳相連,可選MCU的任意I/O腳作為存儲器的片選信號,圖中選取RC2腳與存儲器的片選S相連,這樣,在SPI通信時只涉及MCU的C口,便于操作。M25P16的HOLD和W直接接高電平,表示不允許在S有效的情況下暫停SPI通信且整個存儲區都沒有寫保護。  

圖2中,VDD為+5 V,由于PIC16F877A工作在5 V電壓下,而M25P16的工作電壓范圍為2.7~3.6 V,二者不能直接相連。這里采用電阻分壓的方式,保證輸入M25P16的S、C、D腳的電壓在存儲器能承受且能識別的范圍內,通過在M25P16向PIC16F877A輸入數據的SDO腳加上拉電阻,保證MCU可以識別M25P16輸出的高電壓,從而保證正常的SPI通信。如果MCU工作于3.3 V,則直接將二者的對應引腳相連即可。  


  
4 SPI軟件設計  

在硬件連線正確的基礎上,要進行SPI通信,還要對M25P16編寫驅動程序,包括SPI初始化、讀M25P16的數據、向M25P16寫人數據、數據的擦除等,這里使用C語言編程,編譯器選擇PICC,開發環境為MPLAB IDE8.10。  

PIC16F877A的SPI通信涉及4個寄存器:控制寄存器SSPCON、狀態寄存器SSPSTAT串行接收/發送緩沖器SSPBUF和移位寄存器SSPSR。其中,SSPCON的8位都是可讀可寫的,用于設置SSP處于主/從模式、時鐘頻率、時鐘極性、SSP使能以及寫沖突檢測;SSPSTAT只有高2位可讀寫,低6位是只讀的。PIC16F877A處于接收模式時,SSPSR和SSPBUF構成2級緩沖的接收器,SSPSR每收到1個完整的字節,就將該字節傳給SSPBUF,并將中斷標志位SSPIF置1,可通過讀SSPBUF得到數據;877A處于發送模式時,寫SSPBUF操作會同時將數據寫入SSPSR,觸發傳輸。下面結合具體的代碼進行詳細闡述。  

(1)SPI初始化與讀寫函數  


  
從SendByte和RcvByte函數的代碼中,可以看出數據發送和接收是否完成,都是通過判斷STAT_BF標志位(SSPSTAT寄存器的BF位,STAT_BF是在頭文件pic1687x.h中定義的名稱)來實現的,而數據手冊中關于BF位的描述僅用于接收模式。這是由于PIC16F877A通過SDO發送數據的同時,會通過SDI讀人數據,當1字節發送完成時,剛好接收1字節到SSPBUF,這時SSPBUF滿,BY被置為1,故可通過STAT_BF標志判斷1字節是否發送完成。  

(2)連續寫函數  

M25P16的PP指令允許1次連續寫入不超過1頁(256字節)的數據。寫人數據之前,首先要發出寫允許命令,然后才能執行數據寫入操作。數據寫入函數參數包括address(32位地址)、block(寫入數據緩沖區指針)、n(一次連續寫入的字節數,n




  
其中,delay()為延時子函數,參數為ms級,delay(1)即延時1ms。加入延時,是為了保證存儲器在準備好的情況下才進行讀寫操作。  


  
(3)連續讀函數  

M25P16允許發出讀指令后,連續讀取數據,這一模式極大提高了總線效率。數據讀取函數的參數包括address:32位地址;block:讀數據緩沖區指針;n:一次連續讀取的字節數,代碼如下:  


  
M25P16的連續讀操作與連續寫不同的是,無論READ還是FAST_READ,在起始地址處1字節的數據讀出后,會自動尋址更高地址處的數據,故程序中無需address++語句。  

除了對M25P16的初始化、讀寫之外,經常還要對其進行擦除操作,擦除有扇區擦除和整體擦除2種方式,執行數據擦除將使內部所有數據變為FFH。擦除操作與寫操作類似,在此不再贅述。  

結 語  

本文介紹的M25P16與PIC16F877A的接口已應用于自來水流量數據采集的本地存儲中。運行穩定可靠,未發現數據丟失現象,對其他應用有一定的參考價值。
本文地址:http://m.qingdxww.cn/thread-22804-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關在線工具

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美视频 | 欧美一区二区三区免费不卡 | 玖玖色在线 | 国产成人一区二区在线不卡 | 日日干天天插 | 插插好爽爽爽啊 | 激情亚州 | 91大神大战丝袜美女在线观看 | 久久久全国免费视频 | 中文国产成人精品久久一 | 亚洲综合色婷婷在线观看 | 日韩在线二区全免费 | 国产精品资源网 | 韩国一区 | 毛片视频在线免费观看 | 天天操综合视频 | 日韩欧美亚洲国产 | 老子不卡 | 欧美激情视频一区二区免费 | 国产成人在线免费 | www.香蕉视频 | 欧美bbbxxx| 91麻豆精品国产91久久久久 | 91岛国 | 久久久综合结合狠狠狠97色 | 四虎免费永久在线播放 | 欧美日韩亚洲一区二区精品 | 91在线高清视频 | 日韩精品一区二区三区中文在线 | 国产成人精品福利站 | 四虎在线最新永久免费播放 | 牛牛精品国内免费一区 | 香蕉欧美 | 国内自拍小视频 | 欧美人与动物交 | 男性天堂| aaa在线视频| 人体蜈蚣2彩色版 | 久久久久久久国产精品影院 | 精品日韩| 亚洲网站视频在线观看 |