RM新时代网站-首页

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

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

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

基于MC9S12DP256芯片和μC/OS-II實現(xiàn)CCP軟件的設(shè)計

電子設(shè)計 ? 來源:‘微計算機信息 ? 作者:作者:陳劍 ? 2021-04-12 09:57 ? 次閱讀

CCP 協(xié)議是一種CAN 總線標定匹配協(xié)議。本文簡單介紹該協(xié)議的基本原理,以及一種基于該協(xié)議的汽車ECU 標定系統(tǒng)的實現(xiàn)方法。最后,結(jié)合MC9S12DP256 芯片以及μC/OS-II操作系統(tǒng),詳細討論了此標定系統(tǒng)的CCP 軟件實現(xiàn)方法。

1 前言

標定是指根據(jù)整車的各種性能要求(如動力性、經(jīng)濟性、排放及輔助功能等),來調(diào)整、優(yōu)化和確定整車上各ECU(包括發(fā)動機和各子系統(tǒng) ECU)的運行及控制參數(shù)的控制算法。通過標定系統(tǒng),能夠很方便的讀取 ECU 中的標定變量數(shù)據(jù)到標定平臺,并可以對這些數(shù)據(jù)進行編輯修改,編輯后的數(shù)據(jù)又可以寫入 ECU,從而達到修改 ECU 中標定參數(shù)的目的。功能完善且靈活方便的標定軟件對整個汽車ECU 控制系統(tǒng)的開發(fā)起到事半功倍的效果。目前,一般的標定系統(tǒng)都是采用基于串行口的點對點的通信方式,這種通信方式具有很大的局限性,而且通信協(xié)議都不一樣。在這個ECU 系統(tǒng)中,將采用 CAN 總線的通信方式和CCP(CAN Calibration Protocol)協(xié)議。

2 CCP 協(xié)議簡介

1996 年6 月,歐洲ASAP 項目組發(fā)布了現(xiàn)行的2.0 版,它采用CAN 2.0B(11 位或29位ID)進行MCS(measurement and calibration system)與ECU 之間的通信。該協(xié)議具有通用性強,適用范圍廣的特點,無論對8 位低速帶CAN 的控制器,還是32 位高速帶CAN 的控制器,均可滿足工作要求。基于CCP 協(xié)議的ECU 標定采用主-從通信方式,主設(shè)備通過CAN 總線與多個從設(shè)備相連,其中主設(shè)備是測量標定系統(tǒng)MCS(Measurement CalibrationSystem),從設(shè)備是需要標定的ECU。根據(jù)CCP 協(xié)議,主設(shè)備首先與其中一個從設(shè)備建立邏輯鏈接, 建立邏輯連接后,主、從機之間所有的數(shù)據(jù)傳遞均由主機控制,從機執(zhí)行主機命令后返回包含命令響應值或錯誤代碼等信息的報文。

3 標定系統(tǒng)的實現(xiàn)

3.1 上位機部分

友好的人機頁面對于標定工作的順利進行是起決定性作用的,此標定系統(tǒng)的設(shè)計克服了以往大多數(shù)標定系統(tǒng)只能通過鍵盤對標定數(shù)據(jù)進行修改的局限性,在標定系統(tǒng)中除了表格編輯方式外,還將引入圖形編輯方式。將標定變量數(shù)據(jù)轉(zhuǎn)換成圖形,將使標定員對于標定變量數(shù)據(jù)比如說修正曲線和 MAP 圖有一個更直觀了解,并且可以通過鼠標拖動對圖形進行編輯修改,從而達到編輯修改標定變量數(shù)據(jù)的目的,這樣大大方便了對于修正曲線和 MAP圖類型標定變量的編輯。

在這里我們是采用 Visual C++完成標定頁面的設(shè)計以及與下位機的通信。該標定系統(tǒng)除了具有對 ECU 的標定功能外,還引入了實時監(jiān)測功能,從而可以很快得到標定操作的返回信息。如圖所示,監(jiān)測界面主要完成各種監(jiān)測量數(shù)據(jù)的實時接收和顯示功能。測量得到的數(shù)據(jù)以數(shù)字和圖形兩種方式顯示出來,數(shù)據(jù)可以存儲。歷史數(shù)據(jù)可以從文件中讀出來,進行離線分析。標定界面則是完成標定變量數(shù)據(jù)的顯示、編輯修改以及上傳下載功能。根據(jù)變量的不同類型,變量數(shù)據(jù)分別以參量、二維、三維的形式表示。

