91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

應(yīng)用筆記 | STM32使用DMA產(chǎn)生PWM時(shí)波形異常分析

STM32單片機(jī) ? 來源:未知 ? 2023-09-22 17:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

29761040-5926-11ee-939d-92fbcf53809c.gif

關(guān)鍵字:回調(diào)函數(shù),HAL庫

目錄預(yù)覽

1.前言

2.實(shí)驗(yàn)

3.使用實(shí)例

4.小結(jié)

01 前言

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

02

實(shí)驗(yàn)

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

硬件:STM32F401RE-NUCLEO

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

2981025c-5926-11ee-939d-92fbcf53809c.png

29a89e48-5926-11ee-939d-92fbcf53809c.png

生成代碼,并定義兩個(gè)數(shù)組如下圖所示:

29c57252-5926-11ee-939d-92fbcf53809c.png

在主函數(shù)中開啟Timer。

29e214a2-5926-11ee-939d-92fbcf53809c.png

我們可以發(fā)現(xiàn),實(shí)驗(yàn)結(jié)果如客戶反饋的,TIM2輸出的PWM是不正確的,TIM3輸出的PWM是正確的。

2a022026-5926-11ee-939d-92fbcf53809c.png

03 分析

我們的實(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)問題發(fā)生時(shí),TIM2的CCR1竟然比ARR的值要大,或者出現(xiàn)異常值,所以出現(xiàn)異常波形。

2a1fdee0-5926-11ee-939d-92fbcf53809c.png

根本原因在于,對(duì)于大部分STM32系列,主設(shè)備基于AHB外設(shè)進(jìn)行尋址是不支持byte/half-word傳輸?shù)?,總線會(huì)強(qiáng)制將數(shù)據(jù)轉(zhuǎn)化為32bit傳送到總線上,這就是為什么我們看到CCR1的高半字和低半字的值是相同的原因。

當(dāng)我們將TIM2的DMA外設(shè)端修改為word長(zhǎng)度,并將內(nèi)存數(shù)組定義為32bit,再次實(shí)驗(yàn),可以發(fā)現(xiàn)PWM的波形就是正常的了:

2a36b39a-5926-11ee-939d-92fbcf53809c.png

2a666b44-5926-11ee-939d-92fbcf53809c.png

2a79522c-5926-11ee-939d-92fbcf53809c.png

04 小結(jié)

因?yàn)镕103上沒有32bit計(jì)數(shù)器的Timer,所以客戶在F103上并沒有出現(xiàn)類似的問題。在使用DMA訪問經(jīng)過AHB轉(zhuǎn)APB的橋接外設(shè)時(shí),我們要注意DMA對(duì)外設(shè)的訪問寬度配置問題。

完整內(nèi)容請(qǐng)點(diǎn)擊“閱讀原文”下載原文檔。


原文標(biāo)題:應(yīng)用筆記 | STM32使用DMA產(chǎn)生PWM時(shí)波形異常分析

文章出處:【微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6076

    文章

    45495

    瀏覽量

    670301
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    116

    文章

    5869

    瀏覽量

    225612
  • STM32
    +關(guān)注

    關(guān)注

    2309

    文章

    11162

    瀏覽量

    373423

原文標(biāo)題:應(yīng)用筆記 | STM32使用DMA產(chǎn)生PWM時(shí)波形異常分析

