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.

[参考译文] TMS570LS1224:MibSPI 从器件运行中的 CS_HOLD 函数

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/579385/tms570ls1224-cs_hold-function-in-mibspi-slave-operation

器件型号:TMS570LS1224
主题中讨论的其他器件:HALCOGEN

您好!

我尝试在以下配置中设置 MIBSPI:

  • TMS570是 SPI 总线上的从器件、字长为8位
  • MIB SPI 配置为使用8个缓冲器、0-7、CS[0]选择器件
  • 每次写入缓冲区7时、DMA 都会将接收到的内容复制到 SRAM 中的缓冲区
  • 由于我不知道单个 CS 激活事件期间传输的字节数、因此我在 HALCoGen 中启用了"芯片选择保持"

现在我将测试16字节传输到 TMS570的情况、其中 CS 在传输过程中一直处于活动状态。 在这种情况下、RxRAM 将在8个缓冲区中接收8个字节、DMA 将触发一次、其余的流量将丢失。

我已经检查了 HALCoGen 生成的代码(v04.05.02)、并找到缓冲区7的以下行:

mibspiRAM3->TX[i].control =(uint16)((uint16) 4U <<13U)/*缓冲模式*/
|(uint16)((uint16) 0U << 12U)/*芯片选择保持对于最后一个缓冲区必须为零*

当我手动将缓冲器7的 CS_HOLD 更改为1时、我会得到预期的行为-两个 DMA 触发器和所有发送的数据都被复制到 SRAM。

为什么在生成的代码中 CS_HOLD 设置为0? 为什么评论说"芯片选择保持对于最后一个缓冲器必须为零"?

谢谢

Josip

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

    我目前正在查看您的帖子、并将很快与您联系。 如果通过您自己的调试、您能够解决或有新问题、请告诉我。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Josip、

    仅当器件处于 SPI 主模式时、CS_HOLD 才相关。 在从模式下不考虑该值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Chuck、

    我发现文件非常不完整、有时与之相矛盾。 在 处理此组件时、这尤其令人沮丧。

    在 TXRAM 中 CS_HOLD 标志的说明中、它确实被标记为与从模式无关。 然而、有一个名为"28.2.11.2从模式(多缓冲模式)中的 CSHOLD 位"的子章、根据这个标志的值来指定 MibSPI 的不同行为。

    正如我在第一篇帖子中所指出的、我还能够确认它在我的实验中在从模式中所产生的差异。

    请再次查看此问题。

    谢谢

    Josip

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

    您好、Josip、

    我认为、如果操作模式是缓冲模式或兼容模式、那么产生混淆的原因是不同的行为。 在兼容模式下、CSHOLD 值被忽略/未使用、但在 MibSPI 模式下具有意义、并将改变与 CS 信号状态相关的行为。 当然、我鼓励您使用文档中的文档反馈链接提交问题、例如您描述的与冲突或混乱信息相关的问题。

    有关问题。 当您在 Halcogen 中配置传输组时、您是否选中了下图所示的 CSHOLD 的两个框?

    右侧复选框的行为是 CS 在最后一个缓冲区传输后仍然保持。 因此、在从模式下、这可能会转换为删除将缓冲区7的 CSHOLD 写为0的代码。 您可以尝试一下、然后与我一起返回吗?

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

    你好、Chuck、

    到目前为止、我已经报告了几个错误。 我希望更正能很快进入新版本、这样其他工程师就不必在相同的问题上花费太多精力。

    我启用了您提到的复选框。 生成的代码现在如下所示:

    mibspiRAM3->TX[i].control =(uint16)((uint16) 4U <<13U)/*缓冲模式*/
    |(uint16)((uint16) 1U << 12U)/*芯片选择保持对于最后一个缓冲区来说必须为零*/
    (...) 

    此代码在我的情况下运行良好、但请注意、注释仍然与设置的值相矛盾。 请在 HALCoGen 中将此问题归档以进行更正(可能还有 GUI 中复选框上的不完整标签)。

    感谢您在这方面的帮助。

    Josip

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

    感谢您的反馈。 我知道目前正在进行一些修订更新、因此希望您报告的所有内容都将包括在内。 如果您愿意、请随时在 E2E 的消息部分进行总结并发送给我、我将确保这些内容已提请文档所有者注意。 另请注意、我已经复制了这个线程上的 HalCoGen SW 引线、这样他们就可以知道有关 CSHOLD 配置的注释和问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    错误 ID SDOCM00122903用于修复 HALCoGen 中的误导性通信。

    修复将在即将发布的版本中推出。