基于MC9S12DP256芯片和μC/OS-II實現(xiàn)CCP軟件的設(shè)計

圖 1 標定系統(tǒng)實現(xiàn)圖

3.2 底層ECU 部分

而底層 ECU 部分,標定系統(tǒng)在這里采用的是Freescale 公司的MC9S12DP256,這是一款16 位CPU 及0.25 微米、高速、高性能5.0V FLASH 存儲器技術(shù)的中檔芯片。它具有25MHz的主頻、256K 字節(jié)的FLASH 存儲器、16 通道的8 位A/D 轉(zhuǎn)換器以及多達5 個的高速CAN 控制器。其較高的性能價格比使其非常適合用于一些中高檔汽車電子系列相關(guān)產(chǎn)品。同時其較簡單的背景開發(fā)模式(BDM)使得開發(fā)成本進一步降低,也使得現(xiàn)場開發(fā)與系統(tǒng)升級變得更加方便。

需要標定的變量稱為標定參數(shù),標定定義也就是修改駐扎在ECU 內(nèi)存中的變量的內(nèi)容。根據(jù)標定參數(shù)所在不同地址空間( RAM、FLASH 或EEPROM) , 這里也就有了不同的標定方法。RAM EEPROM 標定的速度較塊,但RAM 和EEPROM 空間有限,所需的標定參數(shù)的數(shù)目也就受到了限制,而FLASH 空間較大,但標定的速度相對較慢。這里考慮選擇芯片的實際情況,選擇了FLASH 標定的方法。當標定參數(shù)需要存放在FLASH 中時, 在ECU 上電初始化后, 程序首先將標定參數(shù)的初始值復制到RAM 中, 在標定軟件中該段用來存放標定參數(shù)的RAM 稱為Calibration RAM。標定過程中, 標定軟件修改Calibration RAM 中的參數(shù)值。標定全部結(jié)束后, 再將該段RAM 中的內(nèi)容復制回FLASH 中。

4 軟件設(shè)計

標定系統(tǒng)的軟件設(shè)計主要分為二個部分:CAN Driver 和CCP Driver,而這二個部分都是基于μC/OS-II 這種實時操作系統(tǒng)上運行。由于ECU 這里采用飛思卡爾的MC9S12DP256,因此可以直接應用芯片CAN 模塊提供的接口,發(fā)送CAN 數(shù)據(jù)。CCP Driver 是標定系統(tǒng)的核心部分,它主要是通過調(diào)用CAN Driver 實現(xiàn)與上位機標定軟件的通信,從而進行對ECU的在線標定。

4.1 CAN Driver

在這里我們采用的是μC/OS-II 這種實時操作系統(tǒng),但在標定過程中,我們處理的數(shù)據(jù)量很大,通信速度也很快,CAN 接收到一條消息就產(chǎn)生一次中斷,中斷服務子程序,每次中斷都要引起一次任務調(diào)度。CPU 大量的時間花在任務切換上,若CPU 還需處理其他事件,則可能出現(xiàn)接收緩沖寄存器接收溢出的錯誤,造成數(shù)據(jù)丟失。因此,在這里采用一種基于環(huán)形緩沖區(qū)的方式來實現(xiàn)CAN Driver。整個CAN Driver 由中斷處理程序和底層驅(qū)動模塊組成。中斷處理程序在每次CAN 控制器完成收發(fā)時,喚醒驅(qū)動程序,進行下一步工作,設(shè)備相關(guān)程序通過對CAN 控制器寄存器的讀寫,完成對CAN 端口的配置和狀態(tài)檢測等工作,同時為設(shè)備無關(guān)軟件和用戶程序提供接口。而底層驅(qū)動模塊則主要任務是結(jié)合收發(fā)消息緩沖區(qū),為應用程序提供了接收和發(fā)送消息的接口函數(shù)。

(1)中斷處理程序

中斷級程序的程序流程圖如圖 2 所示。首先根據(jù)不同的中斷類別進入不同的中斷級程序。若為接收完成中斷,則清除中斷源,將接收到的消息放入接收緩沖區(qū);將該消息存入接收緩沖區(qū)存入指針所指向的地址,將該指針向下移動,接收緩沖區(qū)計數(shù)器加1,并發(fā)出信號量通知應用程序有新的消息已經(jīng)接收到,若有任務正在等待CAN 上的新消息,則該任務進入就緒狀態(tài)等待OS 的調(diào)度。

圖2 中斷級程序的程序流程圖

