日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

STM32CubeMX教程17 DAC - 输出三角波噪声波

發布時間:2024/1/18 windows 59 coder
生活随笔 收集整理的這篇文章主要介紹了 STM32CubeMX教程17 DAC - 输出三角波噪声波 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、準備材料

正點原子stm32f407探索者開發板V2.4

STM32CubeMX軟件(Version 6.10.0)

keil μVision5 IDE(MDK-Arm)

ST-LINK/V2驅動

野火DAP仿真器

XCOM V2.6串口助手

一臺示波器

2、實驗目標

使用STM32CubeMX軟件配置STM32F407開發板的DAC OUT1實現輸出三角波

3、實驗流程

3.0、前提知識

STM32F407的DAC輸出引腳除可以輸出 DACoutput = VREF+ * DOR / 4095 的模擬電壓之外,其DAC控制邏輯中還有兩個重要的波形生成器 Wave generation mode ,分別為三角波和噪聲波,本小節的實驗主要以生成三角波為例,只會在“3.0、前提知識”中簡單提到噪聲波相關內容,在實際生成過程中兩者的設置類似,且均簡單易理解

使用DAC輸出指定三角波/噪聲波需要先指定DAC的輸出觸發源 Trigger ,DAC輸出的觸發源一共有7個,包括Timer 2/4/5/6/7/8 Trigger Out event和Software trigger,一般使用定時器的溢出時間作為DAC輸出的觸發源,本實驗采用了TIM6的溢出更新事件作為DAC OUT1 三角波的觸發源,所有可選的觸發源如下圖所示

當DAC輸出三角波時需要設置參數 Maximum Triangle Amplitude ,當觸發源定時器每次產生溢出更新事件時,DAC的輸出值就會從基值增加1/減少1,因為TIM6基礎定時器只能向上計數,因此當TIM6每次溢出時,DAC的輸出會增加1,直到增加到設置的 Maximum Triangle Amplitude 參數值為止,然后逐漸減少直到基值,這個過程會反復執行從而生成三角波

上述過程如下圖所示 (注釋1)

當DAC輸出偽噪聲波時需要設置 Noise Amplitude 參數,其主要配置生成噪聲波使用的12位LFSR寄存器解鎖的位,如下圖所示為DAC使用LFSR寄存器生成偽噪聲的算法結構圖,這里具體不做深究 (注釋1)

3.1、CubeMX相關配置

3.1.0、工程基本配置

打開STM32CubeMX軟件,單擊ACCESS TO MCU SELECTOR選擇開發板MCU(選擇你使用開發板的主控MCU型號),選中MCU型號后單擊頁面右上角Start Project開始工程,具體如下圖所示

開始工程之后在配置主頁面System Core/RCC中配置HSE/LSE晶振,在System Core/SYS中配置Debug模式,具體如下圖所示

詳細工程建立內容讀者可以閱讀“STM32CubeMX教程1 工程建立”

3.1.1、時鐘樹配置

系統時鐘使用8MHz外部高速時鐘HSE,HCLK、PCLK1和PCLK2均設置為STM32F407能達到的最高時鐘頻率,具體如下圖所示

3.1.2、外設參數配置

在Pinout & Configuration頁面左邊功能分類欄目Analog中單擊其中DAC

在Mode中勾選OUT1 Configuration

將DAC OUT1的觸發源選擇為TIM6外部觸發,最大三角波幅值設置為4095

具體配置如下圖所示

在Pinout & Configuration頁面左邊功能分類欄目Timers中單擊其中TIM6

勾選Activated激活定時器,配置其計數器參數溢出時間為0.1ms,具體參數解釋請閱讀“STM32CubeMX教程5 TIM 定時器概述及基本定時器”

外部事件觸發選擇更新事件Updata Event,具體配置如下圖所示

3.1.3、外設中斷配置

此實驗無需開啟DAC的任何中斷

3.2、生成代碼

3.2.0、配置Project Manager頁面

單擊進入Project Manager頁面,在左邊Project分欄中修改工程名稱、工程目錄和工具鏈,然后在Code Generator中勾選“Gnerate peripheral initialization as a pair of 'c/h' files per peripheral”,最后單擊頁面右上角GENERATE CODE生成工程,具體如下圖所示

詳細Project Manager配置內容讀者可以閱讀”STM32CubeMX教程1 工程建立“實驗3.4.3小節

3.2.1、外設初始化調用流程

請閱讀“STM32CubeMX教程16 DAC - 輸出3.3V內任意電壓”實驗“3.2.1、外設初始化調用流程”小節

3.2.2、外設中斷調用流程

此實驗無需開啟DAC的任何中斷

3.2.3、添加其他必要代碼

在主函數中啟動DAC通道1輸出,默認基值設置為0即可,源代碼如下所示

/*啟動DAC輸出*/
HAL_DAC_Start(&hdac,DAC_CHANNEL_1);
/*設置DAC三角波輸出基值*/
int32_t DacValue=0;
HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_12B_L,DacValue);
/*啟動TIM6觸發源*/
HAL_TIM_Base_Start(&htim6);
printf("Reset\r\n");

4、常用函數

請閱讀“STM32CubeMX教程16 DAC - 輸出3.3V內任意電壓”實驗

5、燒錄驗證

燒錄程序,單片機上電后,將示波器的探頭掛鉤與DAC OUT1引腳PA4相連接,接地環與開發板上的GND引腳連接,將示波器每格電壓幅值調節為1.00V,將每格子采集時間調節為400ms,然后開啟示波器對DAC OU1輸出的波形采集

設置Maximum Triangle Amplitud最大三角波幅值設置為2047時由示波器采集到的三角波如下圖所示,其中三角波的幅值電壓為1.48V,大致為3.3V的一半,波形頻率為2.446Hz,計算的周期大約為408.8ms,定時器溢出時間為0.1ms,期待的周期為0.120482=409.6ms,與示波器采集結果大致一致

設置Maximum Triangle Amplitud最大三角波幅值設置為4095時由示波器采集到的三角波如下圖所示,其中三角波的幅值電壓為2.96V,波形頻率為1.207Hz,計算的周期大約為828.5ms,定時器溢出時間為0.1ms,期待的周期為0.140962=819.2ms,與示波器采集結果大致一致

6、注釋解析

注釋1:圖片來源STM32F4xx 中文參考手冊

參考資料

STM32Cube高效開發教程(基礎篇)

更多內容請瀏覽 STM32CubeMX+STM32F4系列教程文章匯總貼

總結

以上是生活随笔為你收集整理的STM32CubeMX教程17 DAC - 输出三角波噪声波的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。