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.

LAUNCHXL-F28379D: LAUNCHXL-F28379D SCI Example

Part Number: LAUNCHXL-F28379D
Other Parts Discussed in Thread: C2000WARE

hello my friends....

my project is LAUNCHXL-F28379D example sci_echoback_cpu01 in the control sute

but this project is not working

this project scia setting

GPIO_SetupPinMux(28, GPIO_MUX_CPU1, 1);
GPIO_SetupPinOptions(28, GPIO_INPUT, GPIO_PUSHPULL);
GPIO_SetupPinMux(29, GPIO_MUX_CPU1, 1);
GPIO_SetupPinOptions(29, GPIO_OUTPUT, GPIO_ASYNC);

i use scib and i change this code

GPIO_SetupPinMux(19, GPIO_MUX_CPU1, 2); 
GPIO_SetupPinOptions(19, GPIO_INPUT, GPIO_PUSHPULL);
GPIO_SetupPinMux(18, GPIO_MUX_CPU1, 2);
GPIO_SetupPinOptions(18, GPIO_OUTPUT, GPIO_ASYNC);


I just changed this part and I did not change the rest.

I checked the transmission data through the serial communication program and the characters are broken.

I did not receive it and checked it in debugging mode.

// Wait for inc character
while(SciaRegs.SCIFFRX.bit.RXFFST == 0) { } // wait for XRDY =1 for empty state
There was an infinite wait here.

