Other Parts Discussed in Thread:C2000WARE
F28388D SPI 发送10个8bit数据,怎么让它产生一次SPISTEB(片选),是通过SPI中断加FIFO吗?
Susan Yang:
是的,您可以设置FIFO接收中断为N个字节时产生中断。设置以后,每接收到N个字节后才会产生一次中断,而不是每接收一次产生一次中断。
具体您可以参考 相关的例程C2000Ware_3_03_00_00\driverlib\f2838x\examples\c28x\spi
,
user5363809:
C2000Ware_3_03_00_00\driverlib\f2838x\examples\c28x\spi\spi_ex3_external_loopback_fifo_interrupts中的该示例的SPISTEB(片选GPIO27)信号出不来,请帮忙看一下。把片选GPIO27设为普通的GPIO是可以的出现高低电平的。
,
Susan Yang:
“该示例的SPISTEB(片选GPIO27)信号出不来,请帮忙看一下。”
能否请您详细描述一下?您是直接使用的TI例程?
,
user5363809:
示例: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;}}
,
user5363809:
SPISTEB(片选GPIO27)信号一直被拉低
,
user5363809:
您好,这个问题已经解决了,将spi接收和发送的函数从SPI中断函数中提取到Main或者timer中断中,然后屏蔽中断注册函数。
应该是FIFO中断是个硬件中断,不需要单独放到SPI中断中。如果您有什么补充,可以回复我一下。// Interrupt_enable(INT_SPIA_RX);//Interrupt_enable(INT_SPIB_TX);
,
Susan Yang:
谢谢您的分享!
“将spi接收和发送的函数从SPI中断函数中提取到Main或者timer中断中”
您可以参考一下下面的帖子以及例程中的写法
e2e.ti.com/…/532430