您好,我在使用LMX2820即时校准时发现,有时候最后facl_en=0时,器件又变会失锁,无法发出频率,我想问问,在不掉电情况,鉴相频不变的情况下,哪些因素会导致锁定后失锁???
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,
感谢您对TI产品的关注!为更加有效地解决您的问题,我已将您的问题发布在E2E英文技术论坛上,请更了解这款芯片的TI资深工程师为您解答,一旦得到回复后我会立即回复给您。帖子链接如下,您也可以关注帖子,以方便查看或追问后续疑问。
0x7A0000,0x790000,0x780000,0x770000,0x760000,0x750000,0x740000,0x730000,0x720000,0x710000,
0x70FFFF,0x6F0000,0x6E001F,0x6D0000,0x6C0000,0x6B0000,0x6A0000,0x69000A,0x680014,0x670014,
0x660028,0x6503E8,0x640533,0x6319B9,0x621C80,0x610000,0x6017F8,0x5F0000,0x5E0000,0x5D1000,
0x5C0000,0x5B0000,0x5A0000,0x590000,0x5803FF,0x57FF00,0x560040,0x550000,0x540040,0x530F00,
0x520000,0x510000,0x5001C0,0x4F0118,0x4E0000,0x4D0608,0x4C0000,0x4B0000,0x4A0000,0x490000,
0x480000,0x470000,0x46000E,0x450011,0x440020,0x431000,0x42003F,0x410000,0x400080,0x3FC350,
0x3E0000,0x3D03E8,0x3C01F4,0x3B1388,0x3A0000,0x390001,0x380001,0x370002,0x360000,0x350000,
0x340000,0x33203F,0x320080,0x310000,0x304180,0x2F0300,0x2E0300,0x2D0000,0x2C0000,0x2B0000,
0x2A0000,0x290000,0x280000,0x2703E8,0x260000,0x250500,0x240030,0x233100,0x220010,0x210000,
0x201081,0x1F0401,0x1EB18C,0x1D318C,0x1C0639,0x1B8001,0x1A0DB0,0x190624,0x180E34,0x171102,
0x16E2BF,0x151C64,0x14272C,0x132138,0x120000,0x1115C0,0x1017E,0x0F2001,0x0E3001,0x0D0038,
0x0C0408,0x0B0602,0x0A0000,0x090005,0x08C802,0x070000,0x060a43,0x050032,0x044204,0x030041,
0x0283E8,0x0157A1,0x004430,数组配置
uint8_t LMX2820_Vco_InstCal(double Cal_freq)
{
uint8_t cnt;
static uint8_t CalCnt;
uint16_t ReturnValue;
uint8_t ReVal_Chan_Fre;
double T;
uint32_t Instcal_Dly;//瞬时校准的时间
uint32_t LmxRtemp;//寄存器中转值;
uint32_t LmxR2=0,LmxR1=0,LmxR0=0;
LMX2820_OutPuT_Set(Cal_freq);
T=2.5*CBIASVCO/4.7;
if(CAL_CLK_DIV!=0) Instcal_Dly=T*FOSCIN/(2<<CAL_CLK_DIV);
else Instcal_Dly=T*FOSCIN;
//1.设置即时校准时间 寄存器R2
LmxR2|=(0x02<<16)&(0x00ffffff);
LmxR2|=(0x01<<15);
LmxR2|=(CAL_CLK_DIV<<12);
LmxR2|=(Instcal_Dly<<1);
LmxR2|=(Quick_Recal_En);//快速重校准
SpiWriteRegisterByte(LmxR2);
//2.打开即时校准 寄存器R1
LmxR1|=(0x01<<16)&(0x00ffffff);
LmxR1|=(Phase_Sync_En<<15);//不打开相位同步
LmxR1|=(0x15E<<6); //保留位
LmxR1|=(LD_Vtune_En<<5); //打开即时校准 寄存器R1
LmxR1|=(0x00<<2); //保留位
LmxR1|=(Instcal_Dblr_En<<1);//vco double使能时 INSTCAL_DBLR_EN也要使能
LmxR1|=(Instcal_En);//即时校准使能
SpiWriteRegisterByte(LmxR1);
//3.设置频率
ReVal_Chan_Fre=LMX2820_Pllassign_freq(Cal_freq);
//4.写入INSTCAL_PLL_NUM
N_Fraction=((double)Pll_Num)/((double)Pll_Den);
Instacl_Pll_Num=(0x100000000)*N_Fraction;
Instacl_Pll_Num_Lsb=(0x2d<<16)|(Instacl_Pll_Num&0x0000ffff);
Instacl_Pll_Num_Msb=(0x2c<<16)|((Instacl_Pll_Num>>16)&0x0000ffff);
// SpiWriteRegisterByte(0X4F011E);
// SpiWriteRegisterByte(0X4E0000);
// SpiWriteRegisterByte(0X4600FE);
SpiWriteRegisterByte(Instacl_Pll_Num_Lsb);
SpiWriteRegisterByte(Instacl_Pll_Num_Msb);
LMX2820_Freq_Out(Cal_freq);//配置 2b 2a 27 26 24 20 寄存器
//FCAL_EN=0,写入r0生效校准
LmxR0|=(0x00<<16)&(0x00ffffff);
LmxR0|=(1<<14);
LmxR0|=(INSTCAL_SKIP_ACAL<<13);
LmxR0|=(0x00<<11);
LmxR0|=(FCAL_HPFD_ADJ<<9);
LmxR0|=(FCAL_LPFD_ADJ<<7);
LmxR0|=(Dblr_Cal_En<<6);
LmxR0|=(1<<5);
LmxR0&=~((uint32_t)Fcal_En<<4);
LmxR0|=(0x00<<2);
LmxR0|=(Chip_Reset<<1);
LmxR0|=(Chip_PowerDown);
SpiWriteRegisterByte(LmxR0); //LMXR0 =0X004420
//FCAL_EN=1,写入r0锁定
LmxR0|=((uint32_t)Fcal_En<<4);
SpiWriteRegisterByte(LmxR0); //LMXR0 =0X004430
while(((SpiReadRegisterByte(0x4a)&(0xc000))>>14)!=2)
{
SpiWriteRegisterByte(Instacl_Pll_Num_Lsb);
SpiWriteRegisterByte(Instacl_Pll_Num_Msb);
LMX2820_Freq_Out(Cal_freq);//配置 2b 2a 27 26 24 20 寄存器
SpiWriteRegisterByte(LmxR2);
SpiWriteRegisterByte(LmxR1);
SpiWriteRegisterByte(LmxR0);
delay_ms(1);//每次检测前需要有个锁定时间延时 根据手册最少1ms
}
LmxR0&=~((uint32_t)Fcal_En<<4);
SpiWriteRegisterByte(LmxR0); //LMXR0 =0X004430
delay_us(50);
}
配置即时校准
这个有些频率就可以出来,有些就出不来