OpenEdv-开源电子网

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

stm32控制AD9854问题

[复制链接]

11

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2013-3-6
在线时间
0 小时
发表于 2013-9-4 22:43:18 | 显示全部楼层 |阅读模式
原子哥,我用的是您的程序,驱动9854为什么不行呢?两个正弦信号均没有输出。板子是现成的模块,接线地址口A5-A0接PC13-PC8,数据口D7-D0接PC7-PC0,RDB接PB13。
IO-Updata接PB15,WRB接PB14,MASTER RESET接PB12。
#define AD9854_DATA  GPIOC->ODR
#define AD9854_ADDR  GPIOC->ODR
#define ad9854_reset  Bout(12)
#define ad9854_rd     PBout(13)
#define ad9854_wr     PBout(14)
#define ad9854_updata PBout(15)

unsigned char ControlRegister[]={0x14,0x4f,0x00,0x60};   //AD9852控制寄存器初始值,Mode 0
unsigned char FTW[]={0x00,0x00,0x37,0xec};               //Frequency Tuning Word 1 倍频300MHz后输出频率对应的FTW值
unsigned char PAR[]={0x00,0x00};                         //Phase Adjust Register 1
unsigned char OSK[]={0x0a,0xff};                         //Output shaped keying multiplier,  650mv

void single_wave(unsigned long int fre);
void Init_AD9854(void);
void AD9854_Set_Mode0(void);
void AD9852_Send(unsigned char addr,unsigned char data);
void change_frequency(unsigned long int fre_temp);

void Init_Port(void);

int main( void )
{
Stm32_Clock_Init(9); // 9倍频
delay_init(72); // 72M晶振时延时
delay_ms(200);

Init_Port();
Init_AD9854();

single_wave(1000000);  
while(1);
}

 
void Init_Port(void)
{
RCC->APB2ENR |= 1<<3 ;
GPIOB->CRH &= 0x0000ffff ; //通用推挽输出模式PB15-12
GPIOB->CRH |= 0x33330000 ;
GPIOB->ODR |= 0xf000 ;

RCC->APB2ENR |= 1<<4 ;
GPIOC->CRL &= 0x00000000 ;  //通用推挽输出
GPIOC->CRL |= 0x33333333 ;
GPIOC->CRH &= 0x00000000 ;
GPIOC->CRH |= 0x33333333 ;
GPIOC->ODR |= 0xffff ;
}


void AD9852_Send(unsigned char addr,unsigned char data)   //按照并行输入时序
{
ad9854_wr = 1; // AD9854_WR_SET; 
                         
AD9854_ADDR &= 0x00ff|addr<<8;
AD9854_ADDR |= 0xff00&addr<<8;

ad9854_wr = 1; // AD9854_WR_SET; 

AD9854_DATA &= 0xff00|data;
AD9854_DATA |= 0x00ff&data;

ad9854_wr = 0; // AD9854_WR_CLR;
ad9854_wr = 1; // AD9854_WR_SET;
ad9854_updata = 1; // AD9854_UPDATA_SET;
ad9854_updata = 0; // AD9854_UPDATA_CLR;
}

void Init_AD9854(void)
{
unsigned char addr;
unsigned char i;
         
ad9854_reset = 0 ; // AD9854_RESET_CLR;
ad9854_wr = 1 ; // AD9854_WR_SET;
ad9854_rd = 0 ; // AD9854_RD_CLR;
ad9854_updata = 0 ; // AD9854_UPDATA_CLR;
  
addr = 0x1d;

for(i=4;i>0;i--)
{
AD9852_Send(addr,ControlRegister[4-i]); //控制寄存器模式0
addr++;
}
}

