山东建设企业网站,企业做网站有哪些好处,营销公司介绍,免费创建网站平台有哪些文章目录 1 EPWM介绍1.1 引脚1.2 时钟1.3 比较寄存器 2 函数 1 EPWM介绍
RT1052 具有 4 个 eFlexPWM(eFlexWM1~eFlex_PWM4)。
每个 eFlexPWM 可以产生四路互补 PWM即产生 8 个 PWM#xff0c;也可以产生相互独立的 PWM 波。四路分别是模块0-3每个 eFlexPWM 具有各自的故障检… 文章目录 1 EPWM介绍1.1 引脚1.2 时钟1.3 比较寄存器 2 函数 1 EPWM介绍
RT1052 具有 4 个 eFlexPWM(eFlexWM1~eFlex_PWM4)。
每个 eFlexPWM 可以产生四路互补 PWM即产生 8 个 PWM也可以产生相互独立的 PWM 波。四路分别是模块0-3每个 eFlexPWM 具有各自的故障检电路当故障发生时根据程序锁定 PWM 输出引脚的电平状态。
1.1 引脚
PWM_A 与 PWM_B 可以独立输出也可以作为互补对输出。
PWM_X 比较特殊只有 eFlex PWM1 拥有 PWM_X 对应的外部输出引脚可直接输出 PWM。eFlexPWM(eFlexWMM2~eFlex_PWM4) 只能通过 XBAR 映射到外部输出引脚才能输出 PWM。
1.2 时钟 - FLEXPWM 子模块可选的时钟源有 IPBus clock、EXT_CLK。
FLEXPWM 子模块 0 还可以选择 AUX_CLK_input 作为时钟源。
1.3 比较寄存器
比较寄存器用于产生 PWM 波每个 FLEXPWM 拥有 6 个比较寄存器
第一只有eFlexPWM1拥有与PWMX直接对应的外部引脚而其他FLEXPWM 需要使用 XBAR 映射到相应的外部引脚才能输出 PWM。第二比较寄存 0 和 1 可以输出 HalfComp 信号和 Mod Comp 信号这两个信号可用作 eFlexPWM1 寄存器加载信号。比较寄存器 2 和 3 用于产生 PWM23比较寄存器 4 和 5 用于产生 PWM45 根据寄存器配置不同PWM23 和 PWM45 可以独立输出也可以组成一对互补的 PWM 波
2 函数
CLOCK_SetDiv(kCLOCK_AhbDiv, 0x2); /* Set AHB PODF to 2, divide by 3 */CLOCK_SetDiv(kCLOCK_IpgDiv, 0x3); /* Set IPG PODF to 3, divede by 4 */CLOCK_SetDiv
/* Set the PWM Fault inputs to a low value */XBARA_Init(XBARA1);XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1Fault0);XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1Fault1);XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1234Fault2);XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1234Fault3);XBAR函数
typedef enum _pwm_chnl_pair_operation
{kPWM_Independent 0U, /*! PWM A PWM B operate as 2 independent channels */kPWM_ComplementaryPwmA, /*! PWM A PWM B are complementary channels, PWM A generates the signal */kPWM_ComplementaryPwmB /*! PWM A PWM B are complementary channels, PWM B generates the signal */
} pwm_chnl_pair_operation_t;模式配置。 A产生信号B互补等。 PWM_Init(PWM2,kPWM_Module_3,pwm2sm3_config); //初始化PWM2模块3模块初始化 /* Call the init function with demo configuration */PWM_DRV_Init3PhPwm();初始化PWM波的配置
//设置PWM2中央对齐模式
PWM_SetupPwm(PWM2,kPWM_Module_3,pwm_ignal,2,kPWM_CenterAligned,fre,sourceclock);//使用了两个通道PWM_SetPwmLdok(PWM2,kPWM_Control_Module_3,true); //设置PWM的load ok位
PWM_StartTimer(PWM2,kPWM_Control_Module_3); //开启定时器kPWM_CenterAligned 中央对齐模式 /* Update duty cycles for all 3 PWM signals */PWM_UpdatePwmDutycycle(BOARD_PWM_BASEADDR, kPWM_Module_0, kPWM_PwmA, kPWM_SignedCenterAligned, pwmVal);PWM_UpdatePwmDutycycle(BOARD_PWM_BASEADDR, kPWM_Module_1, kPWM_PwmA, kPWM_SignedCenterAligned, (pwmVal 1));PWM_UpdatePwmDutycycle(BOARD_PWM_BASEADDR, kPWM_Module_2, kPWM_PwmA, kPWM_SignedCenterAligned, (pwmVal 2));/* Set the load okay bit for all submodules to load registers from their buffer */PWM_SetPwmLdok(BOARD_PWM_BASEADDR, kPWM_Control_Module_0 | kPWM_Control_Module_1 | kPWM_Control_Module_2, true);占空比更新。