TI中文支持网
TI专业的中文技术问题搜集分享网站

在LAUNCHXL-F280049C LaunchPad Kit 設定ADC

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;

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

Green Deng:AdcaRegs.ADCINTSEL1N2.bit.INT1E = 0;的话,ADCINT1是禁用的?
另外,你的程序是以ePWM1为SOC源进行采样,是否是参考TI官方例程进行配置:C:\ti\c2000\C2000Ware_2_00_00_03\device_support\f28004x\examples\adc
建议先调试例程,再自己修改。

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;

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

user4310360:

回复 Green Deng:

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 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;

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

user4310360:

回复 Green Deng:

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電阻

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;

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

Green Deng:

回复 user4310360:

如果测试的信号源没有问题的话,ADC结果寄存器中的值就是接近4095。
你的电压信号有没有用例程来测过?例程的测试结果怎么样?对地串联的10k电阻是在LaunchPad Kit的基础上自己添加的吗?

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;

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

user4310360:

回复 Green Deng:

Hi Green,

我是使用C:\ti\c2000\C2000Ware_2_00_00_03\device_support\f28004x\examples\adc
此範例測試。
硬體設備使用的是LaunchPad Kit,並有加入任何外部的任何零件或電路。
因為送入電壓信號到ADC通道若沒有串聯電組,則讀取的數值會有更大的誤差,才會加入對地電阻(此現象已測試過)。

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;

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

user4310360:

回复 Green Deng:

我試著加入ADC offset
參考sprui33c, CH13.13.1 ADC Zero Offset Calibration
AdcaRegs.ADCOFFTRIM.bit.OFFTRIM = 0x70;
但是ADC讀取的數值仍然沒有任何變化

赞(0)
未经允许不得转载:TI中文支持网 » 在LAUNCHXL-F280049C LaunchPad Kit 設定ADC
分享到: 更多 (0)