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.

[参考译文] CCS/TMS320F28388D:模拟输入问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/846281/ccs-tms320f28388d-analog-input-question

器件型号:TMS320F28388D

工具/软件:Code Composer Studio

我正在尝试利用此开发板的所有24个模拟输入。 我遇到了引脚25 和27的问题。 它们在180引脚排列表中标记为 ADCIN14和 ADCIN15。 我已经对所有其他22个模拟信号进行了编程和工作、但这两个信号给了我一个问题。 它们似乎位于端口 C 上、并被称为 ADC-C0和 ADC-C1。 下面是我要尝试执行的一些代码片段。

ADC_forceSOC (ADCC_BASE、ADC_SOC_NUMBER0);

ADC_forceSOC (ADCC_BASE、ADC_SOC_number1);

 

adcResult0 = ADC_readResult (ADCCRESULT_base、ADC_SOC_NUMBER0);

adcResult1 = ADC_readResult (ADCCRESULT_base、ADC_SOC_number1);

 

所有其他模拟信号都以这种方式访问并工作、但上述两个信号除外。 我能够在 CCS 的寄存器监视器中看到数据 、这两者是否被视为位于端口 C 上? 如何正确解决这些问题?

ADC_forceSOC (ADCA_BASE、ADC_SOC_NUMBER0);

ADC_forceSOC (ADCA_BASE、ADC_SOC_number1);

ADC_forceSOC (ADCA_BASE、ADC_SOC_number2);

ADC_forceSOC (ADCA_BASE、ADC_SOC_Number3);

ADC_forceSOC (ADCA_BASE、ADC_SOC_Number4);

ADC_forceSOC (ADCA_BASE、ADC_SOC_Number5);

ADC_forceSOC (ADCB_BASE、ADC_SOC_NUMBER0);

ADC_forceSOC (ADCB_BASE、ADC_SOC_number1);

ADC_forceSOC (ADCB_BASE、ADC_SOC_number2);

ADC_forceSOC (ADCB_BASE、ADC_SOC_Number3);

ADC_forceSOC (ADCB_BASE、ADC_SOC_Number4);

ADC_forceSOC (ADCB_BASE、ADC_SOC_Number5);

ADC_forceSOC (ADCC_BASE、ADC_SOC_NUMBER0);不起作用

ADC_forceSOC (ADCC_BASE、ADC_SOC_number1);不起作用

ADC_forceSOC (ADCC_BASE、ADC_SOC_number2);

ADC_forceSOC (ADCC_BASE、ADC_SOC_Number3);

ADC_forceSOC (ADCC_BASE、ADC_SOC_Number4);

ADC_forceSOC (ADCC_BASE、ADC_SOC_Number5);

ADC_forceSOC (ADCD_BASE、ADC_SOC_NUMBER0);

ADC_forceSOC (ADCD_BASE、ADC_SOC_number1);

ADC_forceSOC (ADCD_BASE、ADC_SOC_number2);

ADC_forceSOC (ADCD_BASE、ADC_SOC_Number3);

ADC_forceSOC (ADCD_BASE、ADC_SOC_Number4);

ADC_forceSOC (ADCD_BASE、ADC_SOC_Number5);

adcResult0 = ADC_readResult (ADCARESULT_base、ADC_SOC_NUMBER0);

adcResult1 = ADC_readResult (ADCARESULT_base、ADC_SOC_number1);

adcResult2 = ADC_readResult (ADCARESULT_base、ADC_SOC_number2);

adcResult3 = ADC_readResult (ADCARESULT_base、ADC_SOC_Number3);

adcResult4 = ADC_readResult (ADCARESULT_base、ADC_SOC_Number4);

adcResult5 = ADC_readResult (ADCARESULT_base、ADC_SOC_Number5);

adcBResult0 = ADC_readResult (ADCBRESULT_base、ADC_SOC_NUMBER0);

adcBResult1 = ADC_readResult (ADCBRESULT_base、ADC_SOC_number1);

adcBResult2 = ADC_readResult (ADCBRESULT_base、ADC_SOC_number2);

