色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

STM32 系列 DAC的介紹與使用

矜辰所致 ? 來源:矜辰所致 ? 作者:矜辰所致 ? 2023-05-29 09:59 ? 次閱讀
STM32網上資料多,對自己來說基本的使用也是很簡單的,
我的STM32專欄并沒有什么系統的基礎教學,基本上是某個項目用到了,或者產品使用過程出過問題
才會來記錄一下,正好用到了 DAC ,一般產品還用得不多,正好來一篇文章記錄一下

前言

最近是因為有一個項目需要輸出 0~10V 的信號量,而且

想著應該可以直接使用 STM32 的 DAC 來做,雖然不一定實際使用,但是也就來試試看吧。

說句實話,博主自己做的產品,不常用 DAC,所以 本文我們就來好好復習下 STM32 的 DAC ,從應用角度講講如何快速使用起來。

我是矜辰所致,全網同名,盡量用心寫好每一系列文章,不浮夸,不將就,認真對待學知識的我們,矜辰所致,金石為開!

一、STM32 帶 DAC 的系列

目前博主產品使用的芯片為 STM32L051C8 系列,本來還想著直接CubeMX 設置一下,直接測試,才發現這個片片根本沒有 DAC = =! 好吧,尷尬,后來查了下 L 系列確實都沒有 DAC。

STM32L0:

STM32L0 系列都沒有 DAC。(ST產品線一直在完善,也可能是我自己不知道有,有錯誤請指出!)

那么想著就用 STM32F103 系列把,然后又查了下資料,48pin 的STM32F103C系列 也沒有 DAC ,自己最常用的兩款芯片都沒有,網上也沒有直接說哪些有哪些沒有的,只能去找 ST 的資料看看,果然在某份文檔中找到了。

STM32F103:

STM32F103 系列帶有 DAC 的型號如下圖列表所示(從 STM32F103RC 起往上都有DAC):

在這里插入圖片描述

那這么看到,如果使用STM32F系列,那么至少也得從64pin 的 STM32F103RC 開始使用了。

至于 STM32F1 系列的其他型號,比如 F100、F101、F102、F105/7 等系列,因為不常用,我也沒有特意去查找。

考慮到想找一個與 STM32F103 Pin to Pin 的,我又去找了另外一個常用的系列,STM32L1系列 ,居然發現了 STM32L151C8 居然也有 DAC, 這倒是可以用用。

STM32L1:

STM32L1 系列都帶有 DAC : STM32L151xxxx 、STM32L152xxxx 。

STM32F4:

更高端的 F4 系列芯片,想想都知道,全系列帶有 DAC ,就是貴啊。

STM32F4 系列都帶有 DAC 。

這里再多余的補充一下,為什么我找芯片都是從最低端的型號開始,而且找到合適的基本不會再往功能更強的去找了:

因為實際產品! 做產品不可能和學習一樣,大家學習買的開發板,都是上百個腳,一步到位,基本都是系列旗艦芯片了,功能越強越好,性能越強越好。但是作為實際應用的產品來說,需要考慮成本的,沒有一家公司會在滿足性能的低成本芯片的情況下,去找一個所謂更好,更強的芯片!

二、DAC 基礎簡介

DAC把數字量轉換為模擬量,在單片機上 ,給指定的寄存器一個數字量,模塊就會轉化成對應的模擬電壓輸出,理解和使用起來都是很簡單的,如果想知道基本的理論,說明大家可以網上搜索一下一大堆,這里我們直接用起來沒必要介紹那些 “沒用” 理論。

對于 STM32 而言,我們使用起來也是非常簡單,只需要記住下面幾個點,基本上就沒問題了:

2.1 DAC輸出引腳

STM32 常用系列的 DAC 輸出通道都是固定的:

DAC_OUT1 : PA4

DAC_OUT2 : PA5

2.2 引腳配置

在 IO 配置的時候為了避免額外的干擾, PA4 和 PA5 建議配置為模擬功能。

如果使用 CubeMX 軟件,選擇了 DAC 輸出,系統自動會選擇成 Analog mode,使能 DAC 通道之后,相應的 GPIO 引腳會自動與 DAC 的模擬輸出相連。

2.3 DAC輸出電壓計算方法

12位模式下面:

DAC輸出電壓 = (DOR/2^12) * Vref+

.

上面 DOR 是寄存器,最終會拿到我們寫入的數字量的寄存器

.

