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

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

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

英創(chuàng)信息技術(shù)EM9170嵌入式主板CAN通訊接口使用說(shuō)明

英創(chuàng)信息技術(shù) ? 來(lái)源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-01-15 11:43 ? 次閱讀

英創(chuàng)公司推出的基于WinCE 6.0操作系統(tǒng)嵌入式工控板卡EM9170,板上帶有2路獨(dú)立的CAN總線接口,均為FlexCAN模塊。FlexCAN完全支持CAN 2.0B協(xié)議,支持對(duì)于標(biāo)準(zhǔn)幀和擴(kuò)展幀的收發(fā),同時(shí)FlexCAN還支持高優(yōu)先級(jí)的報(bào)文優(yōu)先發(fā)送的機(jī)制,可有效改善實(shí)時(shí)控制的相應(yīng)時(shí)間。EM9170板上輸出的兩路CAN收發(fā)信號(hào)均為T(mén)TL電平,在實(shí)際使用時(shí)需要在外圍電路中加上CAN驅(qū)動(dòng)芯片,具體可以參考英創(chuàng)公司提供的“EM9170開(kāi)發(fā)底板評(píng)估手冊(cè)”。EM9170內(nèi)核操作系統(tǒng)中已經(jīng)實(shí)現(xiàn)FlexCAN底層驅(qū)動(dòng),系統(tǒng)一旦上電系統(tǒng),將自動(dòng)加載兩路FlexCAN的驅(qū)動(dòng)程序,客戶在基于EM9170上編寫(xiě)CAN應(yīng)用程序時(shí),均可按照WinCE流式設(shè)備,打開(kāi)關(guān)閉文件的方式對(duì)CAN接口進(jìn)行操作,本文將著重介紹基于EM9170上FlexCAN的使用方法。

數(shù)據(jù)結(jié)構(gòu)

EM9170的CAN通訊提供了兩種數(shù)據(jù)結(jié)構(gòu),定義在flex_can.h文件中。一個(gè)是CAN通訊數(shù)據(jù)包的結(jié)構(gòu),一個(gè)是CAN通訊中對(duì)于濾波器的設(shè)置結(jié)構(gòu)。

CAN數(shù)據(jù)包結(jié)構(gòu)的定義如下:

typedef struct
{
// 定義數(shù)據(jù)幀的類(lèi)型:0 - 標(biāo)準(zhǔn)幀;1 - 擴(kuò)展幀
DWORD dwType;
// 標(biāo)準(zhǔn)幀或擴(kuò)展幀的CAN ID。
// bit 0-28: CAN identifier (11/29 bit),其中標(biāo)準(zhǔn)幀11bit,擴(kuò)展幀29bit
DWORD dwID;
// = 0:數(shù)據(jù)幀;= 1:遠(yuǎn)程幀
DWORD dwRTR;
// 發(fā)送優(yōu)先級(jí)= 0 - 7,為最高優(yōu)先級(jí),對(duì)接收數(shù)據(jù)包無(wú)意義
DWORD dwPrio;
// 數(shù)據(jù)長(zhǎng)度= 0 - 8
DWORD dwDatLen;
// 數(shù)據(jù)字節(jié)
UCHAR ucDat[8];
}CAN_PACKET, *PCAN_PACKET;

CAN濾波器數(shù)據(jù)結(jié)構(gòu)的定義如下:

typedef struct
{
// 組號(hào),恒為0
DWORD dwGroup;
// 定義數(shù)據(jù)幀的類(lèi)型:0 - 標(biāo)準(zhǔn)幀;1 - 擴(kuò)展幀
DWORD dwType;
// 定義標(biāo)準(zhǔn)幀或擴(kuò)展幀需要比較過(guò)濾的CAN ID。
// bit 0-28: CAN identifier (11/29 bit),其中標(biāo)準(zhǔn)幀11bit,擴(kuò)展幀29bit
DWORD dwID;
// = 0:數(shù)據(jù)幀;= 1:遠(yuǎn)程幀
DWORD dwRTR;
// 定義和dwID對(duì)應(yīng)的需要檢查或不檢查的Mask位
// bit 0-28: (11/29 bit),其中標(biāo)準(zhǔn)幀11bit,擴(kuò)展幀29bit
// = 0:該位不檢查;= 1:該位須檢查
DWORD dwMask;
}CAN_FILTER, *PCAN_FILTER;

濾波器數(shù)據(jù)結(jié)構(gòu)設(shè)置距離如下:

