玩CAN bus的傢伙們 (4) 修理USB-CAN Dongle
下面介紹的裝置,我前後在淘寶買了10個,最近遇到問題了 玩CAN bus的傢伙們 (1) CandleLight-based USB-CAN 下圖是UDS通訊的封包,第一個byte(游標處)應該是照順序0123456789ABCDEF,但是下圖的順序就錯了,22/2E/23/2F/20/21。這讓封包分析極困難,還得用手排過才能看 問題能用下面指令重現,讓數值依序上升,有跳號容易看得出來 cangen can0 -I 726 -L 8 -D i -g 1 所以接下來要修韌體bug,以下操作都在RPi裡面操作 首先用git抓codebase回來 git clone https://github.com/candle-usb/candleLight_fw 編輯source code,設定CAN transceiver的S-PIN和LED-PIN到正確的位置 Edit candleLight_fw/include/config.h S-PIN沒有正確拉low,那麼TX不會啟動,無法送封包 LED沒正確配置,收到封包LED不會閃爍 我拿電錶測量IC-pin和這些接點,找到對的連結 編譯軟體,這裡是從github文件抄出來,如果成功,candleLight_fw.bin會出現在目錄下 mkdir build cd build cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/gcc-arm-none-eabi-8-2019-q3-update.cmake make candleLight_fw 燒錄軟體,把boot-pin從12切到23,插拔USB讓MCU進入DFU(Device FW Update),正確的話,Linux執行dmesg會跳出下面訊息。關鍵數字0483/df11,這是STM32的DFU模式標準編號 先用apt-get安裝dfu-util,韌體更新工具。這些工具一般會保護韌體,先用以下命令解開。操作前先注意:這個命令會洗掉本來的韌體喔... dfu-util -s 0:force:unprotect -a 0 -D candleLight_fw.bin 韌體保護解開,用以下命令就能燒錄軟體,不用手工操作dfu-uitil make flash-candleLight_fw 最後把boot-pin從23裝回12,插拔U...