關于到底用 4096 還是 4095 ,其實平時用起來差不多,ST 的手冊上面為 4095,那么建議4095 嚴謹一點吧,這里大家知道就行

.

一般來說,我們 Vref+ 可以連接至 VCC ,比如說3.3V , 那就是

DAC輸出電壓 = (寫入的數字量 / 4095) * 3.3

那么同樣的,8位模式下面的計算方法:

DAC輸出電壓 = (寫入的數字量 / 255) * 3.3

三、CubeMX DAC配置

那么接下來我們來簡單測試一下 DAC 的效果,這里我們使用 STM32CubeMX 軟件進行配置。

DAC 的配置是相對很簡單的,如下圖:

在這里插入圖片描述

選擇兩個輸出通道,其中 External Trigger 選項為是否選擇 外部中斷EXTI9 觸發,如下圖:

在這里插入圖片描述

我們測試的時候使用軟件觸發,不使用外部中斷,所以這里不選擇。

DAC 的基本設置,很簡單,對于博主使用的 STM32L151 來說就只有2個選項:

在這里插入圖片描述

關于輸出緩存:

DAC選擇了輸出緩存,可以用來減少輸出阻抗,無需外部運放即可直接驅動外部負載。但是輸出的電壓沒法低于20mv。

不使能輸出緩存,DAC可以輸出低于20mv的信號。

對于其他型號的 DAC ,可能還會有下面兩個選項:

Wave generation mode

波形生成模式:可選 三角波發生器 ( Triangle wave generation ) 和 噪聲波形 ( noise wave generation )

Maximum Triangle Amplitude

最大三角波幅: 0-4095 對應 0V~3.3V

3.1 觸發源 software trigger 與 None 的區別

這里要額外說明一下,最后一個選項 software trigger (軟件觸發) 與 選擇 None (沒有觸發源)的區別。

這兩種觸發源很多小伙伴在使用的時候會搞糊涂,實際上這兩者是完全不同的,先用文字簡單解釋一下(簡單使用 HAL 庫,不了解寄存器沒關系,這里只是為了說明區別,):

選擇 None (沒有觸發源):

只在向 DAC 數據寄存器 DHR 寫入數據之后,DAC 轉化模塊自動轉換一次。

選擇 software trigger (軟件觸發):

向軟件觸發寄存器 SWTRIGR 中寫入命令時觸發轉換,將 DOR 寄存器中的數據進行轉換。 但是在這個之間需要向 DAC 數據寄存器 DHR 寫入數據, 再進行軟件觸發操作。

可以說,software trigger (軟件觸發)就比 None (沒有觸發源) 多一個步驟,首先都要寫 DHR 寄存器寫入數據,寫完后 None 自動轉換,但是 software trigger 需要多一步軟件觸發操作。

在標準庫中,使用步驟區別:

如果模式為 DAC_Trigger_None

直接使用 DAC_SetChannelxData() 設置輸出電壓,就可以設定輸出電壓的大小

如果模式為軟件觸發:

每次在使用 DAC_SetChannelxData() 設置或者修改輸出電壓后,

還需要調用 DAC_SoftwareTriggerCmd(),使能軟件觸發。

在 HAL 庫中,沒有單獨的軟件觸發的代碼,因為 HAL_DAC_Start() 函數中包含了軟觸發轉換的代碼。

所以在 HAL 庫中,建議的使用方法步驟為:

初始化完成后,先使用 HAL_DAC_SetValue(); ,然后再使用 HAL_DAC_Start(); ,這樣的先后順序不管是使用上面的那種方式,都能夠正常輸出電壓值。

明白了 軟件觸發 以后,在平時使用中需要謹慎使用,因為每一次修改輸出電壓后,都必須產生一次觸發信號來使得 DAC 觸發 。

四、 測試

接下來簡單測試一下 STM32 的DAC。

4.1 基礎測試

基礎測試就是非常簡單,使用 STM32CubMX 生成代碼后,直接加上兩句話就可以使得 DAC 有輸出了,比如下圖示例:

在這里插入圖片描述

上面設置 value 為 2048 ,根據上面的 0-4095 對應 0V~3.3V,可知,我們的電壓值為 1.6V 左右。

然后直接測量 通道2(PA5) 的電壓,如下:

在這里插入圖片描述

4.2 波形輸出

