28335 SPI 接收 FPGA数据
试了好几天,感觉没什么错误啊,我是采用GPIO11接收外部FPGA传来控制命令,GPIO11设置为输入引脚,当其为高电平说明数据已经准备传,随后在FPGA那边按照SPI 时钟依次传8个数到DSP的MISO口,SpiaRegs.SPIFFRX.bit.RXFFST=1时说明装完1个字,再将BUFFER中数据给RDATA,按理说应该没错,可是RDATA就是没反应,编译时警告我RDATA虽然设置了,但是没有用到。求大神指教,点通了也就实现了DSP通过FPGA读数据了,而且可以实时处理,作用超屌的。实在不行,我就考虑用中断试试了。备注:(我这程序是在28335例程中找的,也就是SPI_LOOPBACK的那个,在那个的基础上改的,SPICCR寄存器中禁用了自测模式,GPIO11默认为禁止内部上拉引脚)#include "DSP28x_Project.h" // Device Headerfile and Examples Include File
void delay_loop(void);
void spi_xmit(Uint16 a);
void spi_fifo_init(void);
void spi_init(void);
void error(void);
void main(void)
{
//Uint16 sdata;// send data
Uint16 rdata;// received data
InitSysCtrl();
InitSpiaGpio();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
怎么看不到后面程序了,我再发:
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 0; // GPI11
GpioCtrlRegs.GPADIR.bit.GPIO11= 0; // input
GpioCtrlRegs.GPAQSEL1.bit.GPIO11 = 0;
EDIS;
spi_fifo_init(); // Initialize the Spi FIFO
spi_init(); // init SPI
// Step 5. User specific code:
// Interrupts are not used in this example.
rdata = 0x0000;
for(;;)
{
// Transmit data
while(GpioDataRegs.GPADAT.bit.GPIO11==1)
{
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { }
rdata = SpiaRegs.SPIRXBUF;
}
}
}
void spi_init()
{
SpiaRegs.SPICCR.all =0x000F; // Reset on, rising edge, 16-bit char bits
SpiaRegs.SPICTL.all =0x0006; // Enable master mode, normal phase,
// enable talk, and SPI int disabled.
SpiaRegs.SPIBRR =0x007F;
SpiaRegs.SPICCR.all =0x009F; // Relinquish SPI from Reset
SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission
}
void spi_xmit(Uint16 a)
{
SpiaRegs.SPITXBUF=a;
}
void spi_fifo_init()
{
// Initialize SPI FIFO registers
SpiaRegs.SPIFFTX.all=0xE040;
SpiaRegs.SPIFFRX.all=0x204f;
SpiaRegs.SPIFFCT.all=0x0;
}
我看抓个通信波形后, 再分析问题比较好一些. 可以用示波器或逻辑分析仪 mitianhui9 发表于 2014-7-24 11:48 static/image/common/back.gif
怎么看不到后面程序了,我再发:
EALLOW;
这里是不是写的有问题啊 再排查一下
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { } 试试中断嘛 本帖最后由 raoxianbin 于 2014-8-19 20:46 编辑
警告是编译器的问题,查查FPGA那边的时序吧,记住FPGA那边,当时钟下降沿到达之前,必须把要需要传输的第一位放到MISO上去,不然就不会正确,还有我建议用中断,我之前写没什么问题
页:
[1]