adcBResult3 = ADC_readResult (ADCBRESULT_base、ADC_SOC_Number3);

adcBResult4 = ADC_readResult (ADCBRESULT_base、ADC_SOC_Number4);

adcBResult5 = ADC_readResult (ADCBRESULT_base、ADC_SOC_Number5);

adcResult0 = ADC_readResult (ADCCRESULT_base、ADC_SOC_NUMBER0);不起作用

adcResult1 = ADC_readResult (ADCCRESULT_base、ADC_SOC_number1);不起作用

adcResult2 = ADC_readResult (ADCCRESULT_base、ADC_SOC_number2);

adcResult3 = ADC_readResult (ADCCRESULT_base、ADC_SOC_Number3);

adcResult4 = ADC_readResult (ADCCRESULT_base、ADC_SOC_Number4);

adcResult5 = ADC_readResult (ADCCRESULT_base、ADC_SOC_Number5);

adcDResult0 = ADC_readResult (ADCDRESULT_base、ADC_SOC_NUMBER0);

adcDResult1 = ADC_readResult (ADCDRESULT_base、ADC_SOC_number1);

adcDResult2 = ADC_readResult (ADCDRESULT_base、ADC_SOC_number2);

adcDResult3 = ADC_readResult (ADCDRESULT_base、ADC_SOC_Number3);

adcDResult4 = ADC_readResult (ADCDRESULT_base、ADC_SOC_Number4);

adcDResult5 = ADC_readResult (ADCDRESULT_base、ADC_SOC_Number5);

 

