yj hung

STM32 Cryptographic Software Package

前言 客戶在部分設備中需要加密保護,ST這邊提供2種方式 V4的目錄結構 vs. V3的目錄結構 V3軟件包的目錄結構是每一個STM32系列對應一個單獨的目錄 V4的目錄結構則完全兼容Cube/X-Cube軟件包(STM32Cubexx / X-Cube-xxx)架構,方便與Cube/X-Cube包進行集成。 AES加密 這邊因客戶AES使用較多,會以AES做舉例說明。 AES介紹 AES 是一個 對稱的 加密類型。“對稱”意味著它使用 加密和解密的密鑰相同 信息此外, 都 發送方和接收方 的數據需要它的副本來解密密碼。另一方面, 非對稱 關鍵系統使用 每個不同的鍵 兩個過程:加密和解密。一個對稱系統的優勢 就像 AES 他們是 比非對稱快得多 那些。 這是因為對稱密鑰算法需要 更少的計算能力。 這就是為什麼非對稱密鑰最適合用於 外部文件傳輸。 對稱鍵更適合 內部加密. AES 流程 AES流程可以參考下面影片與圖,可以更加明白其操作 ST AES硬體加密 首先可以看到硬體加密的結構如圖ST也有提供4種模式 ST AES LIB軟體實現 這邊下載軟體包後需要把Lib加入專案中下面為Lib路徑 Middlewares\ST\STM32_Cryptographic 這邊使用以變相當便捷主要是呼叫cmox_cipher_encrypt此函數引用ST Lib即可使用 參考

STM32 Cryptographic Software Package Read More »

STM32 FDCAN Introduction difference CAN lib

前言 FDCAN(Flexible Data-Rate CAN)是CAN的升級版。特點包括 FDCAN格式 CAN-FD 與 CAN 2.0 的幀架構比較 在標識符之後,CAN 2.0 和 CAN-FD 有一個不同的操作: CAN-FD 與 CAN 2.0 之間的主要差異 STM32CubeMX Setting 這邊可以參考網路上H7的設定選項,使用G4或G0會缺少Messge Ram分配這區塊設定,其他部分雷同 FDCAN傳輸參考程式 這邊可以參考輸出如下 讀取如下 參考

STM32 FDCAN Introduction difference CAN lib Read More »

VL53L5CX coding structure on STM32

前言 有別於傳統 IR 感測器,VL53L5CX 採用 ST 最新一代的直接 ToF 技術,無論目標顏色和反射情況為何,都能達到絕對距離量測。它提供長達 400 cm 的準確測距,並能高速運作 (60 Hz),是目前市面上最快的多區域小型 ToF 感測器。 硬體接線 這邊因ST官方資料還蠻齊全的,針對幾個特點注意事項說明即可 這邊VL53L5線路部分基本上大多為電源與地線,主要通訊部分2 pin I2C與INT 還有一PIN GPIO output(Ln)去控制 這邊下載官方範例中可以看到定義腳位有點多,是因為這邊把左右側的小板也遇設上去 軟體移植 軟體部分可先下載STSW-IMG023,下載完成後如下圖 主要會使用到的為VL53L5CX_ULD_API與Platform,這邊官方很貼心,讓需要移植至不同平台開發者方便使用針對Platform這個資料夾中把該平台的I2C Bus Lib設定好即可使用 未定義 ST sample code已定義 如果單純只是ST 不同MCU移植可以直接拿取CubeIDE_F401RE_Example裡面Platform檔案直接覆蓋這邊僅移植至不同ST MCU上把對應Code直接搬移即可使用 但這邊會發現解析度只有4*4需要改成8*8解析度可以在code上增加 其中 X-Talk CAL 這邊範例並沒有針對Offset與X-Talk寫上去,流程圖如下只要在Ranging前把Xtalk數值抓出來即可並附加上去即可 參考

VL53L5CX coding structure on STM32 Read More »

How to use DMA2D on STM32H7

前言 近期因為需要,所以需要幫客戶弄thermal camera顯示在MCU STM32H7顯示面板,使用STM32H750-DK,而這個開發版使用的顯示面板不是SPI驅動,所以只好開始學習LTDC+DMA2D,這個章節將會先介紹DMA2D使用方式與介紹 DMA2D的簡介 在實際使用LTDC控制器控制液晶屏時,使LTDC正常工作後,往配置好的顯存地址寫入要顯示的像素數據,LTDC就會把這些數據從顯存搬運到液晶面板進行顯示, 而顯示數據的容量非常大,所以我們希望能用DMA來操作,針對這個需求,STM32專門定制了DMA2D外設,它可用於快速繪製矩形、直線、分層數據混合、 數據複製以及進行圖像數據格式轉換,可以把它理解為圖形專用的DMA DMA2D工作模式 DMA2D操作 DMA2D的常用API要熟練掌握,後面的GUI的底層驅動加速,JPEG硬解,攝像頭等部分都要用到。這里為大家介紹如下幾個常用API: framebuffer的這種特性使得我們不能簡單使用memset這類高效的操作來實現矩形區域的填充。這邊下面展示2種方式作為比較 通常情況下,我們會使用以下方式的雙重循環來填充任意矩形,其中xs和ys是矩形左上角在屏幕上的坐標,width和height表示矩形的寬和高,color表示需要填充的顏色: 參考

