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.

[参考译文] TMS320F28388D:通过从器件的 SPI 接收24位 SPI 通信

Guru**** 2589265 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1166023/tms320f28388d-spi-communication-receiving-24bit-via-spi-from-slave

器件型号:TMS320F28388D

你(们)好

uint16_t READ_DATA[3]={0};
uint16_t RDATA=0;
uint16_t TXRXError=0;
uint32_t sData32=0、rData32=0;

SPI 配置如下

SPI_disableModule (mySPI0_BASE);

SPI_setConfig (mySPI0_BASE、DEVICE_LSPCLK_FREQ、SPI_PROT_POL0PHA0、SPI_MODE_MASTER、1000000、8);
SPI_enableFIFO (mySPI0_BASE);
SPI_setTxFifoTransmitDelay (mySPI0_BASE、0);  
SPI_DisableHighSpeedMode (mySPI0_BASE);
// SPI_enableLoopback (mySPI0_BASE);
SPI_disableLoopback (mySPI0_BASE);
SPI_enableTalk (mySPI0_BASE);
SPI_DisableInterrupt (mySPI0_BASE、SPI_INT_TXFF);
SPI_setEmulationMode (mySPI0_BASE、SPI_emulation_free_run);///!set、这样断点不会干扰 xmission
SPI_enableModule (mySPI0_BASE);

主器件可以 通过验证 从器件的第二个响应来验证从器件接收到的数据是否正确。

我 将向从器件发送相同的24位数据两次、以从 器件获得24位的响应。 我正在比较前24位发送数据与第二次接收到的24位数据、但我没有得到正确的数据。

我在接收数据时缺少一些内容。

SPI_transmit24Bits (mySPI0_BASE、sData32、0);
SPI_transmit24Bits (mySPI0_BASE、sData32、0);
Read_data[0]= SPI_readRxEmulationBuffer (mySPI0_BASE);
Read_data[1]= SPI_readRxEmulationBuffer (mySPI0_BASE);
Read_data[2]= SPI_readRxEmulationBuffer (mySPI0_BASE);

RDATA = READ_DATA[1]<<8;
RDATA = RDATA | READ_DATA[2];

提前感谢

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

    您好、Aruna、

    我们的主题专家目前不在办公室、将在下一工作日返回给您。

    此致、

    Ryan Ma

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

    如果您尝试从目标(从器件)接收24位数据、为什么要使用 SPI_transmit24Bits 函数?

    是否正在尝试传输 sData32变量的内容?

    您是否已经在 SPI_ex6_EEPROM 示例中查看了 ReadData 函数?

    此致、

    曼诺伊

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

    如果您尝试从目标(从器件)接收24位数据、为什么要使用 SPI_transmit24Bits 函数?

    答:我想向从器件发送24位数据、同时希望从器件接收24位响应。 因此、我将使用 SPI_transmit24Bits 函数来传输数据。

    是否正在尝试传输 sData32变量的内容?

    答案:是。这里还有一个问题、左对齐24位数据将被传输 、右对齐24位数据将被传输吗?

    您是否已经在 SPI_ex6_EEPROM 示例中查看了 ReadData 函数?

    我还有一个问题是何时使用 启用 FIFO 的 SPI 或何时不使用?

    提前感谢

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

    阿鲁纳

    对于同时发送和接收、您可以使用以下功能

    对于发送/接收24位、您需要设置 charLength = 8、numofWords = 3 (8位 x 3 = 24位)

    [引用 userid="510749" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1166023/tms320f28388d-spi-communication-receiving-24bit-via-spi-from-slave/4389848 #4389848"]我还有一个问题:何时使用 启用 FIFO 的 SPI 或何时不使用?

    通常、添加 FIFO 以降低 SPI 产生 CPU 中断的频率。 如果使用轮询选项、则无需担心。

    此致、

    曼诺伊