0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)工控主板EM9160介紹

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-01-14 11:16 ? 次閱讀

在基于工控主板EM9160的嵌入式應(yīng)用中,經(jīng)常需要與具有SPI接口芯片或電路單元,進(jìn)行數(shù)據(jù)通訊。通常情況下,我們建議采用基于GPIO的SPI通訊協(xié)議實(shí)現(xiàn)方案,其優(yōu)點(diǎn)是靈活性,客戶可使用任意的GPIO管腳來實(shí)現(xiàn)SPI通訊,有關(guān)這方面的技術(shù)方案的實(shí)現(xiàn),可參考英創(chuàng)網(wǎng)站的《使用GPIO控制SPI接口的AD芯片》一文。在SPI通訊中,還有一類應(yīng)用需要進(jìn)行大數(shù)據(jù)量的傳輸,且要求盡可能高的波特率,這時(shí)若采用基于GPIO的方案,就可能造成占用過多的CPU資源。因此需要使用EM9160的硬件SPI接口。
EM9160的硬件SPI接口為4線制SPI,其管腳與GPIO12–GPIO15復(fù)用:

GPIO管腳 SPI接口信號(hào) 簡(jiǎn)要說明
GPIO12 SPI_DIN 串行數(shù)據(jù)輸入
GPIO13 SPI_DOUT 串行數(shù)據(jù)輸出
GPIO14 SPI_CLK 串行數(shù)據(jù)同步時(shí)鐘輸出
GPIO15 SPI_CS# 片選控制輸出,低電平有效

為了操作硬件SPI接口,應(yīng)用程序需要打開“SPI1:”的設(shè)備文件:
HANDLEhDevice;
hDevice = CreateFile( _T('SPI1:'),
GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, NULL);
if (hDevice == INVALID_HANDLE_VALUE)
{
return -1;
}
獲得有效的文件句柄后,就可通過DeviceIoControl(…)函數(shù)來操作SPI接口了。在EM9160的SDK中已封裝了相應(yīng)的API函數(shù),以方便應(yīng)用程序的使用。相關(guān)的數(shù)據(jù)結(jié)構(gòu)和函數(shù)定義,包括在“SPI_API.h”中:
// 定義SPI通訊參數(shù)結(jié)構(gòu)
typedef struct
{
DWORD dwCLKPolarity; // SPI時(shí)鐘極性:=0 或者 =1
DWORD dwCLKPhase; // SPI時(shí)鐘相位:=0 或者 =1
DWORD dwDataBitSize; // SPI通訊數(shù)據(jù)幀的位數(shù):8bit-16bit
DWORD dwBaudRate; // SPI通訊波特率:最高波特率為10Mbps
} SPISTATE;
盡管EM9160的硬件波特率可以高達(dá)100Mbps,但為了保證可靠傳輸,建議應(yīng)用程序把波特率控制在10Mbps以下。SPI時(shí)鐘極性dwCLKPolarity,在數(shù)據(jù)手冊(cè)中通常記為CPOL,= 0表示在沒有數(shù)據(jù)傳輸時(shí)為低電平,= 1表示沒有數(shù)據(jù)傳輸時(shí)為高電平。SPI時(shí)鐘相位dwCLKPhase,在數(shù)據(jù)手冊(cè)中通常記為CPHA,= 0表示時(shí)鐘的第一個(gè)沿更新數(shù)據(jù)、第二個(gè)沿鎖存數(shù)據(jù),= 1表示時(shí)鐘的第一個(gè)沿鎖存數(shù)據(jù)、第二個(gè)沿更新數(shù)據(jù)。下面的事宜圖,以8-bit數(shù)據(jù)為例:
CPHA = 0的SPI時(shí)序


CPHA = 1的SPI時(shí)序


SPI通訊參數(shù)設(shè)置,通過以下兩個(gè)函數(shù)實(shí)現(xiàn):
// 功能描述:設(shè)置SPI通訊參數(shù)。
// 輸入?yún)?shù) HANDLE hDevice: 運(yùn)行CreateFile( _T('SPI1:'),....)函數(shù)返回的有效句柄
// SPISTATE *pSPIState: SPI通訊參數(shù)
// 返回值 = TRUE: SPI通訊參數(shù)成功。
// = FALSE: SPI通訊參數(shù)失敗。
BOOL SetSPIState( HANDLE hDevice, SPISTATE *pSPIState );

