本次我要分享的是4G模組SPI的技術指南,以合宙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,這個電壓是寫死的,無法設置,如果目標芯片工作電壓不在此范圍內需要用電平轉換芯片。
分享完畢。
-
處理器
+關注
關注
68文章
19286瀏覽量
229817 -
芯片
+關注
關注
455文章
50812瀏覽量
423582 -
SPI
+關注
關注
17文章
1706瀏覽量
91578 -
模組
+關注
關注
6文章
1492瀏覽量
30384
發布評論請先 登錄
相關推薦
評論