社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 6320|回复: 26

[求助] AD9102 DDS不输出(已解决)

  [复制链接]

5066

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-1-17 22:22:44 | 显示全部楼层 |阅读模式
本帖最后由 littleshrimp 于 2017-1-19 12:15 编辑

AD9102 DDS 配置好以后没有输出


原理图我参考官方参考设计改的,只保留了放大器部分
QQ图片20170117220658.png
ad9102_sch.pdf (116.15 KB, 下载次数: 68)
虾扯蛋


回复

使用道具 举报

5066

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2017-3-30 09:17:18 | 显示全部楼层
测试程序
2..AD9102 map430fr5969.rar (13.73 KB, 下载次数: 41)
虾扯蛋


回复

使用道具 举报

957

TA的帖子

2

TA的资源

纯净的硅(初级)

Rank: 4

发表于 2017-1-17 23:13:32 | 显示全部楼层
本帖最后由 飞鸿浩劫 于 2017-1-17 23:23 编辑

好东西……我也有两片,一直没时间玩儿,这是干嘛用的?另外……9106根9102很像?

点评

AD9106是4路输出12位 AD9102是1路输出14位 其它配置除了部分寄存器,其它基本相同  详情 回复 发表于 2017-1-18 12:13


回复

使用道具 举报

4164

TA的帖子

9

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

测评达人

发表于 2017-1-18 10:24:15 | 显示全部楼层
本帖最后由 huaiqiao 于 2017-1-18 11:05 编辑

虾哥,我不算高手,算低手。没有用过这么高端的芯片暂时。O(∩_∩)O哈哈~谈几点我的看法:
1、我要吐槽下你的电路图,RESET低电平有效,CS低电平有效的表示方法如下:

RESET 引脚.png

2、原理图画的时候,我个人的习惯是模块化,这样看起来更加容易和方便一些;


原理图模块化.png

3、你的设计是参考如下的网址?

http://www.analog.com/cn/product ... oduct-evaluationkit
54444444.png

https://wiki.analog.com/resources/eval/dpg/eval-ad9106
66666.png

http://www.analog.com/media/cn/t ... heets/AD9102_cn.pdf

4、CLKN/P 和IOUTP/N这个看起来要走差分线了,不知道虾哥您有注意到么。
99999999999999.png
00000.png

5、这个片子我大概看了下,应该是SPI(SPI时钟配置不应该太低)往寄存器里面写值,从而来达到配置芯片功能的效果。
您需要留意下,这个spi配置寄存器,是不是少配置了啥。
而且看起来这玩意儿,还要用spi写片内的SRAM。

整个片子,真的是挺复杂的,多啃datasheet估计会理解的更加深入吧。




点评

昨天又试了一下官方的.regval 把示波器调到20mV档能够看到波形 和官方手册里的波形对照了一下 输出“波形”和官方的基本一样 虽然示波器的噪声非常大波形已经看不太清楚 I/V转换电路部分一直没弄明白 今天仿  详情 回复 发表于 2017-1-18 12:40


回复

使用道具 举报

5066

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2017-1-18 12:13:33 | 显示全部楼层
飞鸿浩劫 发表于 2017-1-17 23:13
好东西……我也有两片,一直没时间玩儿,这是干嘛用的?另外……9106根9102很像?

AD9106是4路输出12位
AD9102是1路输出14位

其它配置除了部分寄存器,其它基本相同
虾扯蛋


回复

使用道具 举报

5066

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2017-1-18 12:40:43 | 显示全部楼层
huaiqiao 发表于 2017-1-18 10:24
虾哥,我不算高手,算低手。没有用过这么高端的芯片暂时。O(∩_∩)O哈哈~谈几点我的看法:
1、我要吐槽下 ...

昨天又试了一下官方的.regval
把示波器调到20mV档能够看到波形
和官方手册里的波形对照了一下
输出“波形”和官方的基本一样
虽然示波器的噪声非常大波形已经看不太清楚

I/V转换电路部分一直没弄明白
今天仿真了一下这个I/V转换电路
感觉有问题
仔细对照了一下官方的原理图,发现放大器2个输入端的1K上下接电阻是不用焊的
去掉3个1K电阻问题又解决一些

现在还有一个问题,就是RSET只能设置成1F
如果数值设置小了输出就会不正常
新建文件1.bmp

正常波形

新建文件0.bmp

RSET设置成小于1F后的波形


