CCP淺談


說明


  • 如果想詳細了解CCP,可以下載AN-AMC-1-102_Introduction_to_CCP.pdf或者ccp211.pdf
  • 本文不涉及到專業的知識講解,如果想查看更加專業的知識可以選擇看完以上任意一個文檔。這里旨在用通俗易懂的文字描述。

CCP簡介

CCP(CAN Calibration Protocol),中文:CAN標定協議,顧名思義就是基於CAN總線的一種應用層協議。

  • 以下是網絡的標准版解釋:
    CCP是一種基於CAN總線的ECU標定協議,已經在許多歐美汽車廠商得到應用,采用CCP協議可以快速有效地實現對汽車電控單元的標定。
  • 以下是我的理解:CCP協議就是一種基於CAN通信的協議,類似於UDS協議,均是基於CAN報文來傳輸數據,不能脫離CAN報文的限制。

CCP can do this...

  • Read
    • RAM
    • PORTS
    • ROM
    • FLASH
  • Write
    • RAM
    • PORTS
    • FLASH

CCP 通信

基於CCP協議的ECU標定,是采用主-從通信方式。大體的可以簡化為如下的幾步:

  • 選擇哪一個從機進行連接
  • 選擇控制方式
  • 接收數據
  • 斷開連接

CCP 報文

CCP有如下兩種報文

  • CRO: Command Receive Object , 即命令接收對象
  • DTO: Data Transmission Object,數據傳輸對象。

聯想到是主-從通信模式,所以很好的CRO就是命令,DTO就是報告的消息了。詳情可參考圖片:

CCP 工作模式

CCP有兩種工作模式:

  • Polling(查詢模式):你一問,我一答。
  • DAQ(Data Acquisition)模式:可以理解為托管,即主機設定好相關的傳輸規則(后續會說),從機根據該規則進行自動的發送消息。
  • 詳細可參考該圖:

CCP 報文幀格式

由於是基於CAN總線協議的,所以逃不開這些東西,所以,CAN ID是必須要的。那么對於CCP本身,有用的部分就是數據場,即一個8個Byte的數組。鑒於UDS也是基於CAN的應用程序協議,並且其有多幀傳輸的功能,着重說明,CCP是一幀一幀發送的。不存在拼接兩個幀數據的情況。
對於CCP報文格式,分兩部分進行說明。

CRO

Command + CTR + Data

  • Command: 就是一些列的命令標號了,這個是人為規定的,就是協議定為多少就是多少。
  • CTR:Counter就是一個計數用的。
    • 所以,一個有效的命令參數位為6位,那么6位能夠表示什么?后面就會知道了。

DTO

其格式為:

上面說了,ECU回復的消息有兩種,這里添加一種錯誤處理。即可以回復信息的種類為3種:

  • CRM : Command Return Message
    • 對命令的直接回答
  • Event Message
    • 檢測到自身錯誤的一種事件型消息
  • Data Acquisition Message
    • 從設備自動上傳的一種消息

既然DTO自由一個ID,那么如何區分是是屬於那種信息?當然不同的協議有不同的判斷標准。CCP是利用第一個數據即一個Byte來判斷的。

  • 0xFF:CRM
  • Event:0xFE
  • 其他的就是DAQ的。后面會談這個是如何實現的。

DAQ List

什么是DAQ List?就是從設備支持的DAQ的上傳表,至於上傳表里面有哪些元素?元素的屬性是什么?這個就需要慢慢了解了。

DAQ屬性

為什么需要划分DAQ?在ECU中對CAN信號有一個周期處理的概念,這里就是通過對標定數據的采樣和上傳周期來區分是那個DAQ的,可以理解為:同一個DAQ,采樣和上傳的周期是一樣的。

周期又是如何確定的?

