在現(xiàn)有的can_api.h所提供的接口函數(shù)的基礎(chǔ)上,推出CAN接口通訊一些擴(kuò)展應(yīng)用功能,主要是為每個(gè)接收的數(shù)據(jù)包均加上了時(shí)間標(biāo)簽,以支持實(shí)時(shí)控制的應(yīng)用。為了兼容以前接口函數(shù),can_api.h保持不變,英創(chuàng)公司另外定義了一個(gè)can_api_ex.h,在該文件中定義了帶有時(shí)間標(biāo)簽的CAN數(shù)據(jù)報(bào)文結(jié)構(gòu)。
typedef struct
{
// CAN數(shù)據(jù)報(bào)文ID,其中
bit 0-28 : CAN identifier (11/29 bit)
bit 29 : error frame flag (0 = data frame, 1 = error frame)
bit 30 : remote transmission request flag (1 = rtr frame)
bit 31 : frame format flag (0 = standard 11 bit, 1 = extended 29 bit)
DWORD dwCAN_ID;
// CAN數(shù)據(jù)報(bào)文中的數(shù)據(jù)長(zhǎng)度
DWORD dwCAN_DatLen;
// CAN數(shù)據(jù)報(bào)文中的數(shù)據(jù)
UCHAR ucDat[8];
// CAN數(shù)據(jù)報(bào)文的時(shí)間標(biāo)簽,單位為毫秒
DWORD dwTimeTick;
} CAN_FRAME, *PCAN_FRAME;
獲取帶有時(shí)間標(biāo)簽的CAN接收?qǐng)?bào)文,可通過調(diào)用標(biāo)準(zhǔn)的ReadFile( ) 來實(shí)現(xiàn),相應(yīng)的發(fā)送函數(shù)也可調(diào)用WriteFile( )來處理。以下為接收線程中的獲取帶有時(shí)間標(biāo)簽的CAN數(shù)據(jù)報(bào)文的方法:
WaitForSingleObject( ceCAN->m_hRxEvent, 15 );
{
dwLen = 0;
bResult = ReadFile(ceCAN->m_hCAN,
&ceCAN->can_frame,
sizeof(CAN_FRAME), &dwLen, NULL );
if( dwLen==sizeof(CAN_FRAME) ) // receive a can frame
{
if( dwLastTimeTick == 0 )
{
printf( '0x%08x - %ld\n', ceCAN->can_frame.dwCAN_ID, ceCAN->can_frame.dwTimeTick );
dwLastTimeTick = ceCAN->can_frame.dwTimeTick;
}
else
{
printf( '0x%08x - %ld\n', ceCAN->can_frame.dwCAN_ID, ceCAN->can_frame.dwTimeTick-dwLastTimeTick );
dwLastTimeTick = ceCAN->can_frame.dwTimeTick;
}
}
}
經(jīng)過測(cè)試,在英創(chuàng)嵌入式主板上CAN時(shí)間標(biāo)簽的精度能夠保證在±1ms。
由于讀取帶有時(shí)間標(biāo)簽的CAN數(shù)據(jù)報(bào)文采用的是系統(tǒng)標(biāo)準(zhǔn)函數(shù)ReadFile,所以對(duì)該擴(kuò)展功能感興趣的老客戶,需要對(duì)已有的英創(chuàng)嵌入式主板WinCE內(nèi)核進(jìn)行升級(jí),而can_api.lib不需做任何變化。具體can_api.h中定義的接口函數(shù)參見《基于SJA1000的CAN通訊接口函數(shù)使用說明》一文。
感興趣的客戶可以和英創(chuàng)的技術(shù)支持聯(lián)系。
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6096瀏覽量
36137
發(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)新大賽圓滿落幕
擴(kuò)展您的串口設(shè)備 EU104數(shù)據(jù)轉(zhuǎn)發(fā)芯片可獨(dú)立設(shè)置通訊速率和參數(shù) 將1個(gè)UART接口擴(kuò)展為4個(gè)
有方科技參編的信息技術(shù)團(tuán)體標(biāo)準(zhǔn)發(fā)布
龍芯中科助力2024首屆教育信息技術(shù)應(yīng)用創(chuàng)新大賽成功舉辦
中科創(chuàng)達(dá)榮獲2024年軟件和信息技術(shù)服務(wù)優(yōu)秀企業(yè)
CAN/CANFD卡接口函數(shù)使用說明
EN?Power?Bus二總線接口轉(zhuǎn)接485方案芯片-485接口芯片
梯度科技入選2023年信息技術(shù)應(yīng)用創(chuàng)新解決方案名單
[can開發(fā)板] 一款低價(jià)can/obd2總線Linux開發(fā)板
芯力特車規(guī)TVS產(chǎn)品助力CAN/LIN通訊接口保護(hù)

評(píng)論