硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2959|回复: 14
收起左侧

[有问必答] 为什么我从AD7606输入的正弦信号用DAC8501转换后输出的是脉宽方波调制信号?

[复制链接]

3

主题

9

回帖

47

积分

新手上路

积分
47
发表于 2018-1-17 08:51:42 | 显示全部楼层 |阅读模式
我在AD7606模拟口输入正弦波信号,通过采集转换后的数字信号再经过DAC8501进行数模转换后从DAC8501模块输出引脚输出.用示波器检测输出引脚波形,发现是方波信号:频率与AD7606模拟口输入正弦波频率一样,幅度是方波的脉冲宽度(调整输入电压大小,方波宽度随之改变).这是为什么?怎样让DAC8501模块输出与AD7606模拟口输入正弦波信号一样的信号?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2018-1-17 09:47:27 | 显示全部楼层
看看网上有没有好用点的串口波形显示软件。
比如我我们论坛这位网友分享的:http://www.armbbs.cn/forum.php?m ... E%BF%DA%B2%A8%D0%CE

测试你采集的AD7606波形是什么样的。
回复

使用道具 举报

3

主题

9

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2018-1-17 10:40:42 | 显示全部楼层
我采集的波形是从信号发生器输出的正弦信号.这是没错的.
回复

使用道具 举报

3

主题

9

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2018-1-17 15:06:30 | 显示全部楼层
为什么我从AD7606输入的正弦信号用DAC8501转换后输出的是脉宽方波调制信号?能帮解答一下吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2018-1-17 15:24:21 | 显示全部楼层
nizhenhe 发表于 2018-1-17 15:06
为什么我从AD7606输入的正弦信号用DAC8501转换后输出的是脉宽方波调制信号?能帮解答一下吗?

我的意思是让你测试AD7606采集后的波形。保证AD7606采集的是正弦波,然后在输出。
回复

使用道具 举报

3

主题

9

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2018-1-17 16:25:03 | 显示全部楼层
你的意思是:用你提供的串口波形显示软件,测试一下我的AD7606采集后的波形,看看是不是正弦波?。如果是正弦波,然后再输出给DAC8501.  是这个意思吧?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2018-1-17 16:27:35 | 显示全部楼层
nizhenhe 发表于 2018-1-17 16:25
你的意思是:用你提供的串口波形显示软件,测试一下我的AD7606采集后的波形,看看是不是正弦波?。如果是正弦波 ...

对的,就是这个意思。
回复

使用道具 举报

3

主题

9

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2018-1-22 10:05:21 | 显示全部楼层
我用串口波形显示软件,测试了一下我的AD7606模块采集正弦波信号后的波形,结果采集到的信号波形不是正弦波!(我使用的程序是贵公司提供的AD7606例程.)
不知为什么!? 应该怎样解决呢?
回复

使用道具 举报

3

主题

9

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2018-1-22 10:21:53 | 显示全部楼层
采集的波形没有一点规律,好像是杂波.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2018-1-22 16:30:43 | 显示全部楼层
有个东西叫奈奎斯特采样定律。
你设置的采样率至少要是你所采样波形的2倍,简单点,你设置信号发生器输出一个100Hz的正弦波,然后用你的7606模块配置为50Ksps采样,也就是每个周期采样500个点,然后输出这500个点看波形效果。

ps:将你说的没用的话都删掉了。

回复

使用道具 举报

3

主题

9

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2018-1-22 23:29:10 | 显示全部楼层
在AD7606例程中,配置7606模块采样率,是不是这条语句bsp_StartAutoTimer(0, 500);        /* 启动1个200ms的自动重装的定时器 */)??,如果是,我将500改成10或5,波形仍然不是正弦波.
我参考AD7606和DAC8501E提供的例程,编了一个采集程序,主程序的程序内容如下:
bsp_Init();
bsp_InitAD7606();        /* 配置AD7606所用的GPIO */
bsp_InitDAC8501();        /* 初始化配置DAC8501E */
AD7606_SetOS(AD_OS_NO);                /* 无过采样 */
AD7606_SetInputRange(0);        /* 0表示输入量程为正负5V, 1表示正负10V */
AD7606_StartConvst();                /* 启动1次转换 */
        while (1)
        {
                bsp_Idle();                /* 空闲时执行的函数,比如喂狗. 在bsp.c中 */
                AD7606_ReadNowAdc();                /* 读取采样结果 */       
                DAC8501_SendData(0,g_tAD7606.sNowAdc[0]);                /* 改变第1通道 DAC输出电压 */
                AD7606_StartConvst();                /* 启动下次转换 */               
        }
程序中没有用到定时器部分,这段程序运行的结果是:输出波形的频率与正弦波相同,但形状就是方波.不知道为什么?请专家指点一下.

回复

使用道具 举报

3

主题

9

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2018-1-22 23:35:05 | 显示全部楼层
波形图片
波形.PNG
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2018-1-23 00:32:33 | 显示全部楼层
nizhenhe 发表于 2018-1-22 23:29
在AD7606例程中,配置7606模块采样率,是不是这条语句bsp_StartAutoTimer(0, 500);        /* 启动1个200ms的自动 ...

看了你写的这个程序,你要学习的地方还比较多,当前你应该先熟悉我们的开发板如何使用。

现在先把你的这个AD和DA的工作放放,学习下裸机例子提高篇例子的第一个按键检测和LED闪烁,现在就学习,特别是下面两个函数如何使用。
bsp_StartAutoTimer
bsp_CheckTimer

学习好了,真的弄明白了,告诉我,然后指导你下一步。

回复

使用道具 举报

3

主题

9

回帖

47

积分

新手上路

积分
47
 楼主| 发表于 2018-1-23 17:29:17 | 显示全部楼层
谢谢!我会好好学学的.今天我对测试的波形观察了半天,感觉似有点相识.稍微加了点内容.没想到测试结果正常了!
回复

使用道具 举报

335

主题

2040

回帖

3050

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3050
发表于 2018-2-2 10:32:48 | 显示全部楼层
nizhenhe 发表于 2018-1-23 17:29
谢谢!我会好好学学的.今天我对测试的波形观察了半天,感觉似有点相识.稍微加了点内容.没想到测试结果正常了!

具体是哪个地方出问题了呢? 最好也说明一下最后的解决方法。

信号发生器是输出的正负电压,ADC一般只能采集正电压,这个需要关注。
你的ADC和DAC位数是否一样?你把采集的16位AD值,输出给12位DAC,自然会出错。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-17 14:40 , Processed in 0.316210 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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