OpenEdv-开源电子网

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

利用DAC输出三角波,频率怎么不准确

[复制链接]

13

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2013-3-24
在线时间
0 小时
发表于 2013-8-12 11:53:16 | 显示全部楼层 |阅读模式

void Dac1_Init(void)
{
 
 GPIO_InitTypeDef GPIO_InitStructure;
 DAC_InitTypeDef DAC_InitType;
 TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure;
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE );   //使能PORTA通道时钟
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE );   //使能DAC通道时钟
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;     // 端口配置
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;    //模拟输入
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
 GPIO_SetBits(GPIOA,GPIO_Pin_4) ;//PA.4 输出高
 
 /* TIM2 Configuration */
  /* Time base configuration */
   TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
   TIM_TimeBaseStructure.TIM_Period = 0x85;         
   TIM_TimeBaseStructure.TIM_Prescaler =0;      
   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;   
   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 
   TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

   /* TIM2 TRGO selection */
  TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);    
 DAC_InitType.DAC_Trigger=DAC_Trigger_T2_TRGO;; //使用触发功能 Tim2触发
 DAC_InitType.DAC_WaveGeneration=DAC_WaveGeneration_Triangle;//使用波形发生
 DAC_InitType.DAC_LFSRUnmask_TriangleAmplitude=DAC_TriangleAmplitude_4095  ;//屏蔽、幅值设置
 DAC_InitType.DAC_OutputBuffer=DAC_OutputBuffer_Disable; //DAC1输出缓存关闭 BOFF1=1
 DAC_Init(DAC_Channel_1,&DAC_InitType);  //初始化DAC通道1

 DAC_Cmd(DAC_Channel_1, ENABLE);  //使能DAC1
  TIM_Cmd(TIM2, ENABLE);
}

输出频率不应该是是定时中断频率吗?这样的话,应该是 Tout= (arr+1) *(psc+1) /Tclk;   0x85=133;  134*1/72M;f=72M/134=537K左右吗,但是出来的频率怎么是65hz

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-8-12 21:55:23 | 显示全部楼层
回复【楼主位】johnnyzang:
---------------------------------
大哥,能输出537Khz的三角波,那么假设一个三角波是10个点,那么你的DAC转换速度也得5Mhz以上啊....
STM32的DAC没这么快吧,另外STM32自带的三角波发生器,你得算算是多少个点,构成一个三角波.再去*65,等于你说的537Khz.还差不多.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2021-5-16
在线时间
11 小时
发表于 2021-12-12 17:21:01 | 显示全部楼层
你一个周期有8190个点(1帧),你输出波形就是像播放电影一样不断地去播放这些点,537K实际是你的点播放速度(DAC能否达到这个速度我保持怀疑态度,因为典型值是333K)
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2022-11-1
在线时间
19 小时
发表于 2022-12-7 11:23:42 | 显示全部楼层
正点原子 发表于 2013-8-12 21:55
回复【楼主位】johnnyzang:
---------------------------------
大哥,能输出537Khz的三角波,那么假设一个三 ...

请教一下原子哥,一直不清楚DAC的转换速度具体是多少呢?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 20:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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