主题中讨论的其他器件: 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();
}
}
我应该更改代码的这一部分、以便从器件读取并返回接收到的任何内容?
彻尔