• 資料介紹
    • 前言
    • 實驗
    • 分析
    • 小結(jié)
  • 資料預(yù)覽
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

LAT1259 STM32使用DMA產(chǎn)生PWM時波形異常分析

03/25 14:52
1056
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

LAT1259 STM32使用DMA產(chǎn)生PWM時波形異常分析

350.17 KB

前言

有客戶反饋,使用 STM32F4 的 TIM2 結(jié)合 DMA,產(chǎn)生的 PWM 波形不符合預(yù)期,但是相同的配置使用在 TIM3 上,得到的 PWM 波形就是符合預(yù)期的。其代碼和配置都是從 F1 移植過來的,在 F1 上使用 TIM2 是沒有問題的,對于 F4 的 TIM2 發(fā)生的問題,客戶一直沒有找到根本原因。

實驗

根據(jù)客戶的反饋,我們進行了實驗。

硬件:STM32F401RE-NUCLEO

在 STM32CubeMX 中,將 TIM2 和 TIM3 所有參數(shù)均做相同的配置,其中配置 DMA 兩端均為 halfword 長度。

分析

我們的實驗中,TIM2 和 TIM3 的配置是完全一樣的,即使傳輸相同的數(shù)據(jù),得到的 PWM 波形也是不同的。為此我們比較了 TIM2 和 TIM3 的硬件屬性,可以很容易查看出,TIM2 的計數(shù)器是 32bit 的,而 TIM3 的計數(shù)器是 16bit 的。

我想我們已經(jīng)知道答案了,TIM2 的計數(shù)器是 32bit 的,但是我們配置的 DMA 是 halfword 長度,這在 AHB 總線上解析數(shù)據(jù)時產(chǎn)生了非預(yù)期的結(jié)果。在調(diào)試界面我們也能看到,當問題發(fā)生時,TIM2 的 CCR1 竟然比 ARR 的值要大,或者出現(xiàn)異常值,所以出現(xiàn)異常波形。

小結(jié)

對于 32 位計數(shù)器的 Timer,我們在使用 DMA 時,需要將 DMA 的長度配置為 32bit。因為 F103 上沒有 32bit 計數(shù)器的 Timer,所以客戶在 F103 上并沒有出現(xiàn)類似的問題,歸根結(jié)底,我們要學會類似查找問題的方法。

資料預(yù)覽

相關(guān)推薦