若為發(fā)送完成中斷,則將發(fā)送緩沖區(qū)的待發(fā)送消息讀出;將有待發(fā)送消息且優(yōu)先級最高的一個中讀取最舊的消息,發(fā)送緩沖區(qū)計數(shù)器減1,發(fā)出信號量通知應用程序有一個消息被發(fā)出,并匯報當前發(fā)送緩沖區(qū)的狀態(tài);還應判斷是否為最后一個待發(fā)送的消息,若不是,則清除中斷源并將消息發(fā)送到總線上,若是最后一個,則禁止發(fā)送完成中斷后發(fā)送該消息,將這個發(fā)送完成中斷保留到應用程序下一次發(fā)送消息的時候允許并產(chǎn)生。

(2)底層驅(qū)動模塊

底層驅(qū)動模塊主要是為應用程序提供了接收和發(fā)送消息的接口函數(shù)。當接收消息時,如圖3 實線所示,應用程序在信號量處等待;收到一個消息后,ISR從串行端口讀入消息,將其存入環(huán)狀緩沖區(qū)。然后ISR 發(fā)出信號量,通知在等待串口數(shù)據(jù)的任務已收到一個消息。等待任務收到信號量后,進入就緒狀態(tài),準備被OS 調(diào)度器激活。當內(nèi)核調(diào)度該任務運行時,該任務從環(huán)狀緩沖區(qū)中取出消息,完成接收消息的過程。

圖3 緩沖區(qū)接收發(fā)送消息

發(fā)送消息的方法如圖3 虛線所示。當發(fā)送環(huán)狀緩沖區(qū)已滿時,信號量作為指示,暫停發(fā)送任務。為發(fā)送消息,任務等待信號量。如果環(huán)狀緩沖區(qū)未滿,則任務繼續(xù)向環(huán)狀緩沖區(qū)存儲欲發(fā)送的消息。如果存儲的消息是緩沖區(qū)的第一個字節(jié),則發(fā)送中斷允許,中斷程序準備啟動。CAN 發(fā)送ISR 從環(huán)行緩沖區(qū)中取出最舊的消息,同時發(fā)送信號量,通知發(fā)送任務,表明環(huán)狀緩沖區(qū)有空間接收另外的消息。接著ISR 將消息從CAN 端口發(fā)送到總線上。

4.2 CCP Driver

基于實時操作系統(tǒng)的CCP Driver,標定系統(tǒng)在這里是通過Command 處理機和DAQ 處理機兩部分來實現(xiàn)的。

Command 處理機由一個系統(tǒng)任務來完成。該任務在OS 初始化后就啟動運行,識別CAN 網(wǎng)絡(luò)上的CCP 主設(shè)備發(fā)送給該從設(shè)備的會話命令。根據(jù)命令做相應動作,并回送命令應答,完成會話。DAQ 處理機由1~n 個系統(tǒng)任務來完成。本項目支持對不同時間要求的監(jiān)視參數(shù)設(shè)定不同的DAQ 周期,不同時間要求的監(jiān)視參數(shù)填入不同的DAQ_List,每個DAQ_List 由一個任務完成周期發(fā)送。

Command 處理機在收到主設(shè)備要求啟動某DAQ_List 命令時, 調(diào)用OS 函數(shù)OSTaskCreate()啟動相應的任務,該任務每完成一次發(fā)送就調(diào)用OS 函數(shù)OSTimeDlyHMSM( )掛起一定的時間,這個時間就是主設(shè)備對這個DAQ_List 要求的發(fā)送周期。在收到主設(shè)備要求停止某DAQ_List 命令時,調(diào)用OS 函數(shù)OSTaskDel( )函數(shù)刪除該任務。

(1)Command 處理機

Command 處理機主要是獲取并解讀主設(shè)備的CCP 命令,并執(zhí)行該命令;命令執(zhí)行完成后,向主設(shè)備發(fā)送應答;若執(zhí)行時出錯,應答中向主設(shè)備報錯;若主設(shè)備命令要求對DAQ進行操作,則將該操作傳達給DAQ 處理機,由DAQ 處理機完成DAQ 操作。

Command 處理機由一個RTOS 任務來完成,其示意性代碼如下,GetMsg 函數(shù)為CAN 驅(qū)動程序的接收消息函數(shù),調(diào)用此函數(shù)則等待獲取CAN 端口接收到的消息幀。一旦接收到新的消息幀則函數(shù)返回,用戶可通過&msg_command 獲取該消息幀的內(nèi)容。

