MCU application

ST67W611M1 T01 HTTPS 實戰

前言 本篇繼續使用 STM32H7R7 + ST67W611M1 T01 + FreeRTOS,將實際網路需求拆成兩部分: 上傳與下載流程 上傳資料:HTTPS POST JSON 上傳使用 T01 的 W6X_Net_* Socket API。由於應用要帶自訂 X-Device-Type、X-Source 等 HTTP header,因此採用自己組 HTTP/1.1 request Step 1:DNS → TLS Socket → CA / SNI / ALPN HTTPS_HOST、demo_ca_pem 與 demo_ca_pem_len 是本文公開示意的占位符,並不是 ST SDK 自帶的全域變數。實際 OGA 程式使用專案自己的 Server macro 及 CA PEM 陣列。若要完整部署,應加入 socket timeout、credential_added 旗標與所有錯誤出口清理。TLS_HOSTNAME 提供伺服器名稱,但不可單憑該設定就宣稱憑證鏈與 hostname

ST67W611M1 T01 HTTPS 實戰 Read More »

STM32 + ST67W611M1 T01 實作

開發環境與程式分工 元件 設定 Host MCU STM32H7R7 Wi-Fi Module ST67W611M1 網路架構 T01(LwIP / TLS in module) Middleware X-CUBE-ST67W61 v1.3.0 RTOS FreeRTOS Host – NCP 介面 SPI,搭配必要控制 / 中斷 GPIO Wi-Fi 帳密 範例由 app_wifi_config.h 提供 WIFI_SSID、WIFI_PASSWORD Note:範例程式使用 LoggingInit()、LogInfo() 等專案 logging wrapper;複製到官方範例時,要將 logger 替換成自己的 UART logger 或原專案 logging T01 模組初始化流程 初始化關鍵段落 Note:T01 專案必須配合 mission_t01 firmware,否則 W6X_Init() 會檢查到架構不相符 掃描附近

STM32 + ST67W611M1 T01 實作 Read More »

ST67W611M1_入門

ST67W611M1介紹 ST67W611M1 的角色是無線通訊協處理器(NCP)。應用邏輯、感測器資料、UI 等仍由 STM32 Host 處理,模組主要負責 Wifi-Fi 與 BLE 無線連線。這種分工可以減少主控制器自行管理 Wifi-Fi 無線協定的工作 主要特點: Flow 限制 無線頻段 僅 2.4 GHz Wi-Fi,無法搜尋只有 5 GHz 的 SSID。 連線角色 T01、T02 都支援 STA;Soft-AP 能力依 SDK / firmware 版本而定。 T01 網路資源 X-CUBE-ST67W61 v1.3.0 / module FW v2.0.106 參考資料列出:最多 5 TCP client、1 TCP server、5 UDP client、1 UDP server 與 1 個

ST67W611M1_入門 Read More »

STM32H5 USB Composite(DFU+HID)

前言 很多人在使用STM32建置USB Composite官方基本上僅給H503 CDC+HID,但部分客戶會有需求為DFU+other,這邊依據外掛包去修改 I-CUBE-USBD-Composite I-CUBE-USBD-Composite是一個非官方的軟體包,他協助我們快速建立一個模板,基本上把部分物件修改即可使用 如何安裝軟體包 下載地址:I-CUBE-USBD-Composite 1. Download AL94.I-CUBE-USBD-COMPOSITE.1.0.0.pack from repo. 2. Add AL94.I-CUBE-USBD-COMPOSITE.1.0.0.pack to CubeMX. Enable the classes you want Coding 第一步在usbd_conf.h修改數字0變成1 第二步在usbd_conf.修改&hpcd_USB_FS;變成&hpcd_USB_DRD_FS;因H5定義不同第三步在usbd_dfu.c數字要設定相反(如圖右邊NBR為1) 第四步增加usbd_dfu.h右側定義 第五步把usbd_composite.c中DFU順序往上 再來是生成時候會少的部分在usb.c中並把中斷優先序往上 在中斷stm32h5xx_it.c需要加上TP1_Set();和TP1_Reset(); 這部分在使用軟體包生成stm32h5xx_it.h會缺少需要額外加上 修改以上後基本上USB DFU剩下依據各系列去調整usbd_dfu_if.c/usbd_dfu_if.h這2塊即可HID或其他部分記本上已經完整所以不太需要修正 Driver Setting 因微軟Driver這邊沒有設定好所以需要手動讓系統認到需要照以下方式使用 這時會出現一個未知的裝置需要再次操作 參考