// 功能描述:獲取SPI通訊參數(shù)。
// 輸入?yún)?shù) HANDLE hDevice: 運(yùn)行CreateFile( _T('SPI1:'),....)函數(shù)返回的有效句柄
// 輸出 SPISTATE *pSPIState: 獲取的SPI通訊參數(shù)
// 返回值 = TRUE: SPI通訊參數(shù)成功。
// = FALSE: SPI通訊參數(shù)失敗。
BOOL GetSPIState( HANDLE hDevice, SPISTATE *pSPIState );
在調(diào)用上述函數(shù)時(shí),注意指針pSPIState需要初始化分配空間。在設(shè)置好SPI參數(shù)后,就可調(diào)用下面的函數(shù)進(jìn)行具體的數(shù)據(jù)通訊了
// 功能描述:全雙工收發(fā)SPI數(shù)據(jù)
// 輸入?yún)?shù):
// HANDLE hDevice: 運(yùn)行CreateFile( _T('SPI1:'),....)函數(shù)返回的有效句柄
// DWORD DatLength: 需收發(fā)的數(shù)據(jù)樣點(diǎn)長(zhǎng)度, (DatLength * 字節(jié)數(shù)/樣點(diǎn)) < 1024。
// PVOID pTxBuf: 需發(fā)送的數(shù)據(jù)BUFFER,注意一個(gè)數(shù)據(jù)樣點(diǎn)可能占用2個(gè)字節(jié)。
// PVOID pRxBuf: 需接收的數(shù)據(jù)BUFFER,注意一個(gè)數(shù)據(jù)樣點(diǎn)可能占用2個(gè)字節(jié)。
// 返回值 = TRUE: SPI數(shù)據(jù)通訊成功。
// = FALSE: SPI數(shù)據(jù)通訊失敗。
BOOL SPI_FullDuplex( HANDLE hDevice,
PVOID pTxBuf,
PVOID pRxBuf,
DWORD DatLength );
在調(diào)用上述SPI函數(shù),需要注意以下事宜:
1、SPI設(shè)備驅(qū)動(dòng)程序的內(nèi)部buffer缺省設(shè)置為1K字節(jié),因此每次通訊的字節(jié)數(shù)不能超過1K字節(jié),對(duì)大于8-bit的數(shù)據(jù),每個(gè)數(shù)據(jù)均按2個(gè)字節(jié)計(jì)算。
2、對(duì)8-bit的SPI傳輸,收發(fā)數(shù)據(jù)buffer的類型應(yīng)設(shè)置為UCHAR;而對(duì)9-bit – 16-bit的數(shù)據(jù)傳輸,其收發(fā)數(shù)據(jù)buffer的類型應(yīng)設(shè)置為WORD。
3、參數(shù)DatLength是以數(shù)據(jù)為單位計(jì)算的,所以若傳輸8-bit數(shù)據(jù),其最大值為1024,若傳輸8-bit以上數(shù)據(jù),其最大值為512。
4、對(duì)傳輸長(zhǎng)度超過SPI設(shè)備驅(qū)動(dòng)程序的內(nèi)部buffer長(zhǎng)度的應(yīng)用,可通過循環(huán)多次調(diào)用來實(shí)現(xiàn)數(shù)據(jù)通訊。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6081

    瀏覽量

    34939
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    工控主板在環(huán)保智能設(shè)備中的應(yīng)用

    工控主板在環(huán)保智能設(shè)備中的應(yīng)用,對(duì)于環(huán)境監(jiān)測(cè)、資源管理、污染控制等方面起到了至關(guān)重要的作用。以下是工控主板在環(huán)保智能設(shè)備中的一些具體應(yīng)用:
    的頭像 發(fā)表于 07-17 15:54 ?211次閱讀
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>在環(huán)保智能設(shè)備中的應(yīng)用

    淺析安卓工控主板的優(yōu)勢(shì)

    安卓工控主板作為專為工業(yè)控制領(lǐng)域設(shè)計(jì)的硬件平臺(tái),相較于普通商用主板,擁有諸多優(yōu)勢(shì),以滿足工業(yè)環(huán)境對(duì)穩(wěn)定、可靠、長(zhǎng)期運(yùn)行的嚴(yán)格要求。以下是安卓工控主板
    的頭像 發(fā)表于 06-27 14:50 ?214次閱讀

    使用工控主板時(shí)該注意哪些事項(xiàng)?

    最近大家都在頻繁問一個(gè)問題就是工控主板在什么人為情況下容易出現(xiàn)故障,從而造成工控主板的損壞,那今天小編就來講講,我們?cè)谑褂?b class='flag-5'>工控
    的頭像 發(fā)表于 06-05 16:01 ?255次閱讀
    使用<b class='flag-5'>工控</b><b class='flag-5'>主板</b>時(shí)該注意哪些事項(xiàng)?

    工控主板容易出現(xiàn)故障的原因有哪些?

    最近大家都在頻繁問一個(gè)問題就是工控主板在什么人為情況下容易出現(xiàn)故障,從而造成工控主板的損壞,那今天小編就來講講,我們?cè)谑褂?b class='flag-5'>工控
    的頭像 發(fā)表于 05-17 10:57 ?211次閱讀

    工控機(jī)主板和普通商用級(jí)主板有什么區(qū)別?

    工控機(jī)主板和普通商用級(jí)主板都屬于工業(yè)主板范疇,其與普通主板擁有本質(zhì)區(qū)別,下面就分析一下工控主板
    的頭像 發(fā)表于 05-13 15:07 ?370次閱讀

    工控主板的性能指標(biāo)有哪些?

    工控主板是工業(yè)控制領(lǐng)域中的關(guān)鍵組成部分,它承載著工控系統(tǒng)的核心功能。因此,工控主板的性能指標(biāo)是評(píng)估其質(zhì)量和性能的重要標(biāo)準(zhǔn)。本文將
    的頭像 發(fā)表于 05-10 16:27 ?722次閱讀
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>的性能指標(biāo)有哪些?

    工控主板和普通主板的區(qū)別有哪些

    工控主板和普通主板是兩種在計(jì)算機(jī)硬件領(lǐng)域中常見的主板類型,它們?cè)谠O(shè)計(jì)、功能和用途上有著明顯的區(qū)別。工控
    的頭像 發(fā)表于 04-25 16:54 ?784次閱讀
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>和普通<b class='flag-5'>主板</b>的區(qū)別有哪些

    誰說工控機(jī)必須得是大的? 一款小型工控機(jī)——IPC-3100!

    集特智能小型工控機(jī)IPC-3100介紹
    的頭像 發(fā)表于 04-17 14:34 ?303次閱讀
    誰說<b class='flag-5'>工控</b>機(jī)必須得是大的? 一款小型<b class='flag-5'>工控</b>機(jī)——IPC-3100!

    購買工控主板的三大誤區(qū)

    最近有很多人問我什么樣的工控主板算好的,有沒有一個(gè)統(tǒng)一的標(biāo)準(zhǔn)。工控主板作為整機(jī)的核心組成部分,在性能穩(wěn)定上有著至關(guān)重要的作用,那今天小編就來給大家講解一下在購買
    的頭像 發(fā)表于 04-16 16:40 ?225次閱讀

    電纜驅(qū)動(dòng)傳感器儀表PT420-0040-111-1110介紹

    電子發(fā)燒友網(wǎng)站提供《電纜驅(qū)動(dòng)傳感器儀表PT420-0040-111-1110介紹.pdf》資料免費(fèi)下載
    發(fā)表于 04-11 09:07 ?0次下載

    5V轉(zhuǎn)220V新一代無變壓器大功率升壓模塊XKT203-08介紹

    電子發(fā)燒友網(wǎng)站提供《5V轉(zhuǎn)220V新一代無變壓器大功率升壓模塊XKT203-08介紹.docx》資料免費(fèi)下載
    發(fā)表于 02-26 09:12 ?59次下載

    工控機(jī)主板與嵌入式主板的區(qū)別是什么?

    在計(jì)算機(jī)硬件中,主板是至關(guān)重要的組成部分,它連接并控制著所有的硬件設(shè)備。然而,根據(jù)其設(shè)計(jì)和使用場(chǎng)景的不同,主板可以被分為多種類型,選擇合適的主板對(duì)于不同的嵌入式系統(tǒng)應(yīng)用來說至關(guān)重要。那么工控機(jī)
    的頭像 發(fā)表于 11-16 10:29 ?1565次閱讀
    <b class='flag-5'>工控機(jī)主板</b>與嵌入式<b class='flag-5'>主板</b>的區(qū)別是什么?

    DC-DC平均電流雙路降壓恒流驅(qū)動(dòng)器AP2813介紹

    DC-DC平均電流雙路降壓恒流驅(qū)動(dòng)器AP2813介紹
    的頭像 發(fā)表于 11-03 16:47 ?529次閱讀
    DC-DC平均電流雙路降壓恒流驅(qū)動(dòng)器AP2813<b class='flag-5'>介紹</b>

    SWM341系列之SWM34SRET6介紹

    SWM341系列之SWM34SRET6介紹
    的頭像 發(fā)表于 10-27 10:19 ?1859次閱讀
    SWM341系列之SWM34SRET6<b class='flag-5'>介紹</b>

    信息技術(shù)是干什么?

    廣播電子技術(shù)信息技術(shù)
    橙群微電子
    發(fā)布于 :2023年09月22日 09:17:48