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.

TMS320F28379D: XRS引脚出现偶发性复位

Part Number: TMS320F28379D

搭配功率产品,运行一两天会偶发性出现一次复位现象,监控XRS引脚为低电平复位,持续时间每次都是51.2us,有使用电源监测芯片监测1.2V、3.3V、5V,非电源监测芯片输出的复位信号,想请教各位大神,这种情况是什么导致的,有哪些情况会出现这样的复位现象?

  • 您好

    ‌TMS320F28379D偶发性复位问题分析‌

    • ‌复位现象描述‌:TMS320F28379D在运行一两天后偶发性复位,XRS引脚为低电平,持续时间51.2us,非电源监测芯片输出复位信号。

    • ‌可能原因‌:

      • ‌变量溢出‌:程序中某个变量未清零,持续增大导致溢出,可能影响系统稳定性,导致复位‌。
      • ‌串口通信问题‌:串口通信中断时,DSP会置位RX ERROR,若未正确处理,可能导致复位‌。
      • ‌大数组问题‌:在代码中创建大数组,若复位后无法启动,可能与内存管理有关‌。
    • ‌建议‌:检查并初始化所有变量,确保无溢出;优化串口通信错误处理;谨慎管理内存使用,避免大数组导致的问题

  • 没有变量溢出,串口通信RXERROR都处理了,接收到RXERROR,就重新初始化串口配置,大数组也不存在,软件里没有用到大数组,另外每次复位后都能成功重启,软件都能再正常运行,所以这三种情况都排除,请问一下还有别的可能性吗?

  • 您好

    针对您描述的TMS320F28379D搭配功率产品出现的偶发性复位现象,这里列出一些可能的原因和排查建议。由于复位是由XRS引脚低电平触发,且持续时间固定为51.2us,这通常指向外部事件或特定的系统状态异常。以下是一些可能的原因:

    1. ‌外部干扰‌:

      • ‌电磁干扰(EMI)‌:功率产品可能产生较大的电磁干扰,尤其是在开关动作时。这种干扰可能通过空气或电源/地线耦合到控制系统中,导致复位。可以尝试增加滤波、屏蔽或改变布线来减少干扰。
      • ‌瞬态电压波动‌:电源线路上的瞬态电压波动也可能引起复位。检查电源线的稳定性和滤波措施是否足够。
    2. ‌硬件问题‌:

      • ‌复位电路设计‌:检查复位电路的设计,确保复位阈值设置正确,且没有误触发的可能。
      • ‌电源监测芯片‌:虽然您提到复位不是由电源监测芯片输出触发的,但仍需确认电源监测芯片本身的工作是否稳定,以及其对电源波动的响应是否可能导致系统不稳定。
      • ‌其他硬件故障‌:考虑是否存在其他硬件故障,如晶振不稳定、电容老化等。
    3. ‌软件与配置‌:

      • ‌看门狗定时器‌:确认看门狗定时器的配置是否正确,且没有在不应该的时候被触发。
      • ‌中断处理‌:检查中断服务程序是否存在潜在的问题,如中断嵌套处理不当、中断优先级配置错误等。
      • ‌环境与外部因素‌:

        • ‌温度‌:高温可能导致电子元件性能下降或失效,检查系统运行时的温度是否过高。
        • ‌机械振动‌:如果系统安装在振动环境中,可能需要考虑振动对硬件连接的影响。
    4. ‌调试与测试‌:

      • ‌日志记录‌:增加复位前的日志记录功能,尝试捕捉复位前的系统状态,以便分析复位原因。
      • ‌硬件在环(HIL)测试‌:通过硬件在环测试模拟实际运行条件,观察是否能复现复位现象。
      • ‌外部监测‌:使用示波器或数据记录仪监测复位引脚和相关电源线的电压波动。
  • 想请教一下,用户中断任务和10ms循环任务里同时调用如下函数,会导致dsp复位吗?

  • 您好

    在TMS320F28379D(或任何类似的DSP处理器)中,是否会导致DSP复位取决于多个因素,包括函数的性质、资源的使用(如寄存器、内存)、中断的优先级和处理机制,以及任务的同步和互斥处理。

    可能导致DSP复位的情况:

    1. ‌资源竞争和冲突‌:

      • 如果该函数访问和修改共享资源(如全局变量、硬件寄存器)而没有适当的同步机制(如互斥锁、信号量),则可能导致数据竞争、数据损坏,甚至可能触发硬件异常,从而导致DSP复位。
    2. ‌中断优先级和任务调度‌:

      • 如果中断任务的优先级高于10ms循环任务,并且在中断处理程序中调用了较长时间运行的函数,可能会阻塞中断的及时响应,导致系统不稳定。
      • 反之,如果10ms循环任务在执行关键操作时被中断,且中断处理也尝试操作相同的资源,同样可能导致问题。
    3. ‌堆栈溢出‌:

      • 如果函数调用的深度过大,可能导致堆栈溢出,这也是一个常见的导致系统复位的原因。
    4. ‌硬件异常‌:

      • 函数中如果执行了非法操作,如访问无效内存地址、执行未定义的指令等,可能直接触发硬件异常导致DSP复位。