This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

F28388D SPI发送多个BYTE,产生一次SPISTEB

Other Parts Discussed in Thread: C2000WARE

F28388D SPI 发送10个8bit数据,怎么让它产生一次SPISTEB(片选),是通过SPI中断加FIFO吗?

  • 是的,您可以设置FIFO接收中断为N个字节时产生中断。设置以后,每接收到N个字节后才会产生一次中断,而不是每接收一次产生一次中断。

    具体您可以参考 相关的例程 C2000Ware_3_03_00_00\driverlib\f2838x\examples\c28x\spi
  • C2000Ware_3_03_00_00\driverlib\f2838x\examples\c28x\spi\spi_ex3_external_loopback_fifo_interrupts中的该示例的SPISTEB(片选GPIO27)信号出不来,请帮忙看一下。把片选GPIO27设为普通的GPIO是可以的出现高低电平的。
  • “该示例的SPISTEB(片选GPIO27)信号出不来,请帮忙看一下。”

    能否请您详细描述一下?您是直接使用的TI例程?
  • 示例:C2000Ware_3_03_00_00\driverlib\f2838x\examples\c28x\spi\spi_ex3_external_loopback_fifo_interrupts
    现象:SPIB(MOSI:GPIO24,MISO:GPIO25,CLK:GPIO26,STE:GPIO27),程序下载到FLASH或者RAM中,MOSI:GPIO24,CLK:GPIO26这两个PIN脚有信号出来,STE:GPIO27这个PIN脚没有信号。将SPIA和SPIB对应的PIN对应的PIN脚连接起来,在CCS dug模式下Expression中观察主从双方发送和接受的数据一致,示波器量去测量STE PIN脚没有信号。当我拔掉STE这根线时,程序停止在 ESTOP0这里。再次将STE线接起来,程序重启,运行,会一直停在 ESTOP0这里。如果想让程序正常运行,需要重新下载程序dug.
    for(i = 0; i < 2; i++)
    {
    if(rData[i] != (rDataPoint + i))
    {
    // Something went wrong. rData doesn't contain expected data.
    ESTOP0;
    }
    }
  • SPISTEB(片选GPIO27)信号一直被拉低
  • 您好,这个问题已经解决了,将spi接收和发送的函数从SPI中断函数中提取到Main或者timer中断中,然后屏蔽中断注册函数。
    应该是FIFO中断是个硬件中断,不需要单独放到SPI中断中。如果您有什么补充,可以回复我一下。
    // Interrupt_enable(INT_SPIA_RX);
    // Interrupt_enable(INT_SPIB_TX);
  • 谢谢您的分享!

    “将spi接收和发送的函数从SPI中断函数中提取到Main或者timer中断中”

    您可以参考一下下面的帖子以及例程中的写法

    e2e.ti.com/.../532430