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.

[参考译文] TMS570LC4357:MibSpi 从设备

Guru**** 2426460 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1254898/tms570lc4357-mibspi-slave

器件型号:TMS570LC4357

大家好!

我正在尝试在主控模式下使用 MibSPI3、在受控模式下使用 MibSPI5、并在它们之间交换数据。
接线:
SPI3.CS[0] ----------------------------------------------------- >  SPI5.CS[0]
SPI3.SIMO <----   [0 ][编辑]
SPI3.SOMI   <----- >  SPI5.SOMI[0]
SPI3.CLK  <---- >  SPI5.CLK
我在主从模式下使用任一接口来验证接线和引脚多路复用的正确性。 示波器显示主器件在任一 SPI 上生成 CS、CLK 和 MOSI。
但是、从 TG 似乎未被触发。 我不确定我是否理解了这个概念是否正确、这就是我所做的:

  uint16_t mTxDat[2] = {0x22EE, 0x4433};        // Charlen 8-Bit, Len = 1 => 0xEE
  uint16_t mRxDat[2] = {0};
  uint16_t sTxDat[2] = {0xBBF0, 0xDDCC};        // Charlen 8-Bit, Len = 1 => 0xF0
  uint16_t sRxDat[2] = {0};
  
  mibspiInit();
  
  mibspiSetData(mibspiREG3, 0, &mTxDat[0]);     // setup tx-data for master
  mibspiSetData(mibspiREG5, 0, &sTxDat[0]);     // setup tx-data for slave
  
  mibspiTransfer(mibspiREG5, 0);                // trigger TG0 slave
  mibspiTransfer(mibspiREG3, 0);                // trigger TG0 master
  
  while(mibspiIsTransferComplete(mibspiREG3, 0) == FALSE);      // works        
  while(mibspiIsTransferComplete(mibspiREG5, 0) == FALSE);      // infinite wait

  mibspiGetData(mibspiREG3, 0, &mRxDat[0]);
  mibspiGetData(mibspiREG5, 0, &sRxDat[0]);

Halcogen-设置:
 有人知道我遗漏了什么吗?

谢谢。
于尔根

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

    尊敬的 Juergen:

    最近、我使用 ENA 引脚为 MibSPI 创建了一个主从接口示例、以下是这些项目:

    e2e.ti.com/.../5556.MibSPI_5F00_Master_5F00_with_5F00_ENA_5F00_TEST_5F00_LC4357.zip

    e2e.ti.com/.../8468.MibSPI_5F00_Slave_5F00_with_5F00_ENA_5F00_TEST_5F00_LC4357.zip

    由于上面的项目使用 ENA 引脚、我还要用 CS0引脚连接一个主项目。

    e2e.ti.com/.../MibSPI1_5F00_TEST_5F00_LC4357-_2800_2_2900_.zip

    因此、请参考所有这三个项目、并自行进行必要的修改、然后进行测试。 如果在提交后问题仍未解决、我将在最后对您的项目进行调试。

    --

    谢谢。此致、
    Jagadish。

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

     Jagadish、您好!  

    您的项目看起来基本上相同。 唯一的区别是、我使用一个 CPU、您似乎使用了两个 CPU。 这一点是否重要?
    我有点害怕。 我将从器件(SPI 5)设置 为经典 SPI 模式、以便缩小范围。 对于主器件(SPI 1)、我尝试了经典和 MibSpi 模式。 如果主器件和从器件都处于传统模式、则一切都按预期运行。 将主控制器设置为 MibSpi 模式使我无法正常工作。 从器件仍会接收某些数据、但数据不正确。 数据格式的设置与传统 SPI 模式中的相同、目前、我通过将 Charlen 设置为16来完全传输2个字节。 我预计经典 SPI 和 MibSPI 模式之间不会有差异。

    此致、
    于尔根

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

    尊敬的 Juergen:

    唯一的区别是,我使用的是一个 CPU,您似乎使用了两个 CPU。 这一点是否重要?

    不、不应该。

    您能否通过在 MibSPI 中配置主器件和从器件来附加您的代码。 我将进行调试并提供更新。

    --
    谢谢。此致、
    Jagadish。

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

     Jagadish、您好!  

    我使用的是定制电路板。 因此、我为您准备了一个 HDK 项目以便能够调试我的问题。 但当我这样做的时候,我学到了两件事:
    -我需要增加到 CS 到 TX 开始延迟
    - MibSpi5从未发送响应,当它被用作从属设备。 我很难找到原因。 我将示波器连接到 CS、CLK、SIMO 和 SOMI、并注意到 SOMI 保持浮动。 好像它不关心其 CS 是否为低电平。 我的转接组使用 CS[0]。 似乎不允许 将 CS[1]、CS[2]、CS[3] 和 CS[0]设置为功能(SPI)。 我将其函数设置为 GIO 后、MISSPI5就立即主动在 SOMI 上发送响应。 我真的不知道这是什么情况,但它是可以的。 也许您可以指出我可以在数据表中的什么位置找到这些信息。

    此致、

    于尔根

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

    尊敬的 Juergen:

    您能发送代码吗、这样我就能调试并看到问题了。

    --

    谢谢。此致、
    Jagadish。

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

     Jagadish、您好!

    下面是具有相同问题的项目。 MibSPI3主控, MibSpi5是从,他们都工作在 CS[0]。 如果我将 MibSpi5中的任何其他 CS 设置为功能。  while (mibspiIsTransferComplete (mibspiREG5、0)== false); 不返回。

    此致、
    于尔根

    e2e.ti.com/.../5722.DMASPI.zip

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

    尊敬的 Ju We:

    我发现你的代码有问题。

    我发现了几个问题。

    1、不应在从机侧配置多个片选

    您应该只配置一个芯片选择、即 CS0或 CS1、如果您同时启用两个芯片选择、那么从器件将期望 CS0和 CS1上的有效芯片选择来移动数据。 因此只需选择一个芯片选择并在传输组配置中使用相同的芯片选择。

    2.您将 TG0缓冲器 Lenth 配置为1 ,因此您只能接收一个16位数据。  

    在主端和从端将 TG0缓冲区长度配置为2。

    如果您现在进行测试、那么您可以看到主器件和从器件之间正确传输数据。

    在我做了修改后这里是你的项目、把它作为参考并在你这边进行必要的修改。

    e2e.ti.com/.../0184.DMASPI.zip

    --

    谢谢。此致、
    Jagadish。

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

     Jagadish、您好!

    我知道所有这些"问题"。 缓冲器的长度为1是用于测试目的的结果。 我确实了解到、将多个 CS 设置为 SPI 模式会导致从器件将其 SOMI 线路保持在高阻态。 只有 SPI5出现了这种情况、SPI3没有出现这种情况。 这就是为什么我之前问过您、在参考手册中我可以在哪里找到这些信息。 让人非常惊讶的是、SPI3和 SPI5在这方面的行为不同。  

    此致、
    于尔根