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.

[参考译文] LAUNCHXL-F280049C:2个电路板之间的 SPI 通信问题

Guru**** 2124260 points
Other Parts Discussed in Thread: LAUNCHXL-F280049C, SYSCONFIG, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1237446/launchxl-f280049c-problem-spi-communication-between-2-boards

器件型号:LAUNCHXL-F280049C
主题中讨论的其他器件: SysConfigC2000WARE

您好!

我将学习此微控制器的工作原理、但我在理解如何通过 SPI 正确设置两个 LAUNCHXL-F280049C 之间的通信时遇到问题。  

我想使用 FIFO 中断、从主机向从机传输一个包含11个 uint16_t 类型元素的数组。 我的配置和代码如下(我使用的是 SysConfig)。

 电路板1 TX ISR (主):  

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
__interrupt void spiTxFIFOISR(){
for(i=0; i< dim; i++){
SPI_writeDataNonBlocking(mySPI0_BASE, data[i]);
}
counter++;
SPI_clearInterruptStatus(mySPI0_BASE, SPI_INT_TXFF);
Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP6);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

电路板1 SysConfig:  

 电路板 2 RX ISR (从站):

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
__interrupt void spiRxFIFOISR(){
for (i = 0; i< dim; i++){
data[i] = SPI_readDataNonBlocking(mySPI0_BASE);
}
counter++;
SPI_clearInterruptStatus(mySPI0_BASE, SPI_INT_RXFF);
Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP6);
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

电路板2 SysConfig:  

(请注意、我已经启用并重新映射了 main 的设置部分中的两个中断、这些中断不存在于显示的代码中)

我希望能正确接收我要在从机上发送的数据数组、但我看到的是、同一个数组在每次接收中断迭代时都已损坏。 您能解释一下我做错了什么吗? 我遵循 TI 为 SPI 通信提供的示例、但不明白我的错误在哪里。

左侧是我正在发送的阵列、右侧是我接收的阵列。

提前感谢您 。

此致、

埃多阿尔多

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

    尊敬的 Edoardo:

    您是否试用过 C2000ware 示例? 有一个示例使用来自单个 LaunchPad 的2个 SPI 实例。 您能否尝试这样做以确保在 TX 和 RX 中没有问题?

    关于您使用2个 LaunchPad 的设置、请确保 SPI 引脚连接正确、都具有公共接地等。

    此致、

    维纳

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

    尊敬的 Veena:  


    感谢您的答复。

    我尝试了 C2000ware 示例中 SPI 的 ex4、并发现 我遇到的问题是 SysConfig 方面的。 我错误地设置了 FIFO 中断电平、这是因为我之前为接收器和发送器设置了相同的电平(11/16、因为我正在发送一个16元素数组)。  通过将 发送器 FIFO 电平配置为5/16并将接收器 FIFO 电平配置为11/16、我正在正确地接收数据、而数据未被分流。

    但我真的不明白为什么。 我知道、中断会在相关 FIFO 包含许多等于该级别定义的元素时触发。 例如、如果 TX FIFO 中断级别为11/16、则在 TX FIFO 中有11个元素时中断本会被调用、根据同样的思路、如果 RX FIFO 中断级别为11/16、 当 RX FIFO 内部有11个元件时、中断会被触发。

    您能告诉我在哪里误解了这个概念吗?  

    提前感谢您。  

    此致、  

    埃多阿尔多

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

    在 TX FIFO 侧、TXFFIL= 11、当缓冲区中剩余11个或更少的字时将获得中断。 例如、如果你已经填充缓冲区已满(16个字)、中断在发送5个字后被触发。 5个字之后、TX FIFO 将包含11个字、这会触发中断。

    此致、

    维纳

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

    尊敬的 Veena:  

    感谢您的答复。 现在一切都很清楚、我了解它应该如何工作。

    此致、  

    埃多阿尔多