① 如何進行汽車CAN匯流排開發
接上一篇:
我們先研究數據幀吧。
一,數據幀由7 個不同位場組成(幀起始、仲裁場、控制場、數據場、CRC場、應答場、幀結尾)。
這里的位場,就是不同位的組合,這名字起的很爛,讓人看了感覺很抽象。我們來看看這些個不同的位場吧。一開始是一位幀起始,也叫SOF。它用顯性位表示,也就是0;它告訴我們,兩個線上有電壓差了,也就是有數據了。
這個幀起始看起來只有一位,其實不簡單了。為了讓所有的分站都同步於發送報文的發送站,好接收數據,有很多要考慮的地方。
幀結尾
每一個數據幀和遠程幀均由一標志序列界定。這個標志序列由7個「隱性」位組成。
② 如何進行汽車 CAN 匯流排開發
首先,請看這份恆潤工程師寫的論文《CAN匯流排系統測試技術》。
裡面基本描述了CAN匯流排開發的流程,但主要側重於CAN匯流排的測試,不過也能讓你有所了解。
根據你的描述,假設你的要求是:能夠基於某嵌入式平台(最好該平台在汽車ECU開發中被廣泛使用),根據給定的通信協議(一般由通信矩陣描述),編寫CAN介面代碼,並能通過相關設備進行簡單測試。
推薦的學習步驟為:
1. 了解CAN基本知識
可以通過這個ppt,恆潤的東西還是不錯的。
CAN基礎_網路文庫
2. 直觀的了解CAN
這需要你購買或借用CAN匯流排檢測設備,檔次差很多。如果是你自己想玩,可以買個周立功的USB轉CAN,淘寶也就幾百塊錢。如果是課題組采購,可以買個Kvaser的USBCAN,幾千塊吧。大致這個樣子。
要是土豪的話,可以買Vector的VN1600,這個就好幾萬了。以上三種我都用過。一定要買雙通道,然後一個口發,一個口接,可以自己接延長線通過示波器看信號了。嘗試修改報文ID,數據,波特率等等,看示波器的變化,對理解第一部分的內容很有幫助
3. 選擇嵌入式平台,學習CAN介面的編程
飛思卡爾MC9S08DZ60MLH 8位汽車級CAN匯流排 開發板 學習板超
可以選擇這個小板子練習一下,程序的寫法都是差不多的。然後和第二部分的匯流排檢測設備連在一起進行測試。
這一步需要詳細了解信號轉換的知識,特別是Big Endian和Little Endian的區別,factor和offset的作用,如何置1或置0,可以參考DBC_File_Format_DocumentaTIon_網路文庫,很詳細,看完就懂了。
4. 如果有興趣,可以看看J1939協議(用於商用車)或者CANOpen協議(用於現場控制,很多電機控制器使用)或者ISO 15031-5(用於OBD診斷)。
最後,希望你在了解CAN以後,不要花過多的精力在底層上,基本都是體力勞動。體現價值的還得是上層。請看看一汽技術中心的相關招聘要求:
工作職責
1.設計新能源汽車網路拓撲和制定網路技術需求;
2.制定新能源汽車網路通信需求、網路通信矩陣和網路資料庫;
3.設計和開發新能源汽車網路通信協議模擬試驗、網路通信規范、網路線束規范;
4.設計新能源汽車網關控制器及具有相同網路通信功能的介面控制器產品定義與技術規范;
5.負責新能源汽車電子電氣開發過程中的問題解決,配合生產和售後服務。來源:知乎 作者:Wang Yu