STM32CubeMX教程17 DAC - 输出三角波噪声波
1、準(zhǔn)備材料
正點原子stm32f407探索者開發(fā)板V2.4
STM32CubeMX軟件(Version 6.10.0)
keil μVision5 IDE(MDK-Arm)
ST-LINK/V2驅(qū)動
野火DAP仿真器
XCOM V2.6串口助手
一臺示波器
2、實驗?zāi)繕?biāo)
使用STM32CubeMX軟件配置STM32F407開發(fā)板的DAC OUT1實現(xiàn)輸出三角波
3、實驗流程
3.0、前提知識
STM32F407的DAC輸出引腳除可以輸出 DACoutput = VREF+ * DOR / 4095 的模擬電壓之外,其DAC控制邏輯中還有兩個重要的波形生成器 Wave generation mode ,分別為三角波和噪聲波,本小節(jié)的實驗主要以生成三角波為例,只會在“3.0、前提知識”中簡單提到噪聲波相關(guān)內(nèi)容,在實際生成過程中兩者的設(shè)置類似,且均簡單易理解
使用DAC輸出指定三角波/噪聲波需要先指定DAC的輸出觸發(fā)源 Trigger ,DAC輸出的觸發(fā)源一共有7個,包括Timer 2/4/5/6/7/8 Trigger Out event和Software trigger,一般使用定時器的溢出時間作為DAC輸出的觸發(fā)源,本實驗采用了TIM6的溢出更新事件作為DAC OUT1 三角波的觸發(fā)源,所有可選的觸發(fā)源如下圖所示
當(dāng)DAC輸出三角波時需要設(shè)置參數(shù) Maximum Triangle Amplitude ,當(dāng)觸發(fā)源定時器每次產(chǎn)生溢出更新事件時,DAC的輸出值就會從基值增加1/減少1,因為TIM6基礎(chǔ)定時器只能向上計數(shù),因此當(dāng)TIM6每次溢出時,DAC的輸出會增加1,直到增加到設(shè)置的 Maximum Triangle Amplitude 參數(shù)值為止,然后逐漸減少直到基值,這個過程會反復(fù)執(zhí)行從而生成三角波
上述過程如下圖所示 (注釋1)
當(dāng)DAC輸出偽噪聲波時需要設(shè)置 Noise Amplitude 參數(shù),其主要配置生成噪聲波使用的12位LFSR寄存器解鎖的位,如下圖所示為DAC使用LFSR寄存器生成偽噪聲的算法結(jié)構(gòu)圖,這里具體不做深究 (注釋1)
3.1、CubeMX相關(guān)配置
3.1.0、工程基本配置
打開STM32CubeMX軟件,單擊ACCESS TO MCU SELECTOR選擇開發(fā)板MCU(選擇你使用開發(fā)板的主控MCU型號),選中MCU型號后單擊頁面右上角Start Project開始工程,具體如下圖所示
開始工程之后在配置主頁面System Core/RCC中配置HSE/LSE晶振,在System Core/SYS中配置Debug模式,具體如下圖所示
詳細(xì)工程建立內(nèi)容讀者可以閱讀“STM32CubeMX教程1 工程建立”
3.1.1、時鐘樹配置
系統(tǒng)時鐘使用8MHz外部高速時鐘HSE,HCLK、PCLK1和PCLK2均設(shè)置為STM32F407能達(dá)到的最高時鐘頻率,具體如下圖所示
3.1.2、外設(shè)參數(shù)配置
在Pinout & Configuration頁面左邊功能分類欄目Analog中單擊其中DAC
在Mode中勾選OUT1 Configuration
將DAC OUT1的觸發(fā)源選擇為TIM6外部觸發(fā),最大三角波幅值設(shè)置為4095
具體配置如下圖所示
在Pinout & Configuration頁面左邊功能分類欄目Timers中單擊其中TIM6
勾選Activated激活定時器,配置其計數(shù)器參數(shù)溢出時間為0.1ms,具體參數(shù)解釋請閱讀“STM32CubeMX教程5 TIM 定時器概述及基本定時器”
外部事件觸發(fā)選擇更新事件Updata Event,具體配置如下圖所示
3.1.3、外設(shè)中斷配置
此實驗無需開啟DAC的任何中斷
3.2、生成代碼
3.2.0、配置Project Manager頁面
單擊進(jìn)入Project Manager頁面,在左邊Project分欄中修改工程名稱、工程目錄和工具鏈,然后在Code Generator中勾選“Gnerate peripheral initialization as a pair of 'c/h' files per peripheral”,最后單擊頁面右上角GENERATE CODE生成工程,具體如下圖所示
詳細(xì)Project Manager配置內(nèi)容讀者可以閱讀”STM32CubeMX教程1 工程建立“實驗3.4.3小節(jié)
3.2.1、外設(shè)初始化調(diào)用流程
請閱讀“STM32CubeMX教程16 DAC - 輸出3.3V內(nèi)任意電壓”實驗“3.2.1、外設(shè)初始化調(diào)用流程”小節(jié)
3.2.2、外設(shè)中斷調(diào)用流程
此實驗無需開啟DAC的任何中斷
3.2.3、添加其他必要代碼
在主函數(shù)中啟動DAC通道1輸出,默認(rèn)基值設(shè)置為0即可,源代碼如下所示
/*啟動DAC輸出*/
HAL_DAC_Start(&hdac,DAC_CHANNEL_1);
/*設(shè)置DAC三角波輸出基值*/
int32_t DacValue=0;
HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_12B_L,DacValue);
/*啟動TIM6觸發(fā)源*/
HAL_TIM_Base_Start(&htim6);
printf("Reset\r\n");
4、常用函數(shù)
請閱讀“STM32CubeMX教程16 DAC - 輸出3.3V內(nèi)任意電壓”實驗
5、燒錄驗證
燒錄程序,單片機(jī)上電后,將示波器的探頭掛鉤與DAC OUT1引腳PA4相連接,接地環(huán)與開發(fā)板上的GND引腳連接,將示波器每格電壓幅值調(diào)節(jié)為1.00V,將每格子采集時間調(diào)節(jié)為400ms,然后開啟示波器對DAC OU1輸出的波形采集
設(shè)置Maximum Triangle Amplitud最大三角波幅值設(shè)置為2047時由示波器采集到的三角波如下圖所示,其中三角波的幅值電壓為1.48V,大致為3.3V的一半,波形頻率為2.446Hz,計算的周期大約為408.8ms,定時器溢出時間為0.1ms,期待的周期為0.120482=409.6ms,與示波器采集結(jié)果大致一致
設(shè)置Maximum Triangle Amplitud最大三角波幅值設(shè)置為4095時由示波器采集到的三角波如下圖所示,其中三角波的幅值電壓為2.96V,波形頻率為1.207Hz,計算的周期大約為828.5ms,定時器溢出時間為0.1ms,期待的周期為0.140962=819.2ms,與示波器采集結(jié)果大致一致
6、注釋解析
注釋1:圖片來源STM32F4xx 中文參考手冊
參考資料
STM32Cube高效開發(fā)教程(基礎(chǔ)篇)
更多內(nèi)容請瀏覽 STM32CubeMX+STM32F4系列教程文章匯總貼
總結(jié)
以上是生活随笔為你收集整理的STM32CubeMX教程17 DAC - 输出三角波噪声波的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 根目录和家目录的区别
- 下一篇: 神经网络优化篇:详解RMSprop