您好!
我们将 LMK04828与 ZCU102参考板相连。 设置 SPI 模式0 (CPOL=0、CPHA=0)。
我们使用3线制模式、CS#、SCLK 和 SDIO 引脚使用示波器探测并获得正确的波形。
例如、LMK04828的24位命令到达引脚。 但未接收到 LMK04828的响应。
我们在 LDObyp1~2.5V、LDObyp2~1.5V 以及 OSCin 和 CLKIN~1.6V 处测量了电压。
请在此处帮助我们。
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.
您好!
我们将 LMK04828与 ZCU102参考板相连。 设置 SPI 模式0 (CPOL=0、CPHA=0)。
我们使用3线制模式、CS#、SCLK 和 SDIO 引脚使用示波器探测并获得正确的波形。
例如、LMK04828的24位命令到达引脚。 但未接收到 LMK04828的响应。
我们在 LDObyp1~2.5V、LDObyp2~1.5V 以及 OSCin 和 CLKIN~1.6V 处测量了电压。
请在此处帮助我们。
您好、Nikhil、
您是否有可能使复位引脚5保持高电平?
请参阅回读引脚上随附的文件。 请注意、在 POR 上、通过开漏输出启用3线 SPI 读回模式。
73、
Timothy
您好、Timothy、
非常感谢您的回答以及本文档。
RESET (引脚5)被下拉并正确探测为低电平。
我们将 ZCU102板的 EMIO 引脚用于 SPI 编程、请在下面找到我们的编程序列。 请核实并提供您宝贵的意见:
#include
#include
#include
#include
#include
#include
#include
#define RESET_CMD 0x000080
#define NORMAL 0x000010
#define DCKOD 0x010010
#define DCKOB 0x010302
#define DCKFMT 0x010701
#define VCOMX 0x013800
#define FIXED1 0x01457F
#define CLKINEN 0x01461A
#define CLKINS 0x01471A
#define CLKINS1 0x014802
#define CLKINS2 0x014942
#define PLL1N1 0x01533D
#define PLL1N2 0x015409
#define PLL1CP 0x015BDF
#define PLL2R1 0x016000
#define PLL2R2 0x016102
#define PLL2PRE 0x016269
#define FIXED2 0x0171AA
#define FIXED3 0x017202
#define FIXED4 0x017C15
#define FIXED5 0x017D33
#define PLL2N1 0x016600
#define PLL2N2 0x016700
#define PLL2N3 0x01680B
#define PLL2CP 0x016959
#define LP2R4R3 0x016C00
#define LP2C4C3 0x016D00
int load_config (unsigned int cmd、int FD)
{
内转台;
uint8_t RecvBuf;
RET =写入(fd、&cmd、6);
如果(RET < 0)
{
printf ("写入数据时出错\n");
退出(0);
}
/*ret =读取(fd、&RecvBuf、3);
if (ret < 0)
{
printf ("读取数据时出错\n");
EXIT (0);
}
printf ("接收到的值:%d\n"、RecvBuf);
返回 RecvBuf;*/
返回0;
}
int readback (unsigned int cmd、int FD)
{
内转台;
uint8_t RecvBuf;
RET =写入(fd、&cmd、2);
如果(RET < 0)
{
printf ("写入数据时出错\n");
退出(0);
}
RET =读取(FD、&RecvBuf、1);
if (ret < 0)
{
printf ("读取数据时出错\n");
EXIT (0);
}
printf ("接收到的值:%x\n"、RecvBuf);
//返回 RecvBuf;
返回0;
}
int main (int argc、char ** argv)
{
printf ("Hello World!\n");
int stop=0;
内部 FD、RET;
int FCH=1;
FD =开路("/dev/spidev1.0、O_RDWR);
如果(FD < 0)
{
printf ("打开节点时出错\n");
退出(0);
}
其他
{
操作
{
printf ("指定输出频率:(1->161Mhz 2->156Mhz 3->195MHz 4->257MHz 5->回读6->Stop 7->Iverase 回读:\n"\});
scanf("%d",&FCH);
switch (FCH){
案例1:
printf ("输出频率:161.1328125Mhz);
load_config (reset_CMD、FD);
load_config (正常、FD);
load_config (DCKOD、FD);
load_config (DCKOB、FD);
load_config (DCKFMT、FD);
load_config (VCOMX、FD);
load_config (FIXED1、FD);
LOAD_CONFIG (0x014A33、FD);
load_config (CLKINEN、FD);
load_config (CLKINS、FD);
load_config (CLKINS1、FD);
load_config (CLKINS2、FD);
load_config (PLL1N1、FD);
LOAD_CONFIG (PLL1N2、FD);
load_config (PLL1CP、FD);
load_config (PLL2R1、FD);
load_config (PLL2R2、FD);
load_config (PLL2PRE、FD);
load_config (FIXED2、FD);
load_config (FIXED3、FD);
load_config (FIXED4、FD);
load_config (FIXED5、FD);
load_config (PLL2N1、FD);
load_config (PLL2N2、FD);
load_config (PLL2N3、FD);
load_config (PLL2CP、FD);
LOAD_CONFIG (LP2R4R3、FD);
LOAD_CONFIG (LP2C4C3、FD);
printf ("写入完成\n");
中断;
案例2:
printf ("输出频率:156.25Mhz);
中断;
案例3:
printf ("输出频率:195.3125Mhz);
中断;
案例4:
printf ("输出频率:257.8125Mhz);
中断;
情况5:
printf ("Readback \n");
load_config (0x000080、FD);
load_config (0x000010、FD);
LOAD_CONFIG (0x01457F、FD);
LOAD_CONFIG (0x014A33、FD);
load_config (0x0171AA、FD);
load_config (0x017202、FD);
load_config (0x017C15、FD);
load_config (0x017D33、FD);
load_config (0x014833、FD);
LOAD_CONFIG (0x014973、FD);
LOAD_CONFIG (0x015F3B、FD);
LOAD_CONFIG (0x016E3B、FD);
回读(0x8003、FD);
中断;
案例7:
load_config (0x800000、FD);
load_config (0x100000、FD);
LOAD_CONFIG (0x7F4501、FD);
load_config (0x334A01、FD);
load_config (0xAA7110、FD);
LOAD_CONFIG (0x027201、FD);
load_config (0x157C01、FD);
load_config (0x337D01、FD);
LOAD_CONFIG (0x334801、FD);
LOAD_CONFIG (0x734901、FD);
load_config (0x3B5F01、FD);
load_config (0x3B6E01、FD);
回读(0x0380、FD);
中断;
案例6:
STOP=1;
中断;
默认值:
printf ("选择有效的选项\n");
}
}while (stop=0);
}
返回0;
}
您好、Nikhil、
在您的寄存器中、通过0x16249、您正在对 PLL2_REF2X_EN = 1进行编程、您的 PLL2_R =/2且 PLL2_N =/16、这会导致 VCO 频率为5000MHz、您需要2500MHz、我建议您关闭倍频器(0x162 - 大于48)以获得78.125MHz 相位检测器频率。
此外、如数据表第49页上的9.5.1所示。
程序0x000 -> 0x80
此外、在0x166之前添加寄存器:
0x145 -> 0x7f
0x171 -> 0xAA
0x172 -> 0x02
0x17c -> 0x15
0x17d -> 0x33
此外、您的 PLL1 R 分频器(CLKin1_R)为3072。 频率为30.72MHz。 这会导致极低的 PLL1相位检测器频率。 我建议增大 PLL1电荷泵(就像 CDT 仿真中的情况)、用0x15b -> 0xdf 设置1550 uA。
只需确认您确实有一个3.3V 直流耦合 CMOS 信号进入 CLKin1、否则我建议使用 CLKin1_TYPE =双极。
73、
Timothy
您好、Nikhil、
您是否会看到频率在10kHz 速率下发生轻微偏移? 10kHz 的相位检测器较低、因此如果您使用的 VCXO 有一些泄漏、则可能会导致频率在电荷泵下次开启之前稍微漂移、从而校正频率。 这也会被视为10kHz 杂散。 尽管窄环路带宽会导致该杂散衰减。
您可以尝试以下操作:
73、
Timothy