CAN_FILTER Filter;
Filter.dwGroup = 0; // 保留,恒為0
Filter.dwType = CAN_PACKET_TYPE_STANDARD; // 標(biāo)準(zhǔn)幀
Filter.dwID = 0x00000002; // 設(shè)定的接收ID
Filter.dwMask = 0x00000003; // 檢查接收?qǐng)?bào)文ID的低2位
Filter.dwRTR = 0; // 數(shù)據(jù)幀

設(shè)置的Filter結(jié)構(gòu),表明對(duì)于接收到的CAN標(biāo)準(zhǔn)幀報(bào)文只檢查報(bào)文CAN ID的低兩位的值,這兩位的值應(yīng)該和Filter.dwID所設(shè)定的值相符合,即:

CAN_ID & Filter.dwMask = Filter.dwID

因此在上例中,所接收的CAN報(bào)文的ID的低兩位必須為0x02。

CAN_API函數(shù)

英創(chuàng)公司提供的CAN通訊接口的驅(qū)動(dòng)程序采用標(biāo)準(zhǔn)的驅(qū)動(dòng)程序,和串口操作類(lèi)似用戶可以用標(biāo)準(zhǔn)的打開(kāi)文件CreateFile( )、關(guān)閉文件CloseHandle( )的方式,來(lái)打開(kāi)該CAN設(shè)備,數(shù)據(jù)的收發(fā)可調(diào)用ReadFile() WrtieFile( ),另外的一些對(duì)CAN操作通訊相關(guān)參數(shù)的設(shè)置可以通過(guò)調(diào)用DeviceIOCTL( )來(lái)實(shí)現(xiàn)。為了方便客戶的使用,在CAN驅(qū)動(dòng)程序的基礎(chǔ)上,以源碼的形式為客戶封裝了一套簡(jiǎn)單實(shí)用的API函數(shù)。各個(gè)函數(shù)的定義在can_api.h文件下,在該頭文件中對(duì)于各個(gè)API函數(shù)均有相應(yīng)的中文說(shuō)明。

// 功能描述:啟動(dòng)CAN設(shè)備端口
// 輸入?yún)?shù)hDevice: 已創(chuàng)建CAN流式設(shè)備的句柄。
// 返回值= TRUE: 啟動(dòng)CAN設(shè)備端口成功。
// = FALSE: 啟動(dòng)CAN設(shè)備端口失敗。
BOOL CAN_StartChip(HANDLE hDevice);

// 功能描述:停止CAN設(shè)備端口。
// 輸入?yún)?shù)hDevice: 已創(chuàng)建CAN流式設(shè)備的句柄。
// 返回值= TRUE: 停止CAN設(shè)備端口成功。
// = FALSE: 停止CAN設(shè)備端口失敗。
BOOL CAN_StopChip(HANDLE hDevice);

// 功能描述: 軟件復(fù)位CAN設(shè)備端口。
// 輸入?yún)?shù)hDevice: 已創(chuàng)建CAN流式設(shè)備的句柄。
// 返回值 = TRUE: 復(fù)位CAN設(shè)備端口成功。
// = FALSE: 復(fù)位CAN設(shè)備端口失敗。
BOOL CAN_SoftReset(HANDLE hDevice);

// 功能描述:設(shè)置CAN設(shè)備通訊的波特率。
// 輸入?yún)?shù)hDevice: 已創(chuàng)建CAN流式設(shè)備的句柄。
// CAN_TIMING_10K : 10Kbps
// CAN_TIMING_20K : 20Kbps
// CAN_TIMING_50K : 50bps
// CAN_TIMING_60K : 60bps
// CAN_TIMING_100K : 100bps
// CAN_TIMING_125K : 125Kbps
// CAN_TIMING_250K : 250Kbps
// CAN_TIMING_500K : 500bps
// CAN_TIMING_1000K: 1Mbps
// 返回值= TRUE: 波特率設(shè)置成功。
// = FALSE: 波特率設(shè)置失敗。
BOOL CAN_SetBaudRate(HANDLE hDevice, DWORD dwBaudRate );

// 功能描述: 設(shè)置CAN設(shè)備通訊接收過(guò)濾器配置。
// 輸入?yún)?shù)hDevice: 已創(chuàng)建CAN流式設(shè)備的句柄。
// pFilter: 根據(jù)通訊報(bào)文格式定義過(guò)濾器的配置。
// 返回值= TRUE: 配置設(shè)置成功。
// = FALSE: 配置設(shè)置失敗。
BOOL CAN_SetFilter( HANDLE hDevice, PCAN_FILTER pFilter );

