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.

[参考译文] TPS65381-Q1:TPS_DRIVER.c 中忙等待环路不清楚

Guru**** 2399305 points
Other Parts Discussed in Thread: TPS65381-Q1

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/569619/tps65381-q1-unclear-busy-wait-loop-in-tps_driver-c

器件型号:TPS65381-Q1

您好!

首先、如果我遇到了错误的论坛、我深表歉意。 这是我的第一篇帖子、我仍然有点不好。

我们将使用 TPS 库中的最新 TPS 驱动程序来驱动 TPS65381。 在我们的应用中,这会导致微处理器上的高负载,我们已跟踪到 tps_driver.c 中的 tps_CheckEnabableAMUXSignalLimits()函数,该函数包括以下忙等待循环:

对于(u32temp = 0U;u32temp < 60000U;u32temp++)
{

}/*
添加一些延迟,以便模拟输出稳定*/ 


我们知道这是一种通用实现、因此很难提供高效的等待方法(例如使用 FreeRTOS 时的任务睡眠)、我们不介意修改实现以更好地适应我们的环境(如果许可允许)。 您是否可以向我们提供一些有关时间的更具体的信息-您希望在继续执行之前需要等待多长时间? 我们浏览了数据表、但无法找到具体细节。

-Kenneth

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

    我已通知产品专家、他将能够回答您的问题。 您能解释一下代码在这个等待循环前后执行什么操作吗? 是否只是选择模拟多路复用器通道?

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

    您好!

    感谢您的快速回复。 我会粘贴代码、这可能是解释代码的最清晰方法、但我不确定是否允许我(它位于 tps_driver.c 文件中)、但我至少可以尝试用宽泛的措辞进行解释。

    除了变量初始化和一些数据检查之外、循环之前不会发生任何情况。

    在循环之后、使用 TpsIf_GetRegister ()读取 TPS_DIAG_CFG_CTRL 和 TPS_DIAG_MUX_SEL 的内容、之后(我们的)用户代码在 GetTPSDiagPinSampleDValue ()的回调中调用、该回调应提供 ADC 采样值。

    Kenneth

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

    肯尼思、您好!

    此论坛支持 TPS65381、MCU 团队在单独的论坛上支持软件和处理器。  

    从 TPS65381器件的高级流程图视图中、软件应执行以下操作以使用 DIAG_OUT 多路复用器进行诊断。

    1) 1)为需要读取的相应信号配置多路复用器设置、在本例中、由于您提到 ADC、您似乎正在尝试使用模拟多路复用器(AMUX)。  

    DIAG_MUX_SEL 位用于所需的特定信号。    有关信号 http://www.ti.com/product/TPS65381-Q1/datasheet/detailed_description#SLVSBC46704的 AMUX 列表、请参阅第5.4.1.9节 ;有关 DMUX 信号 http://www.ti.com/product/TPS65381-Q1/datasheet/detailed_description#SLVSBC46008、请参阅第5.4.1.10节

    对于模拟多路复用器模式、DIAG_CFG_CTRL 寄存器应将 MUX_CFG 位设置为10 (有关其他选项、请参阅 TPS65381 Rev F 数据表的第92页)、该寄存器还应设置 MUX_EN 位以启用 MUX 输出到 DIAG_OUT。

    2) 2)设置和启用多路复用器后、DIAG_OUT 引脚 输出上将有一段稳定时间、具体取决于之前 DIAG_OUT 上的电平和引脚上的 RC 负载。  每个模拟多路复用 器信号都具有第5.4.1.9节中规定的最大输出电阻 AMUX。  该电阻、信号与 ADC 外部 RC 负载之间的输出电压阶跃以及输入滤波器(如果需要)将决定系统的稳定时间。   ADC 采样应等到信号稳定。

    3) 3)使用 ADC 对所需信号进行采样。

    4) 4)如果要 立即测量另一个信号: 如果需要、通过 DIAG_MUX_SEL 更改 AMUX 信号、等待信号稳定并对新信号进行采样。  (为了使 AMUX 信号快速稳定、建议的信号排序列在表5-4下的文本中。  

    5) 5)如果需要多路复用器读数或 DMUX 信号之间的时间较长、 则 通过 DIAG_CFG_CTRL 寄存器禁用或重新配置多路复用器输出。   

    注意: 对于 DMUX 信号、它们是数字信号、因此 DIAG_OUT 引脚可路由到两个 ADC 通道(AMUX 测量) 和 GPIO、因此对于 DIAG_OUT 上的数字信号、MCU 开销会减少到读取 GPIO 而不是在 ADC 上采样并转换回二进制。  

    要获得软件库的更多支持、我建议您在 Hercules 微控制器论坛上发帖: https://e2e.ti.com/support/microcontrollers/hercules/

    希望这能帮助您了解 TPS65381-Q1上的 AMUX 和 DIAG_OUT、如果没有、请根据需要发布后续问题。  

    此致、

    Scott