线程中讨论的其他部件:DRV8711, TMS320F2.8035万, LAUNCXL-F2.8379万D
工具/软件:Code Composer Studio
您好,
我在F2.8035万作为主服务器和F2.8379万DZ作为从服务器之间进行了一个小SPI测试。 我的联系人是从主的SIMO到从的SIMO,从主的SCLK到从的SCLK,从主的SPISTE到从的SPISTE。 两个委员会有着共同的基础。 所有SPI连接的电压均为3.3V。
主代码:
UINT16 sdata= 0x0001;
对于(;;)
{
SpiaRegs.SPITXBUF=sdata;
while (SpiaRegs.SPIFFRX.bit.RXFFST !=1){}
sdata++;
delay_loop();
}
void delay_loop()
{
长I;
用于(i = 0;i < 1000万;I++){}
}
void spi_fifo_init()
{
//初始化SPI FIFO寄存器
SpiaRegs.SPICCR.bit.SPISWRESET=0;//重置SPI
SpiaRegs.SPICCR.all=0x000F;//16位字符,环回模式
SpiaRegs.SPICTL.All=0x0017;//启用中断,启用主/从Xmit
SpiaRegs.SPISTS.all=0x0000;
SpiaRegs.SPIBRR=0x0063;//波特率
SpiaRegs.SPIFFTX.all=0xC022;//启用FIFO,将TX FIFO级别设置为4
SpiaRegs.SPIFFRX.all=0x0022;//将RX FIFO级别设置为4
SpiaRegs.SPIFFCT.All=0x00;
SpiaRegs.SPIPRI.All=0x0010;
SpiaRegs.SPICCR.bit.SPISWRESET=1;//启用SPI
SpiaRegs.SPIFFTX.Bit.TXFIFO = 1;
SpiaRegs.SPIFFRX.Bit.RXFIFORESET=1;
}
从属代码:
void spi_fifo_init()
{
//初始化SPI FIFO寄存器
SpiaRegs.SPICCR.bit.SPISWRESET=0;//重置SPI
SpiaRegs.SPICCR.all=0x000F;//16位字符,环回模式
SpiaRegs.SPICTL.All=0x0013;//启用中断,启用主/从Xmit
SpiaRegs.SPISTS.all=0x0000;
SpiaRegs.SPIBRR.All=0x0063;//波特率
SpiaRegs.SPIFFTX.all=0xC022;//启用FIFO,将TX FIFO级别设置为4
SpiaRegs.SPIFFRX.all=0x0022;//将RX FIFO级别设置为4
SpiaRegs.SPIFFCT.All=0x0000;
SpiaRegs.SPIPRI.All=0x0010;
SpiaRegs.SPICCR.bit.SPISWRESET=1;//启用SPI
SpiaRegs.SPIFFTX.Bit.TXFIFO = 1;
SpiaRegs.SPIFFRX.Bit.RXFIFORESET=1;
}
中断无效spiRxFifoIsr (无效)
{
RDATA=SpiaRegs.SPIRXBUF;//读取数据
SpiaRegs.SPIFFRX.Bit.RXFFOVFCLR=1;//清除溢出标志
SpiaRegs.SPIFFRX.Bit.RXFFINTCLR=1;//清除中断标志
PieCtrlRegs.PIEACK.all|=0x20;//发出pie ack
}
//////////////////////////////////////////////////////////////////////////////
主代码(F2.8035万)永远等待While (SpiaRegs.SPIFFRX.bit.RXFFST!=1){}循环,而从代码从不接收RDATA中的任何内容。
信号在Picoscope上永远都是3.3 V。 以前我使用F2.8035万驾驶DRV8711,相同的SPI编码也适用于我。
我在这里错过了什么吗? 可能在连接上?
谢谢!
Nihit Shah