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.

[参考译文] TMS570LS0432:两个 TMS570处理器之间的 SPI

Guru**** 2484615 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/731608/tms570ls0432-spi-between-two-tms570-processors

器件型号:TMS570LS0432
主题中讨论的其他器件:HALCOGEN

您好!

我  使用两个 SPI 端口在单个 LaunchXL 板中试用了"example_spi_Master_Slave.c"、它工作正常。

现在、我想在两个不同的 LaunchXL 板中重复同一项研究。 基本上、我在不同的电路板上进行了相同的引脚连接、我将 halcogen 配置和代码(在示例中给出)分为两个电路板。 虽然该示例在单个电路板上工作正常、但它不工作... 我在 RX_Data_Salve 寄存器中有一个零数组、在 RX_Data_Master 寄存器中有65535个零数组。

使用 SPI1将板1设置为主板、使用 SPI2寄存器将第二个板设置为从板。

我将在下面提供引脚连接、halcogen 配置和代码。

谢谢。

小部分

我进行了如下引脚连接:

 --------       --------
 SPI1 (主器件)   SPI2 (从器件)
 --------       --------
 SIM0      -->   SIMO
 S0MI     <-- SOMI     
 CLK      -->   CLK
 CS0      -->   CS0

小部分 一

n GUI 配置、在中、我仅选择了主板中的 SPI1、并将其他所有内容保留为默认值。、

在从板中、  

  • 只在从板中选择了 SPI2、
  • 在"过孔通道"选项卡中启用 SPI2 0级和1级通道。
  • 在 SPI2全局选项卡中未检查主模式和内部时钟。
  • 在 SPI2端口选项卡中取消选中 CS 0的 DIR。

小图标

主器件中的代码为:

#include "sys_common.h"
#include "system.h"
#include "spi.h"
UINT16 TX_Data_Master[16]={0x01、0x02、0x03、0x04、0x05、 0x06、0x07、0x08、0x09、0x0A、 0x0B、0x0C、0x0D、0x0E、0x0F、 0x10};
UINT16 RX_Data_Master[16]={0};
void main (void)
  spiDAT1_t 数据通信 fig1_t;
  dataconfig1_t.CS_hold = false;
  dataconfig1_t.WDEL  = true;
  dataconfig1_t.DFSEL  = SPI_FMT_0;
  dataconfig1_t.CSNR  = 0xFE;
  _enable_IRQ ();
  spiInit();
  TransmitAndReceiveData (spiREG1、&dataconfig1_t、16、TX_Data_Master、RX_Data_Master);
  while (1);
小部分
从器件端的代码如下所示:
#include "sys_common.h"
#include "system.h"
#include "spi.h"
UINT16 TX_Data_Slave[16]={0x11、0x12、0x13、0x14、0x15、 0x16、0x17、0x18、0x19、0x1A、 0x1b、0x1C、0x1D、0x1E、0x1F、 0x20};
UINT16 RX_Data_Slave[16]={0};
void main (void)
  spiDAT1_t 数据通信 fig1_t;
  dataconfig1_t.CS_hold = false;
  dataconfig1_t.WDEL  = true;
  dataconfig1_t.DFSEL  = SPI_FMT_0;
  dataconfig1_t.CSNR  = 0xFE;
  _enable_IRQ ();
  spiInit();
  SendspiAndGetData (spiREG2、&dataconfig1_t、16、TX_Data_Slave、RX_Data_Slave);
  while (1);
小部分
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!
    您能否检查在 PINMUX 选项卡的从器件上是否已选中 SPI2复选框? 如果未选中、请执行此操作。 还要检查 SPI2-->SPI2端口选项卡中所有引脚的方向、SPI2 SOMI 应为输出、SPI2 SIMO -输入、SPI2 CLK -输入、SPI CS0 -输入。

    您是否检查了主器件是否在总线上输出数据?

    此致、
    米罗

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

    在 pinmux 选项卡中检查 SP2。

    引脚的方向如下所示:
    主器件:SOMI 输入、SIMO 输出、CLK 输出、CS (0)输出。
    从器件:SOMI 输出、SIMO 输入、CLK 输入、CS (0)输入。

    我使用示波器检查了主器件的输出、直到我可以看到它是恒定的3.3V。从器件的输出是0V

    此致。

    Turev。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    请在主设备发送数据之前检查从设备是否就绪。
    您应查看已从主服务器发送的范围数据。 如果示波器未捕获来自主器件的任何信号、请检查其设置。
    您能否发送您的 HALCoGen 项目(主从)以便我查看它?

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

    e2e.ti.com/.../0638.SPI-Master-Slave.zipHello、

    我找不到如何检查从器件的状态? 此外、我猜我看不到主引脚或从引脚发出的任何有意义的信号。 顺便说一下、当我在单个电路板上尝试主从示例时、我也没有获得任何信号。 但示例的作用是、我可以在 RX 缓冲区中看到 TX 数据。

    我包含下面的.hcg 文件。

    此致、

    Turev

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您的 HALCoGen 版本是哪一个?
    打开您发送的文件后、我发现了许多问题。 就像两个器件都设置为主器件(以及许多其他差异)一样。 我想知道 HALCoGen 版本是否存在问题。

    此致、
    米罗
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您是否也可以附加*。DIL 文件?

    此致、
    米罗
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您是否取得了进展?

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

    e2e.ti.com/.../8686.DILs.zipHello、

    我更改了代码以在"while"内发送和接收数据。 那么我可以看到有意义的数据信号。 RX 缓冲器仍然相同、一个为 零、一个为0xFFFFFFs。 我猜问题 可能与时序有关。

    我的 Halcogen 版本是4.06.00。 我的 Halcogen 设置与示例中的设置相同、但我将再次检查。 我要连接.DIL

    此致。

    Turev

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Turev、
    我已打开您发送的 HALCoGen 项目。
    请检查布线中的以下内容(我假设您使用两个完全相同的 TMS570LS04x/03x LaunchPad):
    主器件:
    J1.7 -> MIBSPI1CLK
    J10.16 -> MIBSPI1nCS[0]
    J2.6 --> MIBSPI1SIMO -此函数必须由 J9选择
    J2.7 --> MIBSPI1SOMI -此函数必须由 J8选择

    从属方:
    J10.24 -> SPI2CLK
    J10.21 -> SPI2CS
    J10.23 -> SPI2SIMO
    J10.22 -> SPI2SOMI

    在 HALCoGen 中、执行以下操作:
    主器件:
    SPI1全局选项卡
    启用 RxINT;

    SPI1端口选项卡:
    使 SPI1ENA GIO;
    使 SPI1SCS[3] GIO;
    使 SPI1SCS[2] GIO;
    使 SPI1SCS[1] GIO;

    VIM 通道0-31选项卡
    启用 MIBSPI 0级和1级中断;


    从属方:
    SPI2全局选项卡:
    启用 RxINT;

    使 SPI2 SCS[3] GIO;
    使 SPI2 SCS[2] GIO;
    使 SPI2 SCS[1] GIO;

    配置 HALCoGen 并检查布线后、请更改代码以确保主设备在从设备打开并初始化后发送数据。 您可以检查是否按下按钮、然后发送数据。 如果您使用此方法、请小心按钮弹跳。 您也可以使用 ENA 引脚。 Bu 我更喜欢从按钮开始。

    示波器:您可以使用单触发模式使用 CS0的下降沿触发示波器。

    但愿这对您有所帮助。

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

    这奏效了。

    Turev。