版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
ICS L60/69中國(guó)指揮與控制學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)T/CICC02001-2019CAN總線模塊驅(qū)動(dòng)軟件應(yīng)用編程接口APIforCANBusModuleDriverSoftware2020-1-19發(fā)布 2020-1-30實(shí)施中國(guó)指揮與控制學(xué)會(huì) 發(fā)布T/CICC02001-2019T/CICC02001-2019II目 次前 言 II范圍 1規(guī)范性引文件 1術(shù)語(yǔ)和定義 1要求 2應(yīng)用編程口 6典型接口用流程 9附錄A(料性附)接典型應(yīng)流程編示例 11T/CICC02001-2019T/CICC02001-2019鏈鏈鏈鏈前 言本標(biāo)準(zhǔn)按照GB/T1.1-2009《標(biāo)準(zhǔn)化工作導(dǎo)則第1部分:標(biāo)準(zhǔn)的結(jié)構(gòu)和編寫(xiě)》的規(guī)則起草。本標(biāo)準(zhǔn)附錄A為資料性附錄。本標(biāo)準(zhǔn)由中國(guó)指揮與控制學(xué)會(huì)提出并歸口。本標(biāo)準(zhǔn)主要起草人:王維興、尹加豹、朱濤、李向陽(yáng)、史云鵬、李格。IICAN總線模塊驅(qū)動(dòng)軟件應(yīng)用編程接口范圍CANCANCAN()GB/T28169-2011 入式軟件 C語(yǔ)編碼規(guī)范術(shù)語(yǔ)和定義下列術(shù)語(yǔ)和定義適用于本文件。3.1RTRremotetransmissionrequest遠(yuǎn)程發(fā)送請(qǐng)求,一種不帶數(shù)據(jù)的特殊消息幀。3.2CAN總線模塊CANbusmodule符合PCI總線規(guī)范且支持CAN2.0B協(xié)議標(biāo)準(zhǔn)的CAN總線接口模塊。3.3CAN消息幀CANmessageframeCAN總線通信時(shí)的基本數(shù)據(jù)單元,由消息ID、消息幀標(biāo)志、有效數(shù)據(jù)長(zhǎng)度、具體數(shù)據(jù)等元素組成。3.4接收濾波器receivingfilter對(duì)總線上的CAN消息幀進(jìn)行篩選以決定是否接收此消息幀的一種邏輯運(yùn)算方法。3.5單濾波singlefiltering接收濾波器只設(shè)置一種比較規(guī)則,收到的幀符合規(guī)則就接收。3.6雙濾波doublefiltering1接收濾波器設(shè)置兩種濾波規(guī)則,收到的幀符合任意一個(gè)規(guī)則就接收。要求運(yùn)行環(huán)境配置有CAN總線模塊的計(jì)算機(jī)系統(tǒng)。軟件開(kāi)發(fā)語(yǔ)言:C語(yǔ)言。使用要求CAN總線模塊驅(qū)動(dòng)軟件接口返回值分為兩種類(lèi)型,并遵循以下約定:OK ERROR函數(shù)執(zhí)行失敗。其中OK和ERROR使用操作系統(tǒng)缺省定義。>=0 <0 -1 執(zhí)行失敗;-2 參數(shù)非法;-3 執(zhí)行超時(shí)。CAN總線模塊驅(qū)動(dòng)軟件數(shù)據(jù)結(jié)構(gòu)包括設(shè)備句柄、CAN消息幀及通道配置等,定義為:#defineHANDLEintCANtypedefstruct_tagCAN_PACKET{unsignedlongdwCanId; /* CAN息幀ID */unsignedshortwRtr; /* 消幀標(biāo)志本消息否是遠(yuǎn)幀 unsignedshortwLen; /* 有效據(jù)長(zhǎng)度 */unsignedcharaData[8];/* 具數(shù)據(jù) unsignedlongdwTime; /* 時(shí)戳 */unsignedlongdwReserved; /* 保數(shù)據(jù)域 }CAN_PACKET;2typedefstruct_tagPORT_STRUCT{unsignedcharucMode; /* 當(dāng)通道工模式 */unsignedchar /* 接濾波模式 */unsignedlongdwAccCode; /* 接代碼濾器設(shè)置值 */unsignedlongdwAccMask; /* 接屏蔽碼置值 unsignedcharucBaudrate; /* 通波特率引值 unsignedcharucBrp,ucTseg1,ucTseg2; /* 特殊置波特時(shí),波率因子值 unsignedcharucSjw,ucSam; /* 特殊置波特時(shí),總時(shí)序設(shè)值 */}PORT_STRUCT;[GB/T28169-2011,定義4.7,定義4.8]CAN總線模塊常見(jiàn)波特率共八個(gè),約定見(jiàn)表1。表1波特率約定索引值波特率值(kbps)波特率因子1波特率因子2150xbf0x1c2500x090x1c31000x040x1c41250x030x1c52500x010x1c65000x000x1c78000x000x16810000x000x14注:應(yīng)用編程時(shí)只需要在進(jìn)行端口配置時(shí)指定波特率對(duì)應(yīng)的索引值即可。共有四種情況,下面分別進(jìn)行約定。為方便描述,將接收屏蔽碼4個(gè)字節(jié)從高位到低位簡(jiǎn)寫(xiě)為4ACR0/ACR1/ACR2/ACR3CAN_IDbit0~bit1011RTRbit013data[0]data[1]21所示。收碼蔽碼
bit31bit31
ACR0AMR0
ACR1 ACR2未使用AMR1 AMR2
ACR3AMR3
bit0bit0未使用參與濾波的消息數(shù)據(jù)位
CAN_IDData[0]CAN_ID
Data[1]圖1單濾波、標(biāo)準(zhǔn)幀情況下的接收濾波器設(shè)置CAN_IDbit0~bit2829RTRbit012所示。收碼蔽碼
bit31bit31
ACR0AMR0
ACR1 ACR2AMR1 AMR2
ACR3AMR3
bit0bit0未使用參與濾波的消息數(shù)據(jù)位
CAN_ID CAN_ID CAN_ID圖2單濾波、擴(kuò)展幀情況下的接收濾波器設(shè)置4ACR0ACR1AMR0AMR1CAN_IDAMR2AMR3bit15bitbit8 7ACR2bit4ACR3濾波器2ACR3濾波器1AMR3ACR1AMR1CAN_IDbit0~bit10RTRbit01data[0ACR0ACR1AMR0AMR1CAN_IDAMR2AMR3bit15bitbit8 7ACR2bit4ACR3濾波器2ACR3濾波器1AMR3ACR1AMR1接收驗(yàn)bitbitbitbitbitbitbitbit收碼31242320191630接收屏蔽碼Data[0]參與濾波的消息數(shù)據(jù)位Data[0]蔽碼收碼圖3雙濾波、標(biāo)準(zhǔn)幀情況下的接收濾波器設(shè)置CAN_IDbit13~bit2816bit31~bit16bit1~bit16it15~it0bit1~bit0245收碼
bit31
ACR0接收屏ACR0接收屏蔽碼bit31AMR0參與濾波的消息數(shù)據(jù)位CAN_ID接收屏bit蔽碼15AMR2接收驗(yàn)bit收碼 15AMR1
bit16bit16
濾波器1CAN_IDAMR3
bit0ACR2
ACR3
bit0
濾波器2圖4雙濾波、擴(kuò)展幀情況下的接收濾波器設(shè)置初始化接口描述CAN高優(yōu)先級(jí)。語(yǔ)法int 。參數(shù)無(wú)參數(shù)。返回值>=0 CAN<0 6描述打開(kāi)指定的CAN通道,打開(kāi)完成后該通道允許接收數(shù)據(jù)。語(yǔ)法HANDLECanOpenDriver(intiChannelNum)。參數(shù)intiChannelNum 0~返回值>=0 <0執(zhí)行失敗,返回具體錯(cuò)誤號(hào)。描述對(duì)一個(gè)已經(jīng)打開(kāi)的通道進(jìn)行設(shè)置。語(yǔ)法STATUSCanConfigPort(HANDLEhandle,PORT_STRUCT*psPortStruct)。參數(shù)HANDLEhandle PORT_STRUCT *psPortStruct unsignedcharucMode; CAN0CAN11CAN29unsignedchar ucFilterMode; 001unsignedlongdwAccCode; 4.3.4unsignedlongdwAccMask; 4.3.4unsignedcharucBaudrate; 1unsignedcharucBrp,ucTseg1,ucTseg2;設(shè)置非表1所列的波特率值時(shí),波特率因子取值,根據(jù)用7T/CICC02001-2019T/CICC02001-2019PAGEPAGE10戶需要進(jìn)行設(shè)置。unsignedcharucSjw,ucSam; 1進(jìn)行設(shè)置。返回值OK ERROR描述發(fā)送1幀CAN消息到指定通道。語(yǔ)法STATUSCanSendMsg(HANDLEhandle,CAN_PACKET*psPacket)參數(shù)HANDLEhandle CAN_PACKET *psPacket CANunsignedlongdwCanId;CANID,32bit10bit0~bit28unsignedshortwRtr,1;0unsignedshortwLen;本消息的數(shù)據(jù)長(zhǎng)度,取值范圍為0~8。本消息為數(shù)據(jù)幀時(shí)有效,為遠(yuǎn)程幀時(shí)無(wú)意義。unsignedchar aData[8];返回值OK ERROR描述從指定通道上接收1幀消息。若在設(shè)定超時(shí)時(shí)間范圍內(nèi)指定通道上無(wú)數(shù)據(jù),則本函數(shù)返回執(zhí)行失敗;若在設(shè)定超時(shí)時(shí)間范圍內(nèi)指定通道上有數(shù)據(jù),則本函數(shù)立即獲取1幀消息,并返回執(zhí)行成功。語(yǔ)法int CanRcvMsg(HANDLEhandle,CAN_PACKET*psPacket,intiTimeOut)。參數(shù)HANDLEhandle已打開(kāi)通道的句柄。CAN_PACKET*psPacket CANintiTimeOut表示無(wú)限等待,直到完成10等待的毫秒數(shù),時(shí)間到或者完成1幀消息接收則返回。返回值>=0 執(zhí)行成功。<0執(zhí)行失敗,返回具體錯(cuò)誤號(hào)。描述關(guān)閉一個(gè)已打開(kāi)的通道。語(yǔ)法STATUSCanCloseDriver(HANDLEhandle)。參數(shù)HANDLEhandle 返回值OK ERROR函數(shù)執(zhí)行失敗。CAN5A。開(kāi)始調(diào)用初始化函數(shù)CanInit開(kāi)始調(diào)用初始化函數(shù)CanInit開(kāi)始調(diào)用初始化函數(shù)CanInitNONO是否成功?YES調(diào)用通道打開(kāi)函數(shù)CanOpenDriver調(diào)用通道配置接口CanConfigPort準(zhǔn)備要發(fā)送的數(shù)據(jù)調(diào)用數(shù)據(jù)發(fā)送接口CanSendMsgYES是否繼續(xù)發(fā)送?NO結(jié)束調(diào)用通道關(guān)閉函數(shù)CanCloseDriver錯(cuò)誤報(bào)告NO是否成功?YES調(diào)用通道打開(kāi)函數(shù)NO是否成功?YES調(diào)用通道打開(kāi)函數(shù)CanOpenDriver調(diào)用通道配置接口CanConfigPort調(diào)用數(shù)據(jù)接收接口CanRcvMsg接收返回OK?NOYES接收數(shù)據(jù)處理YES是否繼續(xù)接收?NO結(jié)束調(diào)用通道關(guān)閉函數(shù)CanCloseDriver錯(cuò)誤報(bào)告附錄A(資料性附錄)接口典型應(yīng)用流程編程示例#defineSEND_LEN8voidCanSend(void){HANDLEFdCan1;PORT_STRUCTsCan1Port;CAN_PACKETsPack;inti;intj=0;FdCan1=CanOpenDriver(0);if(FdCan1==ERROR){#defineSEND_LEN8voidCanSend(void){HANDLEFdCan1;PORT_STRUCTsCan1Port;CAN_PACKETsPack;inti;intj=0;FdCan1=CanOpenDriver(0);if(FdCan1==ERROR){printf("\nCan1Error");return;}sCan1Port.ucMode=1;sCan1Port.dwAccCode=0xffffffff;sCan1Port.dwAccMask=0xffffffff;sCan1Port.ucBaudrate=3;if(ERROR==CanConfigPort(FdCan1,&sCan1Port)){printf("\nCanConfigPort return;}while(1){j++;for(i=0;i<SEND_LEN;i++)sPack.aData[i]=j;//=0x30+i%8;sPack.wLen=SEND_LEN;sPack.aData[i]=j;//=0x30+i%8;sPack.wLen=SEND_LEN;sPack.wRtr=0;sPack.dwCanId=0x1ffffff0;CanSendMsg(FdCan1,&sPack);}}voidCanRev(void){HANDLEFdCan1;PORT_STRUCTsCan1Port;CAN_PACKETsPack;inti;unsignedshortlen=0;STATUSret;FdCan1=CanOpenDriver(0);if(FdCan
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉(cāng)庫(kù)衛(wèi)生管理考核制度
- 高中生宿舍衛(wèi)生規(guī)范制度
- 2026年智慧城市建設(shè)PPP模式應(yīng)用考核案例
- 2026年軟件開(kāi)發(fā)工程師專(zhuān)業(yè)試題庫(kù)及解析
- 金融信息安全態(tài)勢(shì)感知
- 2026年跨境電商聯(lián)盟稅務(wù)籌劃培訓(xùn)實(shí)務(wù)
- 2026內(nèi)蒙古呼和浩特航天經(jīng)濟(jì)開(kāi)發(fā)區(qū)管理委員會(huì)招聘所屬國(guó)有企業(yè)管理人員2人備考題庫(kù)及答案詳解(必刷)
- 小組培訓(xùn)后的制作
- 2026安徽合肥市青年路小學(xué)教育集團(tuán)青年路小學(xué)、黃河路小學(xué)、云谷路小學(xué)春季學(xué)期教師招聘11人備考題庫(kù)附答案詳解(輕巧奪冠)
- 2026內(nèi)蒙古呼和浩特市楓葉雙語(yǔ)學(xué)校招聘6人備考題庫(kù)含答案詳解(能力提升)
- 電影院消防安全制度范本
- 酒店工程維修合同協(xié)議書(shū)
- 2025年版?zhèn)€人與公司居間合同范例
- 電子商務(wù)平臺(tái)項(xiàng)目運(yùn)營(yíng)合作協(xié)議書(shū)范本
- 動(dòng)設(shè)備監(jiān)測(cè)課件 振動(dòng)狀態(tài)監(jiān)測(cè)技術(shù)基礎(chǔ)知識(shí)
- 第六講-女性文學(xué)的第二次崛起-80年代女性文學(xué)
- 專(zhuān)題15平面解析幾何(選擇填空題)(第一部分)(解析版) - 大數(shù)據(jù)之十年高考真題(2014-2025)與優(yōu) 質(zhì)模擬題(新高考卷與全國(guó)理科卷)
- 部門(mén)考核方案
- 苗木種子采購(gòu)合同范本
- 檢測(cè)費(fèi)合同范本
- T-CPQS C010-2024 鑒賞收藏用潮流玩偶及類(lèi)似用途產(chǎn)品
評(píng)論
0/150
提交評(píng)論