STM32——SPI

STM32——SPI

SPI簡介

SPI 是英語 Serial Peripheral interface 的縮寫,顧名思義就是串行外圍設備接口。是 Motorola首先在其 MC68HCXX 系列處理器上定義的。 SPI 接口主要應用在 EEPROM, FLASH,實時時鐘, AD 轉換器,還有數字信號處理器和數字信號解碼器之間。 SPI 是一種高速的,全雙工,同步的通信總線,並且在芯片的管腳上只佔用四根線,節約了芯片的管腳,同時爲 PCB 的佈局上節省空間,提供方便,正是出於這種簡單易用的特性,現在越來越多的芯片集成了這種通信協議,STM32F1 也有 SPI 接口。
SPI 接口一般使用 4 條線通信:
(1)MISO 主設備數據輸入,從設備數據輸出。
(2)MOSI 主設備數據輸出,從設備數據輸入。
(3)SCLK 時鐘信號,由主設備產生。
(4)CS 從設備片選信號,由主設備控制。
SPI 主要特點有: 可以同時發出和接收串行數據; 可以當作主機或從機工作; 提供頻率可編程時鐘; 發送結束中斷標誌; 寫衝突保護; 總線競爭保護等。
SPI 總線四種工作方式 SPI 模塊爲了和外設進行數據交換,根據外設工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協議沒有重大的影響。如果CPOL=0,串行同步時鐘的空閒狀態爲低電平;如果CPOL=1,串行同步時鐘的空閒狀態爲高電平。時鐘相位(CPHA)能夠配置用於選擇兩種不同的傳輸協議之一進行數據傳輸。如果 CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數據被採樣;如果 CPHA=1,在串行同步時鐘
的第二個跳變沿(上升或下降)數據被採樣。 SPI 主模塊和與之通信的外設備時鐘相位和極性應該一致。
不同時鐘相位下的總線數據傳輸時序如圖 28.1.1 所示:
在這裏插入圖片描述
STM32F1 的 SPI 功能很強大, SPI 時鐘最高可以到 18Mhz,支持 DMA,可以配置爲 SPI協議或者 I2S 協議。
我們將使用 STM32 的 SPI 來讀取外部 SPI FLASH 芯片(W25Q128),實現類似上節的功能。這裏對 SPI 我們只簡單介紹一下 SPI 的使用, STM32 的 SPI 詳細介紹請參考《STM32中文參考手冊》, 23 節。然後我們再簡單介紹下 SPI FLASH 芯片。 我們使用 STM32 的 SPI2 的主模式,下面就來看看 SPI2 部分的設置步驟吧, STM32的主模式配置步驟如下:
1)配置相關引腳的複用功能,使能 SPI2 時鐘。
我們要用 SPI2,第一步就要使能 SPI2 的時鐘, SPI2 的時鐘通過 APB1ENR 的第 14 位來設置。其次要設置 SPI2 的相關引腳爲複用輸出,這樣纔會連接到SPI2 上否則這些 IO 口還是默認的狀態,也就是標準輸入輸出口。這裏我們使用的是 PB13、 14、 15 這 3 個(SCK.、 MISO、MOSI, CS 使用軟件管理式),所以設置這三個爲複用功能 IO。
2)設置 SPI2 工作模式。
這一步全部是通過 SPI2_CR1 來設置,我們設置 SPI2 爲主機模式,設置數據格式爲 8 位,然後通過 CPOL 和 CPHA 位來設置 SCK 時鐘極性及採樣方式。並設置 SPI2 的時鐘頻率(最大18Mhz),以及數據的格式(MSB 在前還是 LSB 在前)。
3)使能 SPI2。
這一步通過 SPI2_CR1 的 bit6 來設置,以啓動 SPI2,在啓動之後,我們就可以開始 SPI 通訊了。
SPI2 的使用就介紹到這裏,接下來介紹一下 W25Q128。 W25Q128 是華邦公司推出的大容量 SPI FLASH 產品, W25Q128 的容量爲 128Mb, 該系列還有 W25Q80/16/32/64 等。 ALIENTEK所選擇的 W25Q128 容量爲 128Mb,也就是 16M 字節。
W25Q128 將 16M 的容量分爲 256 個塊(Block),每個塊大小爲 64K 字節,每個塊又分爲16 個扇區(Sector),每個扇區 4K 個字節。 W25Q128 的最小擦除單位爲一個扇區,也就是每次必須擦除 4K 個字節。這樣我們需要給 W25Q128 開闢一個至少 4K 的緩存區,這樣對 SRAM 要求比較高,要求芯片必須有 4K 以上 SRAM 才能很好的操作。
W25Q128 的擦寫週期多達 10W 次,具有 20 年的數據保存期限,支持電壓爲 2.7~3.6V,W25Q128 支持標準的 SPI,還支持雙輸出/四輸出的 SPI,最大 SPI 時鐘可以到 80Mhz(雙輸出時相當於 160Mhz,四輸出時相當於 320M),更多的 W25Q128 的介紹,請參考 W25Q128 的DATASHEET。

二:硬件連接

本章實驗功能簡介:開機的時候先檢測 W25Q128 是否存在,然後在主循環裏面檢測兩個按鍵,其中 1 個按鍵(KEY1) 用來執行寫入 W25Q128 的操作,另外一個按鍵(KEY0) 用來執行讀出操作,在 TFTLCD 模塊上顯示相關信息。同時用 DS0 提示程序正在運行。
所要用到的硬件資源如下:
1) 指示燈 DS0
2) KEY0 和 KEY1 按鍵
3) TFTLCD 模塊
4) SPI
5) W25Q128
板上的 W25Q128 是直接連在 STM32F1 的 SPI2上的,連接關係如圖 28.2.1 所示:
在這裏插入圖片描述
這裏,我們的 F_CS 是連接在 PB12 上面的,另外要特別注意: W25Q128 和 NRF24L01 共用 SPI2,所以這兩個器件在使用的時候,必須分時複用(通過片選控制)纔行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章