STM32H5 USB Composite(DFU+HID) Read More »

Azure RTOS ThreadX on STM32 MCU

前言 目前在最新系列H5/U5/U0 /C071使用STM32CubeMX建置出USB的基底都變成USBX是以Azure RTOS ThreadX 架構去撰寫,變成如果需要使用舊的FreeRTOS會必須自己搬移code相對變得麻煩許多,但因新的Azure RTOS在結構上優化這邊就嘗試研究撰寫整理文章 簡介Azure RTOS Azure RTOS 的核心是 ThreadX,它是一種即時內核,ThreadX 擁有多種競爭優勢,其中包括多種安全關鍵認證。Microsoft 提供Azure RTOS 也能夠最大限度地減少品質和可靠性問題,大大降低此類問題可能引發的冗長調試會話,總體上有利於 RTOS 用戶。 ST支援與架構 這邊會以主要THREADX架構往下生成 這邊留意Azure RTOS有支援USB PD但ST還未整合完全需要自己寫USB-PD is supported by ST USBPD library and applications provided in STM32Cube MCU packages. But it is not yet integrated with STM32 Azure® RTOS MW solution. THREADX簡介 ThreadX 是一個即時作業系統 (RTOS),專為嵌入式系統而設計 ThreadX 支援表如下 ThreadX操作 從

Azure RTOS ThreadX on STM32 MCU Read More »

STM32CubePrg API(example project)

前言 這邊因協助客戶需要把ST更新軟體鑲嵌在客戶自訂的軟體上面,因此這邊就深挖STM32CubePrg原始的接口,並把他逐步整合到客戶指定的樣板上,基本上架構是以STM32CubePrg為主,這邊interFace會以USB DFU為主介紹(HID等客製化方式不再此介紹範圍) STM32CubePrg Project 結構 這邊主要會拆成2部分一部份是設定連接MCU的資料與連接上更新的interface,首先我們會先到以下路徑開啟project 該資料夾是在安裝STM32CubePrg後就會存在C曹個人資料夾中 第一部分是Set MCU更新資料 這邊幾個注意事項這邊已USB為例 該路徑事需要指向Database內,確認需要被更新MCU為哪顆保留一個該檔案即可,也可以先使用ST-LINKV2連線該資料會出現在STM32CubePrg Information上,可以不用全部都採納,但指向路徑必須設定正確 更新主軸API(USB為例) 再來是選擇InterFace去完成,這邊選用USB 這邊基本上做FW download Function就是downloadFile 其他都是在檢測是否有正常連線到,這邊有測試該Function是否能帶入絕對路徑,結果是部分會fail,可能在內部最佳化部分絕對路徑相對資源所以會建議使用相對路徑去執行 參考

STM32CubePrg API(example project) Read More »

USB device custom HID class on STM32

前言 USB 的東西,肯定是需要PC 端的軟體配合,尤其是這一種屬於比較客製化的 Custom HID 的東西,雖然HID 是不需要PC端的驅動程式,但還是得要準備自己的上層應用軟體,這個不像一般標準的Virtual COM 可以用超級終端機,這邊針對Device的HID部分較多客戶會有需求希望做成客製化因此該文章會來探討這部分 STM32CubeMX設定 這邊基本上開啟USB後再ST會有選單可以協助弄出客製化設定的HID 其中這一塊是可以針對自己需求新增和配置,可以先使用預設數值再做修正,然後就可以調整clock tree後生成檔案 STM32CubeIDE 這邊主展開專案可以看到主要有幾個c檔,這3個檔案是主要要客製化HID部分會需要確認的檔案可以看下方檔案描述Function 這邊針對Size部分可以再usbd_customhid.h看到CUSTOM_HID_EPIN_SIZE and CUSTOM_HID_EPOUT_SIZEdefinesto 0x40 (64 bytes):這部分主要是因一開始STM32CubeMX設定64 USB裝置標準描述符會在usbd_custom_hid_if.c 這個file內可以詳細看 Information for Developers | USB-IF: 再來是上報資料給電腦CUSTOM_HID_ReportDesc_FS[USBD_CUSTOM_HID_REPORT_DESC_SIZE],建議使用 HID descriptor tool工具產生報告符,這裡要注意的是報告描述符大小USBD_CUSTOM_HID_REPORT_DESC_SIZE,一定要與實際產生的報告描述符大小(使用HID descriptor tool可查看)相對應,否則會導致HID設備配置失敗。 再來就是定時發送report來更新數據了,USBD_CUSTOM_HID_SendReport,這個函數在usbd_customhid.c中定義 參考

