今天咋們要講的是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:luatOSAir724 路徑中

點擊增加腳本或資源文件,選擇之前下載的程序源碼,如下圖所示。

點擊下載底層和腳本,下載完成如下圖所示。

五、代碼示例介紹
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])
| 參數 | 類型 | 釋義 | 取值 |
| id | number | SPI 的 ID spi.SPI_1 表示 SPI1,Air720U 系列只有 SPI1 作為普通 SPI 接口使用,固定傳 spi.SPI_1 即可通道選擇 | 0:普通 spi 1:lcdspi |
|
data |
string | 要發送的數據 | |
| cscontrol | number | cs 是否自動控制,可選參數默認 0,1 代表 CS 隨數據自動變化,0 代表 cs 先拉低數據結束再恢復 | 0/1 |
返回值

5.1.5 關閉 SPI
spi.close(id)
| 參數 | 類型 | 釋義 | 取值 |
| id | number | SPI 的 ID,spi.SPI_1 表示 SPI1,Air720U 系列只有 SPI1 作為普通 SPI 接口使用,固定傳 spi.SPI_1 即可 | 0:普通 spi 1:lcdspi 復用為普通 spi |
返回值

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,這個電壓是寫死的,無法設置,如果目標芯片工作電壓不在此范圍內需要用電平轉換芯片。
分享完畢
審核編輯 黃宇
-
嵌入式
+關注
關注
5198文章
20442瀏覽量
333983 -
物聯網
+關注
關注
2945文章
47818瀏覽量
414831 -
SPI
+關注
關注
17文章
1885瀏覽量
101221
發布評論請先 登錄
GD01C 4G路由模組:串口轉4G/WiFi/網口通信
戶外4G模組優選高穩時鐘NDK NT2016SB TCXO
新品上市:用微信小程序就能遠程控制的遙控開關+本地雙控的4G模塊,來了!
物流車4G車載監控系統的核心功能與應用場景解析
廣電計量成功自研4G IOT衛星通信集成測試系統
CE31-TD系列4G遙控開關模組核心板方案推薦
SkyOne? 汽車多模多頻段前端模塊,用于 4G LTE 和 4G LTE-A(下行鏈路載波聚合 (CA) 應用) skyworksinc
4G全網通網關是什么?有什么功能?
4G DTU 無線數傳模塊:RS232/485轉4G,穩定不宕機
大公開!用Air780EPM重構水質COD監測,替代STM32+4G模組的技術路徑
基于EPCM3568B-LI的無線模塊應用 — 4G篇
4G DTU未來發展趨勢與展望
雷卯收集4G/WIFI無線傳輸產品開發板
SPI與4G模組的集成:技術要領篇
評論