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.

[参考译文] AM6548:PRU 时钟设置

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1454319/am6548-pru-clock-setting

器件型号:AM6548

工具与软件:

尊敬的 TI:

我们现在将 AM6548与 Linux RT SDK 配合使用、并且让我们的程序在 PRU 中运行。

下面是 IEP 设置、我们 对 PRU0_0和 PRU2_1使用 CT_IEP0。

void IEPTimer_init (void)


/*设置 PRU 同步到 VCLK 模式、时钟速度250MHz */
CT_CFG.CORE_SYNC_reg_bit.CORE_vbusp_sync_en = 1;

/*将250MHz 设置为同步模式、时钟为 IEP*/
CT_CFG.iepclk_reg_bit.IEP_OCP_clk_en = 1;

/*启用影子模式*/
IEPCounter.cmp_cfg_reg_bit.shadow_en = 1;

/*禁用计数器*/
IEPCounter.global_cfg_reg_bit.cnt_enable = 0;

/*复位计数寄存器*/
IEPCounter.count_reg0 = 0xFFFFFFFF;
IEPCounter.count_reg1 = 0xFFFFFFFF;

/*设置增量值*/
IEPCounter.global_cfg_reg_bit.default_inc = 4;

/*启用计数器*/
IEPCounter.global_cfg_reg_bit.cnt_enable = 0x1;

}

我的示例代码用于读取 IEP 的 counter reg。

#if 已定义(PRU0_0)
g_pHSIO -> SysInfo。 CycleTime_PRU0_0 = IEPCounter.count_reg0;
#else
g_pHSIO -> SysInfo。 CycleTime_PRU2_1 = IEPCounter.count_reg0;
#endif

你可以从下面的2张图片看到。 2个寄存器之间的数字在这里有很大的差距。

您能帮助说明一下为什么会发生这种情况吗?

Eric

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="445865" url="~/support/processors-group/processors/f/processors-forum/1454319/am6548-pru-clock-setting 下面是我们的 IEP 设置、我们 对 PRU0_0和 PRU2_1.使用 CT_IEP0

    ICSSG0和 ICSSG2与自己的 IEP 外设完全独立。 因此、 IEP 计数器值取决于加载固件和启动 PRU 的顺序、如何确保同步不同 ICSSG 实例的 PRU 内核?

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

    我们尝试使用 PRU 来实现计数器、并希望使用 IEP 检查频率、以输出类似滤波器的功能。

    但计数器看起来与2个 PRU 不同、并且结果非常不同。

    Eric

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但计数器看起来与2个 PRU 不同、结果非常不同。

    正如我提到过的、硬件中没有任何东西可以确保它们是相同的、同步计数器必须在软件中完成。