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.

[参考译文] F28M35H52C:F28M35和 F28335之间的 SPI 通信。

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/686634/f28m35h52c-spi-communication-between-f28m35-and-f28335

器件型号:F28M35H52C

你好。

我尝试在 F28M35和 F28335之间与 SPI 建立通信、但无法完成。

以下是我使用的主要源文件:

e2e.ti.com/.../spi_5F00_f28m35.ce2e.ti.com/.../spi_5F00_f28335.c

我正在使用两个扩展坞、并分别将    F28M35的 GPIO16、GPIO17、GPIO18和 GPIO19与   F28335的 GPIO16、GPIO17、GPIO18和 GPIO19相连。 我还在两个扩展坞之间连接了 GND、我没有忘记 F28M35 MUX 的22、23、24和25引脚中的跳线。

要对此进行调试、在 SPI_F28335.c 中、我在语句 RDATA = SpiaRegs.SPIRXBUF 中放置了一个断点、并让该 MCU 运行。 然后、我在 SPI_f28m35.c 中执行了 SPI_xmit (sdata)一句、并希望看到 F28335达到断点、但没有发生。 下一幅图像显示了这一点:

我尝试 使用 示波器从 SPICLKA (GPIO18)获取 clk 信号、但似乎没有任何结果。 我对我应该如何使用 M3有一些疑问。 我想我必须执行此操作才能让 F28M35中的 C28控制 GPIO16、 GPIO17、 GPIO18和 GPIO19、但当我执行此操作时、它刚刚中断:

GPIOPinConfigureCoreSelect (GPIO_PORTD_base、GPIO_PIN_0、GPIO_PIN_C_CORE_SELECT);
GPIOPinConfigureCoreSelect (GPIO_PORTD_base、GPIO_PIN_1、GPIO_PIN_C_CORE_SELECT);
GPIOPinConfigureCoreSelect (GPIO_PORTD_base、GPIO_PIN_2、GPIO_PIN_C_CORE_SELECT);
GPIOPinConfigureCoreSelect (GPIO_PORTD_base、GPIO_PIN_3、GPIO_PIN_C_CORE_SELECT);
让我怀疑的另一件事是我测量的电压。 我使用连接到 PC 的微型 USB 电缆为 F28M35供电、以便对其进行调试。 在扩展坞的 GND 和3V3引脚之间、我有330mV、在 GND 和5V 引脚之间、我有380mV。
我希望你能尽快给我一个手。 提前感谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好。

    在 SPI_f28m35.c 文件中、请在 GPIO 多路复用器配置之前放置一个 EALLOW;。 这将禁用 GPIO 控制寄存器上的写保护、并允许 CPU 访问对其进行修改。

    -Mark
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在发布此主题后就意识到了这一点、但它仍然不起作用。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我发现问题是什么。 我必须添加 SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);在将引脚控制从 M3内核分配给 C28之前、代码最终如下所示:

    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
    GPIOPinConfigureCoreSelect (GPIO_PORTD_base、GPIO_PIN_0、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_PORTD_base、GPIO_PIN_1、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_PORTD_base、GPIO_PIN_2、GPIO_PIN_C_CORE_SELECT);
    GPIOPinConfigureCoreSelect (GPIO_PORTD_base、GPIO_PIN_3、GPIO_PIN_C_CORE_SELECT);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很棒! 是的,您需要启用 GPIO 端口:)

    -Mark