STM32 MCU

ST Motor Control Adjust Method-1

前言 在使用ST FOC電機庫時,當使用Hall信號作為位置信號時,需要輸入同步電角度數據,這個數據根據當前使用電機的特性進行輸入,會在每次Hall信號變化時同步電角度,如果角度偏差較大時會影響控制效果,可能帶來效率或者電機的震盪,初始測試還是有必要的,本文詳細說明測試注意事項以及測試方法。 測試準備 如果電機沒有虛擬中點接出,需要連接三個相同阻值電阻到電機的三相接線上,電阻另外一端連接到一起作為虛擬中點; 將Hall信號接入5V電,並且在H1上接入上拉電阻;接入示波器,轉動電機,測試反向電動勢信號以及Hall信號; 波形測試及計算結果 測試一個電週期的時間,這個週期對應360度; 測試電機A相反向電動勢最高點到H1的時間,圖中粉色為電機A相反向電動勢,紅色數字端口D0為H1信號; 該電機同步電角度: 同步角度添加到代碼 如果使用Workbench的話,添加到電機參數中,如圖: 如果直接寫入程序中,則將數據寫入PMSM motor parameters.h文件參數中 參考

ST Motor Control Adjust Method-1 Read More »

GPIO Setting for Different Speed

前言 這邊因在操作SPI,但SPI速度提升超過10MHz會出現CPOL/CPHA錯位的怪異現象,後來查詢許多方式,發現貓膩在GPIO設定上面,這邊針對踩雷部份GPIO SPEED SETTING做詳細設定說明,不限定在SPI上面所有通訊協定皆通用。  STM32 GPIO Ports  在STM32上面GPIO結構如下圖  STM32 GPIO Speed STM32CubeMX配置GPIO 輸出引腳,都會有速度GPIO_InitStruct.Speed 不同MCU型號,速度選項,有些有3個,有些有4個。一般定義在xxx_gpio.h文件中 STM32CubeMX配置,這邊default為設置最低因此如果要更動到其他高傳輸速度需要更動設定 PS:如果输出速度和配置速度不匹配,會明顯看到波形不正常這邊選用高低速差異如下 參考

GPIO Setting for Different Speed Read More »

VL53L0X TOF Sensor Introduction

一、介紹 1、原理 採用940nm垂直腔面發射激光器(Vertical-Cavity Surface-Emitting Laser,簡稱VCSEL)發射出激光,激光碰到障礙物後反射回來被VL53L0X接收到,測量激光在空氣中的傳播時間,進而得到距離。VCSEL相關知識 2、參數 超小體積:4.4 x 2.4 x 1.0mm 最大測距:2m 發射的激光對眼鏡安全,且完全不可見。 工作電壓:2.6 to 3.5 V 通信方式:IIC,400KHz,設備地址0x52,最低位是讀寫標誌位。0表示寫,1表示讀 二、HW接線 這邊接上I2C線路必須要上pull up 電阻規範比照I2C user manual 三、HW Cover規範 這邊Cover的安裝等規定,會有AIR GAP與COVER對於940nm穿透度的限制ST官方針對這個部分提供AN4907 Application note 做詳細說明 理想的蓋玻片有如下特點: (1)塑料或玻璃材料無結構缺陷 (2)無可導致指紋光散射或污跡敏感的表面缺陷 (3)在近紅外(940nm±10nm)和低霧度條件下,透過率>90% (4)不降低指紋免疫性的外塗層(抗指紋或抗反射塗層) (5)單一材料。使用雙重材料可能會改變性能。   理想的結構設計(蓋玻片蓋在VL53L0X上的結構)有如下特點: 氣隙小(<0.5 mm) 蓋玻片薄 蓋玻片與VL53L0X表明的傾角低於2度 嚴格的公差。 四、校準流程 (1)Data init          調用VL53L0X_DataInit()函數一次,設備上電後調用一次。把VL53L0X_State從VL53L0X_STATE_POWERDOWN改爲 VL53L0X_STATE_WAIT_STATICINIT。VL53L0X_State是初始化狀態機,看此變量的值可以就可以知道當前的初始化進度。 (2)Static Init

VL53L0X TOF Sensor Introduction Read More »

QSPI Flash(Quad Serial Peripheral Interface)

