CAN匯流排資料演算法

2021-08-28 03:11:56 字數 847 閱讀 5069

之前學過一些c語言和彙編,了解過二進位制機器碼,未進行過多的應用。去年做了一年的開發,有些資料演算法得用到16進製制轉化為二進位制或轉化成10進製。根據自己的經驗總結下演算法。

二進位制比較簡單的記憶為8,4,2,1。8=2^3;4=2^2;2=2^0;1=2^0。

16進製制數,乙個位元組(byte)為8位。例如:0x30=0011

0000。由上面的演算法,分開看二進位制資料高四位結果m=0+0+2^1+2^0=3;後四位為l=0*2^3+0*2^2+0*2^1+0*2^0=0。所以可以得到n=0011

0000=0x30。

16進製制數,轉化成10進製數。如上例中的0x30轉化為10進製k=3*16^1=48;0xff=15*16^1+15*16^0=255。

在汽車軟體開發過程中,演算法也是很必要的。現在大多數車輛的通訊協議為canbus匯流排協議,在can匯流排協議演算法進行編譯的時候採用二進位制,但是在解析的過程中,比較直觀的還是10進製或者是16進製演算法。

之前接觸過最多的是十六進製制演算法應用在「各種狀態」,10進製演算法應用在「動力系統」方面。之後又看到過一些關於can匯流排演算法參照位元順序。在下面一一敘述自己的看法。

位元順序

節氣門位置

0000 0000

節氣門開啟角0.0°

0000 0001

節氣門開啟角0.4°

0000 0010

節氣門開啟角0.8°

.....

1111 1111 

節氣門開啟角102.0°

名稱演算法

方向盤扭矩

(0*256+1*1)*0.01

在can匯流排資料的運算過程中,都是機器碼二進位制轉換而來,有時候寫成這種格式比較簡單,淺顯易懂。

CAN匯流排傳送資料

transmitmailbox can transmit can1,txmessage 傳送資料 while can transmitstatus can1,transmitmailbox cantxok 等待資料傳送完成 uint8 t can transmit can typedef canx,...

can匯流排學習(一) 初識can匯流排

can匯流排最初由德國bosch公司為汽車檢測 控制系統而設計的。1993年can成為國際標準iso11898 高速應用 和iso1119 低速應用 can的規範從can1.2規範 標準格式 發展為相容can1.2規範的can2.0規範 can2.0a為標準格式,can2.0b為擴充套件格式 目前應...

CAN匯流排學習資料總結

can 低層或稱硬體 協議僅僅定義了第 1 層 物理層 和第 2 層 資料鏈路層 can匯流排簡明易懂教程 講得不錯 can匯流排簡明易懂教程 一 can匯流排簡明易懂教程 二 can匯流排簡明易懂教程 三 深入淺出 通俗易懂的講解can bus 講解比較通俗易懂 基於stm32的can匯流排通訊學...