void AD9854_Set_Mode0(void)                   //Mode 0 设置
{
unsigned char addr;
unsigned char counter;
 
for(addr=0x00,counter=2;counter>0;counter--) //设置Phase Adjust Register 1
{
AD9852_Send(addr,PAR[2-counter]);
addr++;
}
  
for(addr=0x04,counter=4;counter>0;counter--) //设置Frequency Tuning Word 1
{
AD9852_Send(addr,FTW[4-counter]);
addr++;
}
  
for(addr=0x21,counter=2;counter>0;counter--) //设置Output shaped keying multiplier
{
AD9852_Send(addr,OSK[2-counter]);
addr++;
}

void single_wave(unsigned long int fre)
{
unsigned char addr,i;
unsigned long int ff;
unsigned char *p;

ff=(unsigned long int)(4294967296*fre/300000000);
  
p=(unsigned char*)&ff;
  
for(addr=0x04,i=0;i<4;i++)                  //设置Frequency Tuning Word 1
{
AD9852_Send(addr,*(p+3-i));       
addr++;
}
  
for(addr=0x00,i=0;i<2;i++)                  //设置Phase Adjust Register 1
{
AD9852_Send(addr,PAR);
addr++;
}
  
for(addr=0x21,i=2;i>0;i--)                  //设置Output shaped keying multiplier
{
AD9852_Send(addr,OSK[2-i]);
addr++;
}

void change_frequency(unsigned long int fre_temp)
{
unsigned char addr,counter;
unsigned char *p;
p=(unsigned char*)&fre_temp;
  
for(addr=0x04,counter=0;counter<4;counter++) //设置Frequency Tuning Word 1
{
AD9852_Send(addr,*(p+3-counter));       
addr++;
}
}

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-9-4 22:55:49 | 显示全部楼层
用的是mini板么?
看IO口配置,没问题哦。查查是不是电路连接的问题?另外,AD9854,有没有读ID之类的操作?有的话试一下读ID。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2013-3-6
在线时间
0 小时
 楼主| 发表于 2013-9-4 23:02:26 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
管脚接线都正确吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-9-4 23:11:02 | 显示全部楼层
这不是你自己接线的么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2013-3-6
在线时间
0 小时
 楼主| 发表于 2013-9-4 23:27:40 | 显示全部楼层
原子哥,为什么主程序没有AD9854_Set_Mode0呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-9-5 09:50:11 | 显示全部楼层
回复【5楼】1037723204:
---------------------------------
这程序不是你写的么?
AD9854我没用过啊,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2014-7-17
在线时间
0 小时
发表于 2014-7-18 09:57:44 | 显示全部楼层
请问你用的是那个后缀的AD9854呢,我现在在做这题,纠结买那个后缀的芯片
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2014-2-15
在线时间
2 小时
发表于 2014-7-26 01:54:26 | 显示全部楼层
回复【7楼】小生QQB:
---------------------------------
选择ASQ的,可有300M的倍频时钟
回复 支持 反对

使用道具 举报

38

主题

131

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2013-7-15
在线时间
0 小时
发表于 2014-8-5 17:25:56 | 显示全部楼层
回复【8楼】wanyyxum:
---------------------------------
请问你有STM32 的AD9854 程序吗?调了几天了都有问题,频率不能上200M,数据传送也有问题
回复 支持 反对

使用道具 举报

38

主题

131

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2013-7-15
在线时间
0 小时
发表于 2014-8-5 17:26:43 | 显示全部楼层
楼主有AD9854 STM32 的程序吗,可否给我一份
回复 支持 反对

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2015-7-11
在线时间
0 小时
发表于 2015-7-17 20:39:17 | 显示全部楼层
我最近也是用这个程序,很笨出不了波形呀,用的模块有问题,,自己做的板子倒是能出波形,就是有些不稳定
回复 支持 反对

使用道具 举报

2

主题

33

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2016-4-14
在线时间
10 小时
发表于 2016-4-16 11:23:53 | 显示全部楼层
TDB 发表于 2014-8-5 17:25
回复【8楼】wanyyxum:
---------------------------------
请问你有STM32&nbsp;的AD9854&nbsp;程序吗?调了 ...

楼主调出来了?
回复 支持 反对

使用道具 举报

todou2015 该用户已被删除
发表于 2017-5-11 17:03:27 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-7-13
在线时间
3 小时
发表于 2019-7-13 18:16:48 | 显示全部楼层
我也是用了这个驱动程序,也是出不来,然后查了一些资料说是:一个是电源供电电流要大于1A,然后我是用开关电源供电的,他的峰值电流已经调到10A了,但是我接进电路电源显示只有0.几A,不知道这个问题有没有排除,还有一个是引脚SP还要接高电平,选择并行模式,然后这个AD9854初始化的那个时序也好像不对,最后AVDD和DVDD不知道要不要分开供电,总之很混乱
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2019-7-21
在线时间
3 小时
发表于 2019-7-26 16:47:04 | 显示全部楼层
请问楼主,问题解决了没,我用f4的板子,现成的模块,也是没有波形出来,不知道是怎么回事
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-6 21:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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