OpenEdv-开源电子网

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

stm32f100c4DAC+DMA生成正弦波,输出不了波形

[复制链接]

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
发表于 2020-10-20 10:43:52 | 显示全部楼层 |阅读模式
1金钱
stm32f100c4,DAC+DMA生成正弦波,输出不了波形,不用其他条件触发,直接输出就行,谁能指导一下呢

实验20 DAC实验123.zip

4.95 MB, 下载次数: 18

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

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2020-10-20 10:51:57 | 显示全部楼层
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2020-10-20 11:00:05 | 显示全部楼层
三叶草 发表于 2020-10-20 10:51
有没有电压输出?

没电压输出,我直接用dac可以输出一个波形,加上DMA就不行了
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2020-10-20 11:01:21 | 显示全部楼层
三叶草 发表于 2020-10-20 10:51
有没有电压输出?

你那里有f1的板子,可以帮我看看吗
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2020-10-20 11:13:32 | 显示全部楼层
ssssssssssss 发表于 2020-10-20 11:01
你那里有f1的板子,可以帮我看看吗

没有哦
回复

使用道具 举报

11

主题

2154

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4947
金钱
4947
注册时间
2015-1-10
在线时间
620 小时
发表于 2020-10-20 11:23:16 | 显示全部楼层
//2úéúÕyÏò2¨oˉDòáD£¬¸ù¾YDAC_SIN_SIZEéú3é¡£
void dac_creat_sin_buf(void)
{
    u8 i;
    float inc=2*PI/DAC_SIN_SIZE;        //¼ÆËãÔöá¿£¨ò»¸öÖüÆúDAC_SIN_BUF¸öμ㣩
    float outdata=0;
    for(i=0;i<DAC_SIN_SIZE;i++)
    {
        outdata=2047*(1+sin(inc*i));    //&#188;&#198;&#203;&#227;ò&#212;dots&#184;&#246;μ&#227;&#206;a&#214;ü&#198;úμ&#196;&#195;&#191;&#184;&#246;μ&#227;μ&#196;&#214;μ£&#172;·&#197;′ó2048±&#182;£&#172;2¢&#198;&#171;ò&#198;μ&#189;&#213;yêy&#199;&#248;óò&#161;£
//        printf("%f\r\n",outdata);outdata
        DAC_SIN_BUF[i]=2047;
    }  
}
先检查一下这个函数,你计算输出的outdata没用,DAC_SIN_BUF一直是2047
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2020-10-20 11:29:57 | 显示全部楼层
阿侑kevin 发表于 2020-10-20 11:23
//2úéú&#213;y&#207;ò2¨oˉDòáD£&#172;&#184;ù&#190;YDAC_SIN_SIZEéú3é&#161;£
void dac_cre ...

刚改了一下,关键是没电压输出 ,改了也啥都没有
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2020-10-20 11:30:28 | 显示全部楼层
阿侑kevin 发表于 2020-10-20 11:23
//2úéú&#213;y&#207;ò2¨oˉDòáD£&#172;&#184;ù&#190;YDAC_SIN_SIZEéú3é&#161;£
void dac_cre ...
  1. void dac_creat_sin_buf(void)
  2. {
  3.     u8 i;
  4.     float inc=2*PI/DAC_SIN_SIZE;        //&#188;&#198;&#203;&#227;&#212;&#246;á&#191;£¨ò&#187;&#184;&#246;&#214;ü&#198;úDAC_SIN_BUF&#184;&#246;μ&#227;£&#169;
  5.     float outdata=0;
  6.     for(i=0;i<DAC_SIN_SIZE;i++)
  7.     {
  8.         outdata=2047*(1+sin(inc*i));    //&#188;&#198;&#203;&#227;ò&#212;dots&#184;&#246;μ&#227;&#206;a&#214;ü&#198;úμ&#196;&#195;&#191;&#184;&#246;μ&#227;μ&#196;&#214;μ£&#172;·&#197;′ó2048±&#182;£&#172;2¢&#198;&#171;ò&#198;μ&#189;&#213;yêy&#199;&#248;óò&#161;£
  9. //        printf("%f\r\n",outdata);outdata
  10.         DAC_SIN_BUF=outdata;
  11.     }  
  12. }
