当前位置:首页 > 单片机 > 单片机
[导读] STM32F103有双DAC通道,利用DMA实现2个波形输出#include "stm32f10x.h" //DAC1,2初始化 void dac_init(void) { RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; //开启端口A时钟 RCC->APB1ENR |= RCC_APB1ENR

STM32F103有双DAC通道,利用DMA实现2个波形输出


#include "stm32f10x.h"

//DAC1,2初始化

void dac_init(void)

{

RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; //开启端口A时钟

RCC->APB1ENR |= RCC_APB1ENR_DACEN; //开启DAC时钟

GPIOA->CRL &= 0xff00ffff; //PA4,PA5模拟输入

DAC->CR = DAC_CR_TEN1 | DAC_CR_TEN2; //开启触发使能才能设置触发模式

//开启DAC,关闭输出缓存,TIM6 TRGO触发,DMA使能

DAC->CR |= DAC_CR_EN1 | DAC_CR_BOFF1 | DAC_CR_DMAEN1 |

DAC_CR_EN2 | DAC_CR_BOFF2 | DAC_CR_DMAEN2;

//必须关闭缓冲才能输出低于0.5V电压

}

//DMA2初始化

void dma2_init(unsigned int cpar, unsigned int cmar, unsigned int cndtr)

{

RCC->AHBENR |= RCC_AHBENR_DMA2EN; //开启DMA2时钟

DMA2_Channel3->CPAR = cpar; //外设地址

DMA2_Channel3->CMAR = cmar; //存储器地址

DMA2_Channel3->CNDTR = cndtr; //传输数据量

//通道开启,从存储器读,循环,外设不自增,存储器自增

//外设32位数据,存储器32位数据,优先级最高,非存储器到存储器

DMA2_Channel3->CCR = DMA_CCR3_EN | DMA_CCR3_DIR | DMA_CCR3_CIRC |

DMA_CCR3_MINC | DMA_CCR3_PSIZE_1 | DMA_CCR3_MSIZE_1 |

DMA_CCR3_PL_0 | DMA_CCR3_PL_1;

}

//TIM6初始化

void tim6_init(unsigned short arr, unsigned short psc)

{

RCC->APB1ENR |= RCC_APB1ENR_TIM6EN; //开启TIM6时钟

TIM6->PSC = psc; //预分频器

TIM6->ARR = arr; //自动重装载

TIM6->CR2 &= 0xff8f;

TIM6->CR2 |= TIM_CR2_MMS_1; //更新事件用作TRGO

TIM6->CR1 &= 0xff70;

TIM6->CR1 |= TIM_CR1_CEN | TIM_CR1_ARPE; //使能计数器,非单脉冲模式,自动重装载

}


初始化RCC时钟为72MHz,正弦波1000点,2个波形,一个反相,一个幅度改变


for(i = 0; i < 1000; i++)

{

sw[i] = 4095 - sine_wave[i];

sw[i] <<= 16;

sw[i] += sine_wave[i] / 3;

}

dma2_init((unsigned int)&DAC->DHR12RD, (unsigned int)sw, 1000);

dac_init();

tim6_init(7200, 0);


ARR为7199,PSC为0,72M/7199/1000=10Hz波形频率,修改预分频和重装载数值可以改变波形频率


计算公式:f=fosc/n/(arr+1)/(psc+1)


f-波形频率


n-波形点数


arr-定时器计数,不能为0


psc-时钟分频系数


fosc-系统时钟,一般PLL后为72MHz


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

使用5V低功耗运算放大器不会产生失真为–100dBc的正弦波。尽管如此,采用 LTC6258 的带通滤波器可与一个易于使用的低功率振荡器结合使用,以低成本、低电压和极低耗散产生正弦波。

关键字: 低功耗 运算放大器 正弦波

调制在生物化学与分子生物学中有以下几个意义:(1)细胞分化和功能状态的可逆改变。(2)生物活性物质对细胞的调节作用。(3)细胞(主要是免疫活性细胞)受生物活性物质(如细胞因子)作用而发生的功能性变化。(4)特异基因的转录...

关键字: 调制 脉冲调制 正弦波

人类社会的进步离不开社会上各行各业的努力,各种各样的电子产品的更新换代离不开我们的设计者的努力,其实很多人并不会去了解电子产品的组成,比如谐波。

关键字: 谐波 无功功率 正弦波

在科学技术高度发达的今天,各种各样的高科技出现在我们的生活中,为我们的生活带来便利,那么你知道这些高科技可能会含有的逆变器吗?简单地说,逆变器就是一种将低压(12或24伏或48伏)直流电转变为220伏交流电的电子设备。

关键字: 逆变器 正弦波 方波

此次小编所写的文章中所述的电路显示了创建可编程 LED 驱动器更简单的方法,该驱动器非常适用于需要紧凑、可扩展、易于供电和高线性度电源的精确照明控制应用。不过,尺寸必须适应应用的要求,以避免由于各种存在的电感(例如线路电...

关键字: led驱动器 电流转换器 dac

您也许知道,某些DAC包含可在输出端生成基准电压的R2R网络。这些电阻都是精密电阻。它们通常用来根据发送到DAC的数字值切换电流,从而在输出放大器端产生一个电压。采用乘法DAC时,并未集成输出放大器。这就有可能实现某些非...

关键字: dac 电路图

从我们的直观感受来说,DMA并不是一个复杂的东西,要做的事情也很单纯直白。因此Linux kernel对它的抽象和实现,也应该简洁、易懂才是。不过现实却不甚乐观(个人感觉),Linux kernel dmaengine...

关键字: Linux dma

文中将要讨论的所有噪声源,设计人员可能会茫然不知所措。一种简单的做法是采取某种"推荐解决方案";但对任何具体设计要求而言,这都是次优做法。在所有器件特性中,噪声可能是一个特别具有挑战性、难以掌握的设计课题。

关键字: 电源 噪音 dac

    在现代系统集成控制当中,大型的信号切换系统都是各种场所必不可少的,目前主流的信号切换系统包括CREATOR快捷等大型切换系统产品,其中有AV信号切换系统、RGB信号切换

关键字: adi 医疗成像 dac ad5791

  1.绪论   自六十年代以来,许多国家即开始对导航和定位技术的研究。而车辆导航系统即是测量并解算出车辆的瞬时运动状态和位置,提供给驾驶员或自动驾驶仪以实现车辆的正确操纵或控制。车辆导

关键字: dac 视频芯片 cs7123
关闭
关闭