How to use DMA2D on STM32H7 Read More »

How to use STM32CubeAI on STM32CubeMX

前言 這邊ST推出STM32CubeAI與NanoEdge AI Studio 2款軟體針對不同用戶族群,這邊會針對SRM32CubeAI做初步介紹與使用(STM32CubeAI 目前是掛載在STM32CubeMX底下的軟體包X-Cube-AI,這邊STM32CubeAI僅針對第3方軟體做轉換,不能自動生成AI model) STM32CubeAI 這邊會由STM32CubeMX去更新下載軟體包,並將其第三方生成的軟體轉譯成C code掛在STM32CubeMX專案中 這邊直接照一般步驟生成專案後把X-cube-AI加上專案中 下一步驟針對STM32CubeMX加入X-Cube-AI轉譯軟體包 如範例這邊如果都完成按下分析會跑成功 在專案上就會出現對應接口,且model也會放置在middlewares上 結構 參考

How to use STM32CubeAI on STM32CubeMX Read More »

Discovery STM32H750XB-External Loader

前言 由於 STM32CubeProgrammer 中,對 Flash 支持的型號有限,只能覆蓋一部分 MCU和 Flash 的型號,無法完全滿足客戶的需求。stm32CubeMX 製作 external Flash loader 的方法。客戶可以根據自己的型號,進行定制化的生成。這邊使用Discovery STM32H750XB為基準-從CubeIDE+CubeMX建立Eternal Loader 給CubeProgrammer使用 STM32CubeMX設定 建立QSPI配置以及DriverFlashMemory 官方有寫好的Code複製到資料夾內 這邊官方有提供範例可以下載,可以再依照範例修改 STM32CubeIDE Code修正 quadspi.h的部份將官方提供的資料複製 要在CubeProgrammer上面顯示的資訊 建立linker.ld檔以及產生出stldr檔 根據所使用的FlashMemory做配置 Complier產生stldr檔 放到STM32CubeProgrammer可以存取到的資料夾內 參考

Discovery STM32H750XB-External Loader Read More »

Internal Temperature Sensor On STM32

前言 STM32 微控制器具有內部溫度傳感器。 該傳感器非常粗略 (±1.5 °C),並在內部連接到 ADC 通道的一個,這使得輕鬆獲取設備溫度成為可能,無需任何額外組件即可使用。但請注意此溫度為相對溫度非絕對溫度,且有溫度最高與最低限制無法完全取代一般sesnor 內部計算方式 這邊選用STM32WB35為主要參考(It support the temperature range –40 to 125 °C.)這部分可以參考各系列的reference manual未經校準的內部溫度傳感器更適合用於檢測的應用溫度變化而不是絕對溫度。 數值位置要點 這邊是TS_CAL1/TS_CAL2要從Datasheet中抓取出對應Flash位置數值TS_CAL1_TEMP與TS_CAL2_TEMP分別就是對應30與130 計算公式及修正如下 STM32CubeMX設定 這邊需要再ADC部份把Temperature Sensor Channel 與Vrefint Channel開啟,針對Vrefint Channel是可選的未得確定內部實際Vref電壓來提高精準度 STM32CubeIDE Code 這邊有2種方式可以選擇一種是直接寫公式如下code區域或使用官方給出Function 這邊主可以參考網路範例TMPSENSOR_getTemperature把其數值抓取下來公式部分修正即可 Note 有反映讀取內部溫度時不是標準3.3V時會建議使用__HAL_ADC_CALC_TEMPERATURE()The value returned by __HAL_ADC_CALC_TEMPERATURE() seems to be closer to the temperature measured on the microcontroller’s casing.在電壓Vref不是3.3時會建議使用__HAL_ADC_CALC_TEMPERATURE() refer Web 參考

Internal Temperature Sensor On STM32 Read More »

STM32 USB_Device IAP practice

