ADI 技术
直播中

郭燕

7年用户 270经验值
私信 关注
[问答]

ADRF6602编程中管脚2DECL3P3上的3.3V电压消失了

您好:我在初始化ADRF6602的时候发现单步执行的时候,当执行到
ADRF6601_reg_write(CP_ENABLE | LDO_3V3_ENABLE | VCO_LDO_ENABLE | VCO_ENABLE | VCO_SWITCH_REGULAR | VCO_AMPLITUDE(63) | VCO_BW_SW_SOURCE_CONTROL_BAND | VCO_BAND_SELECT_FROM_SPI(32),VCO_CONTROL_AND_VCO_ENABLE);的时候,管脚2DECL3P3上出现了3.3V的电压。
但是我继续往下执行时,当执行完
ADRF6601_reg_write(DITHER_MAGNITUDE_1 | DITHER_ENABLE | DITHER_RESTART_VALUE(1),MODULATOR_DITHER_CONTROL);的时候,管脚2DECL3P3上的3.3V电压消失了。
我感觉像是我能写进东西到寄存器里,但是写的数据不对。另外MUX_OUT引脚上始终测不到波形。
我怀疑是我的时序不对,但是我和IC资料的时序对了很多遍都找不出问题在哪?
附件中是我用示波器抓的CLK、DATA、LE的关系图。

这是CLK和LE的关系图,上边是CLK的波形,下面是LE的波形。




这是CLK和DATA的关系图,上边是CLK的波形,下面是DATA的波形。我做了个循环,不断的写入0xaaaaaa.

下面是我用IO口模拟SPI的程序代码

void ADRF6602_reg_write(unsigned long reg_value, unsigned char reg_address)
{
    unsigned char i;
reg_value = reg_value | reg_address;     //combine a 24 bit date
ADRF6602_LE_H;                    //  CS_#     : 1
delay_nus(3);
ADRF6602_CLK_L;
ADRF6602_LE_L;                    //  CS_#     : 0
for(i=0;i<24;i++)
    {
     
     if(reg_value&0x800000)
       ADRF6602_DATA_H;  
     else
       ADRF6602_DATA_L;
     reg_value<<=1;
     ADRF6602_CLK_H;  
  delay_nus(3);
  ADRF6602_CLK_L;
    }
delay_nus(3);
ADRF6602_LE_H;                    //  CS_#     : 1
delay_nus(3);
ADRF6602_LE_L;                    //  CS_#     : 0

}

请帮忙看看时序上有没有问题?我实在是找不出问题出在哪了。


谢谢

附件

回帖(5)

张虎豹

2018-11-7 09:36:36
您好,您的问题已经提交给ADI相关专家,将邀请专家尽快回答您的问题。谢谢!
举报

周伟

2018-11-7 09:51:11
您好!
大致看了您的时序信号,看LE有两个脉冲。
LE应为一个脉冲信号,脉宽为t7。在起始时,LE下降沿与第一个CLK上升沿间隔为t1;最后一个CLK下降沿与LE上升沿间隔为t6。数据手册图2中LE只是为了表明t1,t6,t7的时间和位置。但LE实际只有一个。
举报

郭燕

2018-11-7 09:56:52
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

张虎豹

2018-11-7 10:10:24
引用: jackyzhangjian 发表于 2018-11-7 16:52
您好:
       按照您的建议我修改了程序代码。问题依然存在。请帮我看一下我时序上还有需要修改的地方吗?
下面是我修改后用示波器抓到的波形图:

您好,您的问题已经提交给ADI相关专家,将邀请专家尽快回答您的问题。谢谢!
举报

更多回帖

×
20
完善资料,
赚取积分