复制代码

回复

使用道具 举报

11

主题

2154

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4947
金钱
4947
注册时间
2015-1-10
在线时间
620 小时
发表于 2020-10-20 13:29:49 | 显示全部楼层

好像数据被DMA一下子就传完了,没有加延时,DMA通过延时触发传输,一次一个,试试
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2020-10-20 13:39:10 | 显示全部楼层
本帖最后由 ssssssssssss 于 2020-10-20 13:40 编辑
阿侑kevin 发表于 2020-10-20 13:29
好像数据被DMA一下子就传完了,没有加延时,DMA通过延时触发传输,一次一个,试试

好像还是不行,我在
while(1)
{
MYdma_Enable(DMA1_Channel3);
delayms(500);
}
回复

使用道具 举报

11

主题

2154

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4947
金钱
4947
注册时间
2015-1-10
在线时间
620 小时
发表于 2020-10-20 13:49:47 | 显示全部楼层
ssssssssssss 发表于 2020-10-20 13:39
好像还是不行,我在
while(1)
{

MYdma_Enable(DMA1_Channel3);这个函数我看你是一下子就传输了DAC_SIN_SIZE个
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2020-10-20 13:52:18 | 显示全部楼层
阿侑kevin 发表于 2020-10-20 13:49
MYdma_Enable(DMA1_Channel3);这个函数我看你是一下子就传输了DAC_SIN_SIZE个

那是在哪里加延时呢
回复

使用道具 举报

11

主题

2154

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4947
金钱
4947
注册时间
2015-1-10
在线时间
620 小时
发表于 2020-10-20 14:05:50 | 显示全部楼层
ssssssssssss 发表于 2020-10-20 13:52
那是在哪里加延时呢

这样子,用个循环,在每次循环中计算一个outdata,然后DMA传给DAC寄存器,不要用缓存,DMA配置里设置源地址不递增,enable一次传输当前的outdata,然后延时,再进入下一次循环
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2020-10-20 14:18:32 | 显示全部楼层
阿侑kevin 发表于 2020-10-20 14:05
这样子,用个循环,在每次循环中计算一个outdata,然后DMA传给DAC寄存器,不要用缓存,DMA配置里设置源地 ...

正点原子这个用定时器触发的,我这里还是没出波形,我是删了一些东西而已

实验22 DMA实验-1K正弦波DAC输出555.zip

4.59 MB, 下载次数: 133

回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2020-10-20 14:25:06 | 显示全部楼层
阿侑kevin 发表于 2020-10-20 14:05
这样子,用个循环,在每次循环中计算一个outdata,然后DMA传给DAC寄存器,不要用缓存,DMA配置里设置源地 ...

http://www.openedv.com/forum.php ... =%D5%FD%CF%D2%B2%A8
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14433
金钱
14433
注册时间
2018-8-3
在线时间
1157 小时
发表于 2020-10-20 15:03:04 | 显示全部楼层
回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2020-10-20 16:09:17 | 显示全部楼层
本帖最后由 ssssssssssss 于 2020-10-20 16:11 编辑

按照上面帖子改了一下还是不行。PA4脚没输出

战舰:DAC通道1地址数据通过定时器触发DMA传输555.zip

4.79 MB, 下载次数: 0

回复

使用道具 举报

160

主题

967

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2097
金钱
2097
注册时间
2014-3-7
在线时间
491 小时
 楼主| 发表于 2020-10-26 10:29:27 | 显示全部楼层
翼行园子 发表于 2020-10-20 15:03
参考下这个帖子http://www.openedv.com/forum.php?mod=viewthread&tid=286617

这个帖子里面的代码 我这里都出不了波形 还用的是老战舰的板子 晕了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 22:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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