外接键盘使用74ls165来扩展8个按键,两个74HC595驱动数码管显示,目前spi配置程序及主程序如下:
SpiaRegs.SPICCR.all =0x0087; // Reset on, rising edge, 16-bit char bits
SpiaRegs.SPICTL.all =0x000E; // Enable master mode, normal phase,
// enable talk, and SPI int disabled.
SpiaRegs.SPIBRR =0x0079;
SpiaRegs.SPICCR.all =0x008F; // Relinquish SPI from Reset
SpiaRegs.SPIPRI.bit.FREE = 1; // Set so breakpoints don't disturb xmission
SpiaRegs.SPIFFTX.all=0xE040;
SpiaRegs.SPIFFRX.all=0x204f;
SpiaRegs.SPIFFCT.all=0x0;
for(;;)
{
SpiaRegs.SPITXBUF = 0x00; //0x1F5B;
GpioDataRegs.GPADAT.bit.GPIO19 = 0;
DELAY_US(10); //delay_loop();
GpioDataRegs.GPADAT.bit.GPIO19 = 1;
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { }
sdata = SpiaRegs.SPIRXBUF<<8;
SpiaRegs.SPITXBUF = 0x00;
while(SpiaRegs.SPIFFRX.bit.RXFFST !=1) { }
rdata= SpiaRegs.SPIRXBUF;
xmy= sdata + rdata;
}
}
能够正常发送想要显示的数到数码管上,但是全速运行时,按键在按下后从CCS中看SPIRXBUF寄存器一直显示是0xFFFF没有变化,RXFFST也没有显示有数据接收到。单步运行时,在DSP向spi发送一个数的同时,RXFFST会显示1,此时SPIRXBUF的值是0xFFFF,通过按下按键时用示波器测量SPI的SOMI引脚是有高低电平变化有数据的,但是为什么在SPIRXBUF中一直是0xFFFF,困扰很久了一直解决不了,恳请帮帮忙!万分感谢! |