在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

應用筆記(三)| 運用DMA 功能實現高級定時器和ADC 的同步觸發采樣

武漢芯源半導體有限公司 ? 2022-08-03 10:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


前言

在做 BLDC 電機控制時,需要 ADC 的采樣時刻和定時器產生的 PWM 波形相配合,才能獲取準確的采樣值, 本文介紹了 CW32F030 系列芯片通過運用 DMA 功能實現高級定時器和 ADC 的同步觸發采樣的功能。

▇PWM 輸出實現

1.1 輸出端口的配置

根據 GPIO 復用功能分配表(完整表格請參閱 CW32F030 用戶手冊中表 9-2 GPIO 復用功能分配表),選取期 望輸出互補 PWM 波形的引腳,如本例中 PA8、PA9、PA10、PB13、PB14、PB15,如下表所示:

▼ GPIO 復用功能分配表

poYBAGLH8pCAa8hnAAITz5bwEAw203.png

PA8 和 PB13 組成一對互補輸出通道 CH1,PA9 和 PB14 組成一對互補輸出通道 CH2,PA10 和 PB15 組成一 對互補輸出 CH3。

步驟如下:

1. 將相關的 GPIO 設置為輸出;

2. 將 GPIO 配置為 ATIM 的比較輸出復用功能。

代碼如下:

poYBAGLH8peANMwFAAH-kcB7Yac843.jpgpoYBAGLH8paAYVuGAAFzlRiairQ143.jpg

1.2 ATIM 的配置

ATIM 包含一個 16 位的計數器 / 定時器和 7 個比較單元。7 個比較單元中,有六個具有捕獲功能,并且這 6 個捕獲 / 比較單元可以成對使用,組成互補輸出的功能。

本文以產生一個驅動 BLDC 電機所需的 20kHz 的三路互補輸出的 PWM 波形為例,選取 ATIM 的時基信號為 PCLK。

本例中 PCLK 為 64MHz,并通過 ATIM 的預分頻器進行 16 分頻后,以 4MHz 頻率進行計數。

為方便設定 ADC 的采樣時間,ATIM 采用中央對齊模式計數,設置 ATIM 的自動重載寄存器(ARR)為 100, 則 ATIM 的將先從 0 累加至 99,再從 100 遞減至 1,故計數周期為 2 倍的 ARR 寄存器的值,即 PWM 的頻率 為 20kHz。

通過設置 ATIM 的控制寄存器(CR)的 COMP 位為 1,使得 PWM 以互補的方式輸出,CH1A 和 CH1B 的脈寬 由通道 1比較 /捕獲寄存器 A(CH1CCRA)決定,CH1B的輸出脈寬不再由通道 1比較 /捕獲寄存器 B(CH1CCRB) 決定,CH1CCRB 仍可用于設定 CH1B 比較匹配的值。CH2A 和 CH2B,CH3A 和 CH3B 與之類似。

在設置輸出 PWM 互補輸出時,可以對互補通道加入死區時間,由死區時間寄存器(DTR)控制。

ATIM 配置輸出 3 對互補帶死區的 PWM 波形,詳細配置代碼如下:

pYYBAGLH8paAeIqyAAWa4osRGKU706.jpg

pYYBAGLH8paAVPS2AAJGDHN-JQg656.jpgpoYBAGLH8paAODqQAAJJLuXceZQ777.jpg

▼ 產生的 PWM 波形如下:

pYYBAGLH8paAeKq3AACw75bb_hc950.jpg

1.3 ADC 的配置

1.3.1 序列采樣

當需求的采樣通道小于等于 4 路時,可以通過 ADC 的序列采樣模式實現,并且可以通過 ATIM 的通道 1~3 比 較 / 捕獲寄存器 B 中任意一個寄存器設定 ADC 的采樣時刻,這些操作都可以由硬件自動完成,減輕了 CPU 的工作量。

以采樣 AIN0~AIN3 這 4 路輸入為例,設定采樣時刻為 ATIM 計數達到 ARR 時,其參考代碼如下:

poYBAGLH8paAOByfAAT7R9TK3iE555.jpgpYYBAGLH8paAdhe6AAGxvncQTnQ916.jpg

上述方法完全由硬件實現,不需要 CPU 和中斷的參與,執行效率非常高,不足的地方是采樣通道限制為 4 路。

1.3.2DMA 擴展采樣

如果需要對超過 4 路的模擬量進行采樣,則需要結合 DMA 的功能,以實現較少的 CPU 參與。其思路如下:

