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.

28062的spi fifo设置

Other Parts Discussed in Thread: CONTROLSUITE

1.28062的fifo发送中断触发级别如果设置为4的时候一直进入中断,请问如果想每次发送四个16位数据再进入中断是不是需要将发送触发级别设置为0?即

SpibRegs.SPIFFTX.all=0xC020; // Enable FIFO's, set TX FIFO level to 4
SpibRegs.SPIFFRX.all=0x0024; // Set RX FIFO level to 4

2.级别如果设置为0,空闲状态如何避免一直进入发送中断此时却没有数据需要发送?

  • 不太清楚你的Fifo的中断是如何编写的,不过发送4个16bit数据后再进中断触发级别是应该设置为4的。

    也就是SPIFFTX的后五位设置为几,就能够一次发送几个word后再中断。2806X系列芯片最大支持4-level FIFO

    你可以参考TI的官方代码:

    C:\ti\controlSUITE\device_support\f2806x\v151\F2806x_examples_ccsv5\spi_loopback_interrupts

    一般不会设置中断级别为0。

  • 我现在也是按这个例程改的,28062的spi fifo深度最大只有4级,如果我想发送数据时4级填满再发,中断触发级别是设置为0,但为什么你说一般不会设置中断级别为0呢?还有,往发送buf里填充数据能否在接收中断中处理?

  • 建议你将这两个寄存器设置为:

    SpibRegs.SPIFFTX.all=0xC024 // Enable FIFO's, set TX FIFO level to 4
    SpibRegs.SPIFFRX.all=0x0024; // Set RX FIFO level to 4

    同时观察发送数组sdata和接收数组rdata的情况,

    我在接收中断中设置了断点,观察到的数据情况如下:

    发送sdata的数字刚刚好比接收rdata的数字多1,与预期相符。

  • 我把发送中断级别设置为4时,会一直进入中断(此时发送fifo里的字数永远小于等于4),影响其他进程,导致控制板上的键盘一直处于通讯故障(键盘采用sci中断通讯)。所以才将中断级别设置为0。

    还有一个问题让我纠结,

    发送中断时(或者接收中断中处理填充发送fifo时),填充发送fifo的buf需要时间,比如1微秒,1M的波特率时这个1微秒没发送数据,错过了1个时钟,然后再发送的数据能发完整吗? 

    期待回复..