QSPI介面簡介 QSPI是Queued SPI的簡寫,是Motorola公司推出的SPI介面的擴充套件,比SPI應用更加廣泛。在SPI協議的基礎上,Motorola公司對其功能進行了增強,增加了佇列傳輸機制,推出了佇列序列外圍介面協議(即QSPI協議)。這邊針對QSPI是針對SPI FLASH儲存器做解說。 QSPI的使用(Flash) QSPI 使用 6 個I/O連接Flash,分别是四個數據BK1_IO0~BK1_IO3,一個CLK,選輸出(低電壓有效)BK1_nCS,作用介紹如下: BK1_nCS:選輸出(低電壓有效),適用於 FLASH 1。如果 QSPI 始终在雙閃存模式下工作,則其也可用於 FLASH 2從設備選擇信号線。QSPI通訊以BK1_nCS線置低電壓為開始信號,以BK1_nCS線被拉高作為结束信號。 CLK:時脈輸出,適用個2個存储器,用於通訊數據同步。它由通訊主機產生,决定了通訊的速率,不同的設備支持的最高時脈頻率不一樣,如STM32的QSPI时時脈頻率最大為fpclk/2,2個設備之間通訊時,通訊速率受限於低速設備。 BK1_IO0:在雙線 / 四線模式中為雙向 IO,單線模式中為串行輸出,適用於FLASH 1。 BK1_IO1:在雙線 / 四線模式中為雙向 IO,單縣模式中為串行輸入,適用於FLASH 1。 BK1_IO2:四線模式中為雙向 IO,適用於 FLASH 1。 BK1_IO3:四線模式中為雙向 IO,適用於 FLASH 1。 QSPI 命令序列 1. 指令階段 將在 QUADSPI_CCR[7:0] 寄存器的 INSTRUCTION 字段中配置的一條8 bit指令發送到 Flash,指定待執行操作的類型。儘管大多數 Flash 從 IO0/SO 信號(單線 SPI 模式)只能以一次 1 bit的方式接收指令,但指令階段可選擇一次發送 2 bit(在雙線 SPI 模式中通過 IO0/IO1)或一次發送 4 bit(在四線SPI 模式中通過IO0/IO1/IO2/IO3)。這可通過 QUADSPI_CCR[9:8] 寄存器中的 IMODE[1:0]字段進行配置。若 IMODE = 00,則跳過指令階段,命令序列從地址階段(如果存在)開始。 2. 地址階段 在地址階段,將1-4字節發送到Flash,指示操作地址。待發送的地址字節數在QUADSPI_CCR[13:12]寄存器的ADSIZE[1:0]字段中進行配置。在間接模式和自動輪尋模式下,待發送的地址字節在QUADSPI_AR寄存器的ADDRESS[31:0]中指定在内存映射模式下,則通過 AHB(來自於 Cortex ® 或 DMA)直接给出地址。地址階段可一次發送1 位(在單線SPI模式中通過SO)、2位(在雙線SPI模式中通過IO0/IO1)或4位(在四線 SPI 模式中通過 IO0/IO1/IO2/IO3)。這可通過QUADSPI_CCR[11:10]寄存器中的ADMODE[1:0]字段進行配置。若 ADMODE = 00,則跳過地址階段,命令序列直接进入下一階段(如果存在)。 2. 交替字節階段 在交替字節階段,將 1-4 字節發送到 Flash,一般用於控制操作模式。待發送的交替字節數在 QUADSPI_CCR[17:16] 寄存器的 ABSIZE[1:0] 字段中进行配置。待發送的字節在QUADSPI_ABR 寄存器中指定。交替字節數段可一次發送 1 位(在單線 SPI 模式中通過 SO)、2 位(在雙線 SPI 模式中通過 IO0/IO1)或 4 位(在四線SPI 模式中通過 IO0/IO1/IO2/IO3)。這可通過QUADSPI_CCR[15:14] 寄存器中的 ABMODE[1:0] 字段進行配置。若 ABMODE = 00,則跳過交替字節階段,命令序列直接進入下一階段(如果存在)。交替字節階段存在僅需發送單個半字節而不是一個全字節的情况,比如採用雙線模式並且僅使用兩個周期發送交替字節時。在這種情况下,固件可採用四線模式 (ABMODE = 11) 並發送一个字節,方法是 ALTERNATE 的位 7 和 3 置“1”(IO3 保持高電位)且位 6 和 2 置“0”(IO2 線保持低電位)。此時,半字節的高 2 位存放在 ALTERNATE 的位 4:3,低 2位存放在位 1 和 0 中。例如,如果半字節 2 (0010) 通过 IO0/IO1 發送,則 ALTERNATE 應設置為 0x8A (1000_1010)。 3. 空指令周期階段 在空指令周期階段,给定的 1-31 个周期内不發送或接收任何數據,目的是當採用更高的CLK頻率時,给 Flash 留出準備數據階段的時間。這一階段中给定的周期數在QUADSPI_CCR[22:18] 寄存器的 DCYC[4:0] 字段中指定。在 SDR 和 DDR 模式下,持續時間被指定为一定個數的全時鐘周期。若 DCYC 為零,則跳過空指令周期階段,命令序列直接進入數據階段(如果存在)。空指令周期階段的操作模式由 DMODE 確定。為確保數據信號從輸出模式轉變為輸入模式有足夠的“周轉”時間,使用雙線和四線模式從Flash 接收數據時,至少需要指定一个空指令周期。 4. 數據階段 在數據階段,可從Flash 接收或向其發送任意數量的字節。在間接模式和自動輪詢模式下,待發送/接收的字節數在 QUADSPI_DLR 寄存器中指定。在間接寫入模式下,發送到 Flash 的數據必須寫入 QUADSPI_DR 寄存器。在間皆讀取模式下,通過讀取 QUADSPI_DR 寄存器獲得從 Flash 接收的數據。在内存映射模式下,讀取的數據通過 AHB 直接發送回 Cortex 或 DMA。數據階段可一次發送/接收 1 位(在單線 SPI 模式中通過 SO)、2 位(在雙線 SPI 模式中通過 IO0/IO1)或 4 位(在四線 SPI 模式中通過 IO0/IO1/IO2/IO3)。這可通過QUADSPI_CCR[15:14] 寄存器中的 ABMODE[1:0] 字段進行配置。若 DMODE