USB device custom HID class on STM32 Read More »

STM32 OneWire for Charger

前言 目前客戶需求有接觸到包code部分,需要協助開發完成1 wire對於電池的感應等等,會走UART OneWire需要去驗證是否可以正常work ,在下一版規劃上面也會有些許不同,這邊因先把one wire資訊統整併做驗證方法上做比較細部說明。 簡介 OneWire匯流排操作,將stm32的串列的TX接腳與RX接腳短接後與1-Wire匯流排連接 基本上在STM32CubeMX上設定和一般UART是相同的 線路上外部對接即可 這邊Code部分 1-Wire/UART 位元時序 UART 可作為匯流排主控器,因此在 TX 輸出引腳從高電平到低電平的轉換時開始所有通訊。當電氣介面將緩衝的 TX 訊號連接到 RX 輸入接腳時,UART 每發送一個位元組就會接收一個位元組。 圖 6 和圖 7 產生的讀取時隙使用的波特率為 115,200。從 1-Wire 讀取 0 接收的 RX 位元組範圍從 0xFE 到 0x00,取決於從裝置的內部時基和 IO 上升時間。 參考

STM32 OneWire for Charger Read More »

ECDSA_SignVerify(SHA256) STM32F4 series

前言 針對驗證簽名部分,因近期客戶需求但MCU部分被綁定無法放入SBSFU去做更新,而且SBSFU更新部分目前提供範例也僅UART,其他interface需要自己coding,最後這邊討論後只做簽名驗證來防程式被修改,該章節會介紹簽名驗證流程和原SBSFU流程 參考軟體包 這邊因單純驗證簽名因此直接參考x-cube-cryptolib即可,因這邊使用F4系列所以這邊參考比較舊相近系列L152,因G4或L4是相對較新的系列避免有些Function不存在 圖解流程基本上如下 其實可以看到MCU會需要處理部分主要是把資料轉換,因這邊選用是SHA256所以是把檔案轉換SHA256格式,再透過ECC校驗,這邊公/私鑰匙的生成是透過OpenSLL生成,使用為外部軟體非在MCU內執行生成 SBSFU簡介 因SBSFU是包含加密更新部分,而F4是屬於比較舊款因此支援部分沒有到這麼多參考圖如下 而已更新步驟來說會如圖,因此你可以看到如果需要加密更新你的code size不能太大另外,或你的Flash size需要夠大(APP Code需要2倍大小,這邊大概說明流程,因這次只使用到驗證簽名部分所以這邊就不詳細說明 ECC驗證簽名Code 在程式上會分成2部分 Boot code和APP code,App code部分比較簡單會透過外部軟體所增加標頭檔部分打包起來 這邊主要2個檔案需要修改1.system_stm32f4xx.c2.ld檔案 這邊是用python寫外部加密打包檔案這邊跟MCU較不相關未來再詳細說明 把APP剛剛規劃標頭檔相關位置填入,因驗證部分會需要知道相關資料位置 在執行檔中需要把Key引用帶入,在執行檔最後加入下方 鑰匙部分也是需要call外部軟體生成(OpenSLL) 最後在main.c部分就比較簡單主要是把加密驗證簽名部分補上即可,前半在做把鑰匙BIN和簽名BIN輸入陣列中 參考

ECDSA_SignVerify(SHA256) STM32F4 series Read More »

ST7735 TFT LCD Module with 4 IO 128*160

前言 LCD的選擇有很多種,尺寸也很多,但若需要顯示彩色的畫面,這邊推薦ST7735, CP值最高,效果也不錯的。本範例將介紹ST7735 彩色1.8吋顯示螢幕與STM32的使用方式。這邊參考Arduino Adafruit函式庫,函式庫為所有的LCD和OLED顯示器提供了通用語法和圖形功能。 接線說明 這邊可以參考以下說明 Sample Code 這邊可以直接移植Arduino或網路直接抓Driver這塊因為便宜有更多人選用開放資源也很多 以下2個是最常使用到Function 下面可以看到是常用Fuction詳細內容 影片參考 ST7735驅動程式設計要點 參考

ST7735 TFT LCD Module with 4 IO 128*160 Read More »

Shopping Cart