如果RSET设置成0x1F
数字增益设置成0x4000
REFIO内部参考电压为1V时
输出的锯齿波和正弦波都是+-1.0V
波形看起来没有什么问题

新建文件2.bmp


原理图这个封装是用Ultra Librarian Reader转的使用*号应该也可以代表低电平有效,就没改

数据手册里有一种使用CMOS时钟的方法
我是按照这种方法接的
QQ图片20170118121554.png

开始使用50MHz的有源晶振因为没测到输出才改成MSP430的PWM输出
刚才又换成晶振,波形输出也正常
看来主要问题还是放大器输入端那3颗上下接电阻
还有寄存器配置问题

RSET的问题和输出电压和设置的关系还没弄明白



虾扯蛋


回复

使用道具 举报

4164

TA的帖子

9

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

测评达人

发表于 2017-1-18 16:53:18 | 显示全部楼层
1、首先reset引脚的问题,我看引脚描述中,
低电平有效复位引脚。将寄存器复位至默认值

所以你说的RESET设置为0x1F,应该是将reset所在寄存器的bit位设置为默认0了。

2、我想问下,您有试过么?SPI单独的读和写是OK的么? 先得保证spi是通的哦。

3、我看它电路图上,一堆的ADxxx的片子,说实话没有仔细去考究。黑白的。。。。图。。。。。

不过我看它REFIO 这个引脚官方的设计上有加1K的电阻,估计是限流的吧,还是有别的用处
中文手册page26
7777777777777777777.png 估计你也是用内部的基准电压源模式吧。不过这个玩意儿,内部的这种情况,好像要对寄存器操作。

4、
还有你说的时钟的问题,就你回复的帖子中,我看这个地方只是针对我红色的圈中的型号吧,你的AD9102是不适用的吧。

888888888888888888.png


还有,你用PWM提供clk我不知道行不行。。。。还是用有源晶振,这个要参考下ADI的官方的设计。



5、我建议,这种带寄存器的片子,你单独新建一个H文件和C文件,H文件中,寄存器的设置用位移操作,在H文件中就像如下:
  1. #define DRV_CTRL_MODE_FULL_STP         (u16)(0 << 3)
  2. #define DRV_CTRL_MODE_2_STP                 (u16)(1 << 3)
  3. #define DRV_CTRL_MODE_4_STP                 (u16)(2 << 3)                //默认状态
  4. #define DRV_CTRL_MODE_8_STP                 (u16)(3 << 3)
复制代码


在C文件中,可以如下:
  1. void DRV_Set_Index_Level(u16 step)
  2. {
  3.     u16 temp = 0;

  4.     temp = SPI1_ReadWriteByte(DRV_READ | DRV_CTRL_ADDR | DUMMY);
  5.     temp &= 0x0f87;         //清除高4位
  6.     temp |= step;
  7.     SPI1_ReadWriteByte(DRV_WRITE | DRV_CTRL_ADDR | temp);
  8. }
复制代码



这样,在操作和配置寄存器的时候,直接调用函数就行了。这个招数,以前我没有学到,也是去年才学到的。说实话,以前我只是傻乎乎的往寄存器中写0x某某某的十六进制的方式去弄的。后来学到这样的招数后,挺管用的。

你看下我说的这种方法,对你操作和配置寄存器来说,好不好用。毕竟你如果用spi写的话,spi写的函数中的输入参数一堆的十六进制也不够直观,而且容易出错的。

以上,供参考。






点评

谢谢回复1、RSET指的是片内可调电阻的配置寄存器,不是RESET(复位),通过修改RSET的值来改变内部可调电阻的大小 不过RSET寄存器数据和电阻阻值的对应关系我在手册里还没有看到 [attachimg]279862[/attachimg] 2  详情 回复 发表于 2017-1-18 17:54


回复

使用道具 举报

5066

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2017-1-18 17:54:45 | 显示全部楼层
huaiqiao 发表于 2017-1-18 16:53
1、首先reset引脚的问题,我看引脚描述中,

所以你说的RESET设置为0x1F,应该是将reset所在寄存器的bit ...

