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.

[参考译文] TMS320F28377S:理解 ADC 代码时遇到问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/565318/tms320f28377s-trouble-understanding-adc-code

器件型号:TMS320F28377S

我正在尝试构建自己的应用程序、以便通过 LaunchPad ADC-A 读取传感器数据 我理解除以下内容之外的所有示例代码:

AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0;//SOC0将转换引脚 A0
AdcaRegs.ADCSOC0CTL.bit.ACQPS = acqps;//采样窗口为 acqps + 1个 SYSCLK 周期
AdcaRegs.ADCSOC1CTL.bit.CHSEL = 1;//SOC1将转换引脚 A1
AdcaRegs.ADCSOC1CTL.bit.ACQPS = acqps;//采样窗口为 acqps + 1个 SYSCLK 周期
AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 1;// SOC1结束将设置 INT1标志
AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;//启用 INT1标志
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//确保 INT1标志被清除

我的问题是、代码如何仅定义 SOC1末尾发生的行为? 为什么使用 SOC0不执行任何操作? 我的代码将只使用一个通道、因此我不确定是否需要包含处理 INT1标志的后一个代码。 请提供任何帮助。

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

    Nikhil、

    您不会说此代码来自哪里、但我假设 SOC0和 SOC1具有相同的触发器。  将有其他代码行来确定这一点。  在这种情况下、SOC0将首先完成、然后是 SOC1、然后您会得到中断标志、以便 ISR 代码可以获取这两个结果。

    如果您只想使用一个通道、则可以释放 SOC0触发器、并将 SOC1设置为对所需通道进行采样。  其他一切都将保持不变。

    此致、

    Richard

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

    Richard、

    该代码来自"adc_soc_software_cup01"示例,特别是来自 SetUpADCSoftware()函数。 让我看看我是否理解正确。 根据您的解释、SOC0似乎比 SOC1具有更高的优先级、即硬件将在通道1之前读取通道0上的数据、因此代码仅需要检查 SOC1中的中断标志?

    谢谢、

    Nikhil

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

    正确。

    该文件中的第129行同时将 SOC0和 SOC1置为有效:
    AdcaRegs.ADCSOCFRC1.ALL = 0x0003;//SOC0和 SOC1

    此致、

    Richard
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Richard 的帮助。
x 出现错误。请重试或与管理员联系。