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.

SCI communication between two DSPs-F28335

Other Parts Discussed in Thread: MAX232, MAX3221, CONTROLSUITE

Hi

I am looking forward to establish communication between F28335 control card and F28069 control stick.

Can anyone suggest how do I move ahead?

I am not very clear with the hardware connection too.Would that be connecting F28335 Tx and Rx pins through Rs-232 to PC and enter the value on hyperterminal and then to F28069.

Or i have to connect Tx and Rx pins of two dsp's together?

Kindly help

thanks

Sneha

  • Hi Sneha,

    Sneha Thakur said:

    Can anyone suggest how do I move ahead?

    I am not very clear with the hardware connection too.Would that be connecting F28335 Tx and Rx pins through Rs-232 to PC and enter the value on hyperterminal and then to F28069.

    Or i have to connect Tx and Rx pins of two dsp's together?

    You can connect both the controllers directly with each other without any interfacing hardware in between. At the max you can use an isolator hardware (to be frank not required)

    The most important part here is the configuration of SCI peripheral & baudrate.

    Regards,

    Gautam

  • Hi Gautam

    As suggested by you, after matching the baud rates for both the controllers i have moved ahead with the SCI communication between the two,by connecting their Tx and Rx pins together (F28069 and F28335).

    The baud rates for both is 9600.I can see the TxBUF in the watch windowchanging values but no change in RxBUF.The code is as follows.I am missing something very important in it.Can you please help.

    1. Tx code for F28069

    7026.28069-Tx.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    // TI File $Revision: /main/2 $
    // Checkin $Date: January 4, 2011 10:03:22 $
    //###########################################################################
    //
    // FILE: Example_2806xSci_Echoback.c
    //
    // TITLE: F2806x Device SCI Echoback.
    //
    // ASSUMPTIONS:
    //
    // This program requires the F2806x header files.
    // As supplied, this project is configured for "boot to SARAM" operation.
    //
    // Connect the SCI-A port to a PC via a transciever and cable.
    // The PC application 'hypterterminal' can be used to view the data
    // from the SCI and to send information to the SCI. Characters recieved
    // by the SCI port are sent back to the host.
    //
    // As supplied, this project is configured for "boot to SARAM"
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    2.Rx code for F28335

    7532.Example_2833xSci_Echoback.c
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    // TI File $Revision: /main/2 $
    // Checkin $Date: July 30, 2009 18:45:31 $
    //###########################################################################
    //
    // FILE: Example_2833xSci_Echoback.c
    //
    // TITLE: DSP2833x Device SCI Echoback.
    //
    // ASSUMPTIONS:
    //
    // This program requires the DSP2833x header files.
    // As supplied, this project is configured for "boot to SARAM" operation.
    //
    // Connect the SCI-A port to a PC via a transciever and cable.
    // The PC application 'hypterterminal' can be used to view the data
    // from the SCI and to send information to the SCI. Characters recieved
    // by the SCI port are sent back to the host.
    //
    // As supplied, this project is configured for "boot to SARAM"
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • Sneha, I checked your transmit routine. Please try sending a single numeric value using scia_xmit function instead of using sci_msg. As simple as:

    for(;;)
    {
     scia_xmit(a);    //where a=0x23
     some_delay();
    }



    Receiver routine seems fine,  check the SCIRXBUF register of F28335 for data while in debug mode.

    Regards,

    Gautam

  • Hi gautam

    Transmiter routinue seems to work fine.I could see the value 0x23 in SCITxBUF of 28069.

    But I am not recieving anything on 28335.Its buffer SCIRxBUF is 0000.

    The connection is as follows:

    F28069(Tx)                                F28335(Rx)

    Gpio12(Tx)                               Gpio28/19(Rx)

    Pin32 Gnd                                      Gnd

    Thanks

    Sneha

  • Sneha Thakur said:
    But I am not recieving anything on 28335.Its buffer SCIRxBUF is 0000.

    That's weird. Anything in SCIRXEMU ??

    Regards,

    Gautam

  • Hi Gautam

    Nothing in SCIRXEMU too = 0000

    I am using a simple wired connection between two controllers.Should there be some isolator in between or maybe some other hardware?

    Thanks

    Sneha

  • Sneha Thakur said:
    I am using a simple wired connection between two controllers.Should there be some isolator in between or maybe some other hardware?

    As both of the controllers are 3.3V logic based, they should work with simple wires but you can once try with drivers like max3221 or max232 (just for trial). But as far as I remember I interfaced F28335 & F28027 directly without any hardware in between and they worked as charm.

    Regards,

    Gautam

  • HI Gautam

    I again tried running the programs and establishing communication between two controllers.

    3326.Rx28335.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    // TI File $Revision: /main/2 $
    // Checkin $Date: July 30, 2009 18:45:31 $
    //###########################################################################
    //
    // FILE: Example_2833xSci_Echoback.c
    //
    // TITLE: DSP2833x Device SCI Echoback.
    //
    // ASSUMPTIONS:
    //
    // This program requires the DSP2833x header files.
    // As supplied, this project is configured for "boot to SARAM" operation.
    //
    // Connect the SCI-A port to a PC via a transciever and cable.
    // The PC application 'hypterterminal' can be used to view the data
    // from the SCI and to send information to the SCI. Characters recieved
    // by the SCI port are sent back to the host.
    //
    // As supplied, this project is configured for "boot to SARAM"
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    This is the code being run for reciever on other end,.But when we run ,I guess its not executing at all.The screenshots of the screen before and after running the program are below:

    I am running Tx code for 28069 on one PC and then its is wired to 28335 which is connected to other PC.The Rx program for 28335 is being run on the other PC.Ground pins of both controllers are connected and TX-Rx pins too.Am I missing something?

    Please reply.

    Thanks

    Sneha

  • Sneha Thakur said:
    I am running Tx code for 28069 on one PC and then its is wired to 28335 which is connected to other PC

    I guess you're following these steps:

    1. No need to connect F28069 kit for debugging. Let the power be off.

    2. F28335 kit should be in debug mode and waiting for the data.

    3. Switch on the F28069 kit which has only single data transmission (don't use continuous polling of data as of now)

    4. Monitor Rx interrupt flag & SCIRXEMU for data on the watch window.

    I checked your Rx routine - keep the same in a for ever loop. It seems to be commented as of now. Also,

    there's no  EnableInterrupts(); function. This is exactly why Rx interrupt is not getting triggered.

    Refer Example_2833xScia_FFDLB.c example.

    Regards,

    Gautam

  • Hi Gautam

    I tried working the steps recommended by you.Enabled RxInterrupt function for Rx routinue and tried out few if else loops inside.I am gettting data in Tx BUF but not in Rx BUF.

    I tried step by step execution,but the program does not enter in the while loop,as it is not recieving any data and stops there.

     i again checked the original echoback program and its working fine,this means pins are working finr.

    Can this be the compatibility issue?Different Controllers...??

    thanks

    Sneha

  • Sneha Thakur said:
    Can this be the compatibility issue?Different Controllers...??

    There shouldn't be a compatibility issue here as both belong to C2000 family. I've personally tried and implemented this last year and also I've interfaced C2000 with MSP430 & PIC too. They all work fine!

    Just one last suggestion, try referring SCI_Loopback for both the controllers with the given settings:

    C:\ti\controlSUITE\device_support\f2833x\v133\DSP2833x_examples_ccsv4\scia_loopback

    Regards,

    Gautam

  • Hi Gautam

    The problem is resolved.I was doing few silly mistakes.

    1. In Tx routinue i had not relinquised SCI from reset.I had commented it.

    2.I was calling ISR for SCIA while i was working with SCIB.

    And while observing the variables on watch window,SCIRXST =00FA...Bit 5= BRKDT = 1.

    SCI break-detect flag. The SCI sets this bit when a break condition occurs. A break condition
    occurs when the SCI receiver data line (SCIRXD) remains continuously low for at least ten bits,
    beginning after a missing first stop bit. The occurrence of a break causes a receiver interrupt to be
    generated if the RX/BK INT ENA bit is a 1, but it does not cause the receiver buffer to be loaded. A
    BRKDT interrupt can occur even if the receiver SLEEP bit is set to 1. BRKDT is cleared by an
    active SW RESET or by a system reset. It is not cleared by receipt of a character after the break is
    detected. In order to receive more characters, the SCI must be reset by toggling the SW RESET bit
    or by a system reset.

    So I just  switched on the Tx first and then the reciever.Hope What I am thinking is right?

    Now I will have to transmit a message or string of characters. And then also Tx back from F28335 to F28069

    Thanks alot Gautam.

    Sneha

  • Hi Gautam

    The problem is resolved.I was doing few silly mistakes.

    1. In Tx routinue i had not relinquised SCI from reset.I had commented it.

    2.I was calling ISR for SCIA while i was working with SCIB.

    And while observing the variables on watch window,SCIRXST =00FA...Bit 5= BRKDT = 1.

    SCI break-detect flag. The SCI sets this bit when a break condition occurs. A break condition
    occurs when the SCI receiver data line (SCIRXD) remains continuously low for at least ten bits,
    beginning after a missing first stop bit. The occurrence of a break causes a receiver interrupt to be
    generated if the RX/BK INT ENA bit is a 1, but it does not cause the receiver buffer to be loaded. A
    BRKDT interrupt can occur even if the receiver SLEEP bit is set to 1. BRKDT is cleared by an
    active SW RESET or by a system reset. It is not cleared by receipt of a character after the break is
    detected. In order to receive more characters, the SCI must be reset by toggling the SW RESET bit
    or by a system reset.

    So I just switched on the Tx first and then the reciever.Hope What I am thinking is right?

    Now I will have to transmit a message or string of characters. And then also Tx back from F28335 to F28069

    Thanks alot Gautam.

    Sneha

  • Sneha Thakur said:
    The problem is resolved.I was doing few silly mistakes.

    That's Great! Silly mistakes happen... but need to be resolved by user himself/herself as I might've no clue :)

    Sneha Thakur said:
    So I just switched on the Tx first and then the reciever.Hope What I am thinking is right?

    As far as the routines work and your result is as expected, this should not matter. I prefer the other way, where my Rx is waiting and then I poll the data.

    Sneha Thakur said:
    Now I will have to transmit a message or string of characters. And then also Tx back from F28335 to F28069

    Way to go, Sneha!

    Sneha Thakur said:
    Thanks alot Gautam.

    You're Welcome! Please close the thread.

    Regards,

    Gautam