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

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

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

赞(0)
未经允许不得转载:TI中文支持网 » F28388D SPI发送多个BYTE,产生一次SPISTEB
分享到: 更多 (0)