今天我會把我了解的關于如何使用SPI讀寫外部Flash教給大家,本文將通過Air201+擴展板讀寫外部flash的演示,教你使用SPI示例,可根據(jù)實際需求靈活應用。
我們先了解一些相關基礎知識:
SPI(Serial Peripheral Interface)——是一種同步串行通信協(xié)議,廣泛應用于微控制器和外圍設備之間的數(shù)據(jù)傳輸。它由摩托羅拉公司開發(fā),具有全雙工通信能力,即可以同時進行數(shù)據(jù)的發(fā)送和接收。
SPI通信通常涉及四條信號線:
MOSI(Master Out Slave In):
主設備發(fā)送數(shù)據(jù),外設接收數(shù)據(jù)。
MISO(Master In Slave Out):
外設發(fā)送數(shù)據(jù),主設備接收數(shù)據(jù)。
SCLK(Serial Clock):
由主設備生成的時鐘信號,用于同步數(shù)據(jù)傳輸。
CS/SS(Chip/Slave Select):
選擇特定的從設備進行通信。
SPI的優(yōu)點包括簡單的硬件連接、高速數(shù)據(jù)傳輸和全雙工通信。其缺點是通常需要更多的引腳,尤其是在多個從設備的情況下,每個從設備需要一個獨立的CS引腳。此外,SPI沒有標準化的協(xié)議層,因此設備間的兼容性需要仔細管理。
接下來,我們講解SPI示例的具體使用。
1. 搭建環(huán)境
新朋友建議先看前期的基礎知識相關教程,更有助于理解和操作。
可以在LuaTools項目管理中新建一個項目,重新選擇底層CORE和腳本;或者在原有項目的基礎上,不更換CORE,將原來的腳本刪除,添加為demo/spi的腳本。
1.1 硬件準備:
Air201 PCBA
Air201-BTB擴展板(帶一個FPC線)
SIM卡
帶有數(shù)據(jù)通信功能的數(shù)據(jù)線
Win10及以上PC
Flash模塊:本文使用W25Q系列SPI Flash。
Air201通過FPC線連接BTB擴展板,BTB擴展板再連接FLASH模塊。
SPI管腳定義詳見:
https://docs.openluat.com/air201/luatos/hardware/design/btb/#spi
完整接線如下所示:
1.2 軟件準備:
LuaTools調試工具:
https://docs.openluat.com/Luatools
API接口說明:
https://docs.openluat.com/air201/luatos/api/core/spi
最新固件:
https://gitee.com/openLuat/LuatOS-Air201/tree/master/core
最新腳本:
https://gitee.com/openLuat/LuatOS-Air201/tree/master/demo/spi
2. 示例代碼介紹
使用克隆的代碼進行測試,代碼路徑:
LuatOS-Air201demospi
程序流程如下圖所示:
2.1 初始化配置
SPI使用的是SPI0,CS使用的GPIO8,在初始化階段,通常會將CS(GPIO8)拉高,表示當前沒有選中任何從設備。
2.2 向FLASH寫入數(shù)據(jù)
查看W25QX系列FLASH模塊數(shù)據(jù)手冊的命令集,先寫使能命令0x06,再寫頁數(shù)據(jù)到地址0x000001。
2.3 從FLASH讀取數(shù)據(jù)
查看W25QX系列FLASH模塊數(shù)據(jù)手冊的命令集,使用0x03命令,讀取0x000001地址的數(shù)據(jù),完成操作后關閉SPI。
2.4 完整例程展示
3. 代碼燒錄
新朋友可以查看參考詳細燒錄教程:
https://docs.openluat.com/Luatools/
固件版本不變的情況下,直接選擇下載腳本即可。
4. 展示效果
至此我們已經(jīng)使用Air201的SPI接口,成功完成了對W25Q64 Flash存儲器的讀寫操作。
分享完畢。
-
FlaSh
+關注
關注
10文章
1633瀏覽量
147939 -
SPI
+關注
關注
17文章
1706瀏覽量
91501 -
模組
+關注
關注
6文章
1487瀏覽量
30360 -
LuatOS
+關注
關注
0文章
76瀏覽量
1936
發(fā)布評論請先 登錄
相關推薦
評論