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.

TMS320F28379D: Printf enable on uart

Part Number: TMS320F28379D
Other Parts Discussed in Thread: C2000WARE

Hello TI Team,

 I want help to enable printf on TMS320F28379D launchpad  ,how can i use printf function using uart pin 42 and 43.

  • Hi Atul,

    I recommend taking a look at the following example within the C2000Ware SDK. It includes the required files to use printf and then utilizes it within the example.

    C2000Ware_version\device_support\f2837xd\examples\cpu1\launchxl_f28379d

    Best Regards,

    Marlyn

  • Hi Marlyn,

         I am using   C2000Ware_3_04_00_00_Software\driverlib\f2837xd\examples\cpu1\sci\sci_ex1_loopback.c   this example and add printf supported file . but here uart not working .on console shows garbage value.

    following code and file for printf 

    status = add_device("scia", _SSA, SCI_open, SCI_close, SCI_read, SCI_write,
    SCI_lseek, SCI_unlink, SCI_rename);
     fid = fopen("scia","w");
     freopen("scia:", "w", stdout);
     setvbuf(stdout, NULL, _IONBF, 0);

    .

    4503.sci_io.c
    //#############################################################################
    //
    //!
    //! \brief  Contains the various functions related to the serial 
    //!         communications interface (SCI) object
    //
    //  Group:          C2000
    //  Target Device:  TMS320F2802x
    //
    //  (C) Copyright 2012, Texas Instruments, Inc.
    //#############################################################################
    // $TI Release: F2837xD Support Library v3.12.00.00 $
    // $Release Date: Fri Feb 12 19:03:23 IST 2021 $
    // $Copyright:
    // Copyright (C) 2013-2021 Texas Instruments Incorporated - http://www.ti.com/
    //
    // Redistribution and use in source and binary forms, with or without 
    // modification, are permitted provided that the following conditions 
    // are met:
    // 
    //   Redistributions of source code must retain the above copyright 
    //   notice, this list of conditions and the following disclaimer.
    // 
    //   Redistributions in binary form must reproduce the above copyright
    //   notice, this list of conditions and the following disclaimer in the 
    //   documentation and/or other materials provided with the   
    //   distribution.
    // 
    //   Neither the name of Texas Instruments Incorporated nor the names of
    //   its contributors may be used to endorse or promote products derived
    //   from this software without specific prior written permission.
    // 
    // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    // $
    //#############################################################################
    
    //
    // Included Files
    //
    #include <stdio.h>
    #include <file.h>
    #include <stdint.h>
    #include <stdbool.h>
    
    //#include "F28x_Project.h"
    #include "driverlib.h"
    #include "device.h"
    #include "board.h"
    #include "sci_io.h"
    
    //
    // Defines
    //
    
    //
    // Globals
    //
    uint16_t deviceOpen = 0;
    
    //
    // Functions
    //
    
    //
    // SCI_open -
    //
    int SCI_open(const char * path, unsigned flags, int llv_fd)
    {
        if(deviceOpen)
        {
            return (-1);
        }
        else
        {
            deviceOpen = 1;
            return (1);    
        }      
    }
    
    //
    // SCI_close - 
    //
    int SCI_close(int dev_fd)
    {
        if((dev_fd != 1) || (!deviceOpen))
        {
            return (-1);
        }
        else
        {
            deviceOpen = 0;
            return (0);
        }    
    }
    
    //
    // SCI_read - 
    //
    int SCI_read(int dev_fd, char * buf, unsigned count)
    {
        uint16_t readCount = 0;
        uint16_t * bufPtr = (uint16_t *) buf;
        
        if(count == 0)
        {
            return (0);
        }
    //    while((readCount < count) && SciaRegs.SCIRXST.bit.RXRDY)
        while((readCount < count) && (SCI_getRxFIFOStatus(mySCI0_BASE) == SCI_FIFO_RX0))
        {
        //    *bufPtr = SciaRegs.SCIRXBUF.all;
            *bufPtr =SCI_readCharBlockingFIFO(mySCI0_BASE);//,*bufPtr);
            readCount++;
            bufPtr++;
        }
        
        return (readCount);
    }
    
    //
    // SCI_write - 
    //
    int SCI_write(int dev_fd, const char * buf, unsigned count)
    {
        uint16_t writeCount = 0;
        uint16_t * bufPtr = (uint16_t *) buf;
        
        if(count == 0)
        {
            return (0);
        }
    //    SCI_writeCharArray(mySCI0_BASE,buf,count);
        while(writeCount < count)
        {
    
       //     while(!SciaRegs.SCICTL2.bit.TXRDY);
            while(!SCI_isSpaceAvailableNonFIFO(mySCI0_BASE));
       //     SciaRegs.SCITXBUF.all = *bufPtr;
            SCI_writeCharNonBlocking(mySCI0_BASE,*bufPtr);
            writeCount++;
            bufPtr++;
        }
        
        return (count);
    }
    
    //
    // SCI_lseek - 
    //
    off_t SCI_lseek(int dev_fd, off_t offset, int origin)
    {
        return (0);   
    }
    
    //
    // SCI_unlink -
    //
    int SCI_unlink(const char * path)
    {
        return (0);
    }
    
    //
    // SCI_rename - 
    //
    int SCI_rename(const char * old_name, const char * new_name)
    {
        return (0);    
    }
    
    //
    // End of File
    //
    
    
    sci_io.h

  • Hi Atul,

    Have you added the pre-define "_LAUNCHXL_F28379D" to your project? This is required to setup the proper device clocking when using the launchpad.

    Best Regards,

    Marlyn

  • Hi Marlyn,

          Thank you So much . this input resolved my issue.