设置GPIO为模拟输入模式。 设置DAC->CR、DAC->DHR12R1寄存器。 开启KEIL的Debug调试功能: 现象1:改变DHR12R1寄存器的值,DAC的输出电压不改变 原因和步骤:每一次DAC的输出都要开启软件触发位。数据手册中的图42中有相关说明。打个不正当的比喻,图中触发源相当于是控制逻辑器的时钟,只有时钟在跳动,控制器才能正常
1:使能软件触发 注意:一旦 DAC_DHR1 寄存器值加载到 DAC_DOR1 寄存器中,该位即会由硬件清零(一个APB1 时钟周期之后)。 DAC 1 通道 12 位右对齐数据保持寄存器 (DAC_DHR12R1) 位11:0 DACC1DHR[11:0]:DAC 1 通道 12 位右对齐数据 (DAC channel1 12-bit right-aligned data) 这些位由软件写入,用于...
使用12位右对齐模式:数字量写入DAC_DHR12R1寄存器。 DAC寄存器介绍 DAC控制寄存器(DAC_CR) 图13 DAC控制寄存器(DAC_CR) 位12 DMAEN1:0——关闭DAC通道1 DMA模式;1——使能DAC通道1 DMA模式。 位5:3 TSEL1[2:0]:触发选择时间;本实验中是自动触发,不用选择。 位2 TEN1:0——关闭DAC通道1触发,写入寄存...
} 对于DMA要搞清楚要搬的数据的地址在哪,要搬到哪,这里要搬的数据在存储器中,地址为(uint32_t)wave,外设地址为DAC_DHR12R1,是从内存到外设,所以工作模式为 DMA_DIR_PeripheralDST,为双向传输,禁止M2M,存储至存储。触发源为TIM2 最后为总体调用 voidWave_Init(uint16_t*wave) { Wave_GPIO_Config(); Wave_...
通过前面 4 个步骤的设置,DAC 就可以开始工作了,我们使用 12 位右对齐数据格式,所以我们通过设置 DHR12R1,就可以在 DAC 输出引脚(PA4)得到不同的电压值了。库函数的函数是: DAC_SetChannel1Data(DAC_Align_12b_R, 0); 第一个参数设置对齐方式,可以为 12 位右对齐 DAC_Align_12b_R,12 位左对齐DAC_Alig...
(RCC_AHB1Periph_DMA1,ENABLE);/* 配置DMA1 Stream 5 channel 7用于DAC1 */DMA_InitStructure.DMA_Channel=DMA_Channel_7;DMA_InitStructure.DMA_PeripheralBaseAddr=(uint32_t)&DAC->DHR12R1;DMA_InitStructure.DMA_Memory0BaseAddr=_BufAddr;DMA_InitStructure.DMA_DIR=DMA_DIR_MemoryToPeripheral;DMA_...
DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12R1_Address; DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&FIR_OutPutValueTab; DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST; DMA_InitStructure.DMA_BufferSize = 200; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; ...
3.2 12位右对齐数据保存寄存器(DAC_DHR12R1) 该寄存器用来设置 DAC 输出,通过写入 12 位数据到该寄存器,就可以在 DAC 输出通道 1(PA4)得到我们所要的结果。 通过以上介绍,我们了解了 STM32F4 实现 DAC 输出的相关设置,本章我们将使用 DAC模块的通道 1 来输出模拟电压。
> 1.软件触发DAC的实现 在探索STM32F103的DAC功能过程中,我遭遇了一个难题:如何通过 软件触发DAC。经过查阅技术手册,我了解到需要设置GPIO为模拟输入模式,并操作DAC的CR和DHR12R1寄存器。然而,在开启KEIL的Debug调试功能后,我遇到了一个奇怪的现象:尽管我改变了DHR12R1寄存器的值,但DAC的输出电压却没有任...
DAC->DHR12R1 = 0; 因为我们用到了软件触发,所以我们要时刻关注软件触发寄存器,寄存器就两位: DAC->SWTRIGR |= 1<<0; 然后就打开 DA,开始工作! DAC->CR |= 1<<0; 下面附上我的代码! /* dac.c */ #include void dac_init() { RCC->APB1ENR |= 1<<29; ...