• Resolved

Any TI-RTOS or Mware peripheral driver library support for all Piccolo F2806x on-chip peripherals?

Hi,

The C2000 ControlSuite includes lots of examples of configuring and using F28069 Piccolo on-chip peripherals (e.g. I2C, SPI, ePWM, HRPWM, ADC, etc) but all of these C code examples do not encapsulate or abstract the peripheral drivers with a proper device driver API like you would get in TI-RTOS or MWare.

I'm looking for a complete device driver library for the F28069 Piccolo targets (ControlStick or Control Card). However, any sample drivers with the same TI-RTOS style HAL driver library APIs (such as those drivers that are available for ARM, TIVA and Concerto 28M35x type devices) don't seem to be available for the Piccolo family. There is an existing Peripheral Driver library for the Piccolo F28069, but it only includes APIs for a small subset of F28069 devices:  PIE interrupt controller, SysTick, UART and USB. There are no driver APIs for other on-chip peripherals.

Can anyone inform me about whether there are any plans to have fully-fledged device drivers (with proper abstract API interfaces) planned or available for TI-RTOS or MWare on the F2806x Piccolo platform either today or in the near future? 

Gord

  • Gordon,

    As far as I know TI-RTOS only supports devices like ARM, TIVA, and Concerto like devices now and going forward.

    Judah

    If my reply answers your question please mark the thread as answered

  • In reply to judahvang:

    Slight correction...going forward we will be supporting other devices (e.g. MSP430). TI-RTOS support for C2000 peripherals is being considered, but realistically is lower on the list. 

    Todd

  • In reply to ToddMullanix:

    Hi,

    I have finally researched and found a partial answer to my original question.  Apparently, Trey German at TI has created a new Peripheral Driver Library with proper abstracted driver APIs for the F28027 Launchpad, but this has not been ported to the F2806x Piccolo device.

    The older F2802x_xxxxx.c/.h example code and headers, have been supplemented in C:\ti\controlSUITE\device_support\f2802x\v210\f2802x_common folder by new drivers with proper APIs including: adc.c, cap.c, clk.c, comp.c, cpu.c, flash.c, gpio.c, i2c.c, osc.c, pie.c, pll.c, pwm.c, pwr.c, sci.c, sci_io.c, spi.c, timer.c, and wdog.c. There is a new set of reworked example code that demonstrates these Launchpad peripheral driver APIs as well.

    It is too bad that there is no app note for the C2000 ControlSuite which at least makes developers for F2806x Piccolo aware that this more substantial set of driver library APIs is available for the similar F28027 device. These driver APIs could be easily ported to the Piccolo F28069 and enhanced to take advantage of the additional capabilities: 

    • Direct memory access (DMA)
    • Viterbi Complex Math and CRC Unit (VCU)
    • Multichannel Buffered Serial Port (McBSP)
    • High-Resolution Capture (HRCAP)
    • USB controller + PHY
    • Floating-Point Unit (FPU)
    • Additional enhanced quadrature encoder pulse (eQEP) and enhanced capture (eCAP) peripherals

    The Launchpad Peripheral Driver F2802x examples use the new driver-style APIs rather than the older header files. The following initialization sequence with the older headers is replaced by cleaner sequence further below using the new driver library APIs: 

    Older header version:
    // Step 1. Initialize System Control using example function is found in the F2806x_SysCtrl.c file.
    InitSysCtrl();
    // Step 2. Initalize GPIO using example found in the F2806x_Gpio.c file
    InitGpio();
    // Step 3. Clear all interrupts
    DINT;
    // Initialize PIE control registers to their default state as found in the F2806x_PieCtrl.c file.
    InitPieCtrl();
    // Disable CPU interrupts and clear all CPU interrupt flags:
    IER = 0x0000;
    IFR = 0x0000;

    Newer Launchpad driver library API init sequence...


    //Perform basic system initialization
    WDOG_disable(myWDog);
    CLK_enableAdcClock(myClk);
    (Device_cal)();
    //Select the internal oscillator as the clock source
    CLK_setOscSrc(myClk,CLK_OscSrc_Internal);
    //Setup the PLL for x10/2 which will yield 50Mhz=10Mhz or10/ 2
    PLL_setup(myPll,PLL_Multiplier_10,PLL_DivideSelect_ClkIn_by_2);
    //Disable the PIE and all interrupts
    PIE_disable(myPie);
    PIE_disableAllInts(myPie);
    CPU_disableGlobalInts(myCpu);
    CPU_clearIntFlags(myCpu);

    Please let me know if there are any TI plans to enhance the MWare library for the F28069 driver library with the new improved Launchpad style driver library APIs?

    Gord

  • In reply to Gordon Finlay:

    Gordon,

    See here:

    http://www.forum.c2kcentral.com/topic/179-c2000-launchpad-which-ports-are-usable/?p=1026

    Regards,

    Trey German

    LaunchPad Applications Manager

    If a post answers your question, please mark it with the "verify answer" button.
    Visit these helpful C2000 Links!
    C2000 TI Wiki Pages
    TI Forum Sitemap
    ControlSUITE
    C2000 Getting Started
    CLA FAQs
    Workshop Material!
  • In reply to Gordon Finlay:

    Gordon,

    I'm struggling with the same issue - trying to get TI-RTOS on a F28069 with device drivers. Did you end up porting the 2802x code to 2806x code?
  • In reply to Rob Coker:

    Hi Rob,
    We generally discourage posting a new question to an old closed thread because the person who answered before may no longer be available, and also it will allow whomever is currently assigned to monitor the forum to respond to you more quickly. For these reasons, I suggest you start a new thread with your question and reference this thread.

    Thank you
  • In reply to Trey German289:

    The link is dead. Can you post the current location (if it exists)?
  • In reply to Gary Pajer:

    Hi Gary,
    We generally discourage posting a new question to an old closed thread because the person who answered before may no longer be available, and also it will allow whomever is currently assigned to monitor the forum to respond to you more quickly. For these reasons, I suggest you start a new thread with your question and reference this thread.

    Thank you