TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28335: 大佬们,我想问一下,我的这个SPI配置有问题吗?理论上应该是发送和接收是一样的数据呀

Part Number:TMS320F28335Other Parts Discussed in Thread:C2000WARE

为啥我这Rxbuf的数据始终比上一个数据大255?理论上Tx的数据应该跟Rx是一样的。

#########主函数
void main()
{int i=0;
//Uint16 senddata=0;
//Uint16 recdata=0;char str[40];InitSysCtrl();InitPieCtrl();IER = 0x0000;IFR = 0x0000;InitPieVectTable();

//LED_Init();
//TIM0_Init(150,200000);//200msUARTa_Init(4800);SPIA_Init();while(1){i++;if(i%500==0)//500次后,进入下面发送,该句作用就是延时。避免SPI数据发送太快,串口崩溃{recdata=SPIA_SendReciveData(senddata++);sprintf(str,"senddata=%drecdata=%d\r\n",senddata,recdata);UARTa_SendString(str);}DELAY_US(1000);}

}
#############SPI配置
void SPIA_Init(void)
{EALLOW;SysCtrlRegs.PCLKCR0.bit.SPIAENCLK = 1;// SPI-AEDIS;InitSpiaGpio();SpiaRegs.SPICCR.bit.SPISWRESET = 0; //复位SPISpiaRegs.SPICCR.all = 0x0047;//SPI软件将极性位重置为1(沿下降沿发送数据),每次移动8位字长,并禁止SPI内部环回(LOOKBACK)功能;SpiaRegs.SPICTL.all = 0x0006;// 启用主模式,正常相位, // 开启通话,关闭SPI接口。SpiaRegs.SPISTS.all = 0x0000;//溢出中断,禁止SPI中断;SpiaRegs.SPIBRR = 0x001F;//SPI波特率=37.5M/24=1.5MHZ;SpiaRegs.SPIPRI.bit.FREE = 1;//设置断点以免干扰执行SpiaRegs.SPICCR.bit.SPISWRESET = 1; //使能SPI

}
Uint16 SPIA_SendReciveData(Uint16 dat)//16位数据收发函数
{SpiaRegs.SPITXBUF=dat;//SpiaRegs.SPITXBUF=(dat<<8);while(SpiaRegs.SPISTS.bit.INT_FLAG != 1);{}  //Wait until data is receivedreturn SpiaRegs.SPIRXBUF;
}

Ben Qin:

你好,请先参考下C2000ware中的这个例程:

C2000Ware\device_support\f2833x\examples\spi_loopback_interrupts

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28335: 大佬们,我想问一下,我的这个SPI配置有问题吗?理论上应该是发送和接收是一样的数据呀
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1