请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28377D 工具/软件:Code Composer Studio
在下面经过适度修改的 SPI_loopback 示例中、代码永远不会退出 while (SpiaRegs.SPIFFRX.bit.RXFFST!= 1){}loop。
我可以告诉代码是正确的(通过提供的示例)。 我错过了什么?
代码:
#include
#include "F28x_Project.h"
void SPI_Fifo_init (void);
void SPI_xmit (uint16 a);
void error (void);
void main (void)
{
InitSysCtrl();
InitSpiaGpio();
Dint;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
uint16 RDATA、sData = 0x0000;
while (1)
{
SPI_xmit (sData);
while (SpiaRegs.SPIFFRX.bit.RXFFST!= 1)
{
PUT ("等待 RX 位");
}
RDATA = SpiaRegs.SPIRXBUF;
if (RDATA!= sData)
{
PUT ("错误");
}
PUT ("无错误");
sData++;
}
}
void SPI_Fifo_init()
{
//初始化 SPI FIFO 寄存器
SpiaRegs.SPIFFTX.ALL = 0xE040;
SpiaRegs.SPIFFRX.ALL = 0x2044;
SpiaRegs.SPIFFCT.all = 0x0;
//初始化内核 SPI 寄存器
InitSpi();
}
void 错误(void)
{
asm ("ESTOP0"); //测试失败!! 停下来!
对于(;;);
}
void SPI_xmit (uint16 a)
{
SpiaRegs.SPITXBUF = A;
}
好的、
Graham