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.

在LAUNCHXL-F280049C LaunchPad Kit 設定ADC

Other Parts Discussed in Thread: LAUNCHXL-F280049C, C2000WARE

Hi All,

電腦環境:MacOS 

IDE環境:Code Composer Studio Version: 9.1.0.00010

硬體設備:TI LaunchPad Kit, LAUNCHXL-F280049C

使用TI的open source: C2000Ware_2_00_00_02

閱讀的文件:SPRS945D, SPRUI33C, MCU025A

目前設定ADC

使用ADCA, SOC0

ADC RESULT 使用T0,T1

但是從GPIO引腳輸入電壓訊號只有送到ADCINA0的位置時(此時ADCINA1並沒有輸入任何訊號),卻發現T0, T1都有數值,

並且數值都不正確。

ADC初始設定代碼:

ADC_setVREF(ADCA_BASE, ADC_REFERENCE_INTERNAL, ADC_REFERENCE_3_3V);

AdcaRegs.ADCINTSEL1N2.bit.INT1CONT = 1;

AdcaRegs.ADCCTL2.bit.PRESCALE = ADC_CLK_DIV_4_0;

AdcaRegs.ADCSOC0CTL.bit.CHSEL = ADC_CH_ADCIN0;

AdcaRegs.ADCINTSEL1N2.bit.INT1E = 0;

AdcaRegs.ADCINTSOCSEL1.bit.SOC0 = 0;

AdcaRegs.ADCSOCPRICTL.bit.SOCPRIORITY = 0;

AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 5;

ADC_enableConverter(ADCA_BASE);

DEVICE_DELAY_US(1000);

ADC數值轉換代碼:

ADC_forceSOC(ADCA_BASE, ADC_SOC_NUMBER0);

adcAResult0 = AdcaResultRegs.ADCRESULT0;

adcAResult1 = AdcaResultRegs.ADCRESULT1;

請問是否我在暫存器設定有遺漏的地方嗎?

  • AdcaRegs.ADCINTSEL1N2.bit.INT1E = 0;的话,ADCINT1是禁用的?
    另外,你的程序是以ePWM1为SOC源进行采样,是否是参考TI官方例程进行配置:C:\ti\c2000\C2000Ware_2_00_00_03\device_support\f28004x\examples\adc
    建议先调试例程,再自己修改。
  • Hi Green,
    參考C:\ti\c2000\C2000Ware_2_00_00_03\device_support\f28004x\examples\adc
    之後,確實可以採樣ADC訊號。
    但若我同時開啟兩個設置轉換
    AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0;
    AdcaRegs.ADCSOC1CTL.bit.CHSEL = 1;
    則一個訊號與另一個訊號同時都會有值,且兩個採樣的數值都是錯的。

    不過若要同時採樣多個ADC訊號,是否要把不同ADC訊號設置在不同的SOC
    舉例 ,
    設定SOC轉換
    AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0;
    AdcaRegs.ADCSOC1CTL.bit.CHSEL = 1;
    讀取
    adcAResult0 = AdcaResultRegs.ADCRESULT0;
    adcAResult1 = AdcaResultRegs.ADCRESULT1;

    因為我嘗試將ADCINA0及ADCINA1同樣設置在SOC0
    會發現只要ADCINA0送入電壓訊號,ADCINA1同時也會讀取同樣的值
  • HI Green,

    根據數據手冊sprui33c
    頁數P1480, CH14.4.5 Expected Conversion Results
    Analog to 12-bit Digital Formulas
    且使用內部參考電壓
    SetVREF(ADC_ADCA, ADC_INTERNAL, ADC_VREF3P3);
    那麼送入電壓訊號為3V3,則在DEBUG會讀取到的數值應該為4096
    而我讀取到的數值卻只有38XX。
    若其他ADC通道沒有送入任何電壓訊號時,則會有5XX以上的數值,其實際值則會依照有送入電壓訊號的通道而決定。
    此現象是否在暫存器需要設定OFFSET之類的?

    請各位大神敬請指教,謝謝各位!

    PS. 在有使用到的ADC通道上皆有對GND串聯10K ohm電阻
  • 如果测试的信号源没有问题的话,ADC结果寄存器中的值就是接近4095。
    你的电压信号有没有用例程来测过?例程的测试结果怎么样?对地串联的10k电阻是在LaunchPad Kit的基础上自己添加的吗?
  • Hi Green,

    我是使用C:\ti\c2000\C2000Ware_2_00_00_03\device_support\f28004x\examples\adc
    此範例測試。
    硬體設備使用的是LaunchPad Kit,並有加入任何外部的任何零件或電路。
    因為送入電壓信號到ADC通道若沒有串聯電組,則讀取的數值會有更大的誤差,才會加入對地電阻(此現象已測試過)。
  • 我試著加入ADC offset
    參考sprui33c, CH13.13.1 ADC Zero Offset Calibration
    AdcaRegs.ADCOFFTRIM.bit.OFFTRIM = 0x70;
    但是ADC讀取的數值仍然沒有任何變化