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.

[参考译文] TMS570LS3137:针对 TMS570的 Mibspi 用法

Guru**** 2551110 points
Other Parts Discussed in Thread: TMS570LC4357, TMS570LS3137

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1301326/tms570ls3137-mibspi-usage-for-tms570

器件型号:TMS570LS3137
主题中讨论的其他器件:TMS570LC4357

您好!

我们正在研究一个包含 SPI 接口的项目。 经过几天的时间、我们阅读 TM570LS3137的 TRM、我们注意到 TMS570 mibspi 接口、然后我们开始使用该接口。 实际上 mibspi 作为回路工作正常、但当我们想要作为正常接口使用后、我们无法成功。 我们还跟踪了 CS 引脚、该引脚在运行时始终为高电平。 问题是什么?

此致、

古坎

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

    尊敬的 Furkan:

    首先、我建议您参考以下常见问题解答:

    (+)[常见问题解答] TMS570LC4357:适用于 Hercules 控制器的示例和演示(例如 TMS570x、RM57x 和 RM46x 等)-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    其中、请参阅以下重点介绍的 mibSPI 示例并尝试自行解决该问题。

    如果这无法帮助解决问题、请附上您的代码、我将在最后对其进行调试。

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    首先感谢您的答复。 解决该问题后、我们遇到了一些有关缓冲区管理的问题。 例如、我们将缓冲区大小设置为4的传输缓冲区。 在我们发送此缓冲区之后、接收到的缓冲区仅由第一个发送缓冲区索引响应填充。 如何正确访问 RAM 缓冲器。

    此致、
    古坎

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

    尊敬的  Furkan:

    在我们发送此缓冲区后,接收到的缓冲区仅由第一个发送缓冲区索引响应填充。 [/报价]

    您的意思是、如果您发送4个字符、那么您只接收1个字符?

    您能分享您的代码吗?

    --
    谢谢。此致、
    Jagadish。

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

    您好!

    否、如果我给出有关此主题的示例、如下所示:当我发送{0x0030、0x001、32、0x0033}时、这些消息响应将为{0x0002、0x00020x00020x0002}。 该过程的工作原理也是该模块依次或并行传输?

    谢谢。
    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    否,如果我给出有关此主题的示例,将类似于:当我发送{0x0030、0x001、32、0x0033}时,这些消息响应将类似于{0x0002、0x00020x00020x0002}。 该过程的工作原理也是该模块依次或并行传输?

    是否测试回送? 您需要的数据与发送的数据相同吗?

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

    没有、我使用加速计进行测试。 但我之前使用环回模式进行了测试、结果还行。 我期望每个传输指数的值不同,但我不能得到它。

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

    我的疑问是、  

    您如何确认 TMS570LC3137未正确接收数据? 如果加速计发送了错误的数据该怎么办?

    您是否有任何逻辑分析仪用于测试从加速计输出的数据? 或者、您是否使用任何其他 SPI 主器件对其进行了测试?

    --
    谢谢。此致、
    Jagadish。

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

    我假设 TMS570按顺序传输工作、由于加速计不能捕捉到这些按顺序的、因此该传感器只给了我第一个指数响应。  

    加速计不发送任何错误数据取决于第一个索引。 如果我逐字节发送、我从传感器获得真实的响应。  

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

    尊敬的 Furkan:

     SPI 并行/模块模式控制寄存器(SPIPMCTRL)将控制数据并行或按顺序移位。

    如果该寄存器中的 PMODE0值为零、则数据将仅在一行上按顺序移位。

    如果您提供代码、那么我可以验证数据是如何移出控制器的。

    我还建议您参考以下线程、最近我们看到 MibSPI 中存在一个数据损坏问题、通过在芯片选择激活与传输之间提供一些延迟来解决该问题:

    (+) TMS570LS3137:MibSPI Slave ->主器件传输第一个值缺失第一位-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    我在工程中未使用此寄存器、因为 mibspi 的示例代码未使用如我所见的此寄存器。  

    在我花了很长时间进行这种数据处理之后、我意识到我的 mibspi 缓冲区只传输一次。 一次通信后无法更新发送缓冲区或接收缓冲区。

    此致、

    古坎

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

    尊敬的 Furkan:

    在我花了很多时间处理此数据后,我意识到我的 mibspi 缓冲区只能传输一次。 一次通信后无法更新传输缓冲区或接收缓冲区。

    很高兴听到您解决了问题。

    --
    谢谢。此致、
    Jagadish。

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

    我希望我能,但不能,今天我想: D  问题仍然存在。   

    我的代码部分。 这里的目的是发送不同的值的数据和接收他们的响应,但我不能成功。 我只收到第一条消息响应。  


    例如:  

    预期的传输数据集 和相应的值将如下所示:

    发送        Rx

    0x00     0xE5

    0x30     0x02

    0x20     0x2C

    在运行时、我只有 E5 0x02和0x2C 从未发生。

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

    尊敬的 Furkan:

    您在示例中配置的传输组长度是什么?

    当您尝试逐字节发送时、您只应将长度配置为1。

    如有可能、请提供完整的项目以验证所有配置。

    --
    谢谢。此致、
    Jagadish。

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

    您好!

    传输组配置与您的配置相同。 由于一些限制、我无法分享我的项目、对此我感到抱歉。

    我查看了代码以确定问题的来源。 我检查了一些相关的寄存器值、似乎没有问题。 如果您想知道特定的寄存器值、我可以根据需要与您分享。

    此致、

    古坎

    我创建了一个示例项目,其寄存器值与我的项目相同。  

    e2e.ti.com/.../adxl345_5F00_mibspi_5F00_tms570.zip

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

    尊敬的 Furkan:

    我没有 TMS570LS3137板、因此我只需在 TMS570LC4357上重新创建您的项目。 我将设置与您的设置相同、并复制粘贴的代码并进行测试。

    这是我从 MibSPI3中得到的结果、

    这是第一次迭代后的输出、它正如您想要发送的一样、即0x00、0x30和0x00。

    可能只是根据您的要求。

    我在您的代码中唯一不明白的是、

    1.声明"t"为无符号字符、但会将1000和 100000之类的值移动到该变量中、这会将移动到 t 中的值截断。

    2.第一次发送一个0x00之后只是循环在 while (1)中的0x30和0x00、这正是你想要的、或者你在这里忽略了什么?

    我随附经测试的代码供您参考:
    e2e.ti.com/.../MIBSPI3_5F00_TEST_5F00_LC4357.zip

    --
    谢谢。此致、
    Jagadish。

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

    你好、jagadish、

    首先非常感谢您的兴趣和 努力。 之后我的答案是:

    1.变量 t 实际上不是很重要。 我仅使用该变量会在变量之间产生延迟。 在另一个项目中、我将此变量创建为32位无符号整数。  

    2.我的愿望跟你说的一样。 我希望访问一些寄存器、并在加速计上顺序获取它们的值。

    此致、

    古坎

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

    尊敬的 Furkan:

    1.变量 t 实际上不是很重要。 我仅使用该变量会在变量之间产生延迟。 在另一个项目中、我将此变量创建为32位无符号整数。  

    2.我的愿望跟你说的一样。 我希望访问一些寄存器、并在加速计上顺序获取它们的值。

    [/报价]

    了解了这一点。

    但正如我在逻辑分析仪波形中显示的那样、您的代码没有出现任何问题、而且工作正常。

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    那么,你是指这个问题有关传感器带或等。对吗?

    同样、如果我使用的缓冲器长度为10或比此值大。 是否会 ı 该缓冲器按顺序向右发送数据?

    此致、

    古坎

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

    尊敬的  Furkan:

    所以您的意思是这个问题有关传感器带或等。对吗?

    可以。

    例如,如果我使用的缓冲区长度为10或多于10。 是否 ı 此缓冲区按顺序向右发送数据?

    是的、回答正确。

    如果将 TG 长度配置为10、这意味着您应该提供10个字节的数据、所有这10个字节将通过单次触发进行传输。

    我的意思是、如果你调用"mibspiTransfer"函数、那么所有10个字节将一次进行传输、无需为每个字节调用"mibspiSetData"和"mibspiTransfer"。

    --
    谢谢。此致、
    Jagadish。

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

    你好、jagadish、

    非常感谢解释和帮助这些问题:D 我知道问题来自哪里。

    祝您度过美好的一天!

    古坎

    此致、