谢谢回复1、RSET指的是片内可调电阻的配置寄存器,不是RESET(复位),通过修改RSET的值来改变内部可调电阻的大小
不过RSET寄存器数据和电阻阻值的对应关系我在手册里还没有看到
QQ图片20170118173253.png
2、SPI好用的,之前通过修改BGDR寄存器可以改变REFIO的电平
3、他这个原理图我也看了好长时间才弄明白,估计是老工程师用土办法画的,不太好理解,我是使用的内部参考电压,默认也是开启的不需要设置,不太清楚他的外部1K电阻是用来干嘛的,可能是用来测量或者使用外部参考电压用的吧
4、官方建议使用他的时钟分配器,使用时钟分配器的好处是抖动和相位噪声这些参数比较好,在高频下能够实现更好的性能,使用COMS时钟在低频情况下影响也不是很大,因为现在我只是想确定板子的功能,以后还要用这种低抖动的时钟
5、你说的这种方法很好,以后可以用你这种方法,配置起来更灵活,看起来也比较直观,开始的时候不确定板子是不是有问题,就用官方提供的这种方法了,官方提供的.regval文件和WINDOWS下的配置文件都是使用这种格式
QQ图片20170118174255.png

点评

1、这个RESET位,我本来表达的是,中文手册中page28中。如下的这个位。(可是后来我在编辑的时候,不小心将网页关闭了,数据恢复的时候,没有注意到,这个图片忘记贴了) [attachimg]279864[/attachimg] 2、SP  详情 回复 发表于 2017-1-18 18:13
虾扯蛋


回复

使用道具 举报

4164

TA的帖子

9

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

测评达人

发表于 2017-1-18 18:13:47 | 显示全部楼层
littleshrimp 发表于 2017-1-18 17:54
谢谢回复1、RSET指的是片内可调电阻的配置寄存器,不是RESET(复位),通过修改RSET的值来改变内部可调电 ...

1、这个RESET位,我本来表达的是,中文手册中page28中。如下的这个位。(可是后来我在编辑的时候,不小心将网页关闭了,数据恢复的时候,没有注意到,这个图片忘记贴了)

77777777777777.png

2、SPI没有问题就好。

3、时钟的问题,我表示我没看懂。。。。

4、原来ADI官网已经给出了寄存器的配置的工具了啊。那你就暂时先使用这堆十六进制吧。不过每次配置好这一堆十六进制数后,建议截图保存,然后在相应的SPI的写的函数中,增加注释模块中文说明下。否则,很有可能过几天就会忘记这个,O(∩_∩)O哈哈~

点评

是有一个关于复位的RESET寄存器 怪我没把DAC_RSET寄存器名称写全 ADI的评估工具如果使用官方的评估板可以直接将配置烧进去测试 自己做的就没这待遇了 只能把寄存器值取出来,用EXCEL弄成固定格式的数组再  详情 回复 发表于 2017-1-18 20:07


回复

使用道具 举报

