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.

[参考译文] TMS320F28377S:SPI 无法传输数据

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/959829/tms320f28377s-spi-could-not-transmit-data

器件型号:TMS320F28377S

尊敬的 TI 工程师:

我想使用 SPI 来控制名为 CAT25256的 EEPROM。 我根据基准进行配置。 但无法成功发送数据。 尽管克力似乎没有问题。  sEE25256Init 中出现问题。

请帮帮我。 期待您的回复。

//step1。
SpicRegs.SPICCR.bit.SPISWRESET = 0;//复位状态、清除 SPI 标志

//step2。
SpicRegs.SPICTL.bit.MASTER_SLAVE = 1;//主设备

SpicRegs.SPICCR.bit.SPILBK = 0;

SpicRegs.SPICCR.bit.CLKPOLARITY = 0;//在上升沿输出、在下降沿输入
SpicRegs.SPICTL.bit.CLK_PHASE = 0;

SpicRegs.SPIBRR.bit.SPI_BIT_RATE = 99;// 200m /4 (默认值)/100 = 500K

SpicRegs.SPICCR.bit.HS_MODE = 0;//禁用高速模式

SpicRegs.SPICCR.bit.SPICHAR = 0x07;//将8位移位为字符、拟合 EEPROM

SpicRegs.SPIPRI.bit.TRIWIRE = 0;//4线模式

SpicRegs.SPIFFTX.bit.SPIFFENA=1;//启用 SPI FIFO 增强功能

SpicRegs.SPIFFTX.bit.TXFFINTCLR = 1;//清除 TXFFINT 标志
SpicRegs.SPIFFRX.bit.RXFFINTCLR = 1;//清除接收 FIFO 中断标志
SpicRegs.SPIFFRX.bit.RXFFOVFCLR = 1;//清除溢出标志

SpicRegs.SPIFFTX.bit.TXFIFO = 1;//释放发送和接收 FIFO 复位
SpicRegs.SPIFFRX.bit.RXFIFORESET = 1;

SpicRegs.SPIFFTX.bit.SPIRST = 1;

//step3。
SpicRegs.SPICTL.bit.OVERRUNINTENA=0;//禁用接收器溢出中断
SpicRegs.SPICTL.bit.SPIINTENA=0;//禁用 SPI 中断


SpicRegs.SPIFFTX.bit.TXFFIL = 0;当 TX 缓冲区中剩余16个字或更少时、会生成//TX FIFO 中断。
SpicRegs.SPIFFRX.bit.RXFFIL = 0;

SpicRegs.SPIFFTX.bit.TXFFIENA=0;//禁用 FIFO TX INT
SpicRegs.SPIFFRX.bit.RXFFIENA=0;//禁用 Rx FIFO 内部

//step4。
SpicRegs.SPICTL.bit.TALTANG=1;//启用传输
SpicRegs.SPIFFCT.All=0;//字符之间无延迟

SpicRegs.SPICCR.bit.SPISWRESET = 1;

/******** /

e2e.ti.com/.../BLUE.7z

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

    您好!

    引脚是否有可能由某些外部源驱动为低电平? 只需确保、如果可能、是否可以从 EEPROM 断开 SIMO 引脚并检查数据是否输出?

    此致、

    Veena

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

    您好!

    Veena、我知道 SPI 无法成功发送数据的原因。 因为我将长度设置为8位。 因此、我必须在数据发送时将数据移位为高8位。 这样、SPI 可以正常发送数据。  

    但是、在我将数据写入 EEPROM 后、我从 EEPROM 中读取的数据总是会被关闭。  

    因此、我应该检查它的发生原因。

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

    您好!

    Veena、我发现 clk 信号和 mosi 数据同时生成。 我怀疑这是否正确?

    因为 EEPROM 和28377之间的通信仍然存在问题。

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

    您好!

    这是可配置的。 更多详细信息、请参阅器件 TRM 中的"SPICLK 信号选项"图。

    您可以将 CLK 信号的极性和相位配置为 WRT 至 MOSI 信号。 在您的代码片段中、我看到您配置了极性=0和相位=0、这意味着输出数据在 CLK 的上升沿期间生成而不会有延迟。

    此致、

    Veena