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.

[参考译文] CCS/TMS320F28377S:C2000 MCU 作为 SPI 从器件以2字节延迟环回传入数据。

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/673468/ccs-tms320f28377s-c2000-mcu-as-spi-slave-loops-back-incoming-data-with-a-2-byte-delay

器件型号:TMS320F28377S

工具/软件:Code Composer Studio

我使用 f28377s Launch Pad 作为启用 FIFO 的 SPI 从设备。 我能够正确接收传入的消息、但是它们以两字节的延迟环回 SOMI、即使 SPITXBUF 从未被主动写入并且 SPILBK 被禁用。 我认为这种行为不寻常吗? 此外、当 写入 SPIDAT 的数据被正确发送时、对 SPITXBUF 的主动写入会被忽略。 目前我无法解释这种行为。

这里有人知道会发生什么情况吗?

SPI 的配置方式如下:

SpibRegs.SPICCR.bit.SPISWRESET = 0;
SpibRegs.SPICCR.bit.CLKPOLARITY = 0;
SpibRegs.SPICCR.bit.SPILBK = 0;
SpibRegs.SPICCR.bit.SPICHAR = 0x7;

SpibRegs.SPICTL.bit.CLK_PHASE = 1;
SpibRegs.SPICTL.bit.MASTER_SLAVE = 0;
SpibRegs.SPICTL.bit.OVERRUNINTENA=0;
SpibRegs.SPICTL.bit.SPIINTENA=1;
SpibRegs.SPICTL.bit.TALK = 1;
SpibRegs.SPIRXEMU = 0;

SpibRegs.SPIFFTX.bit.SPIFFENA=1;
SpibRegs.SPIFFTX.bit.TXFIFO=0;
SpibRegs.SPIFFTX.bit.TXFFINTCLR=1;
SpibRegs.SPIFFTX.bit.TXFFIENA=1;
SpibRegs.SPIFFTX.bit.TXFFIL=4;

SpibRegs.SPIFFRX.bit.RXFIFORESET=0;
SpibRegs.SPIFFRX.bit.RXFFOVFCLR=1;
SpibRegs.SPIFFRX.bit.RXFFINTCLR=1;
SpibRegs.SPIFFRX.bit.RXFFIENA=1;
SpibRegs.SPIFFRX.bit.RXFFIL=4;
SpibRegs.SPIFFRX.bit.RXFIFORESET=1;

SpibRegs.SPICCR.bit.SPISWRESET=1;

SpibRegs.SPIFFCT.bit.TXDLY=0;

SpibRegs.SPIPRI.bit.SOFT=1;
SpibRegs.SPIPRI.bit.free=1;
SpibRegs.SPIPRI.bit.STEINV=0;
SpibRegs.SPIPRI.bit.TRIWIRE=0; 

感谢你的帮助!

此致、

Tobi

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

    Tobias、

    这是预期的结果。 将传输 SPIDAT 中的任何数据。 由于您使用的是字节、因此会有几个字的延迟、直到接收到的数据从传输中恢复。 下表介绍了该行为。 每行表示操作后的状态。 SIMO 为收到的数据、SPIDAT 为寄存器的状态、SOMI 为从器件发送的数据。

    时间 SIMO SPIDAT SOMI
    T0 00 0000 00
    T1 AA 00AA 00
    T2 55 AA55 00
    T3 BB 55 BB AA
    T4 66 BB66 55
    T5 抄送 66cc BB

    如果您不希望从机发送任何数据。 将 TALK 位设置为0、直至准备就绪。

    谢谢、
    标记