// 功能描述: 獲取CAN設(shè)備通訊事件
// 輸入?yún)?shù)hDevice: 已創(chuàng)建CAN流式設(shè)備的句柄。
// dwTimeout: 超時(shí)時(shí)間,單位為ms
// 輸出參數(shù)
// lpEvtMask: 得到的CAN事件類(lèi)型= 1:接收到CAN數(shù)據(jù)包
// = 2:CAN錯(cuò)誤事件
// 返回值= TRUE: 調(diào)用成功。
// = FALSE: 調(diào)用失敗。
BOOL WaitCANEvent( HANDLE hDevice, LPDWORD lpEvtMask, DWORD dwTimeout );

// 功能描述: 清空CAN設(shè)備通訊接收、發(fā)送BUFFER。
// 輸入?yún)?shù)hDevice: 已創(chuàng)建CAN流式設(shè)備的句柄。
// 返回值= TRUE: 設(shè)置成功。
BOOL CAN_Purge( HANDLE hDevice );

CAN出錯(cuò)處理

在CAN實(shí)際應(yīng)用數(shù)據(jù)通訊過(guò)程中,可能會(huì)遇到CAN通訊出錯(cuò)的情況,調(diào)用API函數(shù)WaitCANEvent( HANDLE hDevice, LPDWORD lpEvtMask, DWORD dwTimeout )可以獲取到CAN通訊出錯(cuò)的事件,對(duì)CAN的錯(cuò)誤事件的處理可采用重啟CAN設(shè)備的操作。

if( WaitCANEvent( pCAN->m_hCAN, &dwEvtMask, 2000 ) )
{
…..
if( dwEvtMask & 0x02 ) // 錯(cuò)誤事件
{
CAN_StopChip( pCAN->m_hCAN );
CAN_StartChip( pCAN->m_hCAN );
}
}

