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 »
幼犬書桌椅選擇心得 升降桌 兒童桌椅 7月 25, 2021 [前言] 兒子要念小學了,需要給他買組書桌椅,搜尋Google和朋友建議,大概能找到的組合約20000。這個生意滿熱門的,很快我就被各種書桌椅廣告淹沒,來填坑吧 一張"成長桌",可調高低,高檔甚至可以調傾斜 一張"成長椅",可調高低,椅子深淺 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 »
留言