這就涉及到兩個名詞:Event Channel事件通道和prescaler預分頻值。
事件通道可以理解為:每多少ms,ECU打通一次該通道,或者說觸發一次。如果是10ms,表明ECU每10ms觸發一次該事件。
預分頻值可以理解為:我們以事件通道的時間為基准進行分頻,這樣就可以復用事件通道了。即如果20ms的周期進行上傳,預分頻值設定為2.如果是50ms的周期進行上傳,預分頻值設置為5就可以了。

DAQ包含元素

通過了解,CCP只能通過單幀進行數據/命令傳輸,所以,對消息的組織有一定的要求,拋開一些附帶的解析符和驗證符以外,能夠表示信息實在有限。故,一條報文就簡單的表示一個信息。在一個DAQ中,包含有多個ODT,我們可以稱其為ODT列表。那么這個ODT列表是做什么的?

ODT列表

每一個DAQ是通過ODT來組成的。那么ODT又是什么?就是傳輸數據的基本信息框架。
我們知道,一個DAQ-DTO傳輸的數據是7Byte,那么這7個數據記錄在哪里?主機如何知道當前pid所帶的信息對應到的是哪一個數據?那么,這里就需要借助ODT了。

  • 元素
  • 地址
  • 數據長度
    那么,一個ODT里面最多有7個元素,一個ODT中所有元素的數據長度最多為7Byte。因為再多的話,一個PID就封裝不進去了。(如果有壓縮算法的話)

以上關於DAQ list相關的說明,可以參考下面的圖來進行理解:

這里為什么每個PID里面有7個元素,因為很多情況下,限定了每個元素的數據長度為1,所以一個ODT正好可以放入7個數據元素。

ODT個數

通過PID知道,ECU支持的最大的ODT列表的個數是有限制的。0x00-0xFD,當然,如果想支持多一點也是沒有問題的。那就只能修改協議了。比如,當pid為0x00的時候,需要根據第二位來判斷上傳的是什么數據,即pid[2]!

MTA

英文全稱 :Memory Transfer Address
其中存在兩個,即MTA0,MTA1.

  • MTA0:可以理解為,主地址,即CCP主要通過該地址來查詢/操作數據。
  • MTA1:可以理解為輔助地址,即只有在特定的情況下,用來臨時代替/輔助MTA0進行數據捕獲/操作的。

值得注意的是,MTA0一般都會隨着命令的執行而自動定位在執行以后的地方,除非特殊情況。詳細的請參考具體的Command.

錯誤處理

在錯誤代碼上有幾個等級。

  • C0:警告
  • C1:偽錯誤
  • C2:可修復錯誤
  • C3:不可修復

在CCP里面具體定義了幾種等級的所屬范圍。我覺得有點像學校的校規:記小過,記大過,警告,通報批評,開除等等。

ASAP

ASAP有3種,名字起的也是夠隨意,直接用1,2,3來標定。

  • ASAP1
    • MCD-ECU之間的接口規范
  • ASAP2
    • ASAP描述文件,是電子控制單元內部數據的描述文件。簡單一點就是,這個變量在ECU里面的地址是多少,單位是多少,怎么換算得來的等等。不然,只有一堆的數字而沒有解析數據的規則是沒有一點意義的。
  • ASAP3
    • 自動測試系統-MCD之間的接口規范

命令

這里不主要說命令,但會說一些。

  • 解鎖
    • 很多功能都需要解鎖才能使用。不然,對於ECU來說,這就是控制成本和控制銷售價格的好方法。當然,這里主要是做保護,總不能讓你什么都可以更改吧。
  • 數據1-5傳輸和固定6傳輸
    • 對於傳送數據在1-5之間的話,需要有個變量來表明當前一幀報文到底傳送了多少個數據。
    • 對於固定傳輸6個數據的話,很顯然是沒有必要有上面的變量的。
    • 協議
  • 設置DAQ列表
    • 涉及到設置DAQ指針。
    • ODT信息配置等,后續程序里面會涉及的多一些。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM