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.

[参考译文] TMS320F28377D:我想知道在 CPU2上处理 ADC 校准过程是否可行。

Guru**** 2463730 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1491455/tms320f28377d-i-would-like-to-know-whether-handling-adc-calibration-process-on-cpu2-is-acceptable

器件型号:TMS320F28377D

工具与软件:

您好!

F2837x TRM 的第11.11节"ADC 校准"中说明 CPU1必须对 ADC 和其他模拟电路应用修整数据。

这是否意味着、当从 CPU2操作 ADC 或 DAC 时、CPU1必须先初始化并校准电路、然后再使用 CPUUSELx 位将所有权转移到 CPU2?

查看 TI 的 F2837x 多核示例(device_support/dual/adc_ePWM)、CPU1通过控制 CPUELx 位将 ADC 电路的所有权转移到 CPU2。 然后在 CPU2端代码中,调用 AdcSetMode()函数,然后再调用 ADC 上电(修改 ADCPWDNZ 位)。

由于 AdcSetMode()函数似乎包含用于应用校准数据的代码,我想确认在 CPU2上处理此校准过程是否可以接受。

谢谢。此致、
Sang-il

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

    您好!

    单独处理来自 CPU2的校准是不可以的。 只有 CPU1负责检索和应用正确的出厂修整值、并且需要在转让所有权之前完成校准。 在给定的示例中,如果在 CPU1设置修整值之前从 CPU2调用"AdcSetMode ()",校准可能使用不正确的值,因为 CPU2无法访问这些 OTP 位置。 我认为该示例主要演示外设共享而非完整初始化、我将请我们的专家进行核实。

    此致!
    Masoud

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

    您好!

    感谢您的答复。

    据我所知、为了符合 F2837xD 数据表中提供的 ADC 规范、除了在芯片启动序列期间处理的 Device_cal ()例程外、还必须执行 AdcSetMode ()函数中包含的校准例程。

    换而言之、CPU1不应简单地将 ADC 的所有权转让给 CPU2。 我认为 CPU1应该通过 AdcSetMode ()函数将校准数据应用于 ADC 模块、设置信号模式和分辨率、然后将所有权转移给 CPU2。

    请通过此帖子分享您上述专家确认的结果。

    谢谢。此致、
    Sang-il

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

    Sang-il

    如前所述、ADC 校准值应通过 CPU1调用。 这可以通过尝试 在 CPU2中使用 AdcSetMode()函数来测试, CPU2无法在 OTP 地址(0x0703AC)中写入正确的修整值调用。 此外、所有权应转移到 CPU2以进行正确的转换。

    此致、

    Masoud

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

    我已要求 SDK 团队解决此问题。 我在这里还有一条建议。 您可以通过 CPU1将校准值复制到 CPU 2可以读取的存储器部分。 然后、您应该能够使用两个 CPU 对其进行校准。

    此致、

    Masoud

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

    尊敬的 Masoud Farhadi:

    您建议的方法如下:

    a) CPU1读取 CPU1的 OTP 区域中的修整值、并将其存储在共享存储器区域中(例如、 GSxRAM)可由 CPU2访问。
    b) CPU2从共享存储器中读取校准值并将其应用于 ADC 调整寄存器(ADCOFFTRIM、ADCINLTRIM1~6)。

    您有这样的建议吗?CPU1向 ADC 模块应用修整值、然后将所有权移交给 CPU2、CPU2随后激活 ADCCTL1[ADCPWDNZ]并运行 ADC 模块、这可能会出现潜在问题。

    要将您建议的方法应用于我的固件、我将无法使用 TI 提供的 AdcSetMode ()函数。 相反、我需要手动实现类似代码来初始化 ADC。 由于在此过程中会有出错的风险、因此如果可能、我更倾向于使用经过 TI 验证的解决方案。

    如果有任何文档或示例代码可以为 CPU2 (从核)提供精确的初始化过程、以便在数据表中概述的电气规格范围内操作 ADC 模块、我将不胜感激。

    谢谢。此致、
    Sang-il