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.

AM2634: ADC Syscfg Setting Issue in SDK 10.0

Part Number: AM2634
Other Parts Discussed in Thread: SYSCONFIG

Tool/software:

Hi expert,

    I have a question regarding to ADC Vref setting in SDK10.0.0.35. Please refer to adc_soc_oversampling_am263x-cc_r5fss0-0_nortos_ti-arm-clang example project.

The project is imported without any modification. When I tried to enable internal Vref by syscfg, the only internal buffer option is Reference BUFF1.

However, from TRM, ADC0/ADC1 use REFBUFF0. 

The option for REFBUFF0 is not there. Can you please check?

Regards

Andre

  • Hi Andre,

    The Reference Buffer here refers to the ADC Instance, the 

    SOC_enableAdcInternalReference API configures the correct buffer using the ADC Instance.
    As the adc_soc_oversampling_am263x-cc_r5fss0-0_nortos_ti-arm-clang example uses ADC1 by default, the reference buffer shown is correct.
    You can try changing the Adc Instance to verify that the ref buffer changes with correspondence to the adc instance
    Regards,
    Akshit
  • Akshit,

       No I don't agree your point of view. The AMS263x has 5 ADC converters and 2 internal REFBUFF.  

    If you select ADC4  REFBUFF2 is only option. ADC1 & ADC2 should not have internal Vref.

     But if you select ADC2, REFBUF1 option is still there.  

    This doesn't match what you say. I also don't understand why syscfg has different definition than TRM. 

      

    You can try it and check the bit setting in driver source code. 

    Regards

    Andre

  • Hi Andre,

    I acknowledge the naming convention issue here, and it should be fixed. I'll keep that in mind.

    However, 

    You can try it and check the bit setting in driver source code. 

    Please check the driver code. 

    The API always using the ADC instance and internally configures the buffer. Unless you want to disable this buffer, you don't need to select it from the global parameter settings.

    I agree with you that there are only 2 buffers present and the sysconfig shows the option to use a buffer for ADC1 and ADC2 as well. The Firmware expert is out of office today. Let me get the information on this particular design decision and get back to you tomorrow.

    However, in my understanding this shouldn't affect ADC functionality in any manner, just the UX due to incorrect naming convention.

    Regards,
    Akshit

  • Akshit,

       The accuracy of ADC is +/-5% as datasheet. We always use external Vref for control loop. That's way we need to disable internal buffers.

    Besides, ADC1&2 do not have internal Verf. Why do we enable REFBUFF as default for ADC1/2?  

    Regards

    Andre

  • I look into  SOC_enableAdcInternalReference(uint32_t adcInstance, uint32_t enable) source code in soc.c

    All ADC0, ADC1, ADC2 will set REFBUFF0. 

    So if ADC0 enable REFBUF but ADC1 or ADC2 disable it, the later call will overwritten previous result.

    ADC0 convert result will be wrong in it does not have  external Vref in this example.

    The SDK has issue.

    Regards

    Andre

  • Hi Andre,

    After referring to the latest TRM. REFBUF0 is associated with ADC0, ADC1, and ADC2. REFBUF1 is associated with ADC3 and ADC4.

    As can be seen from this connectivity diagram. ADC[2:1] rail is connected to the ADC[0] rail, thus we do have internal vref for ADC1 and ADC2.

    Can I know more about the usecase? does the customer want to use all ADC's via external vref? or do they want to use some of them via the internal vref?

    If for example they enable refbuf0, they will have to use internal vref for ADC[2:0] or they can disable refbuf0 and use external vref for all. Same goes for ADC[4:3]

    Let me know if this helps!

    Regards,
    Akshit 

  • Akshit,

    1.     I just download the latest TRM which is revised OCTOBER 2024. The latest TRM has description to indicate ADC0/ADC1/ADC2 associate with REFBUF0 but it needs external connection. A board connection is required to connect ADC_VREF*_G0 to ADC_VREF*_G1.

         External Vref is required if customer has accuracy requirement - Traction, power loop control, or power meter. Maximum +/-5% can not satisfy customer.  For this customer they want to achieve +/-1% accuracy for current/voltage monitor.    

    2. Regarding syscfg, we provide option for REFBUFF 0, 1, and 2 to associate ADC0-4. Syscfg should not show REFBUFF2 when customer enable ADC3/4 or BUFF1 for ADC1/2 in GUI. Syscfg should follow TRM.  We need to fix syscfg.

    Regards

    Andre

  • Thanks for the clarification Andre!

     External Vref is required if customer has accuracy requirement - Traction, power loop control, or power meter. Maximum +/-5% can not satisfy customer.  For this customer they want to achieve +/-1% accuracy for current/voltage monitor. 

    -> Are they open to using ADC0, 1, 2 all through external reference, that shouldn't be an issue.

    Regarding syscfg, we provide option for REFBUFF 0, 1, and 2 to associate ADC0-4. Syscfg should not show REFBUFF2 when customer enable ADC3/4 or BUFF1 for ADC1/2 in GUI. Syscfg should follow TRM.  We need to fix syscfg.

    -> Agreed, I'll make sure this change happens.

    Regards,
    Akshit

  • Are they open to using ADC0, 1, 2 all through external reference, that shouldn't be an issue.

    -> According to TRM, if we use external Vref. We should disable internal Vref. That's why  we need to disable all REFBUFFs correctly.

    Regards

    Andre

      

  • Hi Andre,

    This is a bug, it is filed and will be fixed before the next update.

    Regards,
    Akshit