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

DSP28335,使用spi与外接键盘面板通信问题求助

外接键盘使用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引脚能测到高低电平变化呢?

赞(0)
未经允许不得转载:TI中文支持网 » DSP28335,使用spi与外接键盘面板通信问题求助
分享到: 更多 (0)