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.

[参考译文] TMS320F28P650DK:CLB RESET

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1344672/tms320f28p650dk-clb-reset

器件型号:TMS320F28P650DK

您好!

当 HLC 中断恰好从开始重新启动时、我要复位 CLB、如何执行该复位? 如果我这样操作、设置全局加载寄存器0、然后再次启用 CLB、正确吗?
EALLOW;
HWREG (CLB1_BASE + CLB_LOGICCTL + CLB_O_LOAD_EN)= 0;
EDIS;

CLB_enableCLB (CLB1_base);

谢谢。

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

    您好、Hamidreza:

    当 HLC 中断恰好从开始重新启动时、我想重置我的 CLB、如何重置?

    为什么要在 CLB 中断期间复位整个 CLB? 我要警告您、在 ISR 中重置外设不是一个好主意、此外设负责处理来自同一外设的中断。 如果操作不当、可能会产生意外行为。 妥善做法是在主例程中使用某些其他触发器或某些条件来禁用和复位 CLB、而同时不被任何其他东西使用。

    如果我这样做是为了设置全局加载寄存器0,然后再次启用 CLB,是不是正确?

    请阅读 CLB 参考手册中的寄存器、您正在清除的 LOAD_EN 信号不会禁用 CLB:

    您正在使用 driverlib 函数来启用 CLB、如果您在调用使能 CLB 之前使用禁用 CLB 函数、这从根本上会复位外设、但您为什么需要复位整个 CLB 呢? 我对类似这样的用例很好奇。

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

    感谢您的答复。

    我想从 Bissc 编码器读取、我正在使用 CLB 生成时钟、并且我想要从传感器、复位计数器和状态读取整个数据时开始一个新的周期。

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

    您好、Hamidreza:

    我想从 bsc 编码器读取数据,我正在使用 CLB 生成时钟,而且我想当从传感器读取整个数据时,重置计数器和状态以启动新的循环。

    我认为、先使用 CLB_disableCLB 函数调用、然后使用 CLB_enableCLB 函数将 不能满足您的需求。 如果您尝试复位 CLB 的计数器、则不会通过 GLOBAL_EN 位进行复位。 最好的方法是具有一个额外的输入(如果可能)、该输入可 用作所有已使用计数器的复位信号。 我建议使用 GPREG 位、这样您就可以在 ISR 内将数据写入软件中的寄存器。 如果您能够做到这一点、或者 CLB 没有任何其他可用输入、请告诉我。

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

    实际上、对我来说最重要的重置是 FSM 中的状态重置、我希望在周期结束时将所有状态都设置为0。 你对这本书有什么想法吗?

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

    启用/禁用功能将复位 FSM、请通读 CLB_LOAD_EN 寄存器中 GLOBAL_EN 位的说明; 单元逻辑、FSM 和 AOC 将被复位、计数器和 HLC 将被停止、并且当该位被清除时、输出将被选通。 如果您计划使用启用/禁用功能、则可能需要重新初始化 CLB 逻辑块、以确保配置不会与原来的配置发生变化。