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 (引导 ROM 被旁路)

Guru**** 2455360 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/843138/tms320f28377s-how-to-re-calibrate-internal-adc-boot-rom-is-by-passed

器件型号:TMS320F28377S

您好专家、

我的客户正在使用自定义引导加载程序进行程序字段更新。 在这种情况下、不会再次运行引导 ROM 代码、因此不会校准 ADC (直接跳转到 cinit、然后跳转到 main fuion)。 您是否对我们应该调用什么函数来重新校准 ADC 有任何建议? 我们应该在哪里调用这些函数?

希望您能在此处提供一些详细信息。

谢谢

谢尔登  

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

    您好、Sheldon、  

    为了重新校准 ADC,您可以调用 driverlib/f2837xs/driverlib/adc.h 中记录的函数。   
    可以在应用程序代码开始之前在 main()中调用这些函数。  

    谢谢、  

    Shantanu

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

    您好、 Shantanu、

    您认为 adc.h 中的 API 确切含义是什么?

    我在这里找不到目标。

    谢谢

    谢尔登

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

    您好、Sheldon、  

    您可以查看提供的 ADC 示例。 特别是 initadc ()函数。

    driverlib 文件夹中的 adc.h 中提供了有关这些子例程确切作用的文档。  

    谢谢、
    Shantanu

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

    您好、 Shantanu、

    我们在 应用程序中确实调用了 initadc (),但当这部分代码加载到客户引导加载程序时,ADC 似乎没有校准。 当加载的代码通过对器件重新加电运行时、这将是很好的。 因此、我认为这应该是由 ROM 代码的差异引起的。  

    我想知道如何重新执行在引导 ROM 中完成的所有 ADC 校准工作?

    调用 initADC 就足够了吗? 如果答案是肯定的、为什么通过代码启动或不通过代码启动运行应用程序会有所不同?

    谢谢

    谢尔登

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

    您好、 Shantanu、

    BTW、它们是否需要在重新初始化之前完全禁用 ADC 模块? 在之前的试验中、他们在进行更新时没有停止 ADC 模块。

    谢谢

    谢尔登

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

    您好、Sheldon、

    通过停止 ADC 模块、您是否意味着将 ADC PWDNZ 位设置为0?  是的、最好在调用 driverlib 例程中的校准例程之前先关闭 ADC 电源。  此外、最好也像引导 ROM 调用的那样运行整个器件校准例程、因为它不仅是已填充的 ADC 调整值。  整个函数驻留在地址0x70282中、所以另一个选项是从这个位置执行器件校准函数。  为此、您可以将函数指针定义为:

    #define Device_cal (void (*)(void)) 0x70282

    然后将函数调用为:

    (*Device_cal)();

    这样做将确保相应地填充需要工厂测试期间派生的修整的外设。

    希望这对您有所帮助。

    此致、

    Joseph