STM32F4的DAC是一個(gè)12位,電壓輸出的DAC。可被配置為12位或者8位,也能和DMA聯(lián)合使用。DAC具有兩個(gè)獨(dú)立轉(zhuǎn)換通道。在雙DAC模式下,DA抓換可被配置成獨(dú)立模式或者同步工作模式。兩路DAC參考電壓以及ADC都是VREF。
【主要特性】
1、兩路 2、12bit時(shí)數(shù)據(jù)可被配置成左對齊或右對齊 3、具有同步更新能力 4、噪聲產(chǎn)生 5、三角波產(chǎn)生 6、兩個(gè)通道獨(dú)立轉(zhuǎn)換或同步轉(zhuǎn)換 7、每個(gè)通道都有DMA能力 8、DMA出錯(cuò)檢測 9、可外部觸發(fā)
輸出電壓計(jì)算公式:
Vout = VREF×DOR/4095 = 參考電壓×DAC數(shù)據(jù)寄存器值/4095
【實(shí)驗(yàn)內(nèi)容】
利用DAC輸出指定的電壓,軟件觸發(fā)DAC轉(zhuǎn)換。
【初始化要點(diǎn)】
1、GPIO配置成AIN/AN即模擬功能。記著開時(shí)鐘
void DAC_GPIO_Config(void)
{
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
2、DAC觸發(fā)方式設(shè)置為軟件觸發(fā)(DAC_Trigger_Software)
void DAC_Config(void)
{
DAC_GPIO_Config();
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC,ENABLE);
DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
DAC_InitStructure.DAC_Trigger = DAC_Trigger_Software;
DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
DAC_Init(DAC_Channel_1,&DAC_InitStructure);
DAC_Cmd(DAC_Channel_1,ENABLE);
DAC_SetChannel1Data(DAC_Align_12b_R,0x0000);
DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);
}
3、主函數(shù)中使用:
向輸出寄存器寫數(shù)據(jù),數(shù)據(jù)可根據(jù)上邊公式得到
DAC_SetChannel1Data(DAC_Align_12b_R,0xF0F0);
然后,然間觸發(fā)
DAC_SoftwareTriggerCmd(DAC_Channel_1,ENABLE);
這時(shí),在引腳上GPIOA-4上將會(huì)有電壓輸出。
當(dāng)然也可以設(shè)置成定時(shí)器觸發(fā),TIM6和TIM7 是專公DAC轉(zhuǎn)換用的定時(shí)器。初始化也很方便。