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:->缺少从器件的 LAUNCHXL-F28379D SPI 示例代码?

Guru**** 2535750 points
Other Parts Discussed in Thread: LAUNCHXL-F28379D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/886456/launchxl-f28379d---launchxl-f28379d-spi-example-code-for-slave-missing

器件型号:LAUNCHXL-F28379D
主题中讨论的其他器件: C2000WARE

大家好

我需要通过 SPI 从一 个 LAUNCHXL-F28379D 向另一 个 LAUNCHXL-F28379D 发送数据。

但是、我很困惑如何将第二 个 LAUNCHXL-F28379D 配置为作为从器件运行、因为主文件中的代码看起来类似于专门用于 Mster 函数的代码。

在名为 SPI_LOOP_cpu01的示例代码之后、我更改了 F2837xDSpi.c 文件中的以下代码元素:

//使能主机(0 =从机、1 =主机)
//使能传输(TALK)
//时钟相位(0 =正常、1 =延迟)
// SPI 中断被禁用
SpiaRegs.SPICTL.bit.MASTER_SLAVE = 0;
SpiaRegs.SPICTL.bit.TALK = 1;
SpiaRegs.SPICTL
= 0;SpiTCLK.SPICTL.bit = 0;Spi_PHASE = 0



然后、我在主 Example_2837xDSpi_FFDLB.c 文件中看到这一点:

void main (void)
{
uint16 sdata;//发送数据
uint16 RDATA;//接收数据

//
步骤1。 初始化系统控制:
// PLL、看门狗、启用外设时钟
//此示例函数位于 F2837xD_sysctrl.c 文件中。
//
InitSysCtrl();

//
步骤2。 初始化 GPIO:
//此示例函数位于 F2837xD_GPIO.c 文件中,
//说明了如何将 GPIO 设置为其默认状态。
//仅为 SPI-A 功能设置 GP I/O
//此函数可在 F2837xD_SPI.c
中找到//
InitSpiaGpio();

//
步骤3。 清除所有中断:
//
DINT;

//
初始化 PIE 控制寄存器到其默认状态。
//默认状态是禁用所有 PIE _interrupts 并
清除标志//。
//此函数位于 F2837xD_PIECTRL.c 文件中。
//
InitPieCtrl();

//
禁用 CPU __interrupts 并清除所有 CPU __interrupt 标志:
//
IER = 0x0000;
IFR = 0x0000;

//
使用指向 shell 中断
//服务例程(ISR)的指针初始化 PIE 矢量表。
//这将填充整个表,即使在
本示例中未使用__interrupt //也是如此。 这对于调试很有用。
//可以在 F2837xD_DefaultIsr.c 中找到 shell ISR 例程
//此函数可在 F2837xD_PieVect.c 中找到
//
InitPieVectTable ();

//
//步骤4。 初始化设备外设:
//
SPI_Fifo_init(); //初始化 SPI FIFO

//
//步骤5。 用户特定代码:
//
sdata = 0x0000;
for (;)
{
//
//发送数据
//
sdata=21;//我们只是想看看这个 fella 是否会发送一些东西,然后我们会恢复计数器功能
SPI_xmit (sdata);

//
//等待数据被接收

while (SpiaRegs.SPIFFRX.bit.RXFFST!=1){}


// 对照已发送的数据进行检查

RDATA = SpiaRegs.SPIRXBUF;
if (RDATA!= sdata)
{
error();
}

}

我应该更改代码的这一部分、以便从器件读取并返回接收到的任何内容?

彻尔

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

    您好!

    driverlib 中提供了一个示例、用于配置2个 SPI 实例-一个在主模式下、另一个在从模式下。 这可能对您有所帮助。

    \driverlib\f2837xd\examples\cpu1\spi\spi_ex3_external_loopback_fifo_interrupts

    此致、

    Veena

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

    您好、Veena、

    非常感谢您的观看!

    您引用的示例适用于 SPI 网络的哪个部分? 主器件还是从器件?

    此外、即使在区分差异之后、您是否知道 CCS 可以让两个电路板同时运行加载的程序并对其进行监控的方法?

    谢谢

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

    您好!

    对延迟答复表示歉意。

    该示例将主模式下的1个 SPI 实例配置为从模式下的另一个 SPI 实例。

    要一次连接2个板、您需要打开2个 CCS 会话。 1个 CCS 会话一次只能连接到一个板。

    为了区分电路板、您可以使用2个不同的 CCXML 文件并在 CCXML 中包含电路板的序列号。 要在 CCXML 中添加序列号,请在 CCS 中打开 CCXML 文件,转至“高级”选项卡,然后选择“调试探针选择”作为“按序列号选择”,然后输入电路板的序列号。 可以通过运行  CCS\ccs_base\con\uscif 文件夹中提供的 xds100serial.exe (如果您使用的是 XDS100仿真器)来找到电路板的序列号

    "调试器选择"的默认值为"仅安装1个 XDS100 "。 此选项假设只有1个器件使用 XDS100仿真器连接到 PC、并随机连接到其中一个电路板。 在 CCXML 中设置序列号将确保 CCS 连接到具有匹配序列号的电路板  

    此致、

    Veena