请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C123GH6PM 你好。 我有带 TM4C123GH6PM MCU 的定制板和用于驱动 BLDC 电机的 drv835。 我需要在低侧 MOSFET 处于运行状态时测量电流。 我将 PWM 设置为向上/向下计数模式。 我认为、PWM 应该为 ADC 生成触发事件、然后计数器的值等于零。 有我的初始化代码:
void PWM_Init(){ SysCtlPeripheralEnable (SYSCTL_Periph_PWM0); while (!SysCtlPeripheralReady (SYSCTL_Periph_PWM0)); PWMGenConfigure (PWM0_BASE、PWM_GEN_0、PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC); PWMGenPeriodSet (PWM0_BASE、PWM_GEN_0、PWM_PERIOD); PWMGenConfigure (PWM0_BASE、PWM_GEN_2、PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC); PWMGenPeriodSet (PWM0_BASE、PWM_GEN_2、PWM_PERIOD); PWMGenConfigure (PWM0_BASE、PWM_GEN_3、PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC); PWMGenPeriodSet (PWM0_BASE、PWM_GEN_3、PWM_PERIOD); PWMGenIntTrigEnable (PWM0_BASE、PWM_GEN_0、PWM_INT_CNT_ZERO); PWMGenEnable (PWM0_BASE、PWM_GEN_0); PWMGenEnable (PWM0_BASE、PWM_GEN_2); PWMGenEnable (PWM0_BASE、PWM_GEN_3); PWMSyncTimeBase (PWM0_BASE、PWM_GEN_0_BIT | PWM_GEN_2_BIT | PWM_GEN_3_BIT); PWMOutputState (PWM0_BASE、(PWM_OUT_0_BIT | PWM_OUT_4_BIT | PWM_OUT_6_BIT)、true); } void ADC_Init(){ SysCtlPeripheralEnable (SYSCTL_Periph_ADC0); // //等待 ADC0模块准备就绪。 // while (!SysCtlPeripheralReady (SYSCTL_Periph_ADC0)); // //启用第一个采样序列发生器以捕获通道0的值 //发生处理器触发。 // ADCSequenceConfigure (ADC0_BASE、1、ADC_TRIGGER_PWM0、0); ADCSequenceStepConfigure (ADC0_BASE、1、0、ADC_CTL_CH0); ADCSequenceStepConfigure (ADC0_BASE、1、1、ADC_CTL_CH1); ADCSequenceStepConfigure (ADC0_BASE、1、2、ADC_CTL_CH2 | ADC_CTL_IE | ADC_CTL_END); ADCIntRegister (ADC0_BASE、1、handler_ADC); ADCIntEnable (ADC0_BASE、1); ADCSequenceEnable (ADC0_BASE、1); } void handler_ADC (void) { unsigned int state = ADCIntStatus (ADC0_BASE、0、true); ADCIntClear (ADC0_BASE、0); //TODO }
因此、PWM 按预期工作。 但 ADC 没有。 我想获取中断、然后 ADC 完成测量、并从 ADC FIFO 加载结果。 我不知道如何解决这个问题。 我找不到有关此问题的示例。