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讀取的數值仍然沒有任何變化
相关推荐
- TIDM-DC-DC-BUCK: Design files can't download
- TMS320F28335: Error enabling this function: This task cannot be accomplished with the existing AET resources.
- TMS320F280049: 芯片在运行过程中莫名出现复位
- TMS320F28035: Ti28035芯片看门狗复位偶尔失败问题
- TMS320C28346: 28346 DMA和CPU同时访问冲突问题
- TMS320F28335: 是否有对应的SDL 软件诊断库?
- LAUNCHXL-F28069M: J3,5V引脚的作用是什么;在ADC采样过程中,需要怎样接外接信号?
- TMS320F28335: C2000™︎ 微控制器论坛