9

帖子

0

TA的资源

一粒金砂(中级)

41
 
修改也就是对于SPI引脚的操作相应的修改吧,那些我都修改过并测试过了,但是还是无法初始化成功,不知道为什么。

点评

你现在能确定stm32和ad9102通信是正常的吗 比如stm32的spi发送数据是否准确(例如用示波器测量波形或能成功控制其他设备)速率是不是在ad9102的允许范围内 然后再看它和ad9102连接是否正确 通信是否正常(比如写的  详情 回复 发表于 2019-4-4 07:34
 
 

回复

9792

帖子

24

TA的资源

版主

42
 
tan90-_- 发表于 2019-4-3 19:58
修改也就是对于SPI引脚的操作相应的修改吧,那些我都修改过并测试过了,但是还是无法初始化成功,不知道为 ...

你现在能确定stm32和ad9102通信是正常的吗 比如stm32的spi发送数据是否准确(例如用示波器测量波形或能成功控制其他设备)速率是不是在ad9102的允许范围内
然后再看它和ad9102连接是否正确 通信是否正常(比如写的寄存器再度出来是否正确)
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

43
 
littleshrimp 发表于 2019-4-4 07:34 你现在能确定stm32和ad9102通信是正常的吗 比如stm32的spi发送数据是否准确(例如用示波器测量波形或能成 ...

您好,看了您这篇关于AD9102应用的帖子。我现在也在调试这个片子,目前SPI读写正常,SRAM写入读出也正常,预存波形输出正常,但是没法输出SRAM里面设定的波形。求助一下大神, 能不能帮忙看看问题在哪。我的QQ:344135324(CC)。感激不尽。代码如下。

 

/**************************************/

#define SRAM_START_ADDRESS    0x000
#define SRAM_STOP_ADDRESS     0xF9f //4000 samples

/************AD9102 Reg****************/
#define AD9102_SPICONFIG      0x0000
#define AD9102_POWERCONFIG    0x0001
#define AD9102_CLOCKCONFIG    0x0002
#define AD9102_REFADJ         0x0003
#define AD9102_DACAGAIN       0x0007
#define AD9102_DACRANGE       0x0008
#define AD9102_DACRSET        0x000C
#define AD9102_CALCONFIG      0x000D
#define AD9102_COMPOFFSET     0x000E

#define AD9102_RAMUPDATE      0x001D
#define UPDATE                0x01

#define AD9102_PAT_STATUS     0x001E
#define BUF_READ              (0x01<<3)+(0x01<<2)
#define MEM_ACCESS            (0x01<<2)
#define RUN                   (0x01)        
                
#define AD9102_PAT_TYPE       0x001F
#define AD9102_PATTERN_DLY    0x0020
#define AD9102_DACDOF         0x0025
#define AD9102_WAV_CONFIG     0x0027

#define AD9102_PAT_TIMEBASE   0x0028
#define AD9102_PAT_PERIOD     0x0029//0x3F=63-->about 62.5KHz

#define AD9102_DAC_PAT        0x002B
#define AD9102_DOUT_START     0x002C
#define AD9102_DOUT_CONFIG    0x002D
#define AD9102_DAC_CST        0x0031

#define AD9102_DAC_DGAIN      0x0035//0x4000

#define AD9102_SAW_CONFIG     0x0037
#define AD9102_DDS_TW32       0x003E
#define AD9102_DDS_TW1        0x003F
#define AD9102_DDS_PW         0x0043
#define AD9102_TRIG_TW_SEL    0x0044
#define AD9102_DDS_CONFIG     0x0045
#define AD9102_TW_RAM_CONFIG  0x0047

#define AD9102_START_DELAY    0x005C
#define AD9102_START_ADDR     0x005D
#define AD9102_STOP_ADDR      0x005E 

#define AD9102_DDS_CYC        0x005F
#define AD9102_CFG_ERROR      0x0060
#define AD9102_SRAM_DATA      0x6000
/**************************************/

 

void Ad9102_Init2(void)
{
    uint32_t i = 0;
    uint32_t ui_AD9102SramAddr = 0;
    int16_t data;
    
    Soft_Spi_Init();
    Gpio_Output_Pp_Init(TRIGGER,GPIO_PIN_SET);
    Gpio_Output_Pp_Init(NRESET,GPIO_PIN_RESET);
    delay_ms(5);
    Gpio_Set(NRESET);
    delay_ms(1);

    Ad9102_Write(AD9102_PAT_STATUS,MEM_ACCESS);
    for(i = 0; i < 4000; i++)
    {
            ui_AD9102SramAddr = AD9102_SRAM_DATA+(i<<0);
            Ad9102_Write(ui_AD9102SramAddr,AD9102SRAM<<2);                
    }
    delay_ms(5);
    Ad9102_Write(AD9102_PAT_STATUS,BUF_READ);
    for(i = 0; i < 4000; i++)
    {
            ui_AD9102SramAddr = AD9102_SRAM_DATA+(i<<0);
            data = Ad9102_Read(ui_AD9102SramAddr);     
            printf("\r\n data[%d] = %d",i,data>>2);
    }

    //Step2:Set AD9102 Register
    Ad9102_Write(AD9102_PAT_PERIOD,0x003f);        
    Ad9102_Write(AD9102_PAT_TYPE,0x0000);//以连续模式运行
    Ad9102_Write(AD9102_DACRSET,0x9f1F);   
    Ad9102_Write(AD9102_WAV_CONFIG,0x0030); 
//    Ad9102_Write(AD9102_SAW_CONFIG,0x00FC); //锯齿波配置寄存器..
    Ad9102_Write(AD9102_DAC_DGAIN,0x4000);  //DAC数字增益   
    Ad9102_Write(AD9102_DDS_TW32,0x006C);   //..
    Ad9102_Write(AD9102_DDS_TW1,0xE600);    //..
    Ad9102_Write(AD9102_START_DELAY,0);
    Ad9102_Write(AD9102_START_ADDR,SRAM_START_ADDRESS); 
    Ad9102_Write(AD9102_STOP_ADDR,(SRAM_STOP_ADDRESS << 4));
    Ad9102_Write(AD9102_PAT_STATUS,RUN);

    Ad9102_Write(AD9102_RAMUPDATE,UPDATE);
    delay_ms(10);
    
    data = Ad9102_Read(AD9102_PAT_TYPE);
    printf("\r\n AD9102_PAT_TYPE:0x%4.4x",data);
    data = Ad9102_Read(AD9102_DACRSET);
    printf("\r\n AD9102_DACRSET:0x%4.4x",data);
    data = Ad9102_Read(AD9102_WAV_CONFIG);
    printf("\r\n AD9102_WAV_CONFIG:0x%4.4x",data); 
    data = Ad9102_Read(AD9102_SAW_CONFIG); //锯齿波配置寄存器
    printf("\r\n AD9102_SAW_CONFIG:0x%4.4x",data);
    data = Ad9102_Read(AD9102_DAC_DGAIN);  //
    printf("\r\n AD9102_DAC_DGAIN:0x%4.4x",data);
    data = Ad9102_Read(AD9102_DDS_TW32);   //
    printf("\r\n AD9102_DDS_TW32:0x%4.4x",data);
    data = Ad9102_Read(AD9102_DDS_TW1);    //
    printf("\r\n AD9102_DDS_TW1:0x%4.4x",data);
    data = Ad9102_Read(AD9102_PAT_STATUS); //
    printf("\r\n AD9102_PAT_STATUS:0x%4.4x",data);
    data = Ad9102_Read(AD9102_RAMUPDATE);  //
    printf("\r\n AD9102_RAMUPDATE:0x%4.4x",data);
    data = Ad9102_Read(AD9102_CFG_ERROR);  //
    printf("\r\n AD9102_CFG_ERROR:0x%4.4x",data);

    
    Gpio_Reset(TRIGGER);
    delay_ms(10);
    Ad9102_Write(AD9102_RAMUPDATE,UPDATE);   
    Ad9102_Write(AD9102_DACRSET,0x9f1F); 

    

}

 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(中级)

44
 

虾哥,我用了ad9106+ADA4817,但一上电ADA4817就发热严重,原理和你画的这个一样,想知道有啥解决办法没有?望回复,谢谢

点评

我最开始的原理图画错了,少画了R93,R94导致不输出,帖子后边也提到了。不过没觉得放大器发热异常,你分步检查一下看看,比如供电电压电流这些,如果方便只焊接放大器试试。  详情 回复 发表于 2022-3-4 15:59
 
 
 

回复

9792

帖子

24

TA的资源

版主

45
 
dfghzhou 发表于 2022-3-4 14:08 虾哥,我用了ad9106+ADA4817,但一上电ADA4817就发热严重,原理和你画的这个一样,想知道有啥解决办法没有 ...

我最开始的原理图画错了,少画了R93,R94导致不输出,帖子后边也提到了。不过没觉得放大器发热异常,你分步检查一下看看,比如供电电压电流这些,如果方便只焊接放大器试试。

 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

46
 

只需要输出一个正弦波形 是不是只用写DDS的频率那两个寄存器就行了

点评

时间太长记不清了 应该就是配置一次寄存器  详情 回复 发表于 2022-4-18 18:43
 
 
 

回复

9792

帖子

24

TA的资源

版主

47
 
HAM.18 发表于 2022-4-18 17:43 只需要输出一个正弦波形 是不是只用写DDS的频率那两个寄存器就行了

时间太长记不清了 应该就是配置一次寄存器

 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

48
 
tan90-_- 发表于 2019-4-3 19:58 修改也就是对于SPI引脚的操作相应的修改吧,那些我都修改过并测试过了,但是还是无法初始化成功,不知道为 ...

您好!我也遇到了同样的问题,数据写不进芯片里面。请问您解决了吗?

 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

49
 

学习了,谢谢楼主分享

 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

50
 

虾哥 你好  我现在有个项目也想用AD9106,想问一下这个芯片是不是可以输出任意幅度和占空比的方波和任意幅度的正弦波


点评

基本上可以这么说,DDS是电流输出,电压最大幅度由放大器决定,方波的占空比由DDS的最大频率决定。  详情 回复 发表于 2023-4-21 13:54
 
 
 

回复

9792

帖子

24

TA的资源

版主

51
 
hututhree 发表于 2023-4-21 13:43 虾哥 你好  我现在有个项目也想用AD9106,想问一下这个芯片是不是可以输出任意幅度和占空比 ...

基本上可以这么说,DDS是电流输出,电压最大幅度由放大器决定,方波的占空比由DDS的最大频率决定。

个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

52
 
littleshrimp 发表于 2023-4-21 13:54 基本上可以这么说,DDS是电流输出,电压最大幅度由放大器决定,方波的占空比由DDS的最大频率决定。

了解 那调幅只能增加电路实现了,占空比这块还想再确定下  比如我输出 固定频率1M,我想占空比现0~100可调,或者不用这么宽也可以只能能实现可调就行,这个芯片有这个功能吗(我只要用AD9106)


点评

PWM用普通单片机实现起来比较方便,如果非要用这个芯片也需要外部电路,比如比较器,要使用SRAM,把对应的频率和占空比计算好生成对应的数据写到SRAM里输出应该就可以。  详情 回复 发表于 2023-4-21 18:01
 
 
 

回复

9792

帖子

24

TA的资源

版主

53
 
hututhree 发表于 2023-4-21 14:56 了解 那调幅只能增加电路实现了,占空比这块还想再确定下  比如我输出 固定频率1M, ...

PWM用普通单片机实现起来比较方便,如果非要用这个芯片也需要外部电路,比如比较器,要使用SRAM,把对应的频率和占空比计算好生成对应的数据写到SRAM里输出应该就可以。


 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表