谢谢

 

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

    ADCIN14和 ADCIN15实际上连接到所有 ADC (A-D)的通道14和15。 查看数据表中的模拟子系统方框图。

    当您说"ADC-C0和 ADC-C1"时、您是否说 ADC C SOC0和 SOC1分别配置为在通道14和15上进行转换? 我只是想确保您不会混淆完全独立的 SOC 号和通道号--您如何在 ADC_setupSOC()中配置这些 SOC?

    惠特尼

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

    您好!

    我不熟悉 adc_setupSOC(),我一直在查看 adc.c、adc.h 和 hw_adc.h 文件。 我查看了该图、发现这两个模拟信号未指定到特定端口(A-D)。 我不理解这两个输入的寻址。 我从仅使用几个输入的示例中的一个示例中工作、然后分别添加了这些示例。

    根据数据表、我了解没有 C0或 C1、即 IN14和 IN15。 不确定他们是如何在.h 和.c 文件中定义这些文件的、以及我将如何在程序中使用它们。

    请提供任何帮助。 提前感谢、

    Jeff

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

    ADC_setupSOC()位于 ADC.h 中 您需要调用它来设置 SOC 从哪个通道采样以及采样窗口的宽度。 例如、要分别对 ADC C SOC0和 SOC1上的 IN14和 IN15进行采样、应将其称为:

       ADC_setupSOC (ADCC_BASE、ADC_SOC_NUMBER0、ADC_TRIGGER_SW_ONLY、
                    ADC_CH_ADCIN14、15);
       ADC_setupSOC (ADCC_BASE、ADC_SOC_number1、ADC_TRIGGER_SW_ONLY、
                    ADC_CH_ADCIN15、15);

    不过、您可以在任何 ADC+SOC 组合上转换 ADCIN14和15。 它不必是 ADC C SOC0和 SOC1。

    惠特尼

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

    那么、如果我想将其称为 ADC C SOC0和1、我会添加 您 在 adc.h 或 我的主 程序中回复的上述代码吗? 我尝试添加到 adc.h、但仍然没有。

    这就是它的默认值:

    ADC_setupSOC (uint32_t base、ADC_SOCNsocumber 编号、ADC_Trigger

    ADC_Channel 通道、uint32_t samplpleWindow)

     

    谢谢、

    Jeff

     

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

    函数定义已在 adc.h 中。 您只需要在主程序中调用它(如我在上面的帖子中显示的那样)。

    我附加了 ADC_ex1_SoC_software 示例的修改版本、该版本可转换 ADC C 的 SOC 0和1上的 IN14和 IN15。

    e2e.ti.com/.../1004.adc_5F00_ex1_5F00_soc_5F00_software.c

    惠特尼

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

    就是这样! 我应该更好地查看我的代码。 我的主程序中有 ADC_setupSOC、但没有意识到它在那里。 一旦我将数字从0更改为14、将1更改为15、就可以正常工作。 我还有一个问题,我希望你能澄清。 查看以下代码、如何将物理引脚定义为 ADC_CH_ADCIN#? 例如:ADC_CH_ADCIN2对于所有 ADCA、ADCB、ADCC 和 ADCD 基址是相同的。 我希望你得到我的意思。

    感谢您的所有帮助。

    initADCSOOC ()

    ADC_setupSOC (ADCA_BASE、ADC_SOC_NUMBER0ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN0、64);

    ADC_setupSOC (ADCA_BASE、ADC_SOC_number1ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN1、64);

    ADC_setupSOC (ADCA_BASE、ADC_SOC_numer2ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN2、64);

    ADC_setupSOC (ADCA_BASE、ADC_SOC_Number3ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN3、64);

    ADC_setupSOC (ADCA_BASE、ADC_SOC_Number4ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN4、64);

    ADC_setupSOC (ADCA_BASE、ADC_SOC_Number5ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN5、64);

    ADC_setupSOC (ADCB_BASE、ADC_SOC_NUMBER0ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN0、64);

    ADC_setupSOC (ADCB_BASE、ADC_SOC_number1ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN1、64);

    ADC_setupSOC (ADCB_BASE、ADC_SOC_numer2ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN2、64);

    ADC_setupSOC (ADCB_BASE、ADC_SOC_Number3ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN3、64);

    ADC_setupSOC (ADCB_BASE、ADC_SOC_Number4ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN4、64);

    ADC_setupSOC (ADCB_BASE、ADC_SOC_Number5ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN5、64);

    ADC_setupSOC (ADCC_BASE、ADC_SOC_NUMBER0ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN14、64);

    ADC_setupSOC (ADCC_BASE、ADC_SOC_number1ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN15、64);

    ADC_setupSOC (ADCC_BASE、ADC_SOC_numer2ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN2、64);

    ADC_setupSOC (ADCC_BASE、ADC_SOC_Number3ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN3、64);

    ADC_setupSOC (ADCC_BASE、ADC_SOC_Number4ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN4、64);

    ADC_setupSOC (ADCC_BASE、ADC_SOC_Number5ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN5、64);

    ADC_setupSOC (ADCD_BASE、ADC_SOC_NUMBER0ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN0、64);

    ADC_setupSOC (ADCD_BASE、ADC_SOC_number1ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN1、64);

    ADC_setupSOC (ADCD_BASE、ADC_SOC_number2ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN2、64);

    ADC_setupSOC (ADCD_BASE、ADC_SOC_Number3ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN3、64);

    ADC_setupSOC (ADCD_BASE、ADC_SOC_Number4ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN4、64);

    ADC_setupSOC (ADCD_BASE、ADC_SOC_Number5ADC_TRIGGER_SW_ONLY

    ADC_CH_ADCIN5、64);

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

    所有 ADC 都设置为支持多达16个通道、但正如您在模拟子系统方框图中看到的、它们不一定都连接到某个设备。 我们根据连接到哪个 ADC 模块(A-D)和该模块上的哪个通道(0-15)来命名引脚。 因此在代码中,这相当于 ADC_setupSOC()的“base”和“channel”参数。

    对于 ADCINA1、base 为 ADCA_BASE、channel 为 ADC_CH_ADCIN1。 对于 ADCINC4、base 为 ADCC_BASE、channel 为 ADC_CH_ADCIN4

    这个命名惯例的唯一例外是 ADCIN14和 ADCIN15、它们连接到所有 ADC 的通道14和15、而 ADCINA0除了 ADC A 的通道0之外、还连接到所有 ADC 的通道12。

    如果您不希望 SOC 编号与通道编号匹配、您可以根据需要将同一信道与多个 SOC 关联。

    惠特尼