野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9037|回复: 3

求一份DAC产生正弦波函数的例程

[复制链接]
发表于 2016-11-7 11:48:29 | 显示全部楼层 |阅读模式
十万火急,求一份DAC产生正弦波函数的例程
回复

使用道具 举报

发表于 2016-11-7 13:54:11 | 显示全部楼层
光盘资料A盘:3-程序源码.rar\3-程序源码\2-裸机例程\DAC—输出正弦波



野火F103-霸道-光盘资料(资料盘+视频盘)

百度网盘 下载链接:https://pan.baidu.com/s/1slVJBw5
回复 支持 反对

使用道具 举报

发表于 2016-11-14 11:17:52 | 显示全部楼层
刚用STM32F103ZET6写了一个,TIM2 DMA DAC产生频率可调的正弦波,但是有一个问题,当频率高于90K时,频率在有点飘,就是会突然变成60K左右的正弦,但是如果你想要一个固定频率的话,直接在main 函数里面通过TIM_SetAutoreload(TIM2, freq);设置即可freq为定时器的自动更新值,改变它即可改变频率,改了下定时器自动更新初始值后,稳定性稍微好些,但是通过按键来进行频率调节时,发现频率的改变不是等比例增加的,当频率较低时,每次按键只能改变几百Hz,当频率较高时,每次按键可以改变几K到几十K,请问大神门,这是怎么回事!

实验22 DAC输出正弦波.rar

4.44 MB, 下载次数: 105

回复 支持 反对

使用道具 举报

发表于 2016-11-14 11:26:57 | 显示全部楼层
smtudou 发表于 2016-11-14 11:17
刚用STM32F103ZET6写了一个,TIM2 DMA DAC产生频率可调的正弦波,但是有一个问题,当频率高于90K时,频率在 ...

还有一个问题就是,正弦表的数据类型必须是u8 ,当改成u16 时,出来的波形会比较乱,虽然在DMA配置时,将其配置成了    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;           //半字 16位
    DMA_InitStructure.DMA_MemoryDataSize = DMA_PeripheralDataSize_HalfWord;                   //半字 16位

按理说 不是刚好对应起来嘛,数据是u16 ,传输时,每次传输16位,但是不知为何就是不正确?????????????

正弦表类型为u8,DMA配置为
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;           //半字 16位
    DMA_InitStructure.DMA_MemoryDataSize = DMA_PeripheralDataSize_HalfWord;                   //半字 16位

或者
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;           //全字 32位
    DMA_InitStructure.DMA_MemoryDataSize = DMA_PeripheralDataSize_Word;                   //全字 32位

这样才能得到完美正弦波!
IMG_20161114_112452.jpg
知道的,还求解答!
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-27 04:55 , Processed in 0.047153 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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