硬體介紹 要玩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...
留言