void task (void * data) {

for( ; ; ) {

GetMsg(&msg_command); //等待并獲取一個CCP 命令

CCP_Command (&msg_command); //將命令送給CCP 命令處理函數(shù)

}

}

(2)DAQ 處理機

DAQ 處理機的任務是根據(jù)主設(shè)備的需要,定時向CAN 總線上發(fā)送DAQ 數(shù)據(jù)。它由啟動從設(shè)備的DAQ 發(fā)送、停止從設(shè)備的DAQ 發(fā)送、執(zhí)行DAQ 循環(huán)發(fā)送的任務3 個部分構(gòu)成。

啟動或停止從設(shè)備的 DAQ 發(fā)送,由Command 處理機調(diào)用函數(shù)Start_DAQ (DAQ List

number ,)和Stop_DAQ (DAQ List number)來完成,該函數(shù)啟動或停止相應的DAQ 發(fā)送任務,

其示意性代碼如下:

Start_DAQ(INT8U DAQ_List_num) { //啟動第n 個DAQ_List

DAQ_List[n].Started = 1;

DAQ_List[n].Prepared = 1;

OSTaskCreate (第n 個DAQ_List 的任務); //調(diào)用系統(tǒng)函數(shù),創(chuàng)建DAQ 發(fā)送任務,

并使任務進入調(diào)度

}}

Stop_DAQ(INT8U DAQ_List_num) { //停止第n 個DAQ_List

DAQ_List[n].Started = 0;

DAQ_List[n].Prepared = 0;

OSTaskDel (第n 個DAQ_List 的任務); //調(diào)用系統(tǒng)函數(shù),刪除DAQ 發(fā)送任務

}

執(zhí)行DAQ 循環(huán)發(fā)送的任務,需要按照ODT 設(shè)置把DAQ 數(shù)據(jù)發(fā)送到CAN 總線上,同時需要按照DAQ 周期要求循環(huán)執(zhí)行,該任務示意性代碼如下:

void DAQ_task ( ) {

for( ; ; ) {

CCP.Upload(0); //根據(jù)ODT 設(shè)置把DAQ 數(shù)據(jù)發(fā)送到CAN 總線上

OSTimeDlyHMSM(Period); //調(diào)用RTOS 函數(shù),等待一個周期的時間

}

}

5 結(jié)束語

經(jīng)過多次反復不斷的實際調(diào)試,此 CCP 軟件程序在系統(tǒng)上運行穩(wěn)定可靠,實現(xiàn)了基于MC9S12DP256 上的FLASH 區(qū)的標定。

這種采用環(huán)形緩沖區(qū)以及結(jié)合實時操作系統(tǒng)的 CCP 軟件程序設(shè)計,有效的避免在ECU標定過程中數(shù)據(jù)的丟失,并可以對多個ECU 同時進行在線標定,具有很強的實用價值。

責任編輯:gt

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

    關(guān)注

    455

    文章

    50714

    瀏覽量

    423132
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16332

    瀏覽量

    177803
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6801

    瀏覽量

    123283
