發表文章

目前顯示的是有「CAN bus」標籤的文章

文章總列表

玩CAN bus的傢伙們 (3) PEAK-CAN

圖片
前言 之前偶然看到 PEAK CAN 的解決方案,價格貴了不少,但是整套工具看來就閃閃發光 PEAK解決方案分析 這些硬體大概也是顆MCU加上CAN Transceiver,但我們相信PEAK品質好(起碼人家不是焊幾根線就上) 可能用比較好的MCU,可以在內部存更深的封包,避免掉資料  賣得時間夠長,有很多人踩過坑,品質比較穩定 軟體的差異我覺得就非常巨大了!下面的網頁是PCAN產品Download頁面所有項目。有很多問題Peak已經解過了,他們也提供API讓客人呼叫,能加快開發速度 這套PCAN-View的品質就更不用說了 一套PEAK軟硬體賣200歐元,我覺得物有所值。畢竟我們是使用工具解決問題,而不是解決工具的問題 One More Thing... 俄羅斯人照 PCAN Linux driver 編寫韌體,編譯完參考 製作candlelight ,燒進去就識別成PCAN PCAN USB (STM32F0) https://github.com/moonglow/pcan_cantact PCAN USB PRO (STM32F4) https://github.com/moonglow/pcan_pro_x

玩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程式,操...

玩CAN bus的傢伙們 (1) CandleLight-based USB-CAN

圖片
硬體介紹 要玩CAN bus,準備一條USB-CAN的線,搭配一台筆電就能樂無窮,我們就從這條線講起。這條線的檔次變化很大,這篇先從[最便宜]的版本說起 這上面其實就是兩樣東西 MCU:  STM32F042x6 or STM32F072RB CAN Transceiver:  NXP TJA1051/3 簡單看一下MCU的block diagram,關鍵是圖上紅框的CAN和USB介面,完成介面的轉換。我愛用的STM32 F103 C8T6也有這兩個介面,但是USB/CAN不能同時開;倒是比較低階的F0就沒這個限制 這東西的結構簡單,其實網路上很多來源都買得到這個硬體 https://github.com/HubertD/candleLight https://wiki.linklayer.com/index.php/CANtact https://canable.io/ TAOBAO 想要自己做可以參考這個 線路圖 ,很簡單 韌體介紹 最早Geschwister Schneider Technologie生產USB-CAN裝置(以下簡稱gs_usb),他的 Linux kernel driver 已經合入公版,各大Linux版本可以直接使用。驅動程式揭漏gs_usb通訊協定,於是有高手仿照通訊協定寫了 CandleLight FW ,燒入MCU後,電腦就認為這是gs_usb! 分析一下FW的效能,這些介面轉換的東西,不掉封包是基本的需求。STM32F0的記憶體不大,只有16K,他的source code宣告QUEUE深度是64層 假設我們的封包都是8byte放到滿(沒放到滿時case,狀況更差了),不同CAN bus速度能承受的時間如下 1000Kbps, 1us per bit, ~100bit per packet = 100us, 64x = 6.4ms 500Kbps, 2us per bit, ~100bit per packet = 200us, 64x = 12.8ms 125Kbps, 8us per bit, ~100bit per packet = 800us, 64x = 25.6ms USB是主機主機端定期詢問裝置是否有封包要傳送,如果電腦USB很忙,比如正在傳輸檔案,能分到的頻寬就變少;或是CAN bus很滿,buff...