打印
[AT32F403/403A]

基于AT32F403的DAC基础配置(STM32F103类似)

[复制链接]
624|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
林堪堪|  楼主 | 2020-12-14 19:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
AT32DAC有两个独立通道,每个通道可以分别产生稳定电平,三角波,模拟噪声三种输出波形。这里以三角波举例:
1)使能DAC对应时钟,对应GPIO时钟:
  RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_DAC, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOA, ENABLE);
2)配置DAC对应GPIO口为模拟模式:
GPIO_InitStructure.GPIO_Pins = GPIO_Pins_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_ANALOG;
GPIO_Init(GPIOA, &GPIO_InitStructure);
3DAC输出配置:
DAC_InitStructure.DAC_Trigger =DAC_Trigger_Software; //触发源选择软件触发
DAC_InitStructure.DAC_WaveGeneration =DAC_WaveGeneration_Triangle; //波形选择三角波
DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude= DAC_TriangleAmp_2047; //三角波幅度/噪声发生器屏蔽位选择--2047
DAC_InitStructure.DAC_OutputBuffer =DAC_OutputBuffer_Enable; //输出缓存选择使能输出缓存可以减少输出阻抗,无需外部运放即可直接驱动外部负载。
DAC_Init(DAC_Channel_1,&DAC_InitStructure);
4DAC精度、左/右对齐选择,基值设定:
DAC_SetChannel1Data(DAC_Align_12b_Left, 2047);  //12bit精度,左对齐,基值这里设置20471/2Vref
5DAC通道使能
DAC_Ctrl(DAC_Channel_1, ENABLE);
6)触发转换:
  DAC->SWTRG |= 0x1;//每触发一次,DAC输出+1。在这个例子里,第一次触发DAC输出电平Vref*(基值+0)/4095,第二次触发DAC输出电平Vref*(基值+1)/4095… 因此输出三角波斜率可以通过触发时间间隔调整。


使用特权

评论回复
沙发
muyichuan2012| | 2020-12-14 21:32 | 只看该作者
DAC 硬件支持哪些波形输出呢

使用特权

评论回复
板凳
林堪堪|  楼主 | 2020-12-15 09:55 | 只看该作者
muyichuan2012 发表于 2020-12-14 21:32
DAC 硬件支持哪些波形输出呢

稳定电平,三角波,模拟噪声三种。不过可以在稳定电平模式下,自己弄一个数组作为输出电平,可以模拟任何波形

使用特权

评论回复
地板
数据采集存储| | 2020-12-15 17:42 | 只看该作者
太棒了,学习到了新知识。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

69

主题

119

帖子

5

粉丝