VOLVO+開發故事 (7),向您介紹我的產品!! 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 12月 06, 2019 第二片電路板拔掉不必要的設計,送去PCB打件(手焊的觀感不好)。我給產品命名為Volvo+,給車子增加新功能;絲印有我的書房名字(QQM Lab),以及我一直想養的貓 30片PCB排在一起有點密集恐懼症 試做幾個看看 真的會動沒問題 產品的主頁在此,有興趣請參考 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 留言 James Lin寫道… 如何購買volvo s60 2022的怠速熄火取消開關,回覆請給james19591958@gmail.com 謝謝您。
STM32 UART + DMA,使用HAL實作TX/RX,以及不定長度接收 3月 01, 2021 前言 我一般用Segger-RTT來debug。不過這東西也有限制,比如MCU進出sleep mode,他的data stream就會斷掉,也是不方便 http://lihgong.blogspot.com/2016/05/segger-rtt-1.html http://lihgong.blogspot.com/2016/05/segger-rtt-2.html http://lihgong.blogspot.com/2016/05/segger-rtt-3_6.html 我不是很喜歡UART,根本原因是把他 用好 其實不容易。當年選用Segger RTT其實就是要逃避這題(笑);很多年過去了,總是要回來解決這題 STM32 HAL UART driver足足有3726Lines,這代表他的複雜度。假如UART跑在115200bps來說,傳送1byte需要約100us,假設CPU跑在16Mhz就需要1600T。簡單用Polling mode丟資料(或是接收資料)效能很悲劇;用了中斷模式會好一點,但是每個字元都來中斷,遇到高速UART其實效率也不大好;這題的根本解法是需要DMA mode 這篇我會介紹怎在使用STM32CubeIDE,把UART+DMA mode跑起來,TX/RX都有,實作我心裡最佳的框架。這篇直接講結論和步驟,原理很複雜,但是架起來卻很簡單 環境 STM32CubeIDE 你改用STM32CubeIDE了嗎?如果還沒,可以試試看;我用起來很滿意! Nucleo F411RE Board 上面有ST-LINK加開發版,帶條USB線就能出去玩;缺點是MINI-USB線有點討厭 MobaXTerm 好用的Terminal工具,可以連SSH/ RDP/ Serial Terminal UART-TX設定步驟 STM32CUBEIDE設定UART,關鍵是要打開UART中斷,以及打開TX/RX的DMA Enable UART IRQ Enable UART DMA channels 假如要傳送資料,這一段code能幫上忙。這裡面有個資料結構內藏ring-buf,每次user要寫東西就往buf[]擺,並且更新wptr;資料擺上去會呼叫UART HAL library的API來傳送;或是DMA傳送完了,也會檢查還有沒有剩下的要傳。因為有Global variabl... Read more »
玩CAN bus的傢伙們 (1) CandleLight-based USB-CAN 3月 06, 2021 硬體介紹 要玩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... Read more »
ELM327 OBD-II 心得 (2),ELM327底層介面 2月 27, 2019 首先到Google Play搜尋ELM327 Terminal,不用太糾結,隨便一套都可以。如果真的有選擇困難,那就 這套 吧。因為他最近才更新過,而且介面看起來滿漂亮的 想辦法連上車後,輸入0902就可以讀取汽車的 VIN碼 (車子唯一的辨識碼)。這些PID(0902)是 工業規格 ,每家車商都得實作,底下是幾個常見的code。所以抬頭顯示器(HUD)不需要區分廠牌,只要有OBD2接頭都可以用 01 0D 車速 01 0C 引擎轉速 底下是我車子回報的VIN碼,有興趣可以查一下文件,解看看 :-) 7E8 08 01 14 49 02 01 59 56 41 7E8 08 21 44 5A 41 38 42 44 48 7E8 08 22 32 30 37 36 36 38 32 用Torque讀CANBUS的人很多,但是很少人看ELM327究竟做什麼。到 ELM公司官網 下載他們的 AT command列表 ,這就是這顆IC所有的能力了,不同版本支援的能力也不大相同 可能是歷史因素,ELM327 命令 已經變成某種非正式標準,所有想寫手機和汽車打交道的軟體都會支援ELM327 命令 。反過來說,任何一個人想做車用OBD-II的讀取頭,只要照著ELM327 命令 實作,就能和現有的手機軟體互聯(即使他本質不是ELM327) 所以深圳的公司用8051刻了ELM327 1.5(或著就自己亂改),但是人家根本沒出過v1.5;想做手機讀取頭的公司,最好開出的軟體介面和ELM327命令相容,否則客人買回去不能接Torque,產品會賣不掉 手機軟體開發者會盡量少用一些特殊命令,這樣相容性才好。實務上讀引擎轉速,速度,讀錯誤碼,這些操作都不需要特殊命令,所以這類Probe其實接手機大概功能都會動。 如果您問我,哪個版本的ELM327可以買... 說實話我不是很確定,畢竟我手上也沒幾個。但是後面我會分享CANBUS如果有個爛掉的裝置,會對系統造成什麼傷害 Read more »
留言