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

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

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

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

350.17 KB

前言

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

實(shí)驗(yàn)

根據(jù)客戶的反饋,我們進(jìn)行了實(shí)驗(yàn)。

硬件:STM32F401RE-NUCLEO

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

分析

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

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

小結(jié)

對(duì)于 32 位計(jì)數(shù)器的 Timer,我們?cè)谑褂?DMA 時(shí),需要將 DMA 的長(zhǎng)度配置為 32bit。因?yàn)?F103 上沒(méi)有 32bit 計(jì)數(shù)器的 Timer,所以客戶在 F103 上并沒(méi)有出現(xiàn)類似的問(wèn)題,歸根結(jié)底,我們要學(xué)會(huì)類似查找問(wèn)題的方法。

資料預(yù)覽

相關(guān)推薦