玩CAN bus的傢伙們 (2) CandleLight-based USB-CAN DIY
前言
我的CandleLight USB-CAN都是TAOBAO買,最早賣39RMB,後來就漲價到89RMB,早知道就多屯一些在手邊。動心起念DIY除了省錢,另一個是掌握STM32F0系列MCU開發,畢竟這款才能同時開CAN和USB
硬體材料
- STM32F072最小開發版,一樣是買核心版,這個很好找
- CAN Transceiver board
- 麵包版
- OBD2連接器
核心版和我愛用的STM32F103C8T6線路完全一樣,只是MCU換成STM32F072C8T6;然後CAN Transceiver我隨便拿顆手邊5v的來用;講究一點要用TJA1051/3內含level shifter,可以把電壓轉3.3v和MCU對接;只是我手邊沒有就隨便拿一顆用,實測沒問題,原因如下:
- CAN-TX pin,收發IC內部有5v pull-up,MCU就算輸出3.3v也沒事
- CAN-RX pin,MCU本來就是5v tolerant,所以灌進來也不會有事
PCB比對 & 製作硬體
比對candleLight和核心版線路圖是苦功,答案奉上:只要PB8/PB9接上CAN Transceiver即可;OBD2連接器一般是接PIN6/14,這是汽車標準的CAN bus接口
- CandleLight線路圖
- 核心板線路圖
- 製作結果,4條線從主板到小板子,2條線從小板到OBD2連接器
準備韌體 & 燒錄
這個流程我操作過很多次,寫Blog順便好好記錄下來:
- 找一台Linux(我用Raspberry Pi)照著CandleLight FW的說明建構韌體。Codebase能支援不同板子(參考config.h),可以直接打make把所有韌體都build出來。只有candlelight_FW用STM32F072,我用這版韌體
- 抓STM32-DFU工具安裝,DFU是Device FW Upgrade縮寫
- 核心版斷電,調boot0設high上電啟動STM32 bootloader;驅動程式在C:\Program Files (x86)\STMicroelectronics\Software\DfuSe v3.0.6\Bin\Driver
- 執行DFU manager把步驟一的candlelight_fw.bin轉成DFU file,操作參考下面圖片
- 然後跑DfuDeDemo程式,操作如下圖,把韌體燒進去
- 把核心版斷電,boot0重新放回low再上電,電腦重新看到candleLight裝置,製作完成。可以開始使用
留言