QSPI Flash(Quad Serial Peripheral Interface) Read More »

USB-HID on STM32H750(Host)-1

USB-HID的初步認識 Descriptor即描述符,是一個完整的數據結構,可以通過C語言等編程實現,並存儲在USB設備中,用於描述一個USB設備的所有屬性,USB主機是通過一系列命令來要求設備發送這些信息的。USB有5種標準描述符:設備描述符 、配置描述符、字符描述符、接口描述符、端點描述符  。 HID描述符是關聯於接口(而不是端點)的,所以設備不需要爲每個端點都提供一個HID描述符。 設備描述符 配置描述符 字符描述符 接口描述符 端點描述符 HID讀寫設備 參考 USB初學(一)—USB-HID的初步認識 USB-HID相關筆記 MOOC-STM32 USB Training

USB-HID on STM32H750(Host)-1 Read More »

TouchGFX Introduction(STM32H750)

TouchGFX TouchGFX Designer:TouchGFX中易於使用的GUI建構工具,讓您可以建立TouchGFX應用程式的視覺外觀。 TouchGFX Generator:STM32CubeMX外掛程式,讓使用者可以依據STM32硬體來設定並產生客製化的TouchGFX抽象層(AL)。 TouchGFX Engine:一套用以驅動UI應用程式的TouchGFX C++框架。 包含螢幕更新(screen updates)、使用者事件(user events)和時序(timing)…等等的處理。 先進的TouchGFX技術針對STM32微控制器作最佳化,可在最低的CPU負荷及記憶體用量下達到最佳的性能。 TouchGFX Key Features TouchGFX provides support for DPI (parallel RGB), DBI (FMC/SPI), and DSI display interfaces 1bpp, 2bpp, 4bpp, 16bpp and 24bpp color displays 系統架構 前置作業安裝與配置 因這次使用H750,flash部分會需要外掛,因此在起步配置上會相對較複雜,這邊直接切入記憶體配置部分詳細說明 透過CubeMX安裝TouchGFX 設定MPU(memory protection unit) Enable FreeRTOSCMSIS_V2 加入Queue傳遞Touch功能的指令 加入TouchGFXLibrary專案 設定TouchGFX參數 Start Address與Start2 Address各需要一個Frame buffer 480x272x2(RBG565) = 0x3FC00

TouchGFX Introduction(STM32H750) Read More »

STM32 Watchdog Introduction

