OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 14630|回复: 23

关于DAC产生三角波

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2011-8-13
在线时间
0 小时
发表于 2011-8-13 16:28:43 | 显示全部楼层 |阅读模式

     RCC->APB2ENR|=1<<2;    //使能PORTA时钟 

  GPIOA->CRL&=0XFFF0FFFF;
  GPIOA->CRL|=0X00030000;//PA4 推挽输出    
  GPIOA->ODR|=1<<4;      //PA4 输出高

  DAC->CR|=0x7<<3; //设置软件触发
  DAC->CR|=0x3<<6; //设置噪声发生器
  DAC->CR|=1<<11; //
  DAC->CR|=1<<0;//使能DAC通道
  DAC->CR|=1<<2;
  DAC->DHR12L1=0x7FF0;

这样配置对吗?  就是没有波形输出   

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-8-14 00:42:47 | 显示全部楼层
回复【楼主位】strong li:
---------------------------------
冒似DAC时钟没有开启吧?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2011-8-13
在线时间
0 小时
 楼主| 发表于 2011-8-14 08:02:42 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我时钟开过了,而且触发也写了还是没有啊 
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-8-14 09:21:53 | 显示全部楼层
void Dac_Init(void)
{
RCC->APB2ENR|=1<<2;    //使能PORTA时钟   
RCC->APB1ENR|=1<<29;   //使能DAC时钟   
     
GPIOA->CRL&=0XFFF0FFFF; 
GPIOA->CRL|=0X00030000;//PA4 推挽输出     
    GPIOA->ODR|=1<<4;      //PA4 输出高

DAC->CR|=1<<0; //使能DAC1
DAC->CR|=1<<1; //DAC1输出缓存使能 BOFF1=1
DAC->CR|=0<<2; //不使用触发功能 TEN1=0
DAC->CR|=0<<3; //DAC TIM6 TRGO,不过要TEN1=1才行
DAC->CR|=0<<6; //不使用波形发生
DAC->CR|=0<<8; //屏蔽、幅值设置
DAC->CR|=0<<12; //DAC1 DMA不使能    

DAC->DHR12R1=0;
}


然后主函数:
int main(void)
{
u8 dir=0,t;
u16 i=0;
   
   Stm32_Clock_Init(9);//系统时钟设置
delay_init(72); //延时初始化
uart_init(72,9600); //串口1初始化   
Dac_Init();
//LED_Init();     //LED初始化
//KEY_Init();     //按键初始化
//LCD_Init();     //TFTLCD液晶初始化
while(1)
{         
delay_us(1);
DAC->DHR12R1=i;
if(dir==0)i++;
else i--;
if(i>=4095)
{
dir=1;
t++;
}else if(i==0)dir=0;
if(t>100)
{
t=0;
printf("50 circle\n\r");  
}
}
}
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2011-8-13
在线时间
0 小时
 楼主| 发表于 2011-8-14 20:16:37 | 显示全部楼层
谢谢原子哥  可以了 
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2012-6-29
在线时间
0 小时
发表于 2012-6-29 09:32:10 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
回复【4楼】正点原子:
---------------------------------
原子大哥,我把你这个复制过去了,还是不好使,还需要别的配置吗?
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2012-8-24
在线时间
0 小时
发表于 2012-9-10 19:27:29 | 显示全部楼层
  "一旦使能DACx通道,相应的GPIO引脚(PA4或者PA5)就会自动与DAC的模拟输出相连(DAC_OUTx) 。为了避免寄生的干扰和额外的功耗,引脚PA4 或者PA5 在之前应当设置成模拟输入(AIN)。"
原子大哥,这句话是数据手册上面的,请问用到DA输出的时候,PA4和PA5究竟应该设成那种MODE?我看你上面的程序里面是推免输出...
虚心学习,不可一知半解!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-9-10 21:42:23 | 显示全部楼层
回复【7楼】冰茶爽:
---------------------------------
推挽输出和模拟输入都可以,我都测试过了。不过最好设置为模拟输入吧!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
121
金钱
121
注册时间
2013-4-5
在线时间
0 小时
发表于 2013-4-12 13:06:07 | 显示全部楼层
好久的帖子了,我还有个疑问,请教原子哥,你这个东西怎么设置频率呢?我不明白。还有,手册里面提到过Vref,那到底是多少呢?
回复 支持 反对