收藏 人收藏

    評論

    相關(guān)推薦

    嵌入式實時操作系統(tǒng)μC/OS-IIS12單片機上的移植

    實現(xiàn)了μC/OS-II操作系統(tǒng)在MC9S12DG128上的移植。通過μC/OS-II
    發(fā)表于 03-08 13:44

    μC/OS-II是什么?μC/OS-II有哪些應用?

    μC/OS-II的原理是什么?如何去改進μC/OS-II的調(diào)度算法?μC/OS-II有哪些應用?
    發(fā)表于 04-26 07:17

    如何實現(xiàn)μC/OS-II系統(tǒng)的移植?

    如何實現(xiàn)μC/OS-II系統(tǒng)的移植?
    發(fā)表于 04-28 06:01

    MC9S12DP256具有哪些功能特點應用?

    MC9S12DP256的功能特點是什么?MC9S12DP256在汽車電子中的應用是什么?
    發(fā)表于 05-17 06:48

    基于μC/OS-II的嵌入式音頻系統(tǒng)設(shè)計

    基于μC/OS-II的嵌入式音頻系統(tǒng)設(shè)計 Design of Embedded Audio Frequency System Based on μC/OS-II
    發(fā)表于 03-16 11:10 ?19次下載

    汽車ECU標定系統(tǒng)CCP 軟件實現(xiàn)

    摘要:CCP 協(xié)議是一種CAN 總線標定匹配協(xié)議。本文簡單介紹該協(xié)議的基本原理,以及一種基于該協(xié)議的汽車ECU 標定系統(tǒng)的實現(xiàn)方法。最后,結(jié)合MC9S12DP256 芯片以及μ
    發(fā)表于 05-16 20:10 ?47次下載
    汽車ECU標定系統(tǒng)<b class='flag-5'>CCP</b> <b class='flag-5'>軟件</b>的<b class='flag-5'>實現(xiàn)</b>

    μC/OS-II在PC機上移植的設(shè)計與實現(xiàn)

    本文介紹了μC/OS-II移植到PC機上的過程,使μC/OS-II應用系統(tǒng)程序在PC機上脫離DOS或Windows環(huán)境運行。著重介紹了Bootloader引導程序和EXE程序啟動代碼的
    發(fā)表于 09-02 08:51 ?14次下載

    HCS12微控制器MC9S12DP256使用指南 ppt

    HCS12微控制器MC9S12DP256 第一步: 1) HCS12 技術(shù)概述2) Operating Modes工作模式3) Resource  Mapping資源映射4) External Bus Interf
    發(fā)表于 01-11 18:00 ?79次下載

    基于MC9S12DP256的AMT系統(tǒng)的設(shè)計

    AMT(機械式自動變速器)是在機械式變速器的基礎(chǔ)上發(fā)展起來的一種自動變速器,文章對其工作原理及結(jié)構(gòu)組成進行了簡要介紹,并且完成了以MC9S12DP256微控制器為核心的電子控
    發(fā)表于 07-13 17:44 ?47次下載

    μC/OS-IIS3C44BOX處理器上的移植

     摘要:介紹實時操作系統(tǒng)μC/OS-II的特點和內(nèi)核結(jié)構(gòu),給出μC/OS-II在Samsung嵌入式S3C44BOX ARM7
    發(fā)表于 03-11 12:39 ?1318次閱讀
    μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-II</b>在<b class='flag-5'>S3C</b>44BOX處理器上的移植

    基于MC9S12DP256的轎車ABS/ASR集成控制系統(tǒng)

    ]摘 要:介紹了基于Motorola公司新一代HSC12系列16位MCU——MC9S12DP256微處理器開發(fā)的轎車ABS/ASR集成
    發(fā)表于 04-15 16:35 ?776次閱讀
    基于<b class='flag-5'>MC9S12DP256</b>的轎車ABS/ASR集成控制系統(tǒng)

    μC/OS-II在EP7312上的移植

    μC/OS-II在EP7312上的移植首先介紹μC/OS-II操作系統(tǒng)的特點,重點分析μC/OS-II
    發(fā)表于 06-16 11:24 ?1143次閱讀
    μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-II</b>在EP7312上的移植

    縮短實時操作系統(tǒng)μC/OS-II中斷關(guān)閉時間的方法

    該方面的實現(xiàn),提高了μC/OS-II的性能,擴大了μC/OS-II的應用范圍,使得單邊及工程師能更好的利用μ
    發(fā)表于 05-06 11:43 ?1161次閱讀
    縮短實時操作系統(tǒng)μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-II</b>中斷關(guān)閉時間的方法

    基于MC9S12DP256 微處理器的轎車集成電控系統(tǒng)

    本文論述了基于 MC9S12DP256 微處理器開發(fā)的轎車 ABS/ASR/ACC 集成電控系統(tǒng)。進行了 ABS、ASR、ACC 控制系統(tǒng)集成的嘗試,著重描述了如何實現(xiàn)電子控制單元中硬件電路和軟件
    發(fā)表于 09-08 14:40 ?10次下載
    基于<b class='flag-5'>MC9S12DP256</b> 微處理器的轎車集成電控系統(tǒng)

    摩托羅拉MC9S12DP256單片機結(jié)構(gòu)、功能特點及在汽車領(lǐng)域的應用分析

    介紹了摩托羅拉16位單片機MC9S12DP256的結(jié)構(gòu)、特點及其區(qū)別于其它單片機的優(yōu)勢。通過MC0S12DP256在汽車電子門控汽車電子系統(tǒng)的應用實例,簡單介紹了MC9S12DP256單片機在汽車電子領(lǐng)域的應用方法。
    發(fā)表于 04-06 10:37 ?3875次閱讀
    摩托羅拉<b class='flag-5'>MC9S12DP256</b>單片機結(jié)構(gòu)、功能特點及在汽車領(lǐng)域的應用分析
    RM新时代网站-首页