1、功能描述
EM9170提供了一路硬件4線制SPI接口供用戶使用,它的4條信號(hào)線與系統(tǒng)的GPIO復(fù)用,系統(tǒng)上電后,對(duì)應(yīng)管腳默認(rèn)為GPIO狀態(tài)(詳見(jiàn)《EM9170工控主板數(shù)據(jù)手冊(cè) 》),當(dāng)在應(yīng)用程序中打開(kāi)SPI接口后,對(duì)應(yīng)的信號(hào)線將自動(dòng)切換到SPI狀態(tài)。EM9170 SPI接口支持以下特性:
· 4線制全雙工同步串行接口
· 主控(Master)工作模式
· 可以配置SPI時(shí)鐘信號(hào)(SPI_SCLK)的相位和極性
· 支持1至32-bit可配置的數(shù)據(jù)通訊位寬
· 支持DMA操作方式
· 最高波特率16Mbps
SPI通訊的時(shí)序簡(jiǎn)單,主要是在SPI時(shí)鐘(SCLK)的同步下,在兩個(gè)設(shè)備的移位寄存器間進(jìn)行數(shù)據(jù)通訊。EM9170的SPI接口可以配置SCLK的極性(POL)和相位(PHA),圖1為設(shè)置不同的相位和極性配置時(shí),時(shí)鐘信號(hào)的輸出波形。
圖1:SPI總線SCLK和MOSI,MISO之間的關(guān)系
圖1中的時(shí)鐘極性(POL)決定了SPI串行時(shí)鐘信號(hào)線(SCLK)空閑時(shí)的電平,如果POL=0,串行時(shí)鐘空閑時(shí)為低電平,POL=1串行時(shí)鐘空閑時(shí)為高電平。時(shí)鐘相位(PHA) 用來(lái)決定數(shù)據(jù)在什么時(shí)刻輸出和鎖存輸入。如果 PHA=0,SPI控制器在SCLK的下降沿輸出數(shù)據(jù),在SCLK上升沿鎖存輸入的數(shù)據(jù)。當(dāng)PHA=1時(shí),將在SCLK上升沿輸出數(shù)據(jù),而在SCLK下降沿鎖存輸入數(shù)據(jù)。SPI線上的主從設(shè)備必須根據(jù)具體情況設(shè)置匹配的傳輸時(shí)序模式,時(shí)序只有匹配,數(shù)據(jù)才能正常通訊。
2、操作說(shuō)明
2.1 打開(kāi)SPI端口
通過(guò)調(diào)用CreateFile( )函數(shù)來(lái)打開(kāi)系統(tǒng)的SPI設(shè)備,設(shè)備名稱為“SPI1:”如下所示:
// Open the SPI port.
hSPI = CreateFile (TEXT”SPI1:”, // name of device
GENERIC_READ | GENERIC_WRITE, // access (read-write) mode
FILE_SHARE_READ | FILE_SHARE_WRITE, // sharing mode
NULL, // security attributes (ignored)
OPEN_EXISTING, // creation disposition
FILE_FLAG_RANDOM_ACCESS, // flags/attributes
NULL); // template file (ignored)
2.2 數(shù)據(jù)通訊
在進(jìn)行SPI數(shù)據(jù)通訊前,需要調(diào)用SPIConfig()函數(shù)對(duì)SPI總線做相應(yīng)的配置,函數(shù)申明如下:
BOOL SPIConfig( HANDLE hCSPI, PCSPI_BUSCONFIG_T pCspiConfig );
其中參數(shù)pCspiConfig為SPI總線配置結(jié)構(gòu)體,其定義如下:
typedef struct
{ // CSPI bus configuration
UINT32 freq; // SPI波特率:<=16Mbps
UINT8 bitcount; // 數(shù)據(jù)位寬:1~32bit
BOOL pol; // 設(shè)置時(shí)鐘極性
BOOL pha; // 設(shè)置時(shí)鐘相位
} CSPI_BUSCONFIG_T, *PCSPI_BUSCONFIG_T;
用戶調(diào)用SPIExchange()函數(shù)來(lái)完成一次數(shù)據(jù)收發(fā),函數(shù)申明如下:
BOOL SPIExchange(
HANDLE hCSPI, // 由CreateFile創(chuàng)建的HANDLE
PVOID pTxBuf, // 發(fā)送數(shù)據(jù)緩存
PVOID pRxBuf, // 接收數(shù)據(jù)緩存
UINT32 xchCnt ); // 傳輸?shù)臄?shù)據(jù)個(gè)數(shù)
需要注意的是,參數(shù)pTxBuf和pRxBuf是LPVOID型指針變量,當(dāng)設(shè)置SPI通訊位寬(CSPI_BUSCONFIG_T的bitcount成員)為1~8時(shí),數(shù)據(jù)收發(fā)緩存(pTxBuf和pRxBuf)需要定義為UNIT8數(shù)據(jù)類型,當(dāng)SPI通訊位寬為9~16時(shí),數(shù)據(jù)收發(fā)緩存需要定義為UINT16類型,當(dāng)SPI通訊位數(shù)為17~32時(shí),數(shù)據(jù)收發(fā)緩存要定義成UINT32數(shù)據(jù)類型。
下面是示例程序片斷:
HANDLE hSPI; // 定義SPI操作HANDLE
DWORD dwXchCnt; // 定義傳輸字節(jié)個(gè)數(shù)
CSPI_BUSCONFIG_T spiConfig; // 定義SPI總線配置數(shù)據(jù)結(jié)構(gòu)體
spiConfig.bitcount = 8; // bit count=8
spiConfig.freq = 16000000; // XCH speed = 16M
spiConfig.pha = FALSE; // Phase 0 operation
spiConfig.pol = FALSE; // Active high operation
// if 1<=cspiConfig.bitcount<=8 收發(fā)緩存需要定義為UINT8類型
UINT8 TxData[1024] = { 0x01, 0x02, 0x03, 0x04, 0x05 };
UINT8 RxData[1024];
// if 9<=cspiConfig.bitcount<=16 收發(fā)緩存需要定義為UINT16類型
// UINT16 TxData[1024] = { 0x01, 0x02, 0x03, 0x04, 0x05 };
// UINT16 RxData[1024];
// if 17<=cspiConfig.bitcount<=32 收發(fā)緩存需要定義為UINT32類型
// UINT32 TxData[1024] = { 0x01, 0x02, 0x03, 0x04, 0x05 };
// UINT32 RxData[1024];
// 打開(kāi)SPI總線 (SPIOpen( )內(nèi)部調(diào)用了CreateFile()函數(shù))
hSPI = SPIOpen( TEXT(“SPI1:”) );
SPIConfig( hSPI, &spiConfig ); // 設(shè)置SPI總線配置信息
dwXchCnt = 5; // 傳輸5個(gè)數(shù)據(jù)
SPIExchange( hSPI, TxData, RxData, dwXchCnt ); // 進(jìn)行SPI數(shù)據(jù)傳輸,傳輸5個(gè)數(shù)據(jù)
2.3 關(guān)閉SPI
調(diào)用CloseHandle函數(shù)關(guān)閉由CreateFile創(chuàng)建的HANDLE即可關(guān)閉SPI端口。
CloseHandle( hSPI);
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6095瀏覽量
36089
發(fā)布評(píng)論請(qǐng)先 登錄
龍芯中科榮獲2024年度信息技術(shù)應(yīng)用創(chuàng)新工作委員會(huì)卓越貢獻(xiàn)成員單位
芯盛智能榮獲2024年信息技術(shù)應(yīng)用創(chuàng)新工作委員會(huì)卓越貢獻(xiàn)成員單位
中科曙光南京研究院方案入選江蘇省信息技術(shù)創(chuàng)新優(yōu)秀解決方案
飛騰助力首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽圓滿落幕
有方科技參編的信息技術(shù)團(tuán)體標(biāo)準(zhǔn)發(fā)布
龍芯中科助力2024首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽成功舉辦
TMS320C672x DSP串行外設(shè)接口(SPI)參考指南

Jacinto7 EVM信息娛樂(lè)擴(kuò)展用戶指南

USB接口適配器評(píng)估模塊用戶指南

中科創(chuàng)達(dá)榮獲2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)
信創(chuàng)國(guó)產(chǎn)化背景下的工控主板發(fā)展現(xiàn)狀
EM430F6137RF900參考設(shè)計(jì)指南

梯度科技入選2023年信息技術(shù)應(yīng)用創(chuàng)新解決方案名單
【GD32F470紫藤派開(kāi)發(fā)板使用手冊(cè)】第十一講 SPI-SPI NOR FLASH讀寫實(shí)驗(yàn)

評(píng)論