Thread 中讨论的其他器件:controlSUITE
工具/软件:Code Composer Studio
您好!
我是微控制器领域的新手。 我正在尝试编写一个代码、用于驱动2个 PWM、具有180相移和它们之间的死区。 我在某个点卡住了。 我的主要要求是
"在每半个 PWM 开关周期的适当时间可以触发 ADC 转换启动"。 为了实现这一点、我应该怎么做?
我在代码中包含 ADC 部分。 请告诉我、为了满足上述要求、我还必须对代码进行哪些其他更改。
谢谢你
ADC_setIntPulseGenMode (myAdc、ADC_IntPulseGenMode_Prior); //ADCINT1在 AdcResults 锁存后跳闸
ADC_enableInt (myAdc、ADC_IntNumber_1); //启用 ADCINT1
ADC_setIntMode (myAdc、ADC_IntNumber_1、ADC_IntMode_ClearFlag); //禁用 ADCINT1连续模式
ADC_setIntSrc (myAdc、ADC_IntNumber_1、ADC_IntSrc_EOC2); //设置 EOC2以触发 ADCINT1触发
ADC_setSockChanNumber (myAdc、ADC_SockNumber_0、ADC_SockChanNumber_A4); //将 SOC0通道选择设置为 ADCINA4
ADC_setSockChanNumber (myAdc、ADC_SockNumber_1、ADC_SockChanNumber_A4); //将 SOC1通道选择设置为 ADCINA4
ADC_setSockChanNumber (myAdc、ADC_SockNumber_2、ADC_SockChanNumber_A2); //将 SOC2通道选择设置为 ADCINA2
ADC_setSockTrigSrc (myAdc、ADC_SockNumber_0、ADC_SockTrigSrc_EPWM2_ADCSOCA); //设置 EPWM1A 上的 SOC0启动触发器、由于轮询 SOC0先转换、然后 SOC1
ADC_setSockTrigSrc (myAdc、ADC_SockNumber_1、ADC_SockTrigSrc_EPWM2_ADCSOCA); //设置 EPWM1A 上的 SOC1启动触发器,由于轮询 SOC0先转换,然后 SOC1
ADC_setSockTrigSrc (myAdc、ADC_SockNumber_2、ADC_SockTrigSrc_EPWM2_ADCSOCA); //设置 SOC2在 EPWM1A 上启动触发、因为轮询 SOC0先转换 SOC1、然后转换 SOC2
ADC_setSockSampleWindow (myAdc、ADC_SockNumber_0、ADC_SockSampleWindow_7_cycles); //将 SOC0 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1)
ADC_setSockSampleWindow (myAdc、ADC_SockNumber_1、ADC_SockSampleWindow_7_cycles); //将 SOC1 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1)
ADC_setSockSampleWindow (myAdc、ADC_SockNumber_2、ADC_SockSampleWindow_7_cycles); //将 SOC2 S/H 窗口设置为7个 ADC 时钟周期(6个 ACQPS 加1)
//启用 PWM 时钟
CLK_enablePwmClock (myClk、PWM_NUMBER_2);
CLK_enablePwmClock (myClk、PWM_NUMBER_1);
//设置 PWM
PWM_enableSockpulse (myPwm2);
PWM_enableSockpulse (myPwm1);
//在组上启用 SOC
PWM_setSockAPulseSrc (myPwm2、PWM_SockPulseSrc_CounterEqualCmpAcincr);
PWM_setSockAPulseSrc (myPwm1、PWM_SockPulseSrc_CounterEqualCmpAcincr);//从 CPMA 中选择 SOC (向上计数)
PWM_setSockAPeriod (myPwm2、PWM_SockPeriod_FirstEvent);
PWM_setSockAPeriod (myPwm1、PWM_SockPeriod_FirstEvent);//在第1个事件发生时生成脉冲
//PWM_setCmpA (myPwm2、0x0000); //设置比较值
//PWM_setPeriod (myPwm2、0x05DC);
//PWM_setPeriod (myPwm1、0x05DC); // 20Khz 采样频率下的周期= 1500
PWM_setCounterMode (myPwm2、PWM_CounterMode_Up);
PWM_setCounterMode (myPwm1、PWM_CounterMode_Up);
PWM_enableDeadBandHalfCycle (myPwm2);
PWM_getDeadBandFallingEdgeDelay (myPwm1);
PWM_getDeadBandRisingEdgeDelay (myPwm1);
PWM_setDeadBandInputMode (myPwm1、3);
PWM_setDeadBandPolarity (myPwm1、3);
PWM_setDeadBandRisingEdgeDelay (myPwm1、1.25);
PWM_setDeadBandFallingEdgeDelay (myPwm1、1.25);
// PWM_setChoppingPulseWidth (myPwm1、50);
CLK_enableTbClockSync (myClk);