本系列文章主要針對FPGA初學者編寫,包括FPGA的模塊書寫、基礎語法、狀態機、RAM、UART、SPI、VGA、以及功能驗證等。將每一個知識點作為一個章節進行講解,旨在更快速的提升初學者在FPGA開發方面的能力,每一個章節中都有針對性的代碼書寫以及代碼的講解,可作為讀者參考。
16
第十六章:SPI
SPI簡介
電子系統設計中,往往被IIC/SPI/UART等總線搞的暈頭轉向,本文詳細介紹SPI總線的接口協議和應用。
SPI總線是一種同步串行外設接口,它可以使MCU/FPGA/DSP等控制器與各種外圍設備以串行方式進行通信。其具有通信速度快,同步設計以及控制協議簡單等特點,是電子系統設計的常用選擇之一。很多芯片的控制都提供SPI接口。
SPI 是英語 Serial Peripheral Interface 的縮寫,顧名思義就是串行外圍設備接口。是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,最早由Motorola提出的。由于其簡單易用的特性,現在很多的芯片都集成了SPI通信協議。
SPI傳輸串行數據時首先傳輸最高位。波特率可以高達5Mbps,具體速度大小取決于SPI硬件。例如,Xicor公司的SPI串行器件傳輸速度能達到5MHz。
SPI flash 芯片應用十分廣泛,在很多電子產品上面或多或少都有它的蹤影,如手機、數碼、液晶顯示器、機頂盒、電腦主板等。主要應用在EEPROM,FLASH,實時時鐘,AD轉換器,還有數字信號處理器和數字信號解碼器等,也是很多復雜芯片參數配置的常用接口。
SPI總線介紹
SPI 接口一般使用 4 條線通信,包括片選線(cs_n)、時鐘線(sclk/sck)、輸入數據線(sdi/miso) 和輸出數據線(sdo/mosi):
SCLK:串行時鐘線,由主設備產生;
MISO:主設備數據輸入,從設備輸出;
MOSI:主設備數據輸出,從設備輸入;
CS:從設備片選信號,由主設備控制。
其中CS是片選信號,可以預先規定其為高使能或者低使能有效時,對此芯片的操作才有效。這就允許在同一總線上連接多個SPI設備。
SPI接口在Master控制下產生的從器件使能信號和時鐘信號,兩個雙向移位寄存器按位傳輸進行數據交換,傳輸數據高位在前,低位在后(MSB)。在SCK的下降沿數據改變,上升沿一位數據被存入移位寄存器,如圖所示:
SPI總線通信特點
1.采用主-從模式(Master-Slave) 的控制方式
SPI 規定了兩個 SPI 設備之間通信必須由主設備 (Master) 來控制從設備 (Slave). 一個 Master 設備可以通過提供 Clock 以及對 Slave 設備進行片選來控制多個 Slave 設備。
2.采用同步方式(Synchronous)傳輸數據
Master 設備會根據將要交換的數據來產生相應的時鐘脈沖(Clock Pulse), 時鐘脈沖組成了時鐘信號(Clock Signal) , 時鐘信號通過時鐘極性 (CPOL) 和 時鐘相位 (CPHA) 控制著兩個 SPI 設備間何時數據交換以及何時對接收到的數據進行采樣, 來保證數據在兩個設備之間是同步傳輸的。
3.數據交換(Data Exchanges)
SPI設備間的數據傳輸之所以又被稱為數據交換, 是因為 SPI 協議規定一個 SPI 設備不能在數據通信過程中僅僅只充當一個"發送(Transmitter)" 或者 "接收者(Receiver)". 在每個 Clock 周期內, SPI 設備都會發送并接收一個 bit 大小的數據, 相當于該設備有一個 bit 大小的數據被交換了。
SPI FLASH讀寫介紹
對flash芯片的操作,一般包括對flash芯片的擦除,編程和讀取,各大廠商的SPI flash芯片都大同小異,操作命令基本是沒什么變化的,當我們拿到一款芯片,要特別注意芯片的容量,操作分區等。
其實,無論是對芯片的擦除,編程還是讀取操作,我們大致可以按照以下的套路來:寫命令---寫地址---寫(讀)數據。正如以下的時序圖一樣清晰明了,我們先把片選信號拉低,再依次寫指令,地址和數據,就可以對FLASH芯片進行操作。
在第十七章中將通過SPI總線控制Flash為例講解擦除的實現。
責任編輯:lq
-
FPGA
+關注
關注
1629文章
21754瀏覽量
604203 -
通信
+關注
關注
18文章
6041瀏覽量
136124 -
SPI
+關注
關注
17文章
1709瀏覽量
91740
原文標題:FPGA入門系列15--SPI
文章出處:【微信號:gh_873435264fd4,微信公眾號:FPGA技術聯盟】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論