前言 IWDG(Independent watchdog)獨立看門狗,可以用來檢測並解決由於軟體錯誤導致的故障,當計數器到達給定的超時值時,會觸發一箇中斷或產生系統復位獨立看門狗的時鐘是它專用的低速時鐘(LSI),所以它能保持工作及時主時鐘出現問題。視窗看門狗的時鐘是有APB1時鐘分頻得到得到,通過可配置的時間視窗來檢測應用程式非正常的過遲或過早的操作。 視窗看門狗(Window watchdog)通常被用來監測,由外部干擾或不可預見的邏輯條件造成的應用程式背離正常的執行序列而產生的軟體故障。除非遞減計數器的值在 T6 位變成 0 前被重新整理,看門狗電路在達到預置的時間週期時,會產生一個 MCU 復位。如果在遞減計數器達到視窗暫存器值之前重新整理控制暫存器中的 7 位遞減計數器值,也會產生 MCU 復位。這意味著必須在限定的時間視窗內重新整理計數器 獨立看門狗功能描述 Note:(IWDG_KR)寫入0XCCCC,獨立看門狗就會啟動,計數器開始下降從復位值0XFFF。當計數器值到達0,會產生一個復位訊號(獨立看門狗復位)無論何時向關鍵字暫存器寫入0XAAAA,IWDG_RLR的數值會過載進計數器,避免看門狗復位 暫存器訪問保護 IWDG_PR 和 IWDG_RLR 暫存器具有寫訪問保護。若要修改暫存器,必須首先對 IWDG_KR暫存器寫入程式碼 0x5555。而寫入其他值則會破壞該序列,從而使暫存器訪問保護再次生效。這意味著重灌載操作(即寫入 0xAAAA)也會啟動防寫功能。狀態暫存器指示預分頻值和遞減計數器是否正在被更新 除錯模式 當微控制器進入除錯模式時( Cortex™-M3 核心停止), IWDG 計數器會根據 DBG 模組中的 DBG_IWDG_STOP 配置位選擇繼續正常工作或者停止工作。下圖是LSI在不同分頻情況下IWDG超時週期的最小值和最大值。 視窗看門狗功能描述 如果視窗看門狗啟動(WWDG_CR暫存器的WDGA位置1),7位向下計數器從0X40向0x3F滾動(T6已經清零),會導致一個復位。如果軟體過載計數器,當計數器值大於視窗所儲存的值時,就會產生復位 應用程式必須在正常操作期間寫WWDG_CR暫存器去組織MCU復位。這個操作必須發生在計數器值小於視窗暫存器值。視窗暫存器值儲存在WWDG_CR暫存器,必須在0XFF和0XC0之間。 Note:(看門狗中斷高階特性)如果在產生實際復位之前必須執行特定的安全操作或資料記錄,則可使用提前喚醒中斷(EWI)。通過設定 WWDG_CFR 暫存器中的 EWI 位使能 EWI 中斷。當遞減計數器的值為0x40 時,將生成 EWI 中斷。在復位器件之前,可以使用相應的中斷服務程式 (ISR) 來觸發特定操作(例如通訊或資料記錄)。在某些應用中,可以使用 EWI 中斷來管理軟體系統檢查和/或系統恢復/功能退化,而不會生成 WWDG 復位。在這種情況下,相應的中斷服務程式 (ISR)

STM32 Watchdog Introduction Read More »

STM32 DMA Introduction On STM32WB