1. ADC 配置為單通道單次轉換,完成轉換后硬件觸發 DMA;

2. DMA 的 CH1 用于將 ADC 的轉換結果傳輸到 RAM 中,本例中將采樣 6 個 ADC 通道,因此傳輸次數 CNT 為 6,源地址固定為 ADC 的 RESULT0 寄存器,目的地址需要遞增;

3. DMA 的 CH2 用于更改 ADC 的采樣通道,當 ADC 轉換完成后,從 RAM 中取 ADC 的通道配置參數,自 動配置 ADC 的寄存器值,因此源地址為 RAM,地址遞增,目的地址為 ADC 的通道控制寄存器;

4. DMA 的 CH3 用于再次啟動 ADC,因為 ADC 配置為單次轉換,當轉換完成后,ADC 自動停止轉換,所 以需要通過 DMA 向 ADC 的轉換啟動寄存器置位,以再次啟動 ADC 轉換;

5. DMA 的 CH1 傳輸完成后,ADC 的 6 路轉換也完成了,并且轉換結果也被傳輸到 RAM,可通過 CH1 的 傳輸完成中斷,將 DMA 的參數重新配置,就實現了多路 ADC 的循環采樣;

6. 通過 ATIM 的比較通道 4,去觸發 DMA 的 CH4,向 ADC 的轉換啟動寄存器置位,啟動 ADC。

其參考代碼如下:

? ADC 的配置:

pYYBAGLH8paARtQRAAMcK9hJb6Y016.jpg

ADC 配置為單次單通道采樣,采樣完成后可觸發 DMA。

? DMA 的配置:

pYYBAGLH8paAJikiAAYOoHUrzqs126.jpgpoYBAGLH8paAD5xOAARHvCmLtSc418.jpg

? ATIM 需要在之前的配置上增加通道 4 的設置,增加的代碼如下:

poYBAGLH8paATj-SAAQDVbmzYBA751.jpgpYYBAGLH8paAB7oDAADKtq7nGRA067.jpg

