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.

Regarding 28027 SCI



I am using 28027 SCI Code provided by TI.

on the hyperterminal I am getting the lines as 

"
Hello World!
You will enter a character, and the DSP will echo it back!

Enter a character:

"

But I was unable to enter any character on the hyper terminal may I know the reason.

  • Hi Ramakrishna,

    You need to enable some settings on Hyperterminal. Go to FILE -> PROPERTIES -> SETTINGS -> ASCII SETUP -> Put a TICK on all of the below options.

    Regards,
    Gautam
  • I am using Real Term as hyper terminal because the hyper terminal which is mentioned in the example code is not there with me.
  • But fortunately, when I am running 28035 example code, it is working fine.
    I dont know what happened with 28027 code.
  • Can you try code from a different software version?
  • means ccs another version?
    In my office there is no other version and if i have to install i need admin rights which is risky.

    For ur understanding I am attaching the lines of code what I am using:

    -------------------------
    // TI File $Revision: /main/4 $
    // Checkin $Date: December 17, 2009 14:36:56 $
    //###########################################################################
    //
    // FILE: Example_2802xSci_Echoback.c
    //
    // TITLE: DSP2802x Device SCI Echoback.
    //
    // ASSUMPTIONS:
    //
    // This program requires the DSP2802x 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"
    // operation. The 2802x Boot Mode table is shown below.
    // For information on configuring the boot mode of an eZdsp,
    // please refer to the documentation included with the eZdsp,
    //
    // $Boot_Table
    // While an emulator is connected to your device, the TRSTn pin = 1,
    // which sets the device into EMU_BOOT boot mode. In this mode, the
    // peripheral boot modes are as follows:
    //
    // Boot Mode: EMU_KEY EMU_BMODE
    // (0xD00) (0xD01)
    // ---------------------------------------
    // Wait !=0x55AA X
    // I/O 0x55AA 0x0000
    // SCI 0x55AA 0x0001
    // Wait 0x55AA 0x0002
    // Get_Mode 0x55AA 0x0003
    // SPI 0x55AA 0x0004
    // I2C 0x55AA 0x0005
    // OTP 0x55AA 0x0006
    // Wait 0x55AA 0x0007
    // Wait 0x55AA 0x0008
    // SARAM 0x55AA 0x000A <-- "Boot to SARAM"
    // Flash 0x55AA 0x000B
    // Wait 0x55AA Other
    //
    // Write EMU_KEY to 0xD00 and EMU_BMODE to 0xD01 via the debugger
    // according to the Boot Mode Table above. Build/Load project,
    // Reset the device, and Run example
    //
    // $End_Boot_Table
    //
    //
    //
    // DESCRIPTION:
    //
    //
    // This test recieves and echo-backs data through the SCI-A port.
    //
    // 1) Configure hyperterminal:
    // Use the included hyperterminal configuration file SCI_96.ht.
    // To load this configuration in hyperterminal: file->open
    // and then select the SCI_96.ht file.
    // 2) Check the COM port.
    // The configuration file is currently setup for COM1.
    // If this is not correct, disconnect Call->Disconnect
    // Open the File-Properties dialog and select the correct COM port.
    // 3) Connect hyperterminal Call->Call
    // and then start the 2802x SCI echoback program execution.
    // 4) The program will print out a greeting and then ask you to
    // enter a character which it will echo back to hyperterminal.
    //
    //
    // Watch Variables:
    // LoopCount for the number of characters sent
    // ErrorCount
    //
    //
    //###########################################################################
    // $TI Release: 2802x C/C++ Header Files V1.25 $
    // $Release Date: December 18, 2009 $
    //###########################################################################

    #include "DSP28x_Project.h" // Device Headerfile and Examples Include File

    // Prototype statements for functions found within this file.
    void scia_echoback_init(void);
    void scia_fifo_init(void);
    void scia_xmit(int a);
    void scia_msg(char *msg);

    // Global counts used in this example
    Uint16 LoopCount;
    Uint16 ErrorCount;

    void main(void)
    {

    Uint16 ReceivedChar;
    char *msg;

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

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

    // For this example, only init the pins for the SCI-A port.
    // This function is found in the DSP2802x_Sci.c file.
    InitSciaGpio();

    // 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 DSP2802x_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 DSP2802x_DefaultIsr.c.
    // This function is found in DSP2802x_PieVect.c.
    InitPieVectTable();

    // Step 4. Initialize all the Device Peripherals:
    // This function is found in DSP2802x_InitPeripherals.c
    // InitPeripherals(); // Not required for this example

    // Step 5. User specific code:

    LoopCount = 0;
    ErrorCount = 0;

    scia_fifo_init(); // Initialize the SCI FIFO
    scia_echoback_init(); // Initalize SCI for echoback

    msg = "\r\n\n\nHello World!\0";
    scia_msg(msg);

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

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

    // Wait for inc character
    while(SciaRegs.SCIFFRX.bit.RXFFST !=1) { } // wait for XRDY =1 for empty state

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

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

    LoopCount++;
    }

    }

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

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

    // SCI BRR = LSPCLK/(SCI BAUDx8) - 1
    #if (CPU_FRQ_60MHZ)
    SciaRegs.SCIHBAUD =0x0000; // 9600 baud @LSPCLK = 15MHz (60 MHz SYSCLK).
    SciaRegs.SCILBAUD =0x00C2;
    #elif (CPU_FRQ_50MHZ)
    SciaRegs.SCHBAUD =0x0000; // 9600 baud @LSPCLK = 12.5 MHz (50 MHz SYSCLK)
    #elif (CPU_FRQ_40MHZ) =0x00A1;
    SciaRegs.SCIHBAUD =0x0000; // 9600 baud @LSPCLK = 10MHz (40 MHz SYSCLK).
    SciaRegs.SCILBAUD =0x0081;
    #endif

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

    // Transmit a character from the SCI
    void scia_xmit(int a)
    {
    while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
    SciaRegs.SCITXBUF=a;

    }

    void scia_msg(char * msg)
    {
    int i;
    i = 0;
    while(msg[i] != '\0')
    {
    scia_xmit(msg[i]);
    i++;
    }
    }

    // Initalize the SCI FIFO
    void scia_fifo_init()
    {
    SciaRegs.SCIFFTX.all=0xE040;
    SciaRegs.SCIFFRX.all=0x2044;
    SciaRegs.SCIFFCT.all=0x0;

    }

    //===========================================================================
    // No more.
    //===========================================================================

    ---------------------------------------------------------------------------------
    This is the code I am working in which I was unable to enter a character in hyper terminal.
    and hyper terminal I am using is RealTerm.
  • No! I meant sample code versions:

  • Still I am facing same problem.
    If I am using 28035 codes I am not having any problem.
    Pls update me
    or call me at 7259031392.
    Its very urgent.
  • Still I am facing same problem.
    If I am using 28035 codes I am not having any problem.
    Pls update me
    or call me at 7259031392.
    Its very urgent
  • Hi Ramakrishna,

    Based on reading through your email, it sounds like the C2000's SCI is able to transmit.  However, the C2000's SCI is not able to receive.
    (the C2000 is sending its hello message, but when you type a character in hyperterminal the C2000 does not echo it.  I suspect that this is because the C2000 is not receiving the character)

    If you are using a controlCARD for evaluation, please note that there may be jumpers or switches whose positions need to be changed - to enable the receive path.  Please refer to your hardware's schematics and documentation.  You may also be able to probe your hardware at certain points to prove out the RX path.

    For instance, if you are using the F28027 controlcard + Experimenter's Kit Docking Station && are connecting to the device's SCI port via the USB connector on the baseboard (JP2) - please populate J9 on the Docking Station. 


    Thank you,
    Brett