DMA的基本介紹 DMA,全名Direct Memory Access,即直接暫存器訪問。DMA傳輸將數據從一個地址空間複製到另一個地址空間,提供在外存器之間或者暫存器和暫存器之間的高速數據傳輸。無須CPU的介入,透過DMA數據可以快速地移動 DMA mapping 因WB系列是L4系列+Core-M0+因此這邊直接參考L4的Mappong圖表,且由圖表可以知道那些通道支援什麼類型資料存取 DMA事務 DMA傳輸事務包含一系列的给定數目的數據傳輸序列。傳輸的數目可以透過軟體設定,8位,16位或32位。每一次DMA傳輸包含3个操作 透過 DMA_SxPAR 或 DMA_SxM0AR 暫存器,外部數據暫存器或存儲器單元中加載數據。 透過 DMA_SxPAR 或 DMA_SxM0AR 暫存器,將加載的數據存儲到外部數據暫存器或存儲器內 DMA_SxNDTR 計數器在數據存儲结束後遞減,該計數器中包含仍需执行的事務數 DMA Function介紹 表格為F10X系列在WB系列可以參考Description of STM32WB HAL and low-layer drivers (P181 DMA Firmware driver API description)在部分function上有更動 DMA使用 1、查询方式查询方式可以不使能DMA中斷,透過DMA_GetFlagStatus函数判斷旗標位來辨别是否傳輸完成或過半以及出错,然後關閉DMA通道,用DMA_SetCurrDataCounter函数重設缓存大小,完成相應操作後清除旗標位再使能DAM通道。2、中斷方式DMA中斷一般用於定長數據傳輸,以傳輸完成中斷為例。(1)當產生DMA傳輸完成中斷後,清除中斷旗標位、傳輸完成旗標位;(2)關閉DMA通道;(3)處理數據(4)重新設定DMA通道的DMA缓存的大小(可以省去);(5)開啟DMA通道3、不定長度數據傳輸以串口為例,不定長度數據傳輸的時候,可以透過串口空閒中斷来判斷傳輸是否完成(傳輸缓存大小要大於傳輸的數據大小),數據長度可以透過DMA_GetCurrDataCounter函数来計算,然後關閉DMA通道,重設DMA缓存的大小,再開啟DMA通道。4、雙緩衝方式設定2個緩衝區,設定一個緩衝區flag(用來區分當前是處在哪個緩衝區),每完成一次傳輸就透過重新配置DMA_MemoryBaseAddr的緩衝區地址,下次傳輸數據就會保存到新的緩衝區中,可以透過自定暫存區flag来判斷和切換(。 參考 【STM32】 DMA原理,步骤超细详解,一文看懂DMA RM0473 Reference manual RM0434 Reference manual STM32 DMA详解 STM32 | DMA配置和使用如此简单(超详细) Description of STM32WB

STM32 DMA Introduction On STM32WB Read More »

STM32 MCU Product Line Introduction

STM32 MCUs and MPUs portfolio ST MCU產品眾多,可以看到圖一有18種之多,切割5種主流功能區塊,這邊主要針對MPU外做深入介紹(MPU 還是microchip為主流,這邊就不多介紹) High-performance MCU STM32 Mainstream MCU STM32 Ultra-low-power MCU STM32 Wireless MCU HW/SW Development Tools 在硬體與軟體方面ST都有推出方便開發的工具 STM32CubeMX:為建構底層架構軟體,建構出底層code可以支援以下編輯器(圖二) STM32CubeIDE:官方軟體編輯器(圖三) STM32CubeProgram:燒入軟體與查看Flash數值(圖四) 硬體部分如下可以看到有基本的Nucleo Board或含顯示板Discovery kits或全面性開發版Evaluation Board可以供選擇 High-performance MCU 在高規格MCU中會主推STM32H7系列,因這類產品主要是用在顯示面板中或高階馬達控制為主要,而H7是目前有特別針對這部分特別優化的產品 STM32 Portfolio for Graphics 可以看到STM32H7是支援Dispaly傳輸協定最多元且Frequency最高的規格,並且ST併購開發軟體公司推出TouchGFX可以更方便開發觸碰顯示面板(支援圖五個類別ST MCU) STM32 Mainstream MCU 主流行MCU目前其實已經收斂為主要2區塊G0系列與G4系列,其主要原因是G系列把電源對縮減成僅一組,如此能更多GPIO腳位被利用,並且G4整合更多輸出優化可定位BLDC馬達控制專屬系列 STM32 Ultra-low-power MCU ST有針對手提是裝置推出省電板MCU,因手提式裝置所需要的是更長的使用時間,但功能卻要能維持與其他款MCU差不多,這邊L4或U5系列會是你最佳選擇 在休眠模式部分Ultra-low-power也提供不同需模式下求達到最低耗電量 STM32 Wireless MCU 針對無線傳輸部分MCU是ST算是非常特別的一塊MCU這邊切分成2塊WB與WL系列,應用主要是在需要無線模組的部分,MCU只要搭配對應的天線等等就可以做無線通訊是一款能夠節省空間的MCU STM32WB 在WB上主要是雙核心,M0+控制無限通訊M4為主要控制,在於加密部分安全性更加提升 STM32WL

STM32 MCU Product Line Introduction Read More »

NanoEdge AI Apply on ST MCU

前言 ST針對AI的應用推出了2款高度整合軟體協助使用者快速導入,其中一款是NanoEdge AI另一款是CubeAI,今天主要會介紹NanoEdge AI從操作到最後生成檔案移植進入MCU,NanoEdge AI好處是介面簡單且把最繁瑣的訓練放在電腦上,MCU僅使用最後生成檔案。 取得授權 針對NanoEdge AI這邊有提供幾個月免費試用,可以先透過網址申請或直接購買操作方式如下再把申請好的license填入NanoEdge AI軟體中 Your license key If you don’t know your license key, log in to the Cryptlex licensing platform to retrieve it.If you have lost your login credentials, reset your password using the email address used to download NanoEdge AI Studio. Licensing API: Cartesiam API for library compilation: 54.147.158.222 40.113.111.93

NanoEdge AI Apply on ST MCU Read More »

Shopping Cart