您好,
我希望有人能紧急帮助我解决这个问题。
我们现场有一款产品,ADC 突然停止工作,ADC 值被冻结。这个问题只在现场出现,我们无法在测试实验室复制。我查阅了处理器手册,但没有找到任何可以在没有任何警告的情况下停止 ADC 转换的源代码。在 CPU 硬 RESET 后,ADC 开始正常工作。
我们还对 CPU 内部温度进行了监控,结果显示了同样的情况。
请解释一下造成这种现象的原因。是否可以在不重新启动 ADC 模块的情况下重新启动 ADC 模块?
谢谢!
此致,
阿里-梅拉伊
嗨,彼得、
对不起,我想说我们不能重新启动。
我们进行了一些高分辨率示波器测量,发现当 HV 接通时,ADC 输入电压会在几微秒内超过 5V,然后才重新稳定下来。我们正在实验室密切关注这一问题,电子团队正在努力缓解这一问题。
我同意你的所有观点。
一旦我从实验室得到了一些范围图,我将向你们提供最新信息,并可能向你们提供更多有关我们发现的信息。
非常感谢彼得。
此致,
阿里-梅拉伊
您好,
问题在于我们可以 RESET 微型,因为这些 ADC 故障不会影响控制,但会限制产品功能。
你能还是不能?因为只有一种方法可以 RESET ADC模块和PBRIDGE(寄存器所在的位置),那就是系统 RESET。这也是我与设计部门讨论的结果。
此外,如果微波干扰与 EMI(900V 开关),我认为这对微波的整体概念也至关重要。
如何在如此严重的干扰下保证功能安全,从而使ADC模块停止工作。
其他模块也可能受到影响,如 FCCU、STCU 或类似模块,这些模块在 micro 运行期间并不一直在使用。
你看到的只是 ADC 问题,因为它一直在运行。
如果在微处理器处理 IVOR 或 FCCU 例程时开启高压,会对系统造成严重影响。
以上只是我的一些假设。
此致,
Peter
嗨,彼得、
感谢您的测试。
问题在于我们可以 RESET 微型,因为这些 ADC 故障不会影响控制,但会限制产品功能。
产品已经交付给客户,我们可以对其进行任何修改,但我们正在进行内部调查,研究如何将 EMI 对 Mirco 的影响降至最低,以便对产品进行修改。临时解决办法是在现有产品出现故障时,以某种方式重新启动 ADC,使其重新联机。
所以我想你是在建议唯一的解决方案是 RESET Mirco 但没有其他方法可以让 ADC 恢复活力?
你是否建议先让 ADC 掉电,然后禁用时钟,然后重新启动时钟,然后重启 ADC 你认为这会再次重启 ADC 转换吗?
非常感谢彼得的帮助。
此致,
阿里-梅拉伊
您好,
PCTLx 将切断 ADC 的时钟。
请参阅参考手册:
59.3.52 ADC_0 外围设备控制寄存器(MC_ME_PCTL237)
但我刚刚进行了测试,它不会擦除 ADC 寄存器。(它们位于 PBRIDGE 上),因此在恢复 ADC 的时钟后,寄存器的值是相同的。
我想重置ADC寄存器的唯一方法是触发微型RESET。
如果你用子卡保护 ECU 免受 EMI 影响会发生什么?问题仍然存在吗?
此致,
Peter
嗨,彼得、
我通过将掉电位设置为 1 来关闭 ADC 的电源,然后等到 ADC 状态更改为掉电然后重启它。我附上了 ADC 重新启动的代码。
我使用 SCAN 模式进行正常转换,而不是 CTU 模式。
因此,在代码启动时,通过将 NSTART 位设置为 1 来启动 ADC 一次,然后直接从 CDATA 读取数据
我附上了 ADC 配置和 ADC 每 1ms 读取一次的代码
希望这能解释 ADC 的设置方法。
为什么要停止转换?这是一个随机问题,因为它主要发生在接通高压(800V)电源时。这个问题与 EMI 有关,但它锁定了 CDATA 注册。我怎么能再次触发转换,因为我认为在扫描模式下不需要触发信号。
从 CDR 数据中提取数据时,有效位应该清零,但 CPU 处于该状态时,有效位不会清零。
您提到 PCTL 寄存器,请提供更多关于使用 PCTL 寄存器重启 ADC 的信息。
如果您需要更多信息,请告诉我。
此致,
阿里-梅拉伊
您好,
重启 ADC 模块并没有解决问题,因为即使尝试重启 ADC 模块,ADC 值仍然被冻结。
您是如何重启 ADC 模块的?您是否在 PCTL 寄存器中将其关闭,然后将模式转换到 RUNx 再返回?
能否请您帮助我了解 CDR 注册锁定的原因?
看来 ADC 转换已经完成,新的转换尚未启动。
(因此,ADC 不会卡住,而是处于定义状态并等待新的转换触发信号,无论是 SW 还是 CTU)
这我就不知道了,因为我对 ADC 的使用方法了解有限。
此致,
Peter
注:如果在 ADC 转换卡住后通过调试器手动启动 ADC 转换,会发生什么情况?它会继续转换吗?
嗨,彼得、
希望你一切顺利。
我有一个更新
重启 ADC 模块并没有解决问题,因为即使尝试重启 ADC 模块,ADC 值仍然被冻结。
我有注册快照,可以更深入地了解这个问题。
出现此问题时,ADC 模块工作正常,ADC 状态在状态 4 和 6 之间切换,但 CDATA 注册被冻结为固定值
CDR 寄存器
因此,它们都锁定为十进制 1171(十六进制 0x493)的相同值,有效位保持高电平
CPU 和 BandGap 显示了相同的行为。
能否请您帮助我了解 CDR 注册锁定的原因?
谢谢!
此致,
阿里-梅拉伊
好的,彼得,谢谢。我会记录 ADC 的状态,如果有更新,我会给您回复。
谢谢您,
阿里
很难说、
我从没试过这样做。
但是,如果时钟丢失,就无法从 PBRIDGE 上的寄存器中读取任何信息,而 ADC 也在该寄存器中。
但由于您能读取结果,我怀疑 ADC 转换未处于扫描模式,而是处于 IDLE 状态。
嗨,彼得、
发生故障时,我会尝试将 ADC 状态保存在闪存中。
如果是时钟问题,那么你认为让 ADC 掉电并重启会恢复时钟吗?
此致,
阿里
嗯
最重要的是查看 ADC 是否仍在转换,但结果寄存器没有更新。
当 ADC 转换卡住时,测试 SW 应检查 ADC 状态并将其存储。
由于是扫描模式,我想只有时钟丢失才会导致这种情况。
但首先让我们看看出现问题时 ADC 是否仍在转换。
此致,
Peter
嗨,彼得、
主要问题是我无法在 LAB 中复制故障,因此不确定 ADC 状态寄存器在现场的状态如何。
我已经准备了一个测试软件,可以在ADC值停滞时执行ADC RESET,所以我希望这能解决这个问题。
我尝试过将ADC电源置于3.3V以下,但随后MCU RESET,因此这不是导致问题的原因,因为我们在现场看不到CPU RESET。我还尝试改变 ADC 的参考电压,但这并不能阻止 ADC 模块工作。
是否有办法强制解决 ADC 硬件上的任何特定问题,使其卡住,例如您提到的 ADC 校准丢失?
如果出现电压问题,我将检查 FCCU 的故障反应,我认为该问题未配置为执行 RESET。
谢谢!
阿里
好吧,这些都是假设。
如果 ADC 功率下降或突破低压检测/HVD 阈值,则设备将执行通知并在启用后 RESET。
它可能导致ADC电容失准,或停滞在逻辑电平上,或许多其他原因。
如何启用和禁用 ADC?
ADC 卡住时的状态是什么?
此致,
Peter
嗨,彼得、
当发生这种情况时,计数被冻结在 1373 个计数上,再也无法恢复,因此我们必须执行电源循环。主要发生在高压电源启动时,但有时是随机的,在功能运行时也会发生。
我们已经在HV实验室测试了这些板,发现HV开启时ADC_HV和ADC_Ref出现峰值,但是ADC不会停止工作,它只发生在我假设电磁干扰水平很高的现场。HV 接通后,ADC_HV 和 ADC_ref 电压很快就会稳定下来。
您知道 ADC 在断电或出现噪音时会自动进入什么特定状态吗?重启 ADC 会有帮助吗?
此致,
阿里
好吧,因为只有在接通 900V 时才会出现这种情况,所以我怀疑可能是电磁干扰问题。
出现这种情况时,ADC 电压测量值是多少?ADC ref 或 ADC_HV 是否存在尖峰?
测量的线路电压如何?
此致,
Peter
嗨,彼得、
谢谢您的答复。
我使用的是 SCAN(扫描)模式,时钟频率为 80Mhz。
我在启动任务中启动转换,该任务只执行一次。
只要应用程序需要,我就会从 CDATA Reg 中收集转换后的数据。
我们有自己的控制板用于测试。
当开启高压电源(即 900 伏直流)时,会出现此问题。因此可能与电磁干扰有关,但 ADC 始终无法恢复,并不断报告 1373 计数。这种情况只发生在现场,因为我们无法在高压实验室复制这个问题。
以下是 ADC 设置和读取的代码
谢谢!
阿里
嗨,阿里、
从你提供的非常简短的描述来看,它可以是任何东西,从处理顶级任务到总线权限,再到未服务的 ADC 触发信号或时钟故障。
如果能告诉我们您如何使用 ADC(CTu 或 CPU 模式?)
如何触发转化
如何提供转换后的数据
因为它看起来真的像你的 SW 设计中没有服务的角落案例。
您的软件在恩智浦 EVB 上运行正常吗?
此致,
Peter
您好,
谁能帮我解决这个问题?
此致,
阿里