外接键盘使用74ls165来扩展8个按键,两个74HC595驱动数码管显示,目前spi配置程序及主程序如下:
SpiaRegs.***.all =0x0087; // Reset on, rising edge, 16-bit char bits
SpiaRegs.***.all =0x000E; // Enable master mode, normal phase,
// enable talk, and SPI int disabled.
SpiaRegs.SPIBRR =0x0079;
SpiaRegs.***.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,困扰很久了一直解决不了,恳请帮帮忙!万分感谢!
Green Deng:
打星号的寄存器是什么意思?你的SPI是使用的FIFO模式吗?是的话建议看看是否存在一样的问题,排除硬件问题。
在FIFO模式下,可以更改FIFO Level看看问题是否存在,建议顺便检查对应的SPIFFRX寄存器的值,查看相关状态或标志,了 解当前状况。
另外,注意检查一下硬件,极有可能是硬件问题导致的。
user6223461:
回复 Green Deng:
谢谢,您好,打星号的从上至下分别是这几个寄存器SPICCR、CTL、CCR,使用了FIFO模式,但是没有使用FIFO的接收和发送中断,没使用中断的情况下还需要修改FIFO Level吗? 如果是硬件问题的话,为什么我按键按下以后在DSP的SOMI引脚能测到高低电平变化呢?
TI中文支持网



