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.

[参考译文] TMS320F280041C:SPIB 在内部环回

Guru**** 2482225 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1447772/tms320f280041c-spib-looped-internally

器件型号:TMS320F280041C

工具与软件:

您好! 我`m 使用 spi_ex1_loopback 作为基准。 我的引脚按以下方式连接:->SIMO->GPIO56 MOSI->GPIO57、CLK->GPOI58。 因此、启用环回(SpibRegs.SPICCR.bit.SPILBK=1;)后、一切都按预期工作。 因此、我禁用了环回(SpibRegs.SPICCR.bit.SPILBK=0;)并尝试建立真实通信。 问题在于线路传输正常工作(F280041C 正确发送数据和连接的芯片响应)、但在 SpibRegs 中。 SPIRXBUF I 的值与发送的值相同(不是来自从器件的发送值)。  SpibRegs.SPIRXBUF= SpibRegs.SPITXBUF。 其作用类似于启用环回。 该位未置位。 我检查了寄存器。 GPOI 设置与示例相同。 唯一的区别是我已根据上面的引脚排列更改了相应的 GPOI 编号。

有什么建议吗? MUX 中是否存在问题。 要使用 GPIO 设置环接的引脚? 正如我所说的、线路工作正常。 我必须具有一些内部设置。

谢谢!

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

    您好!

    很抱歉耽误了一些时间。 您能否验证您的 SPI 线路是否反映了此行为? 您是否已经确定了这些行的范围?  

    此外、如果您在 CCS 寄存器窗口中查看、请确保检查 SPI RX EMU 寄存器。

    此致、

    Allison

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

    因此、我使用相同的示例 spi_ex1_loopback 设置 SPIA。 我将使用 GPI16、GPIO10和 GPIO9。 同样、LOOP 标志为0、但 SPI 接口以某种方式在内部环回。 这是否会在多路复用器中发生?

    谢谢!

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

    尊敬的 Pavlin:  

    如果您未在 SPI 中启用环回模式并且没有硬件连接、则该情况应不会在 SPI 中发生。 您能否仔细检查您的 GPIO 寄存器是否与预期相符? 您要使用什么代码进行 GPIO 初始化? 为了清楚起见(特别是芯片选择引脚)、您是否也可以确认以下内容:

    • GPIO16 -> SPI SIMO
    • GPIO10 --> SPI SOMI
    • GPIO9 -> SPI CLK
    • GPIO_--> SPI STE?

    我看到您在使用该示例作为参考。 您发送/接收的数据类型是什么? 您是否尝试过使用该示例、唯一更改是禁用环回模式?

    同样、检查分析仪或示波器以健全性检查一切看起来也正常也会有所帮助。

    此致、

    Allison

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

    您好! 下面是有关案例的更新。 我似乎有某种版本问题。 这是最后一个 spi_ex1_loopback。 我的引脚如下所示:

    SPI_SIMO=>GPIO56;

    SPI_MOSI=>GPIO57;

    SPI_CLK=>GPIO58;

    SPI_STE=>GPIO27;

    当我处于16位模式时、一切都正常。 我删除了环回标志、以便与逻辑分析仪确认线路。 因此、我可以监控输出数据、当我一起退票 GPIO56和 GPIO57时、我可以在硬件级别回送数据。 STE 信号相应地做出响应。 这里一切都很顺利。

    n`t、当我选择8位模式时、我不会在线路上传输任何内容。 当n`t 了环回标志时、我无法执行程序。 我收到 sData!=RDATA 错误。  

    我尝试从 SPI_readDataBlockingNonFIFO (mySPI0_BASE)向右移位结果;

    RDATA = RDATA >> 8;

    但似乎这仅在控制器上有效、并且仍然没有任何内容在线路上。

    有什么想法吗?

    谢谢!

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

    尊敬的 Pavlin:

    SPIDAT 寄存器是一个移位寄存器。 在传送期间、MSB 上的数据将首先被移出。 对于8位字符、您必须将数据向左移8位、以便正确移出8位数据。 否则、如果您要将0x00FF 写入 SPIDAT 以进行传输、则只会传输00。  

    当接收时、数据会被接收到缓冲器的低8位中、因此无需在接收时进行位移。

    在以8位模式传输之前、请确认是否正在移动。

    此致、

    Allison

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

    我把它修好了! 这是一个很好的注意! n`t 我的问题是,我忘记了3线模式不意味着3数据系统,但只有2 STE。 当我启用此模式时、这会以某种方式 在内部将 SIMO 和 MISO 信号短路。 n`t 从器件不支持 STE 信号、为了正确响应、必须将其永久设置为低电平、这样会造成混乱。

    谢谢!

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

    帕夫林,很高兴听到你能解决它! 感谢发布有关分辨率的其他信息、我将关闭该主题。 如果出现其他问题、请随时打开新问题。

    此致、

    Allison