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.

communication between SPIA and SPIB

Other Parts Discussed in Thread: CONTROLSUITE

Hi!

I'm trying to test the communication between the 2 SPIs available on Piccolo f28069. I've configured SPI-A as master and SPI-B as slave. And I've connected SPISOMIA to SPISOMIB, SPISIMOA to SPISIMOB, SPICLKA to SPICLKB, and SPISTE to SPISTE. The problem is that the program can not go into either the TX or RX interrupt of SPIB (I put breakpoints inside the interrupts).  From the watch window, SpibRegs.SPIFFTX.TXFFINT=1 (always), SpibRegs.SPIFFRX.RXFFINT=0 (always). Is it because of priority problem? Here is the configuration for them:

void spi_fifo_init()

{

// Initialize SPI_A FIFO registers

   SpiaRegs.SPICCR.bit.SPISWRESET=0;   // Reset SPI

   SpiaRegs.SPICCR.all=0x000F;      //16-bit character, disable Loopback mode

   SpiaRegs.SPICTL.all=0x0017;      //Interrupt enabled, Master/Slave XMIT enabled

   SpiaRegs.SPISTS.all=0x0000;

   SpiaRegs.SPIBRR=0x0063;          // Baud rate

   SpiaRegs.SPIFFTX.all=0xC034;     // Enable FIFO's, set TX FIFO level to 4

   SpiaRegs.SPIFFRX.all=0x0034;     // Set RX FIFO level to 4

   SpiaRegs.SPIFFCT.all=0x00;

   SpiaRegs.SPIPRI.all=0x0010;

   SpiaRegs.SPICCR.bit.SPISWRESET=1;   // Enable SPI

   SpiaRegs.SPIFFTX.bit.TXFIFO=1;

   SpiaRegs.SPIFFRX.bit.RXFIFORESET=1;

// Initialize SPI_B FIFO registers

   SpibRegs.SPICCR.bit.SPISWRESET=0;  // Reset SPI

   SpibRegs.SPICCR.all=0x000F;      //16-bit character, disable Loopback mode

   SpibRegs.SPICTL.all=0x0013;      //Interrupt enabled, Master/Slave XMIT enabled

   SpibRegs.SPISTS.all=0x0000;

   SpibRegs.SPIBRR=0x0063;          // Baud rate

   SpibRegs.SPIFFTX.all=0xC034;     // Enable FIFO's, set TX FIFO level to 4

   SpibRegs.SPIFFRX.all=0x0034;     // Set RX FIFO level to 4

   SpibRegs.SPIFFCT.all=0x00;

   SpibRegs.SPIPRI.all=0x0010;

   SpibRegs.SPICCR.bit.SPISWRESET=1;    // Enable SPI

   SpibRegs.SPIFFTX.bit.TXFIFO=1;

   SpibRegs.SPIFFRX.bit.RXFIFORESET=1;

}

 

Does anybody have an idea what I'm doing wrong?

Thanks,

Lebing

  • Hi Lebing,

    Did you try reffering "spi_loopback" example available in controlSuite here:

    C:\ti\controlSUITE\device_support\f2806x\v136\F2806x_examples_ccsv5\spi_loopback

    Regards,

    Gautam

  • Hi Gautam,

    The one I'm referring to is C:\ti\controlSUITE\device_support\f2806x\v100\F2806x_examples\spi_loopback_interrupts

    Regards,

    Lebing

  • Hello Lebing,

    Did you have set the interrupt setting for SPIB (SPIRXINTB, IER, etc)?

    Best regards,

    Maria

  • Hi Maria,

    Do you mean this:

    // Enable interrupts required for SPI

       PieCtrlRegs.PIECTRL.bit.ENPIE = 1;  

      PieCtrlRegs.PIEIER6.bit.INTx1=1;    

       PieCtrlRegs.PIEIER6.bit.INTx2=1;    

       PieCtrlRegs.PIEIER6.bit.INTx3=1;    

       PieCtrlRegs.PIEIER6.bit.INTx4=1;    

        IER |= M_INT6;   

    Or:

    // Initialize SPI_B FIFO registers

       SpibRegs.SPICCR.bit.SPISWRESET=0;  // Reset SPI

       SpibRegs.SPICCR.all=0x000F;      //16-bit character, disable Loopback mode

       SpibRegs.SPICTL.all=0x0013;      //Interrupt enabled, Master/Slave XMIT enabled

       SpibRegs.SPISTS.all=0x0000;

       SpibRegs.SPIBRR=0x0063;          // Baud rate

       SpibRegs.SPIFFTX.all=0xC034;     // Enable FIFO's, set TX FIFO level to 4

       SpibRegs.SPIFFRX.all=0x0034;     // Set RX FIFO level to 4

       SpibRegs.SPIFFCT.all=0x00;

       SpibRegs.SPIPRI.all=0x0010;

       SpibRegs.SPICCR.bit.SPISWRESET=1;    // Enable SPI

       SpibRegs.SPIFFTX.bit.TXFIFO=1;

       SpibRegs.SPIFFRX.bit.RXFIFORESET=1;

    Best Regards,

    Lebing

                           

     

  • Hi Lebing,

    I would like you to try without using interrupts first.

    Regards,

    Gautam

  • Hello Lebing,

    What I meant is the first one.

    Btw, can you check your SPISTE pins whether they go LOW when you transmit data?

    Best regards,

    Maria