5066

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2017-1-18 20:07:11 | 显示全部楼层
huaiqiao 发表于 2017-1-18 18:13
1、这个RESET位,我本来表达的是,中文手册中page28中。如下的这个位。(可是后来我在编辑的时候,不小心 ...

是有一个关于复位的RESET寄存器
怪我没把DAC_RSET寄存器名称写全

QQ图片20170118184331.png

QQ图片20170118184212.png

时钟方面我也是一知半解
ADI有相关的文章
AN-1067_cn.pdf (5.55 MB, 下载次数: 33)

点评

如果官方的 那个评估工具不好用,只能就是像你说的通过数组的方式弄了,这个也是好办法。 时钟实在不行,就参考官方的设计来好了。不过,我看官方的这个CLKP和CLKN是来自AD9514BCPZ,这个搜了下是个时钟芯片。  详情 回复 发表于 2017-1-18 21:07
虾扯蛋


回复

使用道具 举报

4164

TA的帖子

9

TA的资源

五彩晶圆(高级)

Rank: 9Rank: 9Rank: 9

测评达人

发表于 2017-1-18 21:07:23 | 显示全部楼层
littleshrimp 发表于 2017-1-18 20:07
是有一个关于复位的RESET寄存器
怪我没把DAC_RSET寄存器名称写全





时钟方面我也是一知半解
A ...

如果官方的 那个评估工具不好用,只能就是像你说的通过数组的方式弄了,这个也是好办法。


时钟实在不行,就参考官方的设计来好了。不过,我看官方的这个CLKP和CLKN是来自AD9514BCPZ,这个搜了下是个时钟芯片。你没有用这个时钟芯片。

还有像我上面说的“REFIO 这个引脚官方的设计上有加1K的电阻”这种情况,你那个地方就放个电阻上去,实在不行,可以焊接成0欧姆的电阻啊。
看你的样子,这个又是自己弄了一块板子自己玩吧。O(∩_∩)O哈哈~


回复

使用道具 举报

238

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-2-3 15:19:25 | 显示全部楼层
两位都是高手,小弟佩服佩服~学习学习!有点复杂,看不懂


回复

使用道具 举报

7

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-2-19 07:35:28 | 显示全部楼层
项目要用这块芯片了,mark一下子.


回复

使用道具 举报

7

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-2-19 14:21:34 | 显示全部楼层
楼主,能贴一下您的代码吗?参考一下子.

点评

贴子里有啊  详情 回复 发表于 2017-2-19 15:07


回复

使用道具 举报

5066

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2017-2-19 15:07:08 来自手机 | 显示全部楼层


贴子里有啊


回复

使用道具 举报

7

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-2-19 16:40:56 | 显示全部楼层

好的,我刚看了一遍数据手册,准备再熟悉熟悉,然后参考哈你写的东西.


回复

使用道具 举报

7

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-2-22 23:17:45 | 显示全部楼层
累死宝宝了.
#define AD9102_SPICONFIG      0x00000000
#define AD9102_POWERCONFIG    0x00010000
#define AD9102_CLOCKCONFIG                0x00020000
#define AD9102_REFADJ                                        0x00030000
#define AD9102_DACAGAIN       0x00070000
#define AD9102_DACRANGE       0x00080000
#define AD9102_DACRSET        0x000C0000
#define AD9102_CALCONFIG                        0x000D0000
#define AD9102_COMPOFFSET                        0x000E0000
#define AD9102_RAMUPDATE      0x001D0000
#define AD9102_PAT_STATUS                        0x001E0000
#define AD9102_PAT_TYPE                                0x001F0000
#define AD9102_PATTERN_DLY    0x00200000
#define AD9102_DACDOF         0x00250000
#define AD9102_WAV_CONFIG     0x00270000
#define AD9102_PAT_TIMEBASE   0x00280000
#define AD9102_PAT_PERIOD           0x00290000
#define AD9102_DAC_PAT        0x002B0000
#define AD9102_DOUT_START                        0x002C0000
#define AD9102_DOUT_CONFIG                0x002D0000
#define AD9102_DAC_CST        0x00310000
#define AD9102_DAC_DGAIN      0x00350000
#define AD9102_SAW_CONFIG     0x00370000
#define AD9102_DDS_TW32       0x003E0000
#define AD9102_DDS_TW1        0x003F0000
#define AD9102_DDS_PW         0x00430000
#define AD9102_TRIG_TW_SEL                0x00440000
#define AD9102_DDS_CONFIG                        0x00450000
#define AD9102_TW_RAM_CONFIG  0x00470000
#define AD9102_START_DELAY    0x005C0000
#define AD9102_START_ADDR     0x005D0000
#define AD9102_STOP_ADDR                         0x005E0000   
#define AD9102_DDS_CYC                                0x005F0000
#define AD9102_CFG_ERROR      0x00600000
#define AD9102_SRAM_DATA      0x60000000


回复

使用道具 举报

5066

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

 楼主| 发表于 2017-2-22 23:22:20 | 显示全部楼层
qq511950071 发表于 2017-2-22 23:17
累死宝宝了.
#define AD9102_SPICONFIG      0x00000000
#define AD9102_POWERCONFIG    0x00010000
#de ...

虾扯蛋


回复

使用道具 举报

7

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-3-11 07:58:14 | 显示全部楼层
通过2天焊接、程序调试,终于完成了从SRAM中读取波形输出三角波的程序,刻意来感谢楼主的!没有楼主这预存波形的程序,可能要花很久.AD9102的手册特别坑爹,错误百出.甚至是寄存器描述都相当有问题。中文手册更是让人哭笑不得。推荐大家去AD官网看看相关帖子吧,我想此帖势必还会有更多人来看的。总之,感谢楼主.


回复

使用道具 举报

4

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-4-24 16:44:43 | 显示全部楼层
请问有人对AD9102的内部SRAM操作过吗?我想实现datasheet中图47显示4k × 14 SRAM中START_ADDR和STOP_ADDR所定义地址段中存储的波形由DAC输出。该波形在各模式周期中重复一次。在每个模式周期中,经过起始延迟后,从SRAM读出模式。不知道大家有没有用过这方面的内容。


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-7-16 08:55 , Processed in 0.528391 second(s), 20 queries , Gzip On, Redis On.

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