版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
任務(wù)16制作電壓信號發(fā)生器任務(wù)要求STM32的DAC為12位的DA轉(zhuǎn)換器,用第1通道轉(zhuǎn)換外部輸入的DA轉(zhuǎn)換數(shù)據(jù),DA數(shù)據(jù)采用右對齊。串口1作異步通信口,與計算機進(jìn)行串行通信。計算機通過串口調(diào)試助手向STM32發(fā)送DA轉(zhuǎn)換數(shù)據(jù),同時接收STM32發(fā)送來的反饋信息。串口的波特率BR=115200bps,數(shù)據(jù)位8位,停止位1位。計算機的串口發(fā)送的數(shù)據(jù)以及調(diào)試助手中顯示的數(shù)據(jù)如表所示,要求用STM23CubeMX生成初始化程序,然后在Keil中編程實現(xiàn)DA轉(zhuǎn)換功能,使DAC的輸出引腳輸出對應(yīng)的電壓值,即實現(xiàn)電壓信號源的功能。任務(wù)要求串口發(fā)送的數(shù)據(jù)及回顯數(shù)據(jù)命令功能串口調(diào)試助手顯示的數(shù)據(jù)55AAVHVL5A且VHVL的值小于4096DA值合法,進(jìn)行DA轉(zhuǎn)換輸入數(shù)據(jù)為0xVHVL,即xx,輸出電壓為y.yyV55AAVHVL5A且VHVL的值大于4095DA值非法,不進(jìn)行DA轉(zhuǎn)換輸入數(shù)據(jù)為0xVHVL,即xx,輸入數(shù)據(jù)過大!其他命令非法,不進(jìn)行DA轉(zhuǎn)換輸入非法!表中,命令數(shù)據(jù)為十六進(jìn)制數(shù)。其中,55AA為數(shù)據(jù)頭,5A為數(shù)據(jù)尾,VH、VL為待轉(zhuǎn)換的DA數(shù)據(jù),VH為數(shù)據(jù)的高字節(jié)內(nèi)容,VL為數(shù)據(jù)的低字節(jié)內(nèi)容。例如,55AA07FF5A就表示輸入數(shù)據(jù)為合法的DA轉(zhuǎn)換數(shù)據(jù),DA轉(zhuǎn)換數(shù)據(jù)為0x07FF。任務(wù)要求串口發(fā)送的數(shù)據(jù)及回顯數(shù)據(jù)命令功能串口調(diào)試助手顯示的數(shù)據(jù)55AAVHVL5A且VHVL的值小于4096DA值合法,進(jìn)行DA轉(zhuǎn)換輸入數(shù)據(jù)為0xVHVL,即xx,輸出電壓為y.yyV55AAVHVL5A且VHVL的值大于4095DA值非法,不進(jìn)行DA轉(zhuǎn)換輸入數(shù)據(jù)為0xVHVL,即xx,輸入數(shù)據(jù)過大!其他命令非法,不進(jìn)行DA轉(zhuǎn)換輸入非法!xx為十六進(jìn)制數(shù)VHVL所對應(yīng)的十進(jìn)制數(shù),輸出電壓y.yy表示帶2位小數(shù)的十進(jìn)制電壓值。知識儲備
1.D/A轉(zhuǎn)換的基礎(chǔ)知識D/A轉(zhuǎn)換器的功能是將數(shù)字量轉(zhuǎn)換成與數(shù)字量成比例的模擬量,常用DAC表示。按照待轉(zhuǎn)換數(shù)字的位數(shù)可分為8位、10位、12位等幾種類型;按照輸出模擬量的類型可分為電流輸出型和電壓輸出型;按照DAC與微處理器的接口形式可分為串行DAC和并行DAC。就目前的使用情況來看,工程上偏向于選用串行DAC。(1)分辨率:輸入數(shù)字量變化1時,對應(yīng)的輸出模擬量的變化量。分辨率反映了輸出模擬量的最小變化值。設(shè)DAC的數(shù)字量的位數(shù)為n,則DAC的分辨率=滿量程電壓/(2n-1)。對于同等的滿量程電壓,DAC的位數(shù)越多,則分辨率越高。因此,分辨率也常用DAC的數(shù)字量的位數(shù)來表示。
1.D/A轉(zhuǎn)換的基礎(chǔ)知識(2)轉(zhuǎn)換時間:從數(shù)字量輸入至DAC開始到DAC完成轉(zhuǎn)換并輸出對應(yīng)的模擬量所需要的時間。轉(zhuǎn)換時間反映了DAC的轉(zhuǎn)換速度。(3)滿刻度誤差:數(shù)字量輸入為滿刻度(全1時),實際輸出的模擬量與理論值的偏差。
2.STM32中DAC的應(yīng)用特性STM32中集成有1個12位的電壓型的DAC,可設(shè)置為8位或者12位DAC。(1)DAC的引腳引腳功能VDDADAC的模擬部分的電源腳VSSADAC的模擬部分的地VREF+DAC的參考電壓DAC_OUTDA轉(zhuǎn)換的電壓輸出腳說明:有些DAC有VDDA、VSSA、VREF+、VREF-、DAC_OUT等5個引腳
2.STM32中DAC的應(yīng)用特性(2)DA轉(zhuǎn)換觸發(fā)方式:8種觸發(fā)方式含義SWTRIG軟件觸發(fā)TIM2_TRGOTIM2的TRGO事件觸發(fā)TIM4_TRGOTIM4的TRGO事件觸發(fā)TIM5_TRGOTIM5的TRGO事件觸發(fā)TIM6_TRGOTIM6的TRGO事件觸發(fā)TIM7_TRGOTIM7的TRGO事件觸發(fā)TIM8_TRGO對于大容量產(chǎn)品是TIM8的TRGO事件觸發(fā),對于互聯(lián)型產(chǎn)品是TIM3的TRGO事件觸發(fā)EXTI_9外部中斷線9觸發(fā)
2.STM32中DAC的應(yīng)用特性(3)轉(zhuǎn)換通道:2個,可同時進(jìn)行2路DA轉(zhuǎn)換,通道1的輸出引腳為PA4,通道2的輸出引腳為PA5。(4)寫入數(shù)據(jù)的對齊方式:對齊和右對齊2種方式。(5)DAC的輸出電壓:輸出引腳與VSSA引腳之間的電壓,輸出電壓如下:式中,VREF為DAC的參考電壓,VDAC為DA的轉(zhuǎn)換值,n為DAC的位數(shù)。例如,DAC的位數(shù)為12位,參考電壓為3.3V,若DA的轉(zhuǎn)換值為2047,則DAC的輸出電壓為:
2.STM32中DAC的應(yīng)用特性(6)輸出具緩沖功能(7)DAC具有DMA控制功能函數(shù)的用法(1)HAL_DAC_SetValue()函數(shù)3.HAL庫中有關(guān)DAC的常用函數(shù)和宏原型HAL_StatusTypeDefHAL_DAC_SetValue(DAC_HandleTypeDef*hdac,uint32_tChannel,uint32_tAlignment,uint32_tData);功能為DAC通道設(shè)置轉(zhuǎn)換值。參數(shù)1hdac:DAC句柄,取值為&hdac。其中,hdac為系統(tǒng)定義的保存DAC配置的結(jié)構(gòu)體變量。參數(shù)2Channel:DAC的通道號。該參數(shù)的取值及其含義下表所示。參數(shù)3Alignment:待轉(zhuǎn)換數(shù)據(jù)的對齊方式。該參數(shù)的取值及其含義如下表所示。參數(shù)4Data:待轉(zhuǎn)換的DAC數(shù)據(jù)。返回值HAL的狀態(tài)。Channel參數(shù)3.HAL庫中有關(guān)DAC的常用函數(shù)和宏Channel參數(shù)的取值含義DAC_CHANNEL_1選擇通道1DAC_CHANNEL_2選擇通道2Alignment參數(shù)的取值含義DAC_ALIGN_8B_R8位的右對齊數(shù)據(jù)DAC_ALIGN_12B_L12位的左對齊數(shù)據(jù)DAC_ALIGN_12B_R12位的右對齊數(shù)據(jù)Alignment參數(shù)例如,將DAC第1通道的轉(zhuǎn)換值設(shè)為2048,其中DA轉(zhuǎn)換數(shù)據(jù)為右對齊,其程序如下:
HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_12B_R,2048);函數(shù)的用法(2)HAL_DAC_Start()函數(shù)3.HAL庫中有關(guān)DAC的常用函數(shù)和宏原型HAL_StatusTypeDefHAL_DAC_Start(DAC_HandleTypeDef*hdac,uint32_tChannel);功能啟動DAC指定通道的DA轉(zhuǎn)換。參數(shù)1hdac:DAC句柄,取值為&hdac。其中,hdac為系統(tǒng)定義的保存DAC配置的結(jié)構(gòu)體變量。參數(shù)2Channel:DAC的通道號。返回值HAL的狀態(tài)。例如,啟動DAC的第1通道的DA轉(zhuǎn)換,其程序如下:
HAL_DAC_Start(&hdac,DAC_CHANNEL_1);函數(shù)的用法(3)HAL_DAC_Stop()函數(shù)3.HAL庫中有關(guān)DAC的常用函數(shù)和宏原型HAL_StatusTypeDefHAL_DAC_Stop(DAC_HandleTypeDef*hdac,uint32_tChannel);功能停止DAC指定通道的DA轉(zhuǎn)換。參數(shù)1hdac:DAC句柄,取值為&hdac。其中,hdac為系統(tǒng)定義的保存DAC配置的結(jié)構(gòu)體變量。參數(shù)2Channel:DAC的通道號。返回值HAL的狀態(tài)。說明:在HAL庫中HAL_DAC_Stop_DMA()函數(shù)也是一個停止DA轉(zhuǎn)換函數(shù),但其功能是,停止DMA的方式控制的DA轉(zhuǎn)換。函數(shù)的用法(4)HAL_DAC_GetValue()函數(shù)3.HAL庫中有關(guān)DAC的常用函數(shù)和宏原型uint32_tHAL_DAC_GetValue(DAC_HandleTypeDef*hdac,uint32_tChannel);功能獲取DAC通道的轉(zhuǎn)換值。參數(shù)1hdac:DAC句柄,取值為&hdac。其中,hdac為系統(tǒng)定義的保存DAC配置的結(jié)構(gòu)體變量。參數(shù)2Channel:DAC的通道號。返回值HAL的狀態(tài)。實現(xiàn)方法與步驟任務(wù)16的硬件電路:
1.搭建電路
2.生成DAC的初始化代碼步驟(1)在“D:\ex”文件夾中新建Task16子文件夾。(2)將任務(wù)10的STM32CubeMX工程文件Task10.ioc(位于“D:\ex\Task10”文件夾中)復(fù)制到Task16文件夾中,并將其改名為Task16.ioc。(3)雙擊Task16.ioc文件圖標(biāo),打開任務(wù)16的STM32CubeMX工程文件。任務(wù)16中的絕大部分初始化代碼與任務(wù)10中的初始化代碼相同,可以通過修改任務(wù)10的STM32CubeMX工程來形成任務(wù)16的STM32CubeMX工程。
(4)配置DAC2.生成DAC的初始化代碼(5)保存工程,然后生成Keil工程代碼
3.編寫信號發(fā)生器的程序步驟(1)將任務(wù)10中位于“D:\ex\Task10”文件夾中的User子文件夾復(fù)制至“D:\ex\Task16”文件夾中。User子文件夾中保存的是串行通信文件Serial.c和Serial.h。(2)打開任務(wù)16的Keil工程,并按前面介紹的方法在Keil工程中新建User組,然后將“D:\ex\Task16\User”文件夾中的Serial.c文件添加至User組中。(3)在Keil工程的include路徑中添加“D:\ex\Task16\User”文件夾,該文件夾是Serial.h頭文件所在的文件夾。(4)在main.c文件中編寫用戶應(yīng)用程序,程序代碼如下:
3.編寫信號發(fā)生器的程序12345678910111213
14…#include "stdio.h"#include "string.h"#include "Serial.h"…uint8_t ComStr[3]={0x55,0xaa};//命令的部分代碼…intmain(void){char * fp;uint16_tval;…HAL_UART_Receive_IT(&huart1,&aRxBuf,1); /*使能串口1接收中斷,并指定接收緩沖區(qū)和接收數(shù)據(jù)長度*/while(1)
3.編寫信號發(fā)生器的程序141516
171819
20212223
2425while(1){if(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE)!=RESET) /*判斷是否是空閑中斷(IDLE)發(fā)生*/
{
/****************************************************************/
if((fp=strstr((const char *)UserRxBuf,(const char *)ComStr))!=NULL)
{//收到0x55aa
if(*(fp+4)==0x5a) //檢查是否收到了幀尾0x5a
{ //收到了幀尾0x5a
val=((uint16_t)*(fp+2))<<8|(*(fp+3));/*將接收數(shù)據(jù)拼成DA轉(zhuǎn)換值*/
if(val<4096)/*檢查DA值的范圍*/
{/*在0~4095之間,則設(shè)置DA值,并啟動DA轉(zhuǎn)換*/
3.編寫信號發(fā)生器的程序2526
27
2829303132
333435 {/*在0~4095之間,則設(shè)置DA值,并啟動DA轉(zhuǎn)換*/ printf("當(dāng)前輸入數(shù)據(jù)為0x%x,即%d,輸出電壓為%.2fV\r\n",val,val,3.3*val/4095); HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_12B_R,val);/*設(shè)置DA轉(zhuǎn)換值*/
HAL_DAC_Start(&hdac,DAC_CHANNEL_1);/*啟動DA轉(zhuǎn)換*/ } else {/*過大,則提示*/ printf("當(dāng)前輸入數(shù)據(jù)為0x%x,即%d,輸入數(shù)據(jù)過大!\r\n",val,val); } }
else
3.編寫信號發(fā)生器的程序35363738394041424344454647484950
else
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家園共育培訓(xùn)材料
- 幼兒園簡筆畫培訓(xùn)
- 幼兒園教師園本教研培訓(xùn)
- 13.2 內(nèi)能(7大題型)(含答案解析)
- T-TSSP 031-2023 核桃青果脫皮及干制加工技術(shù)規(guī)程
- Windows Server網(wǎng)絡(luò)管理項目教程(Windows Server 2022)(微課版)課件項目6 證書服務(wù)器的配置與管理
- 許市中學(xué)學(xué)生自主管理
- 化學(xué)與社會發(fā)展專題復(fù)習(xí)
- 高中語文第12課動物游戲之謎課件6新人教版必修
- 紀(jì)檢委員與領(lǐng)導(dǎo)班子談心談話記錄
- 凈水設(shè)備采購務(wù)投標(biāo)方案(技術(shù)方案)
- 醫(yī)院的門禁管理制度范文
- 讀書分享讀書交流會《局外人》課件
- 勞務(wù)派遣公司與勞務(wù)中介公司的不同
- 人教pep四年級上冊unit4My home4 1-4課時單元作業(yè)設(shè)計
- 學(xué)校(幼兒園)每周食品安全排查治理報告(整學(xué)期16篇)
- 房地產(chǎn)買賣保密協(xié)議
- 4.霜降氣寒礪性格
- 河北省張家口市橋西區(qū)2023-2024學(xué)年九年級上學(xué)期期中數(shù)學(xué)試題
- 檢具的設(shè)計、制造和使用
- (蘇州專版)江蘇省蘇州市2023-2024學(xué)年五年級數(shù)學(xué)上冊期中綜合素養(yǎng)測評調(diào)研試卷(蘇教版)
評論
0/150
提交評論