上文我們說過,對于我目前使用的 STM32L151 不支持波形輸出,其他型號的可能可以直接設置,那么我們自己來簡單實現一個波形輸出,也是比較簡單的:

while (1)
  {
    for (mydac_value = 4095; mydac_value > 0; mydac_value--)
    {
      HAL_DAC_SetValue(&hdac,DAC_CHANNEL_2,DAC_ALIGN_12B_R,mydac_value);
      HAL_Delay(1);
    }
    for (mydac_value = 0; mydac_value < 4095; mydac_value++)
    {
      HAL_DAC_SetValue(&hdac,DAC_CHANNEL_2,DAC_ALIGN_12B_R,mydac_value);
      HAL_Delay(1);
    }
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
  }

直接上一下波形圖:

在這里插入圖片描述

上面的圖形,有個小小的疑問,按理來說,從 0 ~ 3.3V 需要的時間 4095 ms ,4s 多,但是實際上花的時間比這多得多(5s 一個格子快2個格子了),難道這里是單片機處理 DAC 的值所需要的花費的時間 ? 這個問題如果發現問題的小伙伴還望告知!謝謝!

簡單的測試就這樣吧,一切還是比較正常的,具體的后期 DAC 會在設計 0 - 10V 輸出電路的時候再次測試。是否好用可查看文章:單片機 0~10V 輸出電路的實現

結語

本文從應用的角度介紹了 STM32 系列 DAC 的基本使用,小小的總結了一下一些常用的帶 DAC 的系列型號。

沒有過多的那些枯燥的寄存器什么的理論,雖然 DAC 的使用確實比較簡單,但是還是有些細節問題文章也給到了說明,只希望大家能夠簡單快速的把 DAC 使用起來。

好了,本文就到這里,謝謝大家!

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

    關注

    32

    文章

    1133

    瀏覽量

    128910
  • dac
    dac
    +關注

    關注

    43

    文章

    2291

    瀏覽量

    190975
  • STM32
    +關注

    關注

    2270

    文章

    10895

    瀏覽量

    355729
  • 引腳
    +關注

    關注

    16

    文章

    1193

    瀏覽量

    50411
  • 信號量
    +關注

    關注

    0

    文章

    53

    瀏覽量

    8331
