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:
我们现在将 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
ICSSG0和 ICSSG2与自己的 IEP 外设完全独立。 因此、 IEP 计数器值取决于加载固件和启动 PRU 的顺序、如何确保同步不同 ICSSG 实例的 PRU 内核?
我们尝试使用 PRU 来实现计数器、并希望使用 IEP 检查频率、以输出类似滤波器的功能。
但计数器看起来与2个 PRU 不同、并且结果非常不同。
Eric
但计数器看起来与2个 PRU 不同、结果非常不同。
正如我提到过的、硬件中没有任何东西可以确保它们是相同的、同步计数器必须在软件中完成。