本次我要分享的是4G模組SPI的技術(shù)指南,以合宙Air724UG為例,學(xué)完本章幫你實現(xiàn)技術(shù)提升。
一、簡介
SPI 是串行外設(shè)接口(Serial Peripheral Interface)的縮寫。
SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,SDI(數(shù)據(jù)輸入),SDO(數(shù)據(jù)輸出),SCLK(時鐘),CS(片選),就可以完成一個主設(shè)備和一個或多個從設(shè)備之間的通信,事實上 3 根也可以(單向傳輸時)。在嵌入式系統(tǒng)中,主要應(yīng)用于 EEPROM、FLASH、實時時鐘、AD轉(zhuǎn)換器、數(shù)字信號處理器和數(shù)字信號解碼器之間的通信,在全雙工模式下,傳輸速率可達(dá)上Mbps的水平。
Air724模塊對外提供的硬件SPI接口數(shù)量有兩路,即 SPI1、SPI2,其他SPI通道以復(fù)用封裝作為 LCD 或 MMC 功能管腳使用。
二、演示功能概述
本教程教你如何使用開發(fā)板的SPI總線讀寫 FLASH。
三、準(zhǔn)備硬件環(huán)境
3.1 開發(fā)板準(zhǔn)備
使用 EVB_Air724 開發(fā)板,如下圖所示:
此開發(fā)板的詳細(xì)使用說明參考:
https://docs.openluat.com/air724ug/product/
Air724UG 產(chǎn)品手冊中的《EVB_Air724UG_AXX 開發(fā)板使用說明》,寫這篇文章時最新版本的使用說明為:《EVB_Air724UG_A14 開發(fā)板使用說明》;開發(fā)板使用過程中遇到任何問題,可以直接參考這份使用說明文檔。
api文檔:
https://doc.openluat.com/wiki/21?wiki_page_id=2068
3.2 數(shù)據(jù)通信線
USB 數(shù)據(jù)線一根(micro USB)。
3.3 PC 電腦
WIN7 以及以上版本的 WINDOWS 系統(tǒng)。
3.4 SPI FLASH 模塊
25Q64JVSIQ 注意電平是 3.3V
3.5 電平轉(zhuǎn)換模塊
雙向電平轉(zhuǎn)換模塊(3.3V、1.8V)
3.6 組裝硬件環(huán)境
USB數(shù)據(jù)線插入 USB 口,另一端與電腦相連,撥碼開關(guān)全部撥到 ON,串口切換開關(guān)選擇 UART1,USB 供電的 4V 對應(yīng)開關(guān)撥至 ON 檔,SIM 卡放到 SIM 卡槽中鎖緊,如下圖所示。
由于 SPI FLASH 模塊只支持 3.3v 電平,開發(fā)板 SPI 接口只支持 1.8V 電平,所以 SPI FLASH 模塊和開發(fā)板之間需要用電平轉(zhuǎn)換模塊將相互的 IO 電平轉(zhuǎn)換,具體連接圖如下圖所示。
開發(fā)板與電平轉(zhuǎn)換模塊連接:
SPI FLASH 與電平轉(zhuǎn)換模塊連接:
四、準(zhǔn)備軟件環(huán)境
4.1 下載調(diào)試工具
使用說明參考:
Luatools下載和詳細(xì)使用
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 下載固件和腳本到開發(fā)板中
打開 Luatools,開發(fā)板上電開機(jī),如開機(jī)成功 Luatools 會打印如下信息。
點(diǎn)擊項目管理測試選項。
進(jìn)入管理界面,如下圖所示。
點(diǎn)擊選擇文件,選擇底層固件,我的文件放在 D:luatOSAir724 路徑中
點(diǎn)擊增加腳本或資源文件,選擇之前下載的程序源碼,如下圖所示。
點(diǎn)擊下載底層和腳本,下載完成如下圖所示。
五、代碼示例介紹
5.1 API 說明
5.1.1 spi 開啟接口
spi.setup(id,chpa,cpol,dataBits,clock,duplex)
(點(diǎn)開放大)
返回值
5.1.2 spi 寫數(shù)據(jù)
spi.send(id,data[,cscontrol])
(點(diǎn)開放大)
返回值
5.1.3 讀數(shù)據(jù)
spi.recv(id,length[,cscontrol])
(點(diǎn)開放大)
返回值
5.1.4 讀寫數(shù)據(jù)
spi.send_recv(id,data[,cscontrol])
參數(shù) | 類型 | 釋義 | 取值 |
id | number | SPI 的 ID spi.SPI_1 表示 SPI1,Air720U 系列只有 SPI1 作為普通 SPI 接口使用,固定傳 spi.SPI_1 即可通道選擇 | 0:普通 spi 1:lcdspi |
data |
string | 要發(fā)送的數(shù)據(jù) | |
cscontrol | number | cs 是否自動控制,可選參數(shù)默認(rèn) 0,1 代表 CS 隨數(shù)據(jù)自動變化,0 代表 cs 先拉低數(shù)據(jù)結(jié)束再恢復(fù) | 0/1 |
返回值
5.1.5 關(guān)閉 SPI
spi.close(id)
參數(shù) | 類型 | 釋義 | 取值 |
id | number | SPI 的 ID,spi.SPI_1 表示 SPI1,Air720U 系列只有 SPI1 作為普通 SPI 接口使用,固定傳 spi.SPI_1 即可 | 0:普通 spi 1:lcdspi 復(fù)用為普通 spi |
返回值
5.2 test_SPIFlash.lua 代碼
test_SPIFlash 程序流程。
5.3 main.lua 代碼
本代碼為主程序腳本,系統(tǒng)啟動后首先會對 4G 網(wǎng)絡(luò)進(jìn)行配置,然后加載 test_SPIFlash 測試模塊。
5.4 spiFlash.lua
spiFlash.lua 為 W25Q32/BH25Q32 驅(qū)動代碼。
六、開機(jī)調(diào)試
6.1 開發(fā)板開機(jī)
連接好硬件并下載固件后,啟動 Luatools 軟件,系統(tǒng)運(yùn)行信息將顯示在界面中。紅框中為開發(fā)板連接到 PC 機(jī)后正常打印的信息,如下圖所示。
6.2 SPI FLASH 調(diào)試
讀出 SPI FLASH ID, 并顯示 SPI FLASH 的型號,并且讀寫測試。
七、常見問題
7.1 為什么 SPI 通信中會出現(xiàn)一些亂碼或數(shù)據(jù)丟失
答:SPI 通信的接口電平不匹配??捎?a href="http://wenjunhu.com/v/tag/577/" target="_blank">示波器觀測 SPI 接口在通信過程中的電平狀態(tài)和電平質(zhì)量,確認(rèn)用戶所使用的通信設(shè)備中接口電平是否與 Air724 模塊 SPI1 接口電平一致,Air724 開發(fā)板上的 Air724 模塊的 SPI1 接口電平均為 1.8V,如不匹配,請確保一致。不能過高或過低,過低有可能會導(dǎo)致電平電壓不能被識別,過高有可能會損壞 SPI 通信接口,另外,建議使用一些高速器件作為電平轉(zhuǎn)換器件,可提高接口電平的信號質(zhì)量。
7.2 標(biāo)準(zhǔn) spi 可以驅(qū)動的目標(biāo)芯片電壓是多少?
1.8V,這個電壓是寫死的,無法設(shè)置,如果目標(biāo)芯片工作電壓不在此范圍內(nèi)需要用電平轉(zhuǎn)換芯片。
分享完畢。
-
處理器
+關(guān)注
關(guān)注
68文章
19286瀏覽量
229811 -
芯片
+關(guān)注
關(guān)注
455文章
50812瀏覽量
423574 -
SPI
+關(guān)注
關(guān)注
17文章
1706瀏覽量
91578 -
模組
+關(guān)注
關(guān)注
6文章
1492瀏覽量
30383
發(fā)布評論請先 登錄
相關(guān)推薦
評論