CAN總線功能介紹
CAN總線是博世公司1986年發(fā)明的用于汽車內(nèi)部單片機電路板(ECU)之間通訊,硬件上使用2根線實現(xiàn)數(shù)據(jù)傳輸,CAN總線通訊單元不再是單個字節(jié),而是一個數(shù)據(jù)包,這個數(shù)據(jù)包包含了數(shù)據(jù)長度,數(shù)據(jù)內(nèi)容,目的地址ID,CRC校驗等,相較于485,232通訊數(shù)據(jù)的組包是在軟件實現(xiàn)的,CAN總線是硬件實現(xiàn),編程時只要設置相關的參數(shù)即可.目前在車載通訊和工業(yè)通訊都使用的比較多.主要功能有:
- 不大于8字節(jié)應用報文實時通訊:控制燈光開關,天窗開關,空調(diào)控制等,涉及到具體的模塊的實際業(yè)務邏輯
- 大于8字節(jié)的長報文通訊:讀取故障碼,軟件版本,OTA等
Lua簡介
Lua是一個文本腳本語言,1993年巴西人發(fā)明的,能嵌入到C,C++執(zhí)行,即可以調(diào)用C/C++的函數(shù),目前在游戲行業(yè)用的比較多.
C/C++為什么需要腳本語言
C/C++代碼運行的時候已經(jīng)由編譯器編譯成了二進制的機器碼了,執(zhí)行速度快.公司項目需求變化快,類似項目超級多,不同項目的核心功能基本不變的,只是業(yè)務邏輯的變化.如果全部用C/C++實現(xiàn),一方面軟件版本過多,不好維護。另一方面架構做的不夠好時可能會造成改一個小功能,會造成核心代碼修改.然而采用C/C++加腳本的架構實現(xiàn)有如下優(yōu)勢:
- C/C++實現(xiàn)核心功,框架搭建,腳本負責業(yè)務邏輯(C/C++的不同函數(shù)組合),設計之初就是朝著模型和業(yè)務分離的實現(xiàn),自然地實現(xiàn)高內(nèi)聚低耦合的架構。
- 便于團隊分工,新員工比較快熟悉業(yè)務.
為什么是Lua
目前最火的腳本語言是Python,對此Lua有如下優(yōu)點:
- Lua移植簡單:Lua編譯器是用標準C寫的,比較容易集成到不同的編譯器(Keil,gcc,qt等)。不像什么MicroPython只支持GCC編譯器.
- 開銷小:一般的Cortex M0及以上單片機都可以移植Lua編譯,還有很大的一部分空間和時間運行C代碼.
- 干凈:不像Python運行還要安裝其它的環(huán)境,Lua是寄宿在C/C++中的,不需要安裝。
- 容易上手,學習成本幾乎為零.只要公司開發(fā)個Demo,新人參考Demo就可以直接寫Lua代碼.
CAN用Lua做什么 - 自動化測試:C/C++提供發(fā)送接收報文 延時等函數(shù)接口,Lua組合發(fā)送不同的報文以及時序來驗證ECU的各個功能是否正確,然后生成測試報告以及保存相關的通訊報文記錄。
- OTA升級:現(xiàn)在新能源汽車的每個ECU都支持OTA功能,通訊組包使用ISO 15765-2協(xié)議實現(xiàn),每個汽車主機廠都是一樣的,只是安全訪問 順序可能有些差別.就像ZLG ZCAN Pro,CANOE都支持用戶開發(fā)升級功能。ZLG的方式是:使用Dll實現(xiàn),需要使用 VStudio,學習成本高.CANOE的方式是:他們自己弄了一套CAPL腳本語言,公司沒有強大的實力是搞不出來的,這也是CANOE貴的原因之一吧!使用Lua的話,C/C++實現(xiàn)ISO 15765-2,HEX文件的解析和分割.Lua是調(diào)用發(fā)送接收接口,HEX文件讀取,安全訪問的密鑰計算等.
Demo
C/C++的接口暴露給LUA:
lua_State* L;
static const struct luaL_Reg Iterface[]
{
{"send_data",LSendData}, //腳本里調(diào)用send_data字符串就可以調(diào)用到LSendData函數(shù)
{"get_rx_data",LGetRxData},
{"print",LPrint},
{"delay",LDelay},
{0,0},
};
void Lua_Init()
{
L = luaL_newstate();
luaopen_base(L);
luaL_setfuncs(L,Iterface,0);
}
Lua腳本業(yè)務代碼
print('ECU功能測試')
--發(fā)送一幀數(shù)據(jù)喚醒單片機
send_data(0x431,0x30,0x32)
--延時50ms
delay(50)
--開天窗
send_data(0x38A,0x1)
delay(5000)
--關天窗
send_data(0x38A,0x1)
--ECU復位
send_data(0x880,0x11,0x1,0x67)
總結
Lua之于CAN就像html和英特網(wǎng)的關系一樣,在新能源汽車發(fā)展如火如荼的今天,CAN的應用也越來越多,都有OTA升級的要求,Lua不僅在基于CAN系統(tǒng)的測試,升級方面也能夠有自己的一席用武之地,在其它的Modbus之類的標準通訊也是可以使用Lua的.
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
CAN總線
+關注
關注
146文章
2050瀏覽量
135468 -
工業(yè)通訊
+關注
關注
0文章
99瀏覽量
11972 -
車載通訊
+關注
關注
0文章
11瀏覽量
7491
發(fā)布評論請先 登錄
相關推薦
熱點推薦
什么是CAN總線 CAN總線有什么作用
對多點及全局廣播等幾種方式傳送數(shù)據(jù),無需專門的調(diào)度。? CAN 總線的數(shù)據(jù)采用短幀結構,傳輸時間短,受干擾概率低,具有極好的檢錯效果。? CAN 總線采用 CRC 檢驗并可提供相應的錯
發(fā)表于 12-13 14:26
CAN總線協(xié)議是什么?CAN總線協(xié)議有哪些?CAN總線協(xié)議知識分析
屬于軟件協(xié)議。本篇文章先概述一下CAN網(wǎng)絡,讓大家對CAN總線協(xié)議有一個全局的概念,再到底層的CAN總線
CAN總線協(xié)議教程|CAN報文分析
功能,讓每個節(jié)點對報文有選擇性地做出響應。 總線使用不歸零位填充。模塊以線與邏輯連接到總線:如果只有一個節(jié)點向總線傳輸邏輯0,那么不管有多少
發(fā)表于 04-03 15:32
?1.5w次閱讀
CAN總線的優(yōu)點和應用領域有哪些
canbus光纖轉換器是一種CAN總線網(wǎng)關,也就是實現(xiàn)CAN總線數(shù)據(jù)與其他數(shù)據(jù)之間相互轉換的工具。為什么工程師們要開發(fā)這個東西呢?因為CAN
基于FPGA的CAN總線通信節(jié)點設計
節(jié)點的硬件接口電路?;趯?b class='flag-5'>CAN 總線控制器的功能分析, 并應用Verilog語言進行軟件設計, 從而實現(xiàn)CAN節(jié)點之間的通信功能。 0 引
認識CAN總線錯誤 CAN總線錯誤分析與解決
認識CAN 總線錯誤的第一步就是了解認識CAN 總線協(xié)議和它的具體功能,這樣才能更容易地理解CAN
發(fā)表于 08-14 15:18
?9571次閱讀
can總線的故障波形有哪些
詳細介紹CAN總線的故障波形及其原因和解決方法。 故障波形概述 故障波形是指在CAN總線通信過程中,由于各種原因導致的數(shù)據(jù)傳輸異常。故障波形的類型有
CAN總線測試工具的主要功能
CAN總線測試工具是用于測試CAN(Controller Area Network)總線通信的軟件或硬件工具,其功能豐富且多樣化。以下是
CAN總線的擴展功能及其應用
CAN總線以其高可靠性、實時性和靈活性在現(xiàn)代電子系統(tǒng)中扮演著重要角色。隨著技術的發(fā)展,CAN總線也在不斷擴展其功能,以適應更廣泛的應用需求。
CAN總線有哪些功能?
評論