IAP前言 IAP(In Application Programming,應用內編程),是指程序在運行過程中對User Flash的部分區域進行燒寫,目的是為了在產品發布後可以方便地通過預留的通信口對產品中的固件程序進行更新升級。 IAP流程 這邊是開啟2包專案,其中一包是DFU另一包APP則是看需求撰寫,流程如圖,為便捷開發我們都會以DFU為起始位置 USB DFU實作注意事項 這邊因是燒2包程式,把Flash切割成2個區塊,因此需要留意DFU在程式中所占比的空間與要轉跳到APP的指向位置 如圖這邊第一步是需要先確認DFU程式占比,一般會預留一些空間避免蓋到APP Flash 這邊要留意預留空間盡可能以一個page為單位,這邊範例以STM32CubeMX生成因DFU抓64kb為主體因此APP會燒入在0x8010000為起始,詳細參考各系列的reference_manual(這邊範例以STM32G0系列為出發) APP端燒入注意事項 使用STM32cubePrg燒入記得要去留意Start address避免去覆蓋到DFU程式區域,且要確定DFU轉跳位置須為APP起始位置 這邊一樣要去修訂ld檔,但要修訂ld檔啟示位置 這邊最後一步是要去修訂中斷向量表的Offset這邊就需要依照各自需求去做變化 這邊有個小要點,就是部分MCU會沒有RCC初始化這區塊,如果APP轉跳後不會動,可以把這塊初始化移植上去這塊在sample code上都會有但由STM32CubeMX生成檔案可能會缺少這區塊 轉跳參考機制 這邊提供官方範例是以按鈕做轉跳,如果也可以變通為特定flash位置數值判斷是否要執行DFU還是直接跳APP,這邊以APP起始位置為0x08010000作為範例 參考

STM32 USB_Device IAP practice Read More »

Shunt resistor based current sensing design

前言 電流感測電阻(shunt resistor)通常被放在三個相位之一的線路上。這個電壓降落可以通過一個運算放大器(op-amp)放大,然後被傳感器接收並轉換成數字信號。藉此方式,我們可以在驅動器中檢測電機的電流,並在必要時停止或調整電機的運行,從而保護驅動器和電機,延長其壽命。 主軸電路 可以看下圖主要分成3個部分 電阻值越大,給定的電壓降越高當前,因此可用的有用信號。 另一方面,功耗分流電阻隨著電阻值的增加而增加,因此電阻值主要取決於可接受的最大功耗 (PMAX) 是多少成分。 Shunt電阻配置可以參考下圖 儘管可以通過最小化走線的寄生電感來減少振盪(與它們的長度成正比,與它們的寬度成反比),一些過濾是始終需要清理反饋信號並可能使其進入穩態更快,以這種方式擴大電流反饋信號可能的時間範圍由下游微控制器單元讀取。另一方面,過濾不能太強,因為如前所述,電流僅在低側開關導通期間流過分流電阻。 Layout 建議 電流偵測位置有以下4種 Low-side global current sensing Low-side current sensing in each leg of the current driver Inline phase current High-side current sensing 參考

Shunt resistor based current sensing design Read More »

ST TOF Sesonr-VL53L5(Turnkey gesture)

簡介 VL53L5CX系統由硬件模塊和運行在主機上的ULD軟件(VL53L5CX ULD)組成。 硬件模塊包含飛行時間 (ToF) 傳感器。 ST 提供軟件驅動程序,在本文檔中稱為“驅動程序”。 本文檔描述了主機可以訪問的驅動程序的功能。 這些函數控制傳感器並獲取測距數據,進一步使用ST Turnkey gesture來做到手勢辨識。 ToF 傳感器系統 1.1驅動架構和內容 VL53L5CX ULD 包由四個文件夾組成。 驅動程序位於文件夾/VL53L5CX_ULD_API 中。VL53L5CX主要適用於陣列式量測距離sensor,解析度式8*8或4*4可以選擇,由多點距離資訊可以演變出不同應用,在此介紹為手勢辨識應用(須先把VL53L5的驅動包先掛載起來) X-CUBE-TOF1 這邊也可以選用ST擴充包把code附加在STM32CubeMX上,可以照VL53L5CX configuration steps P11後照順序執行即可 線路參考 這邊要注意PWE_EN和INT與I2C_RST這幾PIN是需要接上的,因在初始化時會針對這個測試沒接上會出現錯誤 應用 SW Setting 這邊其實只需要下載F401範例其他部分直接incude即可使用 如圖這邊主要GesturesMZ這個資料夾主要是AI手是辨識主要檔案,可以由Example看input輸入項,使用ST的Nonaedge AI做擴充即可完成更多手勢辨識 參考

ST TOF Sesonr-VL53L5(Turnkey gesture) Read More »

Shopping Cart