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.

[参考译文] TMS320F28377D:ADC 设置

Guru**** 1791630 points
Other Parts Discussed in Thread: SYSCONFIG, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1173483/tms320f28377d-adc-settings

器件型号:TMS320F28377D
Thread 中讨论的其他器件:SysConfigC2000WARE

 您好!

我有以下简单的代码、对我来说并不简单。  请帮我理解并改进一下。

1.对于 acqps 设置,我是否可以使用一个 if 语句来包含所有 ADCA 到 ADCD (我实际上具有从 ADCA 到 ADCD 的设置)?

2.对于一个 ADCA 或其他 ADCX、 以下一个中断设置是否足够? 或者我是否需要添加这三个? 是否在 ADCA SOC0设置后标记设置?

      AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 1;     //EAP_X 将设置 INT1标志

      AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;       //启用 INT1标志

      AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;     //确保 INT1标志被清除

3.我是否需要设置此项(这是默认设置)?  AdcaRegs.ADCSOCPRICTL.bit.SOCPRIORITY = 15; // SOC0为高优先级。

4、触发源是 ePWM1、如果 ePWM3未设置或处于关闭状态、该怎么办? ADC 值看起来是什么、为零还是不允许?  在我的设置中、有些由 ePWM1触发、有些由 ePWM7触发。 当 ePWM1导通时、ePWM7关断、反之亦然、我可以一起进行设置还是必须单独设置?

ADCa_soc0、ADCB_soc0、ADCC_soc0和 ADCd_soc0同时被处理、那么所有 ADCx_SOC1、--15? 如果是、我能否通过选择最大的 soc 作为触发源来为所有中断设置一个中断?  

6. SEL1N2或 SEL3N4中的任何一个都可以选择吗?

感谢您的帮助、

红梅

------------------------------------------------------------------

if (adc_resolution_12bit = AdcaRegs.ADCCTL2.bit.resolution){

           acqps = 14;

       }

       否则

           acqps = 63;

       }        

 

      EALLOW;

      {

          AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0;          

          AdcaRegs.ADCSOC0CTL.bit.ACQPS = acqps

          AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 5;        

          AdcaRegs.ADCSOCPRICTL.bit.SOCPRIORITY = 15; // SOC0为高优先级

      }

     ?  AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0;     //EAP_X 将设置 INT1标志

     ?  AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;       //启用 INT1标志

     ? AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;     //确保 INT1标志被清除

      {

          AdcaRegs.ADCSOC1CTL.bit.CHSEL = 1;       

          AdcaRegs.ADCSOC1CTL.bit.ACQPS = acqps;

          AdcaRegs.ADCSOC1CTL.bit.TRIGSEL = 5;

      }

      AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 1;     //EAP_X 将设置 INT1标志

      AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;       //启用 INT1标志

      AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;     //确保 INT1标志被清除

      EDIS;

 

      ///---------------------------------------------------------

if (adc_resolution_12bit = AdcbRegs.ADCCTL2.bit.resolution){

          acqps = 14;

      }

      否则

          acqps = 63;

      }

      EALLOW;

     // if (1 <= ADC_B_SAMPLING_NUMBER_ISR1)

      {

          AdcbRegs.ADCSOC0CTL.bit.CHSEL = ADC_B_SAMPLING_CH1_ISR1;

          AdcbRegs.ADCSOC0CTL.bit.ACQPS = acqps;      

          AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 5;

      }

      AdcbRegs.ADCINTSEL1N2.bit.INT1SEL = 1;     // SOC0结束将设置 INT1标志

      AdcbRegs.ADCINTSEL1N2.bit.INT1E = 1;       //启用 INT1标志

      AdcbRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;     //确保 INT1标志被清除

      EDIS;

--------------------------------------------------------------------

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Hongmei、

    我建议使用我们的 SysConfig 工具设置 ADC、它是一种图形工具、可根据您所需的设置为您生成代码。 如果您下载最新的 C2000Ware 软件包并查看'driverlib'文件夹中的 F2837xD ADC 示例、您会发现一个利用 SysConfig 的项目。  

    如果在使用该工具后仍有相同的问题、请告知我。

    此致、

    Marlyn

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Marlyn、

    我有一个愚蠢的问题:如何才能获得 要使用项目的所有相关文件?

    例如、我在项目中修改以下设置。 ADC_forceMultipleSOC (ADCA_BASE、(ADC_FORCE_SOC0 | ADC_FORCE_SOC1)等函数以及 ADCA_BASE 等参数位于 hw_memmap.h 和 adc.h 文件中。 我可以将这两个文件复制到我的项目中、但是 adc.h 有其他头文件、我在哪里可以找到它?

    我可以只是添加一些文件、还是获取项目的包含路径、或者使用它的其他简单方法吗?

    谢谢、

    -红梅

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Hongmei、

    我建议您从 C2000Ware 中找到的空项目开始工作。 这样、所有路径都将被解析、并且您无需在项目中手动包含文件。

    C:\ti\c2000\C2000Ware_version\driverlib\f2837xd\examples\cpu1\empty_projects

    此致、

    Marlyn