文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    LAT1185+一個(gè)地址未對(duì)齊引起的 HardFault 異常應(yīng)用筆記

    客戶在使用 STM32G070 的時(shí)候,KEIL MDK 為編譯工具,當(dāng)編譯優(yōu)化選項(xiàng)設(shè)置為L(zhǎng)evel0 的時(shí)候,程序會(huì)出現(xiàn) Hard Fault 異常,而當(dāng)編譯優(yōu)化選項(xiàng)設(shè)置為 Level1 的時(shí)候
    發(fā)表于 01-11 17:28 ?0次下載

    LAT1189+Timer 結(jié)合 DMA 2D 通道實(shí)現(xiàn)不同波形輸出應(yīng)用筆記

    TIM 來定時(shí)切換輸出正弦波或固定電平。使用 TIM 輸出 PWM 產(chǎn)生正弦波形時(shí),需要結(jié)合 GPDMA 來實(shí)現(xiàn)。在 STM32U5 系列中,GPDMA 共有 16 個(gè)獨(dú)立通道,其中
    發(fā)表于 01-11 17:25 ?0次下載

    LAT1202+TIM DMA burst 輸出變頻 PWM 波形應(yīng)用筆記

    客戶需要 MCU 輸出一組變頻的 PWM 波形來控制外圍器件,并且不同頻率脈沖的個(gè)數(shù)也不同。STM32U5 芯片擁有 TIM1/TIM8 高級(jí)定時(shí)器,還有通用定時(shí)器TIM2/TIM3/TIM4
    發(fā)表于 01-11 17:22 ?0次下載

    STM32G474 HRTIME PWM 丟波問題分析與解決

    STM32G474 中包含了針對(duì)數(shù)字電源應(yīng)用的高精度定時(shí)器(HRTIMER),客戶在應(yīng)用該定時(shí)器產(chǎn)生 PWM 時(shí),發(fā)現(xiàn) PWM 的輸出出現(xiàn)了“丟波”現(xiàn)象,本文對(duì)該問題進(jìn)行
    發(fā)表于 01-04 13:47 ?0次下載

    哪些場(chǎng)景適合使用DMA?

    : 模數(shù)轉(zhuǎn)換器(ADC)采集數(shù)據(jù): 當(dāng)ADC連續(xù)采樣時(shí),通常會(huì)產(chǎn)生大量數(shù)據(jù)。使用DMA可以將ADC轉(zhuǎn)換結(jié)果直接傳輸?shù)絻?nèi)存中的數(shù)組,而不需要CPU每次讀取ADC數(shù)據(jù)寄存器。這樣可以避免CPU被頻繁
    發(fā)表于 11-12 07:13

    SPI主機(jī)/從機(jī)接收發(fā)送都開啟DMA通信

    和發(fā)送;SPI 作為從機(jī)時(shí),接收和發(fā)送同時(shí)開啟 DMA 進(jìn)行數(shù)據(jù)接收和發(fā)送。 注:本應(yīng)用筆記對(duì)應(yīng)的代碼是基于雅特力提供的V2.x.x 板級(jí)支持包(BSP)而開發(fā),對(duì)于其他版本BSP,需要注意使用上
    發(fā)表于 09-10 16:56

    STM32多通道FFT運(yùn)算異常的原因?怎么解決?

    問題報(bào)告:STM32多通道FFT運(yùn)算異常 報(bào)告人:XXX日期:2025年X月X日硬件平臺(tái):STM32F407VGT6開發(fā)環(huán)境:STM32CubeMX + KeilCMSIS-DSP庫版
    發(fā)表于 06-19 06:27

    定時(shí)器使用DMA突發(fā)傳輸功能時(shí),傳入指針從常量數(shù)組改為變量數(shù)組后,傳輸功能異常的原因?

    用的是STM32H743開發(fā)板。 代碼如下: static const uint32_t s_tim_dma[] = {1600, 0x00000000, 500}; //定義為const
    發(fā)表于 06-17 06:29

    定時(shí)器使用DMA突發(fā)傳輸功能時(shí),傳入指針從常量數(shù)組改為變量數(shù)組后,傳輸功能異常的原因?

    用的是STM32H743開發(fā)板。 代碼如下: static const uint32_t s_tim_dma[] = {1600, 0x00000000, 500}; //定義為const
    發(fā)表于 06-16 07:17

    定時(shí)器使用DMA突發(fā)傳輸功能時(shí),傳入指針從常量數(shù)組改為變量數(shù)組后,傳輸功能異常的原因?

    用的是STM32H743開發(fā)板。 代碼如下: static const uint32_t s_tim_dma[] = {1600, 0x00000000, 500}; //定義為const
    發(fā)表于 06-12 07:10

    STM32H743定時(shí)器使用DMA突發(fā)傳輸功能時(shí),傳入指針從常量數(shù)組改為變量數(shù)組后,傳輸功能異常,為什么?

    用的是STM32H743開發(fā)板。 代碼如下: static const uint32_t s_tim_dma[] = {1600, 0x00000000, 500}; //定義為const
    發(fā)表于 06-10 06:57

    GPDV6624C應(yīng)用筆記1.0版

    電子發(fā)燒友網(wǎng)站提供《GPDV6624C應(yīng)用筆記1.0版.pdf》資料免費(fèi)下載
    發(fā)表于 06-06 17:20 ?0次下載

    搞SK6812燈珠的控制,選擇了PWM+DMA的方式,遇到的問題求解決

    最近在搞SK6812燈珠的控制,選擇了PWM+DMA的方式,在執(zhí)行HAL_TIM_PWM_Start_DMA的時(shí)候能看到長(zhǎng)度和數(shù)據(jù)都是我配置的值: 但是輸出的波形就是不對(duì): DMA
    發(fā)表于 04-23 07:44

    STM32使用外部中斷觸發(fā)ADC采樣DMA搬運(yùn)出現(xiàn)兩次進(jìn)入DMA中斷的異常情況,怎么解決?

    STM32使用外部中斷觸發(fā)ADC采樣DMA搬運(yùn)出現(xiàn)兩次進(jìn)入DMA中斷的異常情況,使用的HAL庫+MX配置的,示波器觀察波形ADC中斷進(jìn)入一次
    發(fā)表于 03-14 12:46

    stm32同一個(gè)定時(shí)器不同的通道,可以不同時(shí)的輸出pwm波形嗎?

    請(qǐng)問,stm32的同一個(gè)定時(shí)器,不同的通道,可以不同時(shí)的輸出pwm波形嗎?比如tim1的ch1輸出,延時(shí)幾毫秒后tim1的ch2輸出。 現(xiàn)在是要輸出兩個(gè)相位不同的pwm
    發(fā)表于 03-07 08:20