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-F28379D:F28379D 和 Arduino 之间的 SPI 通信

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/992753/launchxl-f28379d-spi-communication-between-f28379d-and-arduino

器件型号:LAUNCHXL-F28379D

尊敬的所有人:

你好

我尝试 在 F28379D 和 Arduino 之间进行 SPI 通信。

F28379D (从属)  Arduino (主控/SPI_Cock=1M Hz)  

我发现进入 INTERRUPT_ISR (f28379d)的次数超过 Arduino 发送的数据数。

我使用 interrupt_ISR 中的系统配置时钟和计数器来计算数字。

通过"暂停"按钮、我可以得到计数器的数量以及该时间内的时钟数量。

[ 计数器数量 / ( 时钟数量*9*10^(-9) ) =一秒内计数器数量]

我认为问题是我的螺旋状。


Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void main(void)
{
//
// Step 1. Initialize System Control:
//
InitSysCtrl();
//
// Step 2. Initialize GPIO:
//
SpicInitGpio();
//
// Step 3. Initialize PIE vector table:
// Disable and clear all CPU interrupts
//
DINT;
IER = 0x0000;
IFR = 0x0000;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

我应该更改此代码部分的哪一部分?

或者 我的计算错误?  

如果您能帮我解决问题、我将不胜感激。

此致、

Jessie

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

    Jessie、您好!

    您是否曾尝试使用示波器验证从 Arduino 输出的数据? 在 F28379D 上接收到的数据是否存在问题?

    通常情况下、数据不会从 SPIDAT 中读取、因为这是发送和接收移位寄存器、数据应从 SPIRXBUF 寄存器中读取。

    TX FIFO 中的每个 FIFO 都启用了2级 FIFO、这意味着只有当 RXFFST 大于或等于 RXFFIL (设为2个字)时、RX ISR 才会执行。 这正是您所期望的吗?

    此致、

    Marlyn

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

    如果我不向 主器件(Arduino)传输数据、我仍然设置 TXFFIENA 和 TXFFIL?

    此致、

    Jessie

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

    Jessie、您好!

    如果您没有写入发送缓冲区、则不会产生发送中断、因为 FIFO 的条件将不会满足。 您还将 TXFFIENA 位设置为0、以禁用 TX 中断、因此我认为这不会影响您看到的内容。   

    正如我之前所说的、您是否尝试使用示波器来验证从 Arduino 输出的数据? 在 F28379D 上接收到的数据是否存在问题?

    此致、

    Marlyn