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.

[参考译文] LMK04616:SYSREF SPI 触发器问题

Guru**** 2511415 points
Other Parts Discussed in Thread: LMK04616, LMK04828

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/730208/lmk04616-sysref-spi-trigger-problem

器件型号:LMK04616
主题中讨论的其他器件: LMK04828

大家好、

使用 LMK04616时、我需要使用 SPI 触发器发出 SYSREF、但通常在触发后不会生成 SYSREF 信号。  

下面是执行的序列、在该序列之后、我们触发写入0x14 = 10的 SYSREF。

0x140 = 0x1
0x14E = 0x0
0x128 = 0x25
0x129 = 0x25
0x14 = 0x01
0x14 = 0x00
0x128 = 0x5
0x129 = 0x5
0x14E = 0x6
0x14 = 0x10

有人有什么想法 吗?
Maxx

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否共享您的 TICS Pro 配置文件(SYSREF 编程前的初始化设置)、原理图和 VCXO 规格、以便查看这些规格?

    Alan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Maxx:

    此问题可能是由0x14设置引起的。

    请参阅以下示例。


    此致,

    肖恩

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、在"附加配置文件"中、"init"、"SYSREF"和"TRIGG"。

    PS:如果我强制连续模式、则输出正确

    Maxx

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 77

    Mnt_PLL_IO_init ();

    Wait_us (5);

    // 9.5编程
    //使用24位寄存器对 LMK0461x 器件进行编程。
    //每个寄存器包含一个1位命令字段(R/W)、一个15位地址字段(A14至 A0)
    //和一个8位数据字段(D7到 D0)。
    //每个寄存器的内容首先以 MSB (R/W)为单位计时、最后以 LSB (D0)为单位计时。
    //编程期间,CS*信号保持低电平。
    //串行数据在 SCK 信号的上升沿计时。
    // LSB 随时钟移入后,CS*信号变为高电平,以将内容锁存到移位寄存器中。
    // TI 建议按数字顺序对寄存器进行编程,例如0x000到0x1FFF --
    //以实现正确的器件运行。
    //每个寄存器包含一个或多个控制器件功能的字段。
    //请参阅电气特性和图1以了解时序详细信息。
    // R/W 位= 0用于 SPI 写入。 R/W 位= 1表示 SPI 读取。

    // 9.5.1建议的编程顺序
    // POR 的默认编程序列包括:
    // 1. 切换 RESETn 引脚高电平-低电平-高电平
    Mnt_pll_rst_out ();
    Wait_us (50);
    mnt_pll_rst_in ();
    Wait_us (50);
    Mnt_pll_rst_out ();
    Wait_us (50000);

    // 2. 通过寄存器0x0011位0 = 0对所有寄存器进行编程
    Val = 0x00;
    Mnt_PLL_byte_io (LMK04616_WR、0x0011、&val);
    // lmk04616_REG_wr (0x0011、val);
    // mnt_pll_Byte_io (LMK04616_RD、0x0011、&val);
    // wait_us (20);

    对于(I = 0;I < LMK04616_REG_NUM;I++){
    Val = regs_array[i]& 0xFF;
    Mnt_PLL_byte_io (LMK04616_WR、(regs_array[i]>> 8)、&val);
    // lmk04616_reg_wr ((regs_array[i]>> 8)、val);
    // wait_us (20);
    // mnt_pll_Byte_io (LMK04616_RD、(regs_array[i]>> 8)、&val);

    // 3. 程序寄存器0x0011位0 = 1
    Val = 0x01;
    Mnt_PLL_byte_io (LMK04616_WR、0x0011、&val);
    // lmk04616_REG_wr (0x0011、val);
    // mnt_pll_Byte_io (LMK04616_RD、0x0011、&val);

    Wait_us (20);
    //
    // val = 0xFF;//在同步期间防止所有输出同步
    // mnt_pll_Byte_io (LMK04616_WR、0x144、&val);

    // wait_us (500);
    //
    // val = 0x12;//启用同步功能-
    ////同步事件从 SYNC 引脚生成,或者如果启用了 SYNC_PLL1_DLD 标志或 SYNC_PLL2_DLD 标志。
    // mnt_pll_Byte_io (LMK04616_WR、0x143、&val);
    // mnt_pll_Byte_io (LMK04616_RD、0x143、&val);

    // wait_us (500);

    // tutto accesso
    // lmk04828_reg_wr (0x140、0x00);Dafa PCIEXJESD

    // wait_us (500);

    对于(i = 0;i < 8;i++){
    Val = 0x00;
    Mnt_PLL_byte_io (LMK04616_RD、(0x00127 + I)、&val);

    Val |= 0x20;
    Mnt_PLL_byte_io (LMK04616_WR、(0x00127 + I)、&val);

    Val = 0x01;
    Mnt_PLL_byte_io (LMK04616_WR、0x0014、&val);

    Wait_us (500);

    Val = 0x00;
    Mnt_PLL_byte_io (LMK04616_WR、0x0014、&val);

    Wait_us (500);

    // mnt_pll_sysref_req ();//同步事件
    Val = 0x10;
    Mnt_PLL_byte_io (LMK04616_WR、0x0014、&val);
    // lmk04616_REG_wr (0x0014、val);
    // mnt_pll_Byte_io (LMK04616_RD、0x0014、&val);

    Wait_us (500);

    返回0;

    /*********
    *
    *函数:mnt_pll_sysref_req
    目的://M@B richiesta sysref
    *参数://M@H nessno
    *返回值:
    *规范:
    *
    void /*M@F*/ mnt_pll_sysref_req (void)

    uint8_t val;

    Val = 0x10;
    Mnt_PLL_byte_io (LMK04616_WR、0x0014、&val);

    Wait_us (5);

    e2e.ti.com/.../ticsXti.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如何生成32个 SYSREF 脉冲?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请注意、写入寄存器0x0014时、您将 SYNC_PIN_FUNC[1:0]位写入00b、但对于 Sysref 请求、这应为10b。 按照9.3.7.4、在写入寄存器0x0014至0x12 (GLOBAL_SYSREF=1和 SYNC_PIN_FUNC[1:0]=01b)之前、将寄存器0x0140编程为0x20 (OUTCH_SYSREF_PLSCNT = 32个脉冲)。

    Alan