This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Current ADC sampling pins in Motorware

Other Parts Discussed in Thread: DRV8312, MOTORWARE, LAUNCHXL-F28069M, BOOSTXL-DRV8305EVM, LAUNCHXL-F28027F

Hi,

I noticed on connector J1 of the DRV8312 Evaluation Board,

IA-FB: ADC-A1 is connected to ADC-B3

IB-FB: ADC-B1 is connected to ADC-B5

IC-FB: ADC-A3 is connected to ADC-A5

What would be the reason for having duplicate pins for current sampling, since only one for each phase is used in Motorware?

Thank you.

  • this board was made with multiple options for sampling current. specifically we wanted the option to sample pairs of current simultaneously or sequentially. in the code you can see we use pins for sequential sampling.
  • Hi Chris,

    I am new to motor control using F28xxx. I am also pretty confused with the setting of ADC channel. For all the possible schematics I can find from TI website, there are many ADC pin-assignment combinations.

    So far, I have LAUNCHXL-F28069M + BOOSTXL-DRV8305EVM for experiment. According to the schematic, IA is connected to ADCINA0, IB is connected to ADCINB0 and IC is connected ADCINA1. But my final target controller would be F28026F which doesn't have ADCINB0. So what is the best pin-assignment you suggest?
  • if you are going to use F28026F I suggest you use the schematic for

    LAUNCHXL-F28027F

    from

    C:\ti\motorware\motorware_1_01_00_16\sw\modules\hal\boards\boostxldrv8305_revA\f28x\f2802x\src\hal.c

    you can see the channels that are configured in SW for the motor control voltage and currents

      // sample the first sample twice due to errata sprz342f
      // ISEN_A
      ADC_setSocChanNumber(obj->adcHandle,ADC_SocNumber_0,ADC_SocChanNumber_B1);
      ADC_setSocTrigSrc(obj->adcHandle,ADC_SocNumber_0,ADC_SocTrigSrc_EPWM1_ADCSOCA);
      ADC_setSocSampleDelay(obj->adcHandle,ADC_SocNumber_0,ADC_SocSampleDelay_7_cycles);

      // ISEN_A
      ADC_setSocChanNumber(obj->adcHandle,ADC_SocNumber_1,ADC_SocChanNumber_B1);
      ADC_setSocTrigSrc(obj->adcHandle,ADC_SocNumber_1,ADC_SocTrigSrc_EPWM1_ADCSOCA);
      ADC_setSocSampleDelay(obj->adcHandle,ADC_SocNumber_1,ADC_SocSampleDelay_7_cycles);

      // ISEN_B
      ADC_setSocChanNumber(obj->adcHandle,ADC_SocNumber_2,ADC_SocChanNumber_B3);
      ADC_setSocTrigSrc(obj->adcHandle,ADC_SocNumber_2,ADC_SocTrigSrc_EPWM1_ADCSOCA);
      ADC_setSocSampleDelay(obj->adcHandle,ADC_SocNumber_2,ADC_SocSampleDelay_7_cycles);

      // ISEN_C
      ADC_setSocChanNumber(obj->adcHandle,ADC_SocNumber_3,ADC_SocChanNumber_B7);
      ADC_setSocTrigSrc(obj->adcHandle,ADC_SocNumber_3,ADC_SocTrigSrc_EPWM1_ADCSOCA);
      ADC_setSocSampleDelay(obj->adcHandle,ADC_SocNumber_3,ADC_SocSampleDelay_7_cycles);

      // VSEN_A
      ADC_setSocChanNumber(obj->adcHandle,ADC_SocNumber_4,ADC_SocChanNumber_A7);
      ADC_setSocTrigSrc(obj->adcHandle,ADC_SocNumber_4,ADC_SocTrigSrc_EPWM1_ADCSOCA);
      ADC_setSocSampleDelay(obj->adcHandle,ADC_SocNumber_4,ADC_SocSampleDelay_7_cycles);

      // VSEN_B
      ADC_setSocChanNumber(obj->adcHandle,ADC_SocNumber_5,ADC_SocChanNumber_A3);
      ADC_setSocTrigSrc(obj->adcHandle,ADC_SocNumber_5,ADC_SocTrigSrc_EPWM1_ADCSOCA);
      ADC_setSocSampleDelay(obj->adcHandle,ADC_SocNumber_5,ADC_SocSampleDelay_7_cycles);

      // VSEN_C
      ADC_setSocChanNumber(obj->adcHandle,ADC_SocNumber_6,ADC_SocChanNumber_A1);
      ADC_setSocTrigSrc(obj->adcHandle,ADC_SocNumber_6,ADC_SocTrigSrc_EPWM1_ADCSOCA);
      ADC_setSocSampleDelay(obj->adcHandle,ADC_SocNumber_6,ADC_SocSampleDelay_7_cycles);

      // V_PVDD
      ADC_setSocChanNumber(obj->adcHandle,ADC_SocNumber_7,ADC_SocChanNumber_A0);
      ADC_setSocTrigSrc(obj->adcHandle,ADC_SocNumber_7,ADC_SocTrigSrc_EPWM1_ADCSOCA);
      ADC_setSocSampleDelay(obj->adcHandle,ADC_SocNumber_7,ADC_SocSampleDelay_7_cycles);