I do not know what the problem is. Please ask if anyone knows about this problem.
  • The device in this example receives characters and echoes them back to the host.

    You likely are not connected properly to the SCI TX and RX pins you have specified in the device's program. Therefore the device is not receiving the characters.

    Hope this helps.

    sal
  • hello sal?

    Thank you for your reply.

    my serial cable 2-rx, 3-tx

    dsp gpio pin      3-rx(gpio19), 4-tx(gpio18)

    i connected 2-4, 3-3

    I think I connected correctly.

    Can you tell me if you have a sample file?

  • Hi,

    You need to configure those two GPIOs in the GPIO mux for SCI TX and SCI RX. You can see this done in the examples provided in C2000Ware. Right now, they are configured as input GPIOs and output GPIOs. They need to be configured for SCI specific pins, and muxed properly to the SCI.

    Hope this helps.

    sal
  • HI SAL..

    i find LAUNCHXL-F28379D Overview User's Guide document 

    Page 11 If you set gpio19 and 18 to mux 2 in Table 5,

    I connect SCITXDB and SCITXDB to serial cable and rx and tx.

    I set it as follows according to how you set the GPIO among the example files provided by C2000WARE.

    GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0; // Enable pullup on GPIO28

    GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 3; // asynch input

    GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 1; // GPIO28 = SCIRXDA

    GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; // Enable pullup on GPIO29

    GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 1; // GPIO29 = SCITXDA

    I do not really know the SCI settings because I set them as small as initially, but nothing is transmitted or received. Please let me know if there is another way.

  • GPIO 18 and 19 are SCI pins for SCIB module. Not the SCIA module.

    Make sure you are configuring SCIB.

    Please see the data sheet and the Table labeled Signal Descriptions.

    Regards,

    sal

  • hi sal?

    i know gpio19,18 sci B Channel..

    it just example

    anyway do you have launchpad?

    it is my source ... this is TI offer example..

    modify just sci_init and gpio setting..

    every day i looking at the data sheet.. i don't know what is not working,,, 

    by sal..

    //###########################################################################
    //
    // FILE: Example_2837xDSci_Echoback.c
    //
    // TITLE: SCI Echoback.
    //
    //! \addtogroup cpu01_example_list
    //! <h1>SCI Echoback (sci_echoback)</h1>
    //!
    //! This test receives and echo-backs data through the SCI-A port.
    //!
    //! The PC application 'hyperterminal' or another terminal
    //! such as 'putty' can be used to view the data from the SCI and
    //! to send information to the SCI. Characters received
    //! by the SCI port are sent back to the host.
    //!
    //! \b Running \b the \b Application
    //! -# Configure hyperterminal or another terminal such as putty:
    //!
    //! For hyperterminal you can use the included hyperterminal configuration
    //! file SCI_96.ht.
    //! To load this configuration in hyperterminal
    //! -# Open hyperterminal
    //! -# Go to file->open
    //! -# Browse to the location of the project and
    //! select the SCI_96.ht file.
    //! -# Check the COM port.
    //! The configuration file is currently setup for COM1.
    //! If this is not correct, disconnect (Call->Disconnect)
    //! Open the File-Properties dialogue and select the correct COM port.
    //! -# Connect hyperterminal Call->Call
    //! and then start the 2837xD SCI echoback program execution.
    //! -# The program will print out a greeting and then ask you to
    //! enter a character which it will echo back to hyperterminal.
    //!
    //! \note If you are unable to open the .ht file, or you are using
    //! a different terminal, you can open a COM port with the following settings
    //! - Find correct COM port
    //! - Bits per second = 9600
    //! - Date Bits = 8
    //! - Parity = None
    //! - Stop Bits = 1
    //! - Hardware Control = None
    //!
    //! \b Watch \b Variables \n
    //! - LoopCount - the number of characters sent
    //!
    //! \b External \b Connections \n
    //! Connect the SCI-A port to a PC via a transceiver and cable.
    //! - GPIO28 is SCI_A-RXD (Connect to Pin3, PC-TX, of serial DB9 cable)
    //! - GPIO29 is SCI_A-TXD (Connect to Pin2, PC-RX, of serial DB9 cable)
    //!
    //
    //###########################################################################
    // $TI Release: F2837xD Support Library v210 $
    // $Release Date: Tue Nov 1 14:46:15 CDT 2016 $
    // $Copyright: Copyright (C) 2013-2016 Texas Instruments Incorporated -
    // http://www.ti.com/ ALL RIGHTS RESERVED $
    //###########################################################################

    //
    // Included Files
    //
    #include "F28x_Project.h"

    //
    // Globals
    //
    Uint16 LoopCount;

    //
    // Function Prototypes
    //
    void scib_echoback_init(void);
    void scib_fifo_init(void);
    void scib_xmit(int a);
    void scib_msg(char *msg);

    //
    // Main
    //
    void main(void)
    {
    Uint16 ReceivedChar;
    char *msg;

    //
    // Step 1. Initialize System Control:
    // PLL, WatchDog, enable Peripheral Clocks
    // This example function is found in the F2837xD_SysCtrl.c file.
    //
    InitSysCtrl();

    //
    // Step 2. Initialize GPIO:
    // This example function is found in the F2837xD_Gpio.c file and
    // illustrates how to set the GPIO to it's default state.
    //
    InitGpio();

    //
    // For this example, only init the pins for the SCI-A port.
    // GPIO_SetupPinMux() - Sets the GPxMUX1/2 and GPyMUX1/2 register bits
    // GPIO_SetupPinOptions() - Sets the direction and configuration of the GPIOS
    // These functions are found in the F2837xD_Gpio.c file.
    //
    // GPIO_SetupPinMux(19, GPIO_MUX_CPU1, 2);
    // GPIO_SetupPinOptions(19, GPIO_INPUT, GPIO_PULLUP);
    // GPIO_SetupPinMux(18, GPIO_MUX_CPU1, 2);
    // GPIO_SetupPinOptions(18, GPIO_OUTPUT, GPIO_ASYNC);

    GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0; // Enable pullup on GPIO28
    GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 3; // asynch input
    GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 2; // GPIO28 = SCIRXDA
    GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; // Enable pullup on GPIO29
    GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 2; // GPIO29 = SCITXDA

    //
    // Step 3. Clear all __interrupts and initialize PIE vector table:
    // Disable CPU __interrupts
    //
    DINT;

    //
    // Initialize PIE control registers to their default state.
    // The default state is all PIE __interrupts disabled and flags
    // are cleared.
    // This function is found in the F2837xD_PieCtrl.c file.
    //
    InitPieCtrl();

    //
    // Disable CPU __interrupts and clear all CPU __interrupt flags:
    //
    IER = 0x0000;
    IFR = 0x0000;

    //
    // Initialize the PIE vector table with pointers to the shell Interrupt
    // Service Routines (ISR).
    // This will populate the entire table, even if the __interrupt
    // is not used in this example. This is useful for debug purposes.
    // The shell ISR routines are found in F2837xD_DefaultIsr.c.
    // This function is found in F2837xD_PieVect.c.
    //
    InitPieVectTable();

    //
    // Step 4. User specific code:
    //
    LoopCount = 0;

    scib_fifo_init(); // Initialize the SCI FIFO
    scib_echoback_init(); // Initialize SCI for echoback


    msg = "\r\nYou will enter a character, and the DSP will echo it back! \n\0";
    scib_msg(msg);

    for(;;)
    {
    msg = "\r\nEnter a character: \0";
    scib_msg(msg);

    //
    // Wait for inc character
    //
    while(ScibRegs.SCIFFRX.bit.RXFFST == 0) { } // wait for empty state

    //
    // Get character
    //
    ReceivedChar = ScibRegs.SCIRXBUF.all;

    //
    // Echo character back
    //
    msg = " You sent: \0";
    scib_msg(msg);
    scib_xmit(ReceivedChar);

    LoopCount++;
    }
    }

    //
    // scib_echoback_init - Test 1,scib DLB, 8-bit word, baud rate 0x000F,
    // default, 1 STOP bit, no parity
    //
    void scib_echoback_init()
    {
    //
    // Note: Clocks were turned on to the scib peripheral
    // in the InitSysCtrl() function
    //

    ScibRegs.SCICCR.all = 0x0007; // 1 stop bit, No loopback
    // No parity,8 char bits,
    // async mode, idle-line protocol
    ScibRegs.SCICTL1.all = 0x0003; // enable TX, RX, internal SCICLK,
    // Disable RX ERR, SLEEP, TXWAKE
    ScibRegs.SCICTL2.all = 0x0003;
    ScibRegs.SCICTL2.bit.TXINTENA = 1;
    ScibRegs.SCICTL2.bit.RXBKINTENA = 1;

    //
    // scib at 9600 baud
    // @LSPCLK = 50 MHz (200 MHz SYSCLK) HBAUD = 0x02 and LBAUD = 0x8B.
    // @LSPCLK = 30 MHz (120 MHz SYSCLK) HBAUD = 0x01 and LBAUD = 0x86.
    //
    ScibRegs.SCIHBAUD.all = 0x0002;
    ScibRegs.SCILBAUD.all = 0x008B;

    ScibRegs.SCICTL1.all = 0x0023; // Relinquish SCI from Reset

    }

    //
    // scib_xmit - Transmit a character from the SCI
    //
    void scib_xmit(int a)
    {
    while (ScibRegs.SCIFFTX.bit.TXFFST != 0) {}
    ScibRegs.SCITXBUF.all =a;
    }

    //
    // scib_msg - Transmit message via scib
    //
    void scib_msg(char * msg)
    {
    int i;
    i = 0;
    while(msg[i] != '\0')
    {
    scib_xmit(msg[i]);
    i++;
    }
    }

    //
    // scib_fifo_init - Initialize the SCI FIFO
    //
    void scib_fifo_init()
    {
    ScibRegs.SCIFFTX.all = 0xE040;
    ScibRegs.SCIFFRX.all = 0x2044;
    ScibRegs.SCIFFCT.all = 0x0;
    }

    //
    // End of file
    //

  • Can you get SCIB working with loopback enabled? Can you get characters sent and received with loopback enabled in SCIB?

    This would be the next step in debugging this. If loopback is working, then the issue is likely with your GPIO configuration or your external connection.

    Hope this helps!
    sal