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.

[参考译文] AM6442:如何在 MCSPI 事务字节之间保持 CS 启用

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1503964/am6442-how-to-keep-cs-enabled-between-bytes-of-mcspi-transaction

器件型号:AM6442

工具/软件:

我正在执行一个 MCSPI 事务。 数据大小为8位、我想传输3个连续帧、而不禁用它们之间的 CS。 这是硬件所必需的。

我尝试设置 CSDisable = false、这似乎没有任何作用。 我有一个多控制器 SPI 设置。 通道0不需要此功能并可以正常工作、但通道1需要此功能并且无法工作。 使用 LLD 而不是 HLD 的 Im。  

MCSPI 配置:

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

    嗨、Shane、

    我目前知道 CSDisable 应该可以完成此任务。 当设置为 False 时、它应该正常工作并被启用、直到最后一个事务设置为 True。

    稍后、请允许我通过探测逻辑分析仪在设置中检查此项。

    此致、

    Vaibhav

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

    为清楚起见、这是多通道模式。 两个 SPI 器件。 CSDisable 似乎没有做任何事情。 我在驱动程序中看到它似乎只能与一起使用  

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

    嗨、Shane、

    我检查了  MCSPI_CH_MODE_SINGLE 宏的使用方式和位置、以及在哪种背景下可以更好地帮助您。

    单控制器的结果很有前景:

    事务行为、单控制器:

    HLD 已启用:

    csDisable = true 时的10个事务:

    csDisable = false 且最后一个事务为 true 时的10个事务:

    使用 LLD:

    csDisable = true 时的10个事务:

    csDisable = false 且最后一个事务为 true 时的10个事务:

    对于多控制器模式、我在事务中看到了大量的芯片选择。 让我看看为什么会发生这种情况。

    此致、

    Vaibhav

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

    嗨、Shane、

    我已经看到、对于多控制器、每个传输的字节都会出现片选事件。

    发生这种情况的原因是驱动程序检查了单控制器模式、而不是多控制器模式。

    我假设这些是每个传输字节的自动芯片选择。

    我正在与开发团队研究如何在驱动程序中实现修复、以便在单控制器和多控制器 MCSPI 模式之间保持一致的行为。

    请允许我在完成一轮内部讨论后再谈一下这个问题。

    其他说明:

    发送的字节有一个芯片选择、这已使用逻辑分析仪通过代码和波形确认。 因此、您可以看到以下波形片段:

    它基本上是一个字节(值18)的传输、芯片选择会自动用于此传输、在驱动程序中不会被触摸。

    在驱动程序中添加了新的元素  

    CSL_REG32_WR (baseAddr + MCSPI_CHTX (chNum)、txData);  

    我们可以看到字节(值18)传输的行为。

    此致、

    Vaibhav

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

    嗨、Shane、

    在讲解 MCSPI 的驱动程序时、我观察到在为控制器配置多个通道时、CS 作为硬件控制器而不是软件控制器的预期行为。

    请查找以下 API 片段、行号2224:

    此致、

    Vaibhav

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

    是的、我在代码和数据表中看到、单控制器和多控制器设置之间的行为有所不同、但这对于我们可以使用的器件非常有限、因此我想知道是否有硬件配置来使 CS 在各字节之间保持置位状态

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

    嗨、Shane、

    我甚至在寄存器级尝试了、更改似乎不是手动控制 CS、它仍然由硬件控制。

    您能否继续创建另一个 E2E 主题、在其中询问如何通过修改硬件来禁用 CS。

    将此主题标记为闭合、因为从 SW 端开始、我也尝试了不同的可能性。

    此致、

    Vaibhav