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.

Starterware/CC1350: PWM Support

Part Number: CC1350
Other Parts Discussed in Thread: CC2650

Tool/software: Starterware

Dear Support:

It's not clear from reading the data sheet - can you tell me how many PWM outputs can be supported with the CC1350 and CC2650?  In providing me a number, can you provide a reference as to how you came up with the number?

Thanks,
Tim

  • Dear Support:

    Resending - ok, I'm going to guess.  I say it's 8.  Is that correct and if so where is the documentation that makes this crystal clear?  Please advise.

    Thanks,
    Tim

  • Hi Tim, I have never actually tried running all PWM outputs at the same time, but I also believe you can run 8 16bit PWM's or 4 32bit PWM's.

    In driverlib file PWMTimerCC26XX.h, the function:

    /*!
    *  @brief  PWMTimer26XX Hardware attributes
    *
    *  These fields are used by the driver to set up underlying PIN and GPTimer
    *  driver statically. A sample structure is shown below:
    *
    *  @code
    *  // PWM configuration, one per PWM output
    *  PWMTimerCC26XX_HwAttrs pwmtimerCC26xxHWAttrs[CC2650_PWMCOUNT] = {
    *   { .pwmPin = CC2650_LAUNCHXL_PWMPIN0, .gpTimerUnit = CC2650_LAUNCHXL_GPTIMER0A } ,
    *   { .pwmPin = CC2650_LAUNCHXL_PWMPIN1, .gpTimerUnit = CC2650_LAUNCHXL_GPTIMER0B } ,
    *   { .pwmPin = CC2650_LAUNCHXL_PWMPIN2, .gpTimerUnit = CC2650_LAUNCHXL_GPTIMER1A } ,
    *   { .pwmPin = CC2650_LAUNCHXL_PWMPIN3, .gpTimerUnit = CC2650_LAUNCHXL_GPTIMER1B } ,
    *   { .pwmPin = CC2650_LAUNCHXL_PWMPIN4, .gpTimerUnit = CC2650_LAUNCHXL_GPTIMER2A } ,
    *   { .pwmPin = CC2650_LAUNCHXL_PWMPIN5, .gpTimerUnit = CC2650_LAUNCHXL_GPTIMER2B } ,
    *   { .pwmPin = CC2650_LAUNCHXL_PWMPIN6, .gpTimerUnit = CC2650_LAUNCHXL_GPTIMER3A } ,
    *   { .pwmPin = CC2650_LAUNCHXL_PWMPIN7, .gpTimerUnit = CC2650_LAUNCHXL_GPTIMER3B } ,
    *  };
    *    @endcode
    */
    typedef struct PWMTimerCC26XX_HwAttrs
    {
        PIN_Id  pwmPin;               /*!< PIN to output PWM signal on */
        uint8_t gpTimerUnit;          /*!< GPTimer unit index (0A, 0B, 1A..) */
    } PWMTimerCC26XX_HwAttrs;

    ...states 8 PWM configurations, but I see that they are ‘grouped’ as A and B. I guess this correlates to the fact that you can have up to 4 32bit PWMs and 8 16bit PWM configurations.

    The CC1350_LAUNCHXL board file states:
    #define Board_PWM0              CC1350_LAUNCHXL_PWM0
    #define Board_PWM1              CC1350_LAUNCHXL_PWM1
    #define Board_PWM2              CC1350_LAUNCHXL_PWM2
    #define Board_PWM3              CC1350_LAUNCHXL_PWM3
    #define Board_PWM4              CC1350_LAUNCHXL_PWM4
    #define Board_PWM5              CC1350_LAUNCHXL_PWM5
    #define Board_PWM6              CC1350_LAUNCHXL_PWM6
    #define Board_PWM7              CC1350_LAUNCHXL_PWM7
  • Hey Fred:

    Thanks for responding - yes I saw this in the code which is why I was thinking 8. Although the datasheet wasn't clear on this, I do see the section on Timers in the TRM does specifically indicate that it is 8 which is consistent with the code above. I think I am clear on this now.

    Thanks,
    Tim