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.

[参考译文] TMS320F28388D:当使用相同事件触发时,HLC 运行或 CLB 数据推送至 SPI RX FIFO 是否会首先发生?

Guru**** 2526070 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1071760/tms320f28388d-hlc-run-or-clb-data-push-to-spi-rx-fifo-occurs-first-when-they-use-the-same-event-to-trigger

部件号:TMS320F28388D

大家好!

我想使用同一事件(例如 counter_0.count_match1)来触发数据导出到 SPI Rx fiffo 和 HLC。 CLB 在这种情况下的行为是什么? 哪一项最先发生? 我想先运行 HLC 来准备数据并将其复制到 R0,然后将 R0推入 RX fifo。 有可能吗?

请提前感谢。

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

    您好,Erhan,

    听起来您想配置其中一个由 counter_0.count_match1触发的 HLC 事件,然后使用此事件准备数据并将其推送到 HLC FIFO。 之后,您可以向 CPU 发出中断信号。 在该中断的事件处理程序中,您可以将数据推送到 RX FIFO。 HLC 应按优先级顺序依次执行这些指令。 我是否正确理解了您的问题? 如果您需要更多信息,请告诉我

    此致,

    彼得

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

    彼得,你好!

    我认为你是真的。非常感谢你。 准备实际上是将数据从计数器复制到 R0以导出它们。 下面是该代码的示例 HLC 代码。

    MOV C0, R0  # Copy data to R0
    MOV R2, C2  # Trigger data export
    MOV C1, R0  # Copy data to R0
    MOV R2, C2  # Trigger data export
    

    数据导出事件将是计数器1计数匹配1,我想导出 C0和 C1。 我的问题是我的逻辑是否有效? 或者,我是否需要在 HLC 事件后延迟一些时间,比如一些虚拟命令(例如 MOV R0,R0)以确保导出正确的数据? 如下所示

    MOV C0, R0  # Copy data to R0
    MOV R2, C2  # Trigger data export
    MOV R0, R0  # dummy instruction 
    MOV C1, R0  # Copy data to R0
    MOV R2, C2  # Trigger data export
    MOV R0, R0  # dummy instruction 

    另一个问题是数据导出和 HLC 是否使用相同的事件触发。 如果同时触发,会发生什么情况?

    请提前感谢。  

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

    此外,在 CLB 示例28中,HLC 和数据导出使用相同的事件。 但 没有关于这方面的信息。  而在 CLB 工具用户 Guide.pdf 中的示例详细信息是 wrirten,但我找不到任何信息。 请提供更多有关 CLB 示例的信息吗?

    我要提前表示非常感谢。

    //#############################################################################
    //
    // FILE:   clb_ex28_spi_data_export_dma.c
    //
    // TITLE:  CLB SPI Data Export DMA
    //
    //! \addtogroup driver_example_list
    //! <h1>CLB SPI Data Export DMA</h1>
    //!
    //! For the detailed description of this example, please refer to:
    //!  C2000Ware_PATH\utilities\clb_tool\clb_syscfg\doc\CLB Tool Users Guide.pdf
    //!
    //
    //#############################################################################

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

    您好,Erhan,

    您不需要在 MOV 指令之间添加任何延迟,因为 HLC 将按指定的顺序执行 MOV 指令。  

    如果您的 SPI 数据传输和 HLC 使用相同的事件触发器,您可能会遇到比赛情况。 因此,最好确保只有在确定 HLC 已成功地将数据从 C0和 C1移至 R0后才触发 SPI 数据导出中断。

    此外,《CLB 用户指南》的更新版本尚未发布,但为了方便起见,我已包括示例27和28的更新说明。

    5.1.21示例27 - SPI 数据导出
    在此示例中,使用 CLB 的高速数据导出功能,并导出一个 HLC 寄存器
    使用 SPI RX 缓冲器从 CLB 模块中取出。 此模块仅适用于 CLB 类型3及以上。

    5.1.22示例28 - SPI 数据导出 DMA
    在此示例中,使用 CLB 的高速数据导出功能,并导出一个 HLC 寄存器
    使用 SPI RX 缓冲器从 CLB 模块中取出。 在 SPI RX 缓冲区中收到的数据将传输到内存
    使用 DMA。 此模块仅适用于 CLB 类型3及以上。

    此致,
    彼得

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

    彼得,你好!

    感谢你的帮助。 我终于让它发挥了作用。 在一次 HLC 事件中,我不得不在 HLC 代码中添加3mov 以导出数据2次。 HLC 代码如下。

    我使用计数器2匹配事件来导出数据。

    您可以确认我的方法是否正常? 请提前感谢。

    谢谢,

    ADD R1, R0	# Inc R0
    MOV R3, C2  # C2 Count Match(Fifo Export Event)
    MOV R2, R2	# Dummy command
    MOV R2, R2	# Dummy command
    MOV R2, R2	# Dummy command
    ADD R1, R0	# Inc R0
    MOV R3, C2  # C2 Count Match(Fifo Export Event)

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

    您好,Erhan,

    很高兴听到您能够解决您的问题。 是的,考虑到您的使用案例,此实施应该可以。 如果您有任何其他问题,请联系我们。

    此致,

    彼得

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

    彼得,你好!

    是的,我花了一天的时间,但我做到了。 :)非常感谢您的帮助和关注。 当然,我会。

    谢谢,