關於低功耗模組的SPI示例詳細教程!

电子老师傅發表於2024-11-23

本文說的是低功耗模組的SPI示例詳細教程,以低功耗4G模組Air724UG為例我將詳細分析。

一、簡介

SPI 是序列外設介面(Serial Peripheral Interface)的縮寫。

SPI,是一種高速的,全雙工,同步的通訊匯流排,並且在晶片的管腳上只佔用四根線,SDI(資料輸入),SDO(資料輸出),SCLK(時鐘),CS(片選),就可以完成一個主裝置和一個或多個從裝置之間的通訊,事實上 3 根也可以(單向傳輸時)。在嵌入式系統中,主要應用於 EEPROM、FLASH、實時時鐘、AD轉換器、數字訊號處理器和數字訊號解碼器之間的通訊,在全雙工模式下,傳輸速率可達上Mbps的水平。

Air724模組對外提供的硬體SPI介面數量有兩路,即 SPI1、SPI2,其他SPI通道以複用封裝作為 LCD 或 MMC 功能管腳使用。

二、演示功能概述

本教程教你如何使用開發板的SPI匯流排讀寫 FLASH。

三、準備硬體環境

3.1 開發板準備

使用 EVB_Air724 開發板,如下圖所示:

此開發板的詳細使用說明參考:
https://docs.openluat.com/air724ug/product/

Air724UG 產品手冊 中的《EVB_Air724UG_AXX 開發板使用說明》,寫這篇文章時最新版本的使用說明為:《EVB_Air724UG_A14 開發板使用說明》;開發板使用過程中遇到任何問題,可以直接參考這份使用說明文件。

api文件:
https://doc.openluat.com/wiki/21?wiki_page_id=2068

3.2 資料通訊線

USB 資料線一根(micro USB)。

3.3 PC 電腦

WIN7 以及以上版本的 WINDOWS 系統。

3.4 SPI FLASH 模組

25Q64JVSIQ 注意電平是 3.3V

3.5 電平轉換模組

雙向電平轉換模組(3.3V、1.8V)

3.6 組裝硬體環境

USB資料線插入 USB 口,另一端與電腦相連,撥碼開關全部撥到 ON,串列埠切換開關選擇 UART1,USB 供電的 4V 對應開關撥至 ON 檔,SIM 卡放到 SIM 卡槽中鎖緊,如下圖所示。

由於 SPI FLASH 模組只支援 3.3v 電平,開發板 SPI 介面只支援 1.8V 電平,所以 SPI FLASH 模組和開發板之間需要用電平轉換模組將相互的 IO 電平轉換,具體連線圖如下圖所示。

開發板與電平轉換模組連線:

SPI FLASH 與電平轉換模組連線:

四、準備軟體環境

4.1 下載除錯工具

使用說明參考:
Luatools下載和詳細使用
https://docs.openluat.com/Luatools/

4.2 原始碼及韌體

4.2.1 底層 core 下載

下載底層韌體,並解壓

連結:
https://docs.openluat.com/air724ug/luatos/firmware/

如下圖所示,紅框的是我們要使用到的

4.2.2 本教程使用的 demo 見附件:

https://gitee.com/openLuat/LuatOS-Air724UG/tree/master/script_LuaTask/demo/spiFlash

4.3 下載韌體和指令碼到開發板中

開啟 Luatools,開發板上電開機,如開機成功 Luatools 會列印如下資訊。

點選專案管理測試選項。

進入管理介面,如下圖所示。

點選選擇檔案,選擇底層韌體,我的檔案放在 D:\luatOS\Air724 路徑中

點選增加指令碼或資原始檔,選擇之前下載的程式原始碼,如下圖所示。

點選下載底層和指令碼,下載完成如下圖所示。

五、程式碼示例介紹

5.1 API 說明

5.1.1 spi 開啟介面

spi.setup(id,chpa,cpol,dataBits,clock,duplex)

(點開放大)

返回值

5.1.2 spi 寫資料

spi.send(id,data[,cscontrol])

(點開放大)

返回值

5.1.3 讀資料

spi.recv(id,length[,cscontrol])

(點開放大)

返回值

5.1.4 讀寫資料

spi.send_recv(id,data[,cscontrol])

返回值

5.1.5 關閉 SPI

spi.close(id)

返回值

5.2 test_SPIFlash.lua 程式碼

test_SPIFlash 程式流程。

5.3 main.lua 程式碼

本程式碼為主程式指令碼,系統啟動後首先會對 4G 網路進行配置,然後載入 test_SPIFlash 測試模組。

5.4 spiFlash.lua

spiFlash.lua 為 W25Q32/BH25Q32 驅動程式碼。

六、開機除錯

6.1 開發板開機

連線好硬體並下載韌體後,啟動 Luatools 軟體,系統執行資訊將顯示在介面中。紅框中為開發板連線到 PC 機後正常列印的資訊,如下圖所示。

6.2 SPI FLASH 除錯

讀出 SPI FLASH ID, 並顯示 SPI FLASH 的型號,並且讀寫測試。

七、常見問題

7.1 為什麼 SPI 通訊中會出現一些亂碼或資料丟失

答:SPI 通訊的介面電平不匹配。可用示波器觀測 SPI 介面在通訊過程中的電平狀態和電平質量,確認使用者所使用的通訊裝置中介面電平是否與 Air724 模組 SPI1 介面電平一致,Air724 開發板上的 Air724 模組的 SPI1 介面電平均為 1.8V,如不匹配,請確保一致。不能過高或過低,過低有可能會導致電平電壓不能被識別,過高有可能會損壞 SPI 通訊介面,另外,建議使用一些高速器件作為電平轉換器件,可提高介面電平的訊號質量。

7.2 標準 spi 可以驅動的目標晶片電壓是多少?

1.8V,這個電壓是寫死的,無法設定,如果目標晶片工作電壓不在此範圍內需要用電平轉換晶片。

分享完畢。

相關文章