使用道具 举报

10

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2013-6-20
在线时间
0 小时
发表于 2013-7-7 19:42:05 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子大哥,我看中文手册中对三角波形介绍的时候,说要:   
1. 为了产生三角波,必须使能DAC触发,即设DAC_CR寄存器的TENx位为’1’。 
2. MAMP[3:0]位必须在使能DAC之前设置,否则其值不能修改。
您的这段代码和视频上讲的DAC的设置是一样的,只是主函数人为的对寄存器的值递增递减,产生三角波,不能设置成自动的么
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-7 21:34:20 | 显示全部楼层
回复【10楼】fqxwyf:
---------------------------------
你可以设置自动的...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-7 21:43:04 | 显示全部楼层
回复【9楼】hiayan19910702:
---------------------------------
STM32 DAC的速度,ST没有给出准确的数据,但是我测试应该在200Khz左右.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-7 22:04:18 | 显示全部楼层
我错了...
刚刚实际测试了下STM32的DAC速度,200个点的正弦波,可以输出13.33Khz,换算下来,STM32的DAC转换速度应该是2.6Mhz左右.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

10

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2013-6-20
在线时间
0 小时
发表于 2013-7-8 09:46:11 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
void Dac1_Init(void)
{
RCC->APB2ENR|=1<<2;    //使能PORTA时钟   
RCC->APB1ENR|=1<<29;   //使能DAC时钟   

GPIOA->CRL&=0XFFF0FFFF; 
GPIOA->CRL|=0X00000000;//PA4 模拟输入    


DAC->CR|=1<<1; //DAC1输出缓存不使能 BOFF1=1
DAC->CR|=1<<2; //使用触发功能 TEN1=0
DAC->CR|=7<<3; //软件触发
DAC->CR|=2<<6; //使用波形发生
DAC->CR|=1<<8; //屏蔽、幅值设置 幅值为3
DAC->CR|=0<<12; //DAC1 DMA不使能  

DAC->CR|=1<<0; //使能DAC1  

DAC->DHR12R1=0;
}
主函数无限循环 while(1);始终输出为0无波形 我哪里配置错了么
回复 支持 反对

使用道具 举报

10

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2013-6-20
在线时间
0 小时
发表于 2013-7-8 09:57:42 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------是不是在主函数里要对 DAC->SWTRIGR这个寄存器还要判断,一旦为0了就把它置1
回复 支持 反对

使用道具 举报

20

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2013-6-2
在线时间
2 小时
发表于 2013-7-12 20:52:57 | 显示全部楼层
回复【13楼】正点原子:
---------------------------------
原子哥能不能给个正弦波的例程?
坚持到底就是胜利!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-13 11:40:48 | 显示全部楼层
不能.这东西很简单,自己搞定.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2013-3-16
在线时间
0 小时
发表于 2013-7-27 16:31:00 | 显示全部楼层
回复【17楼】正点原子:
---------------------------------
原子哥,我很郁闷这个三角波频率的计算方法啊,我通过定时器分频比计算出来的频率 和  示波器抓出来的波形频率对不上啊,,,正弦波的平率设置没有问题的
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-27 17:54:42 | 显示全部楼层
回复【18楼】wsshopping:
---------------------------------
这没什么问题吧?
都是看你一秒钟输出了多少个波嘛...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2014-12-23
在线时间
0 小时
发表于 2015-3-14 21:03:27 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
请问怎样直接设置STM32F103ZE输出三角波,自动的,我调了好久那个dac.h里面的函数,也看了数据手册,就是得不到那个波形啊
希望有大神帮助
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-14 22:41:11 | 显示全部楼层
回复【20楼】大虾hong:
---------------------------------
看手册了,我也没调过自动三角波。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2015-3-5
在线时间
0 小时
发表于 2015-3-27 14:31:52 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------为什么要生成三角波却用DAC->CR|=0<<6; //不使用波形发生    不太懂
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-3-27 23:11:52 | 显示全部楼层
回复【22楼】asd_mt:
---------------------------------
注释不一定正确..
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2015-5-9
在线时间
9 小时
发表于 2015-11-22 17:25:09 | 显示全部楼层
回复【14楼】fqxwyf:
---------------------------------
你的搞定了吗?可以分享一下吗?我这么配置的也不行
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-20 07:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表