收藏 人收藏

    評論

    相關推薦

    使用STM32微控制器系列中的DAC生成音頻和波形之DAC特性

    本應用筆記舉例介紹了使用數模轉換器 (DAC) 外設生成音頻輸出信號的過程,該 DAC 外設內嵌在 STM32F10xx 微控制器系列產品中
    發表于 11-28 09:48 ?2409次閱讀

    STM32教程實例-DAC數模轉換實驗

    我們介紹過了 STM32F1 的模數轉換器 ADC,接下來我們學習下STM32F1 的數模轉換器 DAC。要實現的功能是:通過 K_UP 與K_DOWN 按鍵控制
    的頭像 發表于 05-04 10:08 ?4633次閱讀
    <b class='flag-5'>STM32</b>教程實例-<b class='flag-5'>DAC</b>數模轉換實驗

    STM32系列 DAC 的基本使用

    前言 一、STM32DAC系列 二、DAC 基礎簡介 2.1 DAC輸出引腳 2.2 引腳配置 2.3
    的頭像 發表于 09-11 15:21 ?2732次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>系列</b> <b class='flag-5'>DAC</b> 的基本使用

    STM32U5系列TIMER+DMA+DAC應用演示

    有人使用STM32U575芯片的DAC功能。他希望使用TIMER事件觸發DMA,并通過DMA傳輸內存數據到DAC輸出寄存器,進而產生相應的DAC輸出波形。可他不知如何配置DMA并實現期
    的頭像 發表于 01-24 09:10 ?1787次閱讀
    <b class='flag-5'>STM32</b>U5<b class='flag-5'>系列</b>TIMER+DMA+<b class='flag-5'>DAC</b>應用演示

    STM32的PWM和DAC介紹

    關于STM32的PWM和DAC的基本嘗試和練習STM32的PWM嘗試STM32的PWM嘗試
    發表于 08-09 06:53

    使用STM32F0xx系列微控制器的DAC模塊實現音頻和生產波形

    使用STM32F0xx系列微控制器的DAC模塊實現音頻和生產波形應用
    發表于 05-18 13:55 ?20次下載

    DAC模塊的工作原理介紹

    今天給大家介紹一下 STM32 單片機的 DAC 模塊的工作原理,在有的場合,往往需要單片機輸出變化的模擬量,來控制外部的器件來工作,以前我們用的普通 51 單片機內部是沒有 DAC
    發表于 11-11 17:17 ?83次下載

    STM32_ DAC輸出電壓

    STM32_DAC輸出電壓
    的頭像 發表于 04-08 10:05 ?1.1w次閱讀
    <b class='flag-5'>STM32</b>_ <b class='flag-5'>DAC</b>輸出電壓

    STM32 F1系列 DAC的示例詳解

    STM32 F1系列 DAC的示例詳解(直流電源技術要求)-基于學習的目的,詳細講解關于Cube庫中的DAC的功能。本次介紹
    發表于 08-04 17:55 ?14次下載
    <b class='flag-5'>STM32</b> F1<b class='flag-5'>系列</b> <b class='flag-5'>DAC</b>的示例詳解

    STM32STM32 MCU系列介紹

    STM32-32 微控制器(MCU)家族 系列 MCU 主流級別MCU STM32 F0系列-ARM Cortex-M0入門級MCU
    發表于 11-18 18:51 ?72次下載
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>STM32</b> MCU<b class='flag-5'>系列</b><b class='flag-5'>介紹</b>

    STM32 DAC的配置與使用

    STM32DAC 模塊(數字/模擬轉換模塊)是 12 位數字輸入,電壓輸出型的DAC
    發表于 02-08 16:30 ?28次下載
    <b class='flag-5'>STM32</b> <b class='flag-5'>DAC</b>的配置與使用

    AN4058_使用STM32F0xx系列DAC生成音頻和特定波形

    AN4058_使用STM32F0xx系列DAC生成音頻和特定波形
    發表于 11-21 12:57 ?0次下載
    AN4058_使用<b class='flag-5'>STM32</b>F0xx<b class='flag-5'>系列</b>的<b class='flag-5'>DAC</b>生成音頻和特定波形

    AN4058_使用STM32F0xx系列DAC生成音頻和特定波形

    AN4058_使用STM32F0xx系列DAC生成音頻和特定波形
    發表于 11-21 17:06 ?1次下載
    AN4058_使用<b class='flag-5'>STM32</b>F0xx<b class='flag-5'>系列</b>的<b class='flag-5'>DAC</b>生成音頻和特定波形

    AN4566 STM32系列單片機DAC性能增強方法介紹

    AN4566 STM32系列單片機DAC性能增強方法介紹
    發表于 11-21 17:07 ?0次下載
    AN4566 <b class='flag-5'>STM32</b><b class='flag-5'>系列</b>單片機<b class='flag-5'>DAC</b>性能增強方法<b class='flag-5'>介紹</b>

    STM32 系列DAC的基本使用

    一、STM32DAC系列 目前博主產品使用的芯片為 STM32L051C8 系列,本來還想著直接CubeMX 設置一下,直接測試,
    的頭像 發表于 06-22 10:48 ?2306次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>系列</b><b class='flag-5'>DAC</b>的基本使用
    主站蜘蛛池模板: 久久精品无码成人国产毛| 日久精品不卡一区二区| 狼人射综合| 色噜噜狠狠一区二区三区| 免费国产成人| 黑人干亚洲人| 久99视频精品免费观看福利| 久久er99热精品一区二区| 久久婷婷五月综合色丁香| 久久永久视频| 年轻的老师5理伦片| 日本一卡2卡3卡四卡精品网站| 日本一卡二卡三卡四卡无卡免费播放 | 狠狠色色综合站| 久久艹综合| 破女在线观看视频| 我半夜摸妺妺的奶C了她| 亚洲狠狠网站色噜噜| [高清无码] 波多野结衣| 初中XXXXXL| 国产日韩精品SUV| 久久99精品国产免费观看| 男同志在线观看| 午夜不卡久久精品无码免费| 在线看无码的免费网站| 别停好爽好深好大好舒服视频| 国产剧情福利AV一区二区| 伦理片 qvod| 亚洲an天堂an在线观看| 97超碰97资源在线观看| 国产精品永久免费视频观看| 久热在线这里只有精品7| 网友自拍区视频精品| 91香蕉福利一区二区三区| 国产精品亚洲二线在线播放| 美女医生深夜在家裸睡惨死| 午夜福利免费体检区| jizz日本女人| 麻豆一二三区果冻| 亚洲一区在线观看视频| 国产精品你懂的在线播放|