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.

[参考译文] TMS320F28377D:SPI 通信错误

Guru**** 2445440 points
Other Parts Discussed in Thread: TMS320F28377D, C2000WARE

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1386498/tms320f28377d-spi-communication-error

器件型号:TMS320F28377D
Thread 中讨论的其他器件: C2000WARE

工具与软件:

我想使用 TMS320F28377D 转 SPI 与 DRV8353RS 进行通信。
但是、在 SPI 通信中、Tx 正常工作、但 Rx 数据冻结在0xFFFF、数据没有改变。
如果你能给我一个关于这种现象的答案、我将不胜感激。 下面是编写的代码。

--------------------------------------------------------

void SetupSpia (void){

EALLOW;
CpuSysRegs.PCLKCR8.bit.SPI_A = 1U;
EDIS;

SpiaRegs.SPICCR.bit.SPISWRESET = 0U;
SpiaRegs.SPICCR.bit.CLKPOLARITY = 0U;
SpiaRegs.SPICCR.bit.SPICHAR = 15u;
SpiaRegs.SPICCR.bit.SPILBK = 0U;

SpiaRegs.SPICTL.bit.MASTER_SLAVE = 1U;
SpiaRegs.SPICTL.bit.talk = 1u;
SpiaRegs.SPICTL.bit.SPIINTENA = 1U;
SpiaRegs.SPICTL.bit.CLK_PHASE = 0u;
SpiaRegs.SPICTL.bit.OVERRUNINTENA = 0U;

SpiaRegs.SPIBRR.all = 0x0009U;
SpiaRegs.SPIFFTX.bit.SPIRST = 1;
SpiaRegs.SPIFFTX.bit.SPIFFENA = 0;
SpiaRegs.SPIFFTX.bit.TXFIFO = 0;
SpiaRegs.SPIFFTX.bit.TXFFST = 0;

SpiaRegs.SPIFFTX.bit.TXFFINT = 0;
SpiaRegs.SPIFFTX.bit.TXFFINTCLR = 1;
SpiaRegs.SPIFFTX.bit.TXFFIENA = 0;
SpiaRegs.SPIFFTX.bit.TXFFIL = 0;

SpiaRegs.SPIFFRX.bit.RXFFOVF = 0;
SpiaRegs.SPIFFRX.bit.RXFFOVFCLR = 1;
SpiaRegs.SPIFFRX.bit.RXFIFORESET = 1;
SpiaRegs.SPIFFRX.bit.RXFFST = 0;

SpiaRegs.SPIFFRX.bit.RXFFINT = 0;
SpiaRegs.SPIFFRX.bit.RXFFINTCLR = 1;
SpiaRegs.SPIFFRX.bit.RXFFIENA = 0;
SpiaRegs.SPIFFRX.bit.RXFFIL = 0;


SpicRegs.SPIFFCT.all = 0U;
SpiaRegs.SPIPRI.bit.free = 1;

SpiaRegs.SPICCR.bit.SPISWRESET = 1U;
}

void spi_comm (void)

GpioDataRegs.GPBCLEAR.bit.GPIO57 = 1;

while (SpiaRegs.SPISTS.bit.BUFFULL_flag!= 0){
//等待
}

SpiaRegs。 SPITXBUF = 0x8800;

//等待接收到数据
while (SpiaRegs.SPISTS.bit.INT_flag = 0){
}

SPI_DATA_Rx = SpiaRegs。 SPIRXBUF;

while (SpiaRegs.SPISTS.bit.overrid_flag = 1){
SpiaRegs.SPISTS.bit.overrid_flag = 1;
}


GpioDataRegs.GPBSET.bit.GPIO57 = 1;
}

--------------------------------------------------------

连接 CCS 屏幕和原理图。 希望你度过美好的一天。

e2e.ti.com/.../TMS320F28377D.pdf

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

    您好!

    以下是一些建议:

    • 您是否已根据我们的 C2000Ware SDK SPI 示例中的代码/配置? 如果不能、他们将会非常有帮助、首先参考一下、仔细检查您的一些代码。
    • 此外、您是否在内部环回模式下测试了 SPI 模块?
    • 您是否仔细检查了 SPI 线路、以验证全部4条线路的行为是否正确?
    • 您能否仔细检查 TMS320F28377D 和 DRV8353RS 所使用/预期的时钟模式是否匹配

    此致、

    Allison