在英創(chuàng)公司提供的應(yīng)用光盤(pán)中有具體CAN接口的測(cè)試代碼,可供客戶參考測(cè)試。

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

    關(guān)注

    7

    文章

    6081

    瀏覽量

    34942
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    飛凌嵌入式技術(shù)創(chuàng)新日(深圳站)圓滿落幕

    2024年8月26日下午,飛凌嵌入式技術(shù)創(chuàng)新日深圳站在深圳威尼斯迪格酒店盛大舉行,此次活動(dòng)匯聚了近200位嵌入式技術(shù)領(lǐng)域的專(zhuān)家和企業(yè)代表,
    的頭像 發(fā)表于 08-30 15:42 ?180次閱讀
    飛凌<b class='flag-5'>嵌入式</b><b class='flag-5'>技術(shù)</b>創(chuàng)新日(深圳站)圓滿落幕

    飛凌嵌入式技術(shù)創(chuàng)新日(深圳站)精彩回顧

    2024年8月26日下午,飛凌嵌入式技術(shù)創(chuàng)新日深圳站在深圳威尼斯迪格酒店盛大舉行,此次活動(dòng)匯聚了近200位嵌入式技術(shù)領(lǐng)域的專(zhuān)家和企業(yè)代表,
    發(fā)表于 08-28 09:06

    嵌入式工控主板在金融智能設(shè)備行業(yè)應(yīng)用

    嵌入式工控主板在金融智能設(shè)備行業(yè)的應(yīng)用廣泛且深入,其重要性不言而喻。以下是從幾個(gè)關(guān)鍵方面來(lái)闡述嵌入式工控主板在金融智能設(shè)備行業(yè)的應(yīng)用:
    的頭像 發(fā)表于 07-11 09:38 ?188次閱讀

    嵌入式工控機(jī)主板應(yīng)用場(chǎng)景

    嵌入式工控機(jī)主板在多個(gè)領(lǐng)域中有著廣泛的應(yīng)用,其特點(diǎn)包括體積小、集成度高、功耗低以及控制功能強(qiáng)等。以下是嵌入式工控機(jī)主板的一些主要應(yīng)用領(lǐng)域:
    的頭像 發(fā)表于 04-25 17:06 ?514次閱讀

    嵌入式主板,你了解多少?

    嵌入式主板,也稱為嵌入式計(jì)算機(jī)主板,是一種專(zhuān)門(mén)設(shè)計(jì)用于嵌入式系統(tǒng)的計(jì)算機(jī)主板。與臺(tái)式機(jī)和筆記本電腦中使用的常規(guī)
    的頭像 發(fā)表于 04-17 15:11 ?1100次閱讀

    嵌入式fpga是什么意思

    嵌入式FPGA是指將FPGA技術(shù)集成到嵌入式系統(tǒng)中的一種解決方案。嵌入式系統(tǒng)是一種為特定應(yīng)用而設(shè)計(jì)的計(jì)算機(jī)系統(tǒng),它通常包括處理器、內(nèi)存、外設(shè)接口
    的頭像 發(fā)表于 03-15 14:29 ?1014次閱讀

    定制嵌入式主板,需要考慮的功能有哪些?

    隨著科技的不斷發(fā)展和進(jìn)步,嵌入式系統(tǒng)在各行各業(yè)中得到了廣泛的應(yīng)用。嵌入式主板作為嵌入式系統(tǒng)的核心組件,起著至關(guān)重要的作用。在定制嵌入式
    的頭像 發(fā)表于 02-29 17:38 ?375次閱讀
    定制<b class='flag-5'>嵌入式</b><b class='flag-5'>主板</b>,需要考慮的功能有哪些?

    高端嵌入式實(shí)驗(yàn)平臺(tái)

    一、整體概述 該嵌入式平臺(tái)具有前沿性、專(zhuān)業(yè)性、高集成度、功能豐富等特點(diǎn),平臺(tái)涵蓋嵌入式計(jì)算機(jī)技術(shù)、嵌入式硬件接口、嵌入式系統(tǒng)軟件等關(guān)鍵
    的頭像 發(fā)表于 01-29 09:55 ?403次閱讀
    高端<b class='flag-5'>嵌入式</b>實(shí)驗(yàn)平臺(tái)

    什么是嵌入式板卡?

    ,以便添加額外的功能或定制化的接口??傊?b class='flag-5'>嵌入式主板是設(shè)計(jì)用于嵌入式系統(tǒng)的關(guān)鍵組件,它們的設(shè)計(jì)和功能可以根據(jù)特定的應(yīng)用需求進(jìn)行定制。這些板采用了各種
    的頭像 發(fā)表于 12-20 16:17 ?652次閱讀
    什么是<b class='flag-5'>嵌入式</b>板卡?

    菁蓉聯(lián)創(chuàng)獲得首個(gè)openEuler嵌入式操作系統(tǒng)技術(shù)測(cè)評(píng)證書(shū)

    近日,成都菁蓉聯(lián)創(chuàng)科技有限公司(簡(jiǎn)稱:菁蓉聯(lián)創(chuàng))攜手四川鯤鵬&歐拉生態(tài)創(chuàng)新中心完成首個(gè)openEuler嵌入式操作系統(tǒng)技術(shù)測(cè)評(píng)證書(shū)。
    的頭像 發(fā)表于 11-28 10:18 ?851次閱讀
    菁蓉聯(lián)<b class='flag-5'>創(chuàng)</b>獲得首個(gè)openEuler<b class='flag-5'>嵌入式</b>操作系統(tǒng)<b class='flag-5'>技術(shù)</b>測(cè)評(píng)證書(shū)

    定制嵌入式主板:滿足客戶的實(shí)際需求

    隨著物聯(lián)網(wǎng)、智能家居、智能工廠等應(yīng)用的不斷發(fā)展,嵌入式系統(tǒng)的應(yīng)用場(chǎng)景也越來(lái)越廣泛。嵌入式系統(tǒng)的核心部分是嵌入式主板,而定制化的嵌入式
    的頭像 發(fā)表于 11-24 11:51 ?722次閱讀
    定制<b class='flag-5'>嵌入式</b><b class='flag-5'>主板</b>:滿足客戶的實(shí)際需求

    嵌入式主板購(gòu)買(mǎi)需要考慮哪些內(nèi)容?

    眾所周知,各種先進(jìn)電子器件和計(jì)算機(jī)處理技術(shù)在我國(guó)自動(dòng)化工業(yè)生產(chǎn)中的應(yīng)用,極大地提高了發(fā)展的效率和發(fā)展水平。而嵌入式主板以其多元化的設(shè)計(jì)特點(diǎn)在我國(guó)工業(yè)系統(tǒng)的控制中表現(xiàn)得越來(lái)越明顯,消費(fèi)者在選擇這種
    的頭像 發(fā)表于 11-22 17:39 ?436次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>主板</b>購(gòu)買(mǎi)需要考慮哪些內(nèi)容?

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

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

    基于CAN總線的嵌入式車(chē)燈監(jiān)控系統(tǒng)設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于CAN總線的嵌入式車(chē)燈監(jiān)控系統(tǒng)設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 10-24 09:22 ?1次下載
    基于<b class='flag-5'>CAN</b>總線的<b class='flag-5'>嵌入式</b>車(chē)燈監(jiān)控系統(tǒng)設(shè)計(jì)

    基于CAN總線的嵌入式水位監(jiān)測(cè)系統(tǒng)設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于CAN總線的嵌入式水位監(jiān)測(cè)系統(tǒng)設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 10-18 10:35 ?2次下載
    基于<b class='flag-5'>CAN</b>總線的<b class='flag-5'>嵌入式</b>水位監(jiān)測(cè)系統(tǒng)設(shè)計(jì)