這種方法可以實現多于 4個模擬通道的采樣,采樣結果自動保存在內存中,并且僅在最后一個通道采樣完成后, 進入一次中斷服務程序對 DMA 的配置進行復位,所以 CPU 的開銷是比較小的,而且可以通過 ATIM 的比較 通道 4 靈活設置采樣時機。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7928

    瀏覽量

    153972
  • 單片機
    +關注

    關注

    6067

    文章

    44956

    瀏覽量

    648711
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17908

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    MCU定時器/計數

    架構與功能特性? 定時器類型與配置? 高級控制定時器?:支持互補PWM輸出與剎車功能,適用于電機驅動等高精度控制場景。通用
    的頭像 發表于 04-27 13:54 ?232次閱讀

    STM32使用外部中斷觸發ADC采樣DMA搬運出現兩次進入DMA中斷的異常情況,怎么解決?

    STM32使用外部中斷觸發ADC采樣DMA搬運出現兩次進入DMA中斷的異常情況,使用的HAL庫+MX配置的,示波器觀察波形
    發表于 03-14 12:46

    請問什么是同步采樣ADC?要實現同步采樣要滿足什么條件?

    請問什么是同步采樣ADC?要實現同步采樣要滿足什么條件? 謝謝!
    發表于 01-17 07:49

    STM32H743的高精度定時器觸發ADC采樣

    目前做的是移相全橋,配置出一對可以移相互補的PWM波,目前已經能夠產生了,但是,還是想要在滯后橋臂導通時采集數據,即在后橋臂開啟時使用hrtim中的ADC觸發采樣,我這個就是在master
    發表于 01-09 15:49

    ADS131A04如果想實現多個設備的同步觸發采樣,應該如何實現呢?

    的standby模式,也是如此。這點非常奇怪,如果想實現多個設備的同步觸發采樣,應該如何實現呢?主要復位可能會消耗4.5ms,希望在
    發表于 12-04 07:13

    詳解CKS32F107xx系列的定時器同步功能

    CKS32F107xx系列部分定時器在內部是相連的,可用于定時器同步或鏈接,方便用戶配置不同的同步模式,以便在電機控制、數據采集和PWM信號生成等應用中,
    的頭像 發表于 11-26 17:51 ?998次閱讀
    詳解CKS32F107xx系列的<b class='flag-5'>定時器</b><b class='flag-5'>同步</b><b class='flag-5'>功能</b>

    高級定時器PWM輸入模式的配置方法

    我們將向大家介紹高級定時器的另一個常見應用——PWM輸入模式。在本節課中,我們將先圍繞輸入捕獲模式展開,并重點描述PWM輸入模式和涉及的寄存,最后通過一個實驗例程去介紹PWM輸入模式的配置方法。
    的頭像 發表于 11-08 16:48 ?4240次閱讀
    <b class='flag-5'>高級</b><b class='flag-5'>定時器</b>PWM輸入模式的配置方法

    運用MSPM0的DMA和Event功能實現ADC多路周期性采樣

    電子發燒友網站提供《運用MSPM0的DMA和Event功能實現ADC多路周期性采樣.pdf》資料
    發表于 09-06 15:01 ?7次下載
    <b class='flag-5'>運用</b>MSPM0的<b class='flag-5'>DMA</b>和Event<b class='flag-5'>功能</b><b class='flag-5'>實現</b><b class='flag-5'>ADC</b>多路周期性<b class='flag-5'>采樣</b>

    STM32F407ADC采樣設置死機怎么解決?

    使用STM32F407ADCADC1ADC2 ADC3分別分配8個通道(ADC1 把芯片測溫等
    發表于 07-26 06:43

    定時器的工作方式介紹

    定時器是計算機和嵌入式系統中常見的一種硬件模塊,用于實現定時和計數功能。定時器的工作方式通常由一組寄存
    的頭像 發表于 07-12 10:29 ?1863次閱讀

    定時器相關的寄存有哪些類型

    在微控制編程中,定時器是一種非常常見的功能模塊,用于實現各種定時和計數功能
    的頭像 發表于 07-12 10:25 ?1640次閱讀

    tc397如何使用定時器的更新事件來觸發dma搬運數據?

    請問有沒有人使用過定時器的更新事件來觸發dma搬運數據,或者哪里有相關的示例代碼,我不知道應該使用gtm模塊的哪個子模塊來做這件事情,有經驗的大佬可否指教下。
    發表于 07-05 06:36

    外接高級定時器1的剎車引腳后,STM32中能不能做濾波?

    請問下外接高級定時器1的剎車引腳后,STM32中能不能做濾波,因為這個剎車功能一旦觸發就直接關閉PWM波了,要是因為噪聲等干擾意外觸發,整個
    發表于 07-02 08:04

    STM32F103 ADC利用DMA進行采樣遇到的幾個疑問求解

    STM32F103配置了ADC1 的4個通道,利用定時器的事件觸發進行10Hz 的數據采樣,數據通過DMA傳輸。然后希望每次
    發表于 07-02 07:04

    G431定時器無法觸發DMA更新DAC值要怎么辦?

    如圖進行初始化配置: DAC配置為TIM2觸發信號觸發DMA配置: 定時器配置: 在初始化后,調用如下函數,啟動DAC與DMA
    發表于 07-02 06:50
    主站蜘蛛池模板: 理论在线看 | 特黄色片| 一本到中文字幕高清不卡在线 | 天天做天天爱夜夜爽毛片毛片 | 亚洲资源最新版在线观看 | 久久精品.com | 欧美一区二区三区免费 | 免费在线看片网站 | 免费爱爱视频网站 | 三级亚洲| 手机亚洲第一页 | 日韩免费一级片 | 99久久精品免费看国产免费 | 女同毛片 | 唐人社电亚洲一区二区三区 | 人人爱天天做夜夜爽毛片 | 四虎永久网址影院 | 婷婷丁香色综合狠狠色 | 日本a级三级三级三级久久 日本a级影院 | 久久香蕉国产精品一区二区三 | 国产午夜爽爽窝窝在线观看 | 两性色午夜视频免费网 | 国产色视频在线 | 日本视频一区二区三区 | 亚洲入口| 久久亚洲精品玖玖玖玖 | 久久国产福利 | 日本亚洲精品色婷婷在线影院 | 口述他拿舌头进去我下面好爽 | 四虎网站在线播放 | 成人观看天堂在线影片 | 天堂资源吧 | 成视频年人黄网站免费视频 | 大色综合色综合网站 | 欧美一区二区三区四区视频 | 色综色| 亚洲va久久久噜噜噜久久天堂 | 色五月天天 | 美女视频黄a视频美女大全 美女视频一区二区 | 亚洲视频五区 | 国模私拍大尺度视频在线播放 |