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.

[参考译文] TMS320F280025C:使用外部 GPIO 的 ADC 转换启动

Guru**** 2434370 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1027609/tms320f280025c-adc-start-of-conversion-using-external-gpio

器件型号:TMS320F280025C
主题中讨论的其他器件:C2000WARE

我想将 ADC 通道配置为由外部 GPIO 触发转换开始。 我知道我需要将 GPIO 路由到输入 X-BAR INPUT5。  我已将引脚编号 74 (GPIO5)路由到 X-BAR 输入5、如下所示:
Xbar_setInputPin (INPUTXBAR_BASE、XBAR_INPUT5、5);
Xbar_lockInput (INPUTXBAR_BASE、XBAR_INPUT5);

SOC 配置为使用 GPIO5作为外部 ADC 触发源、如下所示:

//为 ADCIN6配置 SOC。 它将由 GPIO、ADCEXTSOC 触发
ADC_setupSOC (ADCA_BASE、ADC_SOC_NUMBER8、ADC_TRIGGER_GPIO、
ADC_CH_ADCIN6、8);

当 ADC 转换完成时、将产生一个中断:
//配置转换中断 完成
ADC_setInterruptSource (ADCA_BASE、ADC_INT_NUMBER2、ADC_SOC_NUMBER8);
ADC_enableInterrupt (ADCA_BASE、ADC_INT_NUMBER2);
ADC_clearInterruptStatus (ADCA_BASE、ADC_INT_NUMBER2);

最后在主函数中启用中断、如下所示:
INTERRUPT_ENABLE (INT_ADCA2);

为了测试转换是否完成、我在 ISR 中切换了一个 LED。 由于某种原因、SOC 不会被外部 GPIO 触发或不会生成中断。 代码中配置了一些其他正在工作的中断、因此我假设全局中断已启用。 我想 C2000Ware 中没有外部 GPIO 触发 SOC 的示例。 请提供指导

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

    您好、Asad、

    您可以检查 ADC_ex4_SoC_software_sync.c 示例、该示例使用 GPIO 通过输入 X-BAR 实现所有 ADC 的同步软件触发。  

    您发布的代码似乎是正确的、因此我认为您需要测试每条代码、以查看哪些地方发生了错误。  运行代码后、您可以使用表达式窗口(可能启用实时模式)检查器件的状态:

    • 检查 GPIO 数据寄存器、以确保 GPIO5数据随引脚上的输入的变化而改变状态
      • (GPADP.GPIO5)
    • 检查 INPUT5的 X-BAR 数据是否已设置
      • (XBARFLG2.INPUT5)
    • 检查 SOC8是否设置为挂起、然后进行转换
      • (ADCSOCFLG1.SOC8和 ADCSOCPRICTL.RRPOINTER)  
    • 检查 ADCRESULT8更新
    • 检查 ADCINT2标志是否被置位
      • (ADCINTFLG.ADCINT2)
    • 检查 PIE 和 CPU 中是否设置了中断标志

    您还可以通过"Expressions"窗口修改器件、以测试其是否正常工作:

    • 通过 ADC 寄存器 SOCFRC1手动触发 SOC8、以确定 SOC8转换后是否发生 ISR  
      • (请参阅 ADC_ex1_SoC_software.c)
    • 将 GPIO5设置为输出模式并手动切换 GPIO5以确定是否触发 ADC (确保引脚与任何外部驱动器断开连接)
      • (请参阅  ADC_ex4_SoC_software_sync.c 示例)

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

    尊敬的 Devin Cottier:
        非常感谢您提供故障排除步骤。 让我着手解决这些问题。 如果问题得到解决或需要进一步支持、我将向您提供更新。

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

    尊敬的 Davin Cottier:

       根据您的指导、我已经能够解决该问题。 我没有清除 ADC 中断标志。 通过在 ISR 中添加以下指令:ADC_clearInterruptStatus (ADCA_BASE、ADC_INT_NUMBER2);此问题已得到解决。

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

    您好、Asad、

    感谢您的更新、很高兴您能让事情正常工作!  如果您遇到任何进一步的困难、请告知我们。