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.

[参考译文] MCU-PLUS-SDK-AM263PX:Drivers_Open () 现在必须调用

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1566809/mcu-plus-sdk-am263px-drivers_open-now-mandatory-to-call

器件型号:MCU-PLUS-SDKAM263PX-AM263PX


工具/软件:

您好:

在 ti_drivers_open_close.h 中、多次出现以下注释:

驱动程序打开/关闭 — 当不直接使用 Driver_open() 和 Driver_close() 并且应用程序想要控制各种驱动程序 打开/关闭序列时、应用程序可以使用


到目前为止、这正是我们的应用程序一直在运行的方式。 例如、不从应用程序调用 Driver_open()、但 调用 Drivers_mcanOpen()。

我刚刚 将 SDK 从 mcu_plus_sdk_am263px_09_02_00_56 更新为 mcu_plus_sdk_am263px_10_02_00_15、发现对于 ADC、Driver_open ( ) 中现在有额外的代码在 Driver_adcOpen () 之前:

当然,只调用 Driver_adcOpen() 就会跳过此代码。 如果要执行此代码、则必须对所有驱动程序调用 Driver_Open ()、以打破以前的(明智的)原则。

这显然会对我的应用产生很大影响、并迫使我付出不必要的努力。

-为什么在地球上不是这个额外的代码在  Driver_adcOpen ()?

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

    我看到 SDK 11 中也存在这个问题。  Unamusedμ s

    我能得到答复吗? 这阻止了我的项目。

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

    尊敬的 Kier:  

    我理解你的困惑。 您看到的配置与 ADC 相关、但不存在或特定于任何 ADC 实例。 这些控件是全局控件、是一组 ADC 一次需要的、而每个 ADC 一次需要这些控件。 您可以将其视为 IP 之外的“更像时钟配置“。  

    这组代码的作用的一个小解释...

    1. 如果选择了内部基准、则为 ADC 内部基准设置基准缓冲器(按组共享)。 等待基准缓冲区处于活动状态
    2. 设置基准缓冲器监控器、以检查输入(提供给 ADC 前端的内部/外部基准)是否处于数据表中提到的电压范围内。 此步骤很重要、否则 ADC 结果可能已在前端中针对不正确的电压进行验证/计算。
    3. 检查监测状态并继续进行 ADC 初始化。  

    如果您想绕过 Drivers_open、请考虑创建一个实用程序函数、以在您的应用中镜像该生成的代码。

    希望这澄清了您的问题。

    谢谢。此致、

    Madhava.

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

    尊敬的 Madhava:

    谢谢、但我很生气、不会感到困惑。

    这些控件是全局控件、是一组 ADC 一次需要的、而每个 ADC 一次需要这些控件。

    -我重复我的开场白。 为什么这意味着代码应该在 Driver_adcOpen () 之外? 从程序流的角度来看,为什么不能将它放在 Driver_adcOpen () 中?

    如果您想绕过 Drivers_open、请考虑创建一个实用程序函数、在您的应用程序中镜像此生成的代码。

    -在 Drivers_open() 中生成的代码依赖于 SYSCFG 内容、因此、如果针对所用的 ADC 数量更改了的 SYSCFG 文件内容、则此解决方案将被中断。 此外、我必须对所有使用 ADC 的内核执行此操作。 这不是一个严肃的建议。

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

    在沉默的情况下,我想你们不会在这方面回溯。

    请至少从生成的源代码中删除以下不真实的评论:

    驱动程序打开/关闭 — 当不直接使用 Driver_open() 和 Driver_close() 并且应用程序想要控制各种驱动程序 打开/关闭序列时、应用程序可以使用

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

    尊敬的 Kier:

    让我试着在这里帮助你。 ADC 配置是 driver_adcOpen () 的一部分,但真正不配置 ADC IP 本身,但 ADC 使用所需的全局配置不应该是 ADC 的 driver_adcOpen () 的一部分。  

    以类似的方式表述、请考虑诸如 pinmux /时钟配置等、它们是 IP 使用所必需的、但不属于 IP 的功能配置。  

    谢谢。此致、
    Madhava.

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

    尊敬的 Madhava:

    谢谢、但再次强调、我的观点缺失了。

    我可以 使用 SDK 9.x 调用 Driver_adcOpen (),但我不能使用 SDK 10.x 现在,我必须重新调整我的应用程序,以适应您的方向变化,并调用 Drivers_Open  ()。 如果我想让 ADC 正常工作、这是强制性的。

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

    尊敬的 Kier:

    是的。 但这些是一个时间配置、不需要从每个内核完成。 您可以选择在 application / SBL 中添加这些代码片段、并继续像以前一样在应用程序中使用 drivers_adcOpen/drivers_adcClose 函数。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以选择在应用程序中添加此代码片段

    这打破了自动代码生成的思路。 我怀疑任何人都会选择这样做。  

    没关系。 我只需要处理它。