汽車ECU 標(biāo)定系統(tǒng)CCP 軟件的實(shí)現(xiàn)
(2)DAQ 處理機(jī)
DAQ 處理機(jī)的任務(wù)是根據(jù)主設(shè)備的需要,定時(shí)向CAN 總線上發(fā)送DAQ 數(shù)據(jù)。它由啟動(dòng)從設(shè)備的DAQ 發(fā)送、停止從設(shè)備的DAQ 發(fā)送、執(zhí)行DAQ 循環(huán)發(fā)送的任務(wù)3 個(gè)部分構(gòu)成。
啟動(dòng)或停止從設(shè)備的 DAQ 發(fā)送,由Command 處理機(jī)調(diào)用函數(shù)Start_DAQ (DAQ List
number ,)和Stop_DAQ (DAQ List number)來完成,該函數(shù)啟動(dòng)或停止相應(yīng)的DAQ 發(fā)送任務(wù),
其示意性代碼如下:
Start_DAQ(INT8U DAQ_List_num) { //啟動(dòng)第n 個(gè)DAQ_List
DAQ_List[n].Started = 1;
DAQ_List[n].Prepared = 1;
OSTaskCreate (第n 個(gè)DAQ_List 的任務(wù)); //調(diào)用系統(tǒng)函數(shù),創(chuàng)建DAQ 發(fā)送任務(wù),
并使任務(wù)進(jìn)入調(diào)度
}}
Stop_DAQ(INT8U DAQ_List_num) { //停止第n 個(gè)DAQ_List
DAQ_List[n].Started = 0;
DAQ_List[n].Prepared = 0;
OSTaskDel (第n 個(gè)DAQ_List 的任務(wù)); //調(diào)用系統(tǒng)函數(shù),刪除DAQ 發(fā)送任務(wù)
}
執(zhí)行DAQ 循環(huán)發(fā)送的任務(wù),需要按照ODT 設(shè)置把DAQ 數(shù)據(jù)發(fā)送到CAN 總線上,同時(shí)需要按照DAQ 周期要求循環(huán)執(zhí)行,該任務(wù)示意性代碼如下:
void DAQ_task ( ) {
for( ; ; ) {
CCP.Upload(0); //根據(jù)ODT 設(shè)置把DAQ 數(shù)據(jù)發(fā)送到CAN 總線上
OSTimeDlyHMSM(Period); //調(diào)用RTOS 函數(shù),等待一個(gè)周期的時(shí)間
}
}
5 結(jié)束語
經(jīng)過多次反復(fù)不斷的實(shí)際調(diào)試,此 CCP 軟件程序在系統(tǒng)上運(yùn)行穩(wěn)定可靠,實(shí)現(xiàn)了基于MC9S12DP256 上的FLASH 區(qū)的標(biāo)定。
這種采用環(huán)形緩沖區(qū)以及結(jié)合實(shí)時(shí)操作系統(tǒng)的 CCP 軟件程序設(shè)計(jì),有效的避免在ECU標(biāo)定過程中數(shù)據(jù)的丟失,并可以對(duì)多個(gè)ECU 同時(shí)進(jìn)行在線標(biāo)定,具有很強(qiáng)的實(shí)用價(jià)值。
參考文獻(xiàn)
?。?]陶恒燕,田江學(xué),屈衛(wèi)東. 基于MC68736 的CCP 軟件程序設(shè)計(jì). 測控技術(shù),2005,3:49-52.
?。?]宋雪樺,潘波.汽車電控制單元CAN-RS232-USB 診斷與通訊模塊研制.微計(jì)算機(jī)信息,2006,2-2:226-228
[3]邵貝貝. 單片機(jī)嵌入式應(yīng)用的在線開發(fā)方法. 清華大學(xué)出版社,2004.
?。?]Jean J.Labrosse. 嵌入式系統(tǒng)構(gòu)件. 機(jī)械工業(yè)出版社,2002.
?。?]李雅博,張俊智,甘海云. 基于CCP 協(xié)議的HEV 用ECU 標(biāo)定系統(tǒng)設(shè)計(jì). 汽車工程,2004,4:375-378.
評(píng)論