Hello.
Is there any example projects setup for the EVAL-ADICUP3029 on how to generate/configure PWM?
If none, can you at least write a simple code to configure PWM. Thanks
Hello.
Is there any example projects setup for the EVAL-ADICUP3029 on how to generate/configure PWM?
If none, can you at least write a simple code to configure PWM. Thanks
Hi,
There is an example available on CCES (tmr_example_gp) for EVAL-ADICUP3029 to perform basic timer operation but it does not cover PWM configuration. For the PWM configuration, consider the code below. This generate PWM 50% duty cycle on pin IO33 of the board.
#include <common.h> #include <drivers/pwr/adi_pwr.h> #include <drivers/tmr/adi_tmr.h> #define GP2_LOAD_VALUE_FOR_60HZ 27082 // load value: (16.667ms / (1/26MHz * 16)) #define TIMER2_TIMER2_OUT_PORTP2_MUX ((uint16_t) ((uint16_t) 2<<2)) void GP2CallbackFunction(void *pCBParam, uint32_t Event, void * pArg) { } int main() { ADI_TMR_CONFIG tmrConfig; ADI_TMR_RESULT eResult; ADI_TMR_PWM_CONFIG pwmConfig; common_Init(); adi_pwr_Init(); adi_pwr_SetClockDivider(ADI_CLOCK_HCLK, 1u); adi_pwr_SetClockDivider(ADI_CLOCK_PCLK, 1u); *((volatile uint32_t *)REG_GPIO2_CFG) = TIMER2_TIMER2_OUT_PORTP2_MUX; adi_tmr_Init(ADI_TMR_DEVICE_GP2, GP2CallbackFunction, NULL, true); /* GP timer configuration */ tmrConfig.bCountingUp = false; tmrConfig.bPeriodic = true; tmrConfig.ePrescaler = ADI_TMR_PRESCALER_16; tmrConfig.eClockSource = ADI_TMR_CLOCK_HFOSC; tmrConfig.nLoad = GP2_LOAD_VALUE_FOR_60HZ; tmrConfig.nAsyncLoad = GP2_LOAD_VALUE_FOR_60HZ; tmrConfig.bReloading = true; tmrConfig.bSyncBypass = false; eResult = adi_tmr_ConfigTimer(ADI_TMR_DEVICE_GP2, &tmrConfig); DEBUG_RESULT("Error configuring GP2 PWM.", eResult, ADI_TMR_SUCCESS); /* timer PWM configuration */ /* Configure GP2 PWM0 to have a PWM duty cycle of 50% */ pwmConfig.eOutput = ADI_TMR_PWM_OUTPUT_0; pwmConfig.bMatch = true; pwmConfig.bIdleHigh = false; pwmConfig.nMatchValue = (uint16_t) (GP2_LOAD_VALUE_FOR_60HZ / 2); eResult = adi_tmr_ConfigPwm(ADI_TMR_DEVICE_GP2, &pwmConfig); DEBUG_RESULT("Error configuring GP2 PWM.", eResult, ADI_TMR_SUCCESS); /* GP timer enable */ eResult = adi_tmr_Enable(ADI_TMR_DEVICE_GP2, true); DEBUG_RESULT("Error configuring GP2 PWM.", eResult, ADI_TMR_SUCCESS); while(1){ } }