ELM327 OBD-II 心得 (5) ,CAN BUS塞了爛裝置會怎樣
上一篇 我描述Pi-WIRE怎麼發動中間人攻擊。這篇我想聊一下製作過程踩到的坑,分析在CANBUS掛上爛東西會怎樣。用這個故事分析OBD-II Dongle(ELM327,HUD抬頭顯示器)究竟能不能用,或著注意事項 我買了4個CANBUS收發模組,每片樹莓派都放WaveShare + Niren混搭。能省則省,所以我去淘寶都找便宜的買 WaveShare RS485 CAN HAT * 2 Niren MCP2515 CAN Module * 2 貪便宜模組 用已經會動的東西(ELM327)驗證不會動的東西(Pi-CAR)是重要的技巧。樹莓派接上 貪便宜模組 ,很快就碰壁了: 長封包必死 ELM327送0902,其實會送滿8bytes:09 02 00 00 00 00 00 00 可以下ATCAF0讓ELM327不要塞滿8byte,變成短封包 短封包也不一定活 有時候一次OK 有時候會重傳 有時候就死掉了! 拿示波器查問題,檢查CAN-H信號並開了反向(inverse)。下圖包括第一次傳送,錯誤禎(Error Frame),第二次傳送 第一次傳送,ELM327送出0902 具體會送出0x7E8 [2] 0x09 0x02 0x7E8是工業規格,ISO 15765制定的要和CANBUS當好朋友都要從這裡開始 我手算過CANBUS信號,Bit stuffing是其中的眉角 Bit stuffing:連續5個0會安插一個1;連續5個1會安插一個0 錯誤禎, 貪便宜模組自我感覺不良好,要社會大眾等他 整個CANBUS停了40us ELM327等錯誤幀過了,重送一次,最後 貪便宜模組 給了回應,完成傳輸 貪便宜模組 錯在哪裡?原來是石英震盪器不準,標示8M實際7.77Mhz!真的會吐血!便宜沒好貨,買開發工具回來修理我也是醉了。買新的16Mhz震盪器,修好 貪便宜模組 順便提升性能 親身體驗爛東西掛上CANBUS觸發錯誤禎與重傳機制也是種學習: CANBUS上每個人都要監聽封包,是自己的就收下,不然丟掉 貪便宜模組 因為clock錯了,自我感覺不好,送出Error Frame 整個CANBUS喪失40us 如果每次 貪便宜模組