主题中讨论的其他器件:LAUNCHXL-F280025C、 C2000WARE
您好!
我尝试使用 HAL_setupADCs()函数设置 ADC。 我重复使用最初为 f280025示例编写的函数。 我在以下两行中遇到编译器错误。 编译器正在查找 adc_setVREF()的定义和声明、 f28379s driverlib 的 adc.c 中缺少该定义和声明。 设置 f28379s 基准电压的功能是什么?
//基于 LAUNCHXL-F280025C 的套件
adc_setVREF (obj->adcHandle[0]、adc_reference_internal、adc_reference_3_3V);
adc_setVREF (obj->adcHandle[1]、adc_reference_internal、adc_reference_3_3V);
void HAL_setupADCs(HAL_Handle handle)
{
HAL_Obj *obj = (HAL_Obj *)handle;
SysCtl_delay(100U);
#if defined(BSXL8323RS_REVA) || defined(BSXL8323RH_REVB) || \
defined(BSXL8353RS_REVA) || defined(BSXL3PHGAN_REVA) || \
defined(BSXL8316RT_REVA) || defined(DRV8329AEVM_REVA)
/* commented JS
// LAUNCHXL-F280025C based kits
ADC_setVREF(obj->adcHandle[0], ADC_REFERENCE_INTERNAL, ADC_REFERENCE_3_3V);
ADC_setVREF(obj->adcHandle[1], ADC_REFERENCE_INTERNAL, ADC_REFERENCE_3_3V);
*/ // end commented JS
#elif defined(HVMTRPFC_REV1P1)
// TMDSCNCD280025C based kits
ADC_setVREF(obj->adcHandle[0], ADC_REFERENCE_INTERNAL, ADC_REFERENCE_3_3V);
ADC_setVREF(obj->adcHandle[1], ADC_REFERENCE_INTERNAL, ADC_REFERENCE_3_3V);
#else
#error Select the right clock of PLL for the board
#endif // ADC Reference
SysCtl_delay(100U);
// Set main clock scaling factor (50MHz max clock for the ADC module)
ADC_setPrescaler(obj->adcHandle[0], ADC_CLK_DIV_2_0);
ADC_setPrescaler(obj->adcHandle[1], ADC_CLK_DIV_2_0);
// set the ADC interrupt pulse generation to end of conversion
ADC_setInterruptPulseMode(obj->adcHandle[0], ADC_PULSE_END_OF_CONV);
ADC_setInterruptPulseMode(obj->adcHandle[1], ADC_PULSE_END_OF_CONV);
// set priority of SOCs
ADC_setSOCPriority(obj->adcHandle[0], ADC_PRI_ALL_HIPRI);
ADC_setSOCPriority(obj->adcHandle[1], ADC_PRI_ALL_HIPRI);
// enable the ADCs
ADC_enableConverter(obj->adcHandle[0]);
ADC_enableConverter(obj->adcHandle[1]);
// delay to allow ADCs to power up
SysCtl_delay(1000U);
//-------------------------------------------------------------------------
#if defined(MOTOR1_ISBLDC)
// configure the interrupt sources
// Interrupt for motor 1
ADC_setInterruptSource(MTR1_ADC_INT_BASE,
MTR1_ADC_INT_NUM, MTR1_ADC_INT_SOC);
// Idc 1st
ADC_setupSOC(MTR1_IDC1_ADC_BASE, MTR1_IDC1_ADC_SOC_NUM, MTR1_IDC_TRIGGER_SOC,
MTR1_IDC1_ADC_CH_NUM, MTR1_ADC_I_SAMPLEWINDOW);
// Configure PPB to eliminate subtraction related calculation
// PPB is associated with ADCA_SOC0
ADC_setupPPB(MTR1_IDC1_ADC_BASE, MTR1_IDC1_ADC_PPB_NUM, MTR1_IDC1_ADC_SOC_NUM);
// Write zero to this for now till offset calibration complete
ADC_setPPBCalibrationOffset(MTR1_IDC1_ADC_BASE, MTR1_IDC1_ADC_PPB_NUM, 0);
// Idc 2nd
ADC_setupSOC(MTR1_IDC2_ADC_BASE, MTR1_IDC2_ADC_SOC_NUM, MTR1_IDC_TRIGGER_SOC,
MTR1_IDC2_ADC_CH_NUM, MTR1_ADC_I_SAMPLEWINDOW);
// Configure PPB to eliminate subtraction related calculation
// PPB is associated with ADCC_SOC0
ADC_setupPPB(MTR1_IDC2_ADC_BASE, MTR1_IDC2_ADC_PPB_NUM, MTR1_IDC2_ADC_SOC_NUM);
// Write zero to this for now till offset calibration complete
ADC_setPPBCalibrationOffset(MTR1_IDC2_ADC_BASE, MTR1_IDC2_ADC_PPB_NUM, 0);
// VSEN_A_M1
ADC_setupSOC(MTR1_VU_ADC_BASE, MTR1_VU_ADC_SOC_NUM, MTR1_ADC_TRIGGER_SOC,
MTR1_VU_ADC_CH_NUM, MTR1_ADC_I_SAMPLEWINDOW);
// VSEN_B_M1
ADC_setupSOC(MTR1_VV_ADC_BASE, MTR1_VV_ADC_SOC_NUM, MTR1_ADC_TRIGGER_SOC,
MTR1_VV_ADC_CH_NUM, MTR1_ADC_I_SAMPLEWINDOW);
// VSEN_C_M1
ADC_setupSOC(MTR1_VW_ADC_BASE, MTR1_VW_ADC_SOC_NUM, MTR1_ADC_TRIGGER_SOC,
MTR1_VW_ADC_CH_NUM, MTR1_ADC_I_SAMPLEWINDOW);
// VSEN_DCBUS_M1-->Trig Interrupt
ADC_setupSOC(MTR1_VDC_ADC_BASE, MTR1_VDC_ADC_SOC_NUM, MTR1_ADC_TRIGGER_SOC,
MTR1_VDC_ADC_CH_NUM, MTR1_ADC_I_SAMPLEWINDOW);
#if defined(CMD_POT_EN) || defined(DRV8329AEVM_REVA)
// POT_M1
ADC_setupSOC(MTR1_POT_ADC_BASE, MTR1_POT_ADC_SOC_NUM, MTR1_ADC_TRIGGER_SOC,
MTR1_POT_ADC_CH_NUM, MTR1_ADC_I_SAMPLEWINDOW);
#endif // CMD_POT_EN | DRV8329AEVM_REVA
#else // !MOTOR1_ISBLDC
// configure the SOCs for M1
#if defined(MOTOR1_DCLINKSS)
// configure the interrupt sources
// Interrupt for motor 1
ADC_setInterruptSource(MTR1_ADC_INT_BASE,
MTR1_ADC_INT_NUM, MTR1_ADC_INT_SOC);
// Idc 1st
ADC_setupSOC(MTR1_IDC1_ADC_BASE, MTR1_IDC1_ADC_SOC_NUM, MTR1_IDC1_TRIGGER_SOC,
MTR1_IDC1_ADC_CH_NUM, MTR1_ADC_I_SAMPLEWINDOW);
// Configure PPB to eliminate subtraction related calculation
// PPB is associated with ADCA_SOC0
ADC_setupPPB(MTR1_IDC1_ADC_BASE, MTR1_IDC1_ADC_PPB_NUM, MTR1_IDC1_ADC_SOC_NUM);
// Write zero to this for now till offset calibration complete
ADC_setPPBCalibrationOffset(MTR1_IDC1_ADC_BASE, MTR1_IDC1_ADC_PPB_NUM, 0);
// Idc 2nd
ADC_setupSOC(MTR1_IDC2_ADC_BASE, MTR1_IDC2_ADC_SOC_NUM, MTR1_IDC2_TRIGGER_SOC,
MTR1_IDC2_ADC_CH_NUM, MTR1_ADC_I_SAMPLEWINDOW);
// Configure PPB to eliminate subtraction related calculation
// PPB is associated with ADCC_SOC0
ADC_setupPPB(MTR1_IDC2_ADC_BASE, MTR1_IDC2_ADC_PPB_NUM, MTR1_IDC2_ADC_SOC_NUM);
// Write zero to this for now till offset calibration complete
ADC_setPPBCalibrationOffset(MTR1_IDC2_ADC_BASE, MTR1_IDC2_ADC_PPB_NUM, 0);
// Idc 3rd
ADC_setupSOC(MTR1_IDC3_ADC_BASE, MTR1_IDC3_ADC_SOC_NUM, MTR1_IDC3_TRIGGER_SOC,
MTR1_IDC3_ADC_CH_NUM, MTR1_ADC_I_SAMPLEWINDOW);
// Configure PPB to eliminate subtraction related calculation
// PPB is associated with ADCA_SOC0
ADC_setupPPB(MTR1_IDC3_ADC_BASE, MTR1_IDC3_ADC_PPB_NUM, MTR1_IDC3_ADC_SOC_NUM);
// Write zero to this for now till offset calibration complete
ADC_setPPBCalibrationOffset(MTR1_IDC3_ADC_BASE, MTR1_IDC3_ADC_PPB_NUM, 0);
// Idc 4th
ADC_setupSOC(MTR1_IDC4_ADC_BASE, MTR1_IDC4_ADC_SOC_NUM, MTR1_IDC4_TRIGGER_SOC,
MTR1_IDC4_ADC_CH_NUM, MTR1_ADC_I_SAMPLEWINDOW);
// Configure PPB to eliminate subtraction related calculation
// PPB is associated with ADCC_SOC0
ADC_setupPPB(MTR1_IDC4_ADC_BASE, MTR1_IDC4_ADC_PPB_NUM, MTR1_IDC4_ADC_SOC_NUM);
// Write zero to this for now till offset calibration complete
ADC_setPPBCalibrationOffset(MTR1_IDC4_ADC_BASE, MTR1_IDC4_ADC_PPB_NUM, 0);
#else // !(MOTOR1_DCLINKSS)
// configure the interrupt sources
// Interrupt for motor 1
ADC_setInterruptSource(MTR1_ADC_INT_BASE,
MTR1_ADC_INT_NUM, MTR1_ADC_INT_SOC);
// ISEN_A_M1
ADC_setupSOC(MTR1_IU_ADC_BASE, MTR1_IU_ADC_SOC_NUM, MTR1_ADC_TRIGGER_SOC,
MTR1_IU_ADC_CH_NUM, MTR1_ADC_I_SAMPLEWINDOW);
// Configure PPB to eliminate subtraction related calculation
// PPB is associated with ADCA_SOC0
ADC_setupPPB(MTR1_IU_ADC_BASE, MTR1_IU_ADC_PPB_NUM, MTR1_IU_ADC_SOC_NUM);
// Write zero to this for now till offset calibration complete
ADC_setPPBCalibrationOffset(MTR1_IU_ADC_BASE, MTR1_IU_ADC_PPB_NUM, 0);
// ISEN_B_M1
ADC_setupSOC(MTR1_IV_ADC_BASE, MTR1_IV_ADC_SOC_NUM, MTR1_ADC_TRIGGER_SOC,
MTR1_IV_ADC_CH_NUM, MTR1_ADC_I_SAMPLEWINDOW);
// Configure PPB to eliminate subtraction related calculation
// PPB is associated with ADCC_SOC0
ADC_setupPPB(MTR1_IV_ADC_BASE, MTR1_IV_ADC_PPB_NUM, MTR1_IV_ADC_SOC_NUM);
// Write zero to this for now till offset calibration complete
ADC_setPPBCalibrationOffset(MTR1_IV_ADC_BASE, MTR1_IV_ADC_PPB_NUM, 0);
// ISEN_C_M1
ADC_setupSOC(MTR1_IW_ADC_BASE, MTR1_IW_ADC_SOC_NUM, MTR1_ADC_TRIGGER_SOC,
MTR1_IW_ADC_CH_NUM, MTR1_ADC_I_SAMPLEWINDOW);
// Configure PPB to eliminate subtraction related calculation
// PPB is associated with ADCA_SOC0
ADC_setupPPB(MTR1_IW_ADC_BASE, MTR1_IW_ADC_PPB_NUM, MTR1_IW_ADC_SOC_NUM);
// Write zero to this for now till offset calibration complete
ADC_setPPBCalibrationOffset(MTR1_IW_ADC_BASE, MTR1_IW_ADC_PPB_NUM, 0);
#endif // !(MOTOR1_DCLINKSS)
#if defined(MOTOR1_FAST) || defined(MOTOR1_ISBLDC)
// VSEN_A_M1
ADC_setupSOC(MTR1_VU_ADC_BASE, MTR1_VU_ADC_SOC_NUM, MTR1_ADC_TRIGGER_SOC,
MTR1_VU_ADC_CH_NUM, MTR1_ADC_V_SAMPLEWINDOW);
// VSEN_B_M1
ADC_setupSOC(MTR1_VV_ADC_BASE, MTR1_VV_ADC_SOC_NUM, MTR1_ADC_TRIGGER_SOC,
MTR1_VV_ADC_CH_NUM, MTR1_ADC_V_SAMPLEWINDOW);
// VSEN_C_M1
ADC_setupSOC(MTR1_VW_ADC_BASE, MTR1_VW_ADC_SOC_NUM, MTR1_ADC_TRIGGER_SOC,
MTR1_VW_ADC_CH_NUM, MTR1_ADC_V_SAMPLEWINDOW);
#endif // MOTOR1_FAST || MOTOR1_ISBLDC
// VSEN_DCBUS_M1-->Trig Interrupt
ADC_setupSOC(MTR1_VDC_ADC_BASE, MTR1_VDC_ADC_SOC_NUM, MTR1_ADC_TRIGGER_SOC,
MTR1_VDC_ADC_CH_NUM, MTR1_ADC_V_SAMPLEWINDOW);
#if defined(CMD_POT_EN) || defined(DRV8329AEVM_REVA)
// POT_M1
ADC_setupSOC(MTR1_POT_ADC_BASE, MTR1_POT_ADC_SOC_NUM, MTR1_ADC_TRIGGER_SOC,
MTR1_POT_ADC_CH_NUM, MTR1_ADC_V_SAMPLEWINDOW);
#endif // CMD_POT_EN | DRV8329AEVM_REVA
#endif // !MOTOR1_ISBLDC
return;
} // end of HAL_setupADCs() function
