TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28035芯片似乎受到干扰,求教导致问题的原因

我正在调试一块数控电源,采用的TMS320F28035芯片在运行过程中时常出现宕机现象,采用仿真器跟踪发现,在芯片出错后,程序似乎从头开始执行,并停止在了InitSysCtrl()函数中的InitPLL()函数里,具体卡死的语句为

 while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1){// Uncomment to service the watchdog// ServiceDog();}

我用示波器观察过复位引脚和电源的波形,没有发现明显毛刺,在走线上也采用了功率地和信号地分开走线、单点接地的方式,附上PCB图(PCB比较渣,各位轻拍)

功率地在顶层接地

信号地在底层接地

各电源引脚去耦电容采用的是10uF(1.8V)和2.2uF(3.3V),小弟愚笨,对于导致这个问题的原因百思不得其解,希望各位能够为我解答,先行谢过各位。

Young Hu:

你采用内部晶振试试看?

我正在调试一块数控电源,采用的TMS320F28035芯片在运行过程中时常出现宕机现象,采用仿真器跟踪发现,在芯片出错后,程序似乎从头开始执行,并停止在了InitSysCtrl()函数中的InitPLL()函数里,具体卡死的语句为

 while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1){// Uncomment to service the watchdog// ServiceDog();}

我用示波器观察过复位引脚和电源的波形,没有发现明显毛刺,在走线上也采用了功率地和信号地分开走线、单点接地的方式,附上PCB图(PCB比较渣,各位轻拍)

功率地在顶层接地

信号地在底层接地

各电源引脚去耦电容采用的是10uF(1.8V)和2.2uF(3.3V),小弟愚笨,对于导致这个问题的原因百思不得其解,希望各位能够为我解答,先行谢过各位。

mangui zhang:

降频率试试。

我正在调试一块数控电源,采用的TMS320F28035芯片在运行过程中时常出现宕机现象,采用仿真器跟踪发现,在芯片出错后,程序似乎从头开始执行,并停止在了InitSysCtrl()函数中的InitPLL()函数里,具体卡死的语句为

 while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1){// Uncomment to service the watchdog// ServiceDog();}

我用示波器观察过复位引脚和电源的波形,没有发现明显毛刺,在走线上也采用了功率地和信号地分开走线、单点接地的方式,附上PCB图(PCB比较渣,各位轻拍)

功率地在顶层接地

信号地在底层接地

各电源引脚去耦电容采用的是10uF(1.8V)和2.2uF(3.3V),小弟愚笨,对于导致这个问题的原因百思不得其解,希望各位能够为我解答,先行谢过各位。

Jun Zhang10:

DSP复位一定有原因的,楼上教你这样做那样试有什么用?解决不了你的问题。

1、检查你的程序,先排除所有可能会是软件的问题;

2、如果开启了看门狗,禁用后再测试是否仍然会复位;

3、示波器测3.3V电源,采用触发模式,看电源是否会瞬间跌落;

4、如果以上都确认了问题还是复现,那一定是芯片受干扰了。等到了这一步,我教你最后一招。

我正在调试一块数控电源,采用的TMS320F28035芯片在运行过程中时常出现宕机现象,采用仿真器跟踪发现,在芯片出错后,程序似乎从头开始执行,并停止在了InitSysCtrl()函数中的InitPLL()函数里,具体卡死的语句为

 while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1){// Uncomment to service the watchdog// ServiceDog();}

我用示波器观察过复位引脚和电源的波形,没有发现明显毛刺,在走线上也采用了功率地和信号地分开走线、单点接地的方式,附上PCB图(PCB比较渣,各位轻拍)

功率地在顶层接地

信号地在底层接地

各电源引脚去耦电容采用的是10uF(1.8V)和2.2uF(3.3V),小弟愚笨,对于导致这个问题的原因百思不得其解,希望各位能够为我解答,先行谢过各位。

Seven Han:

或许不是您板子硬件的问题,关于c2000时钟锁相环的配置可以参考下帖子:

https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/116252

检查下仿真器连接是否加载了gel文件,或者外部拉低xrsn引脚,看是否可以通过while()等待。

我正在调试一块数控电源,采用的TMS320F28035芯片在运行过程中时常出现宕机现象,采用仿真器跟踪发现,在芯片出错后,程序似乎从头开始执行,并停止在了InitSysCtrl()函数中的InitPLL()函数里,具体卡死的语句为

 while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1){// Uncomment to service the watchdog// ServiceDog();}

我用示波器观察过复位引脚和电源的波形,没有发现明显毛刺,在走线上也采用了功率地和信号地分开走线、单点接地的方式,附上PCB图(PCB比较渣,各位轻拍)

功率地在顶层接地

信号地在底层接地

各电源引脚去耦电容采用的是10uF(1.8V)和2.2uF(3.3V),小弟愚笨,对于导致这个问题的原因百思不得其解,希望各位能够为我解答,先行谢过各位。

user4499737:

回复 Young Hu:

Young Hu

你采用内部晶振试试看?

我正在调试一块数控电源,采用的TMS320F28035芯片在运行过程中时常出现宕机现象,采用仿真器跟踪发现,在芯片出错后,程序似乎从头开始执行,并停止在了InitSysCtrl()函数中的InitPLL()函数里,具体卡死的语句为

 while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1){// Uncomment to service the watchdog// ServiceDog();}

我用示波器观察过复位引脚和电源的波形,没有发现明显毛刺,在走线上也采用了功率地和信号地分开走线、单点接地的方式,附上PCB图(PCB比较渣,各位轻拍)

功率地在顶层接地

信号地在底层接地

各电源引脚去耦电容采用的是10uF(1.8V)和2.2uF(3.3V),小弟愚笨,对于导致这个问题的原因百思不得其解,希望各位能够为我解答,先行谢过各位。

user4499737:

回复 Jun Zhang10:

Jun Zhang10

DSP复位一定有原因的,楼上教你这样做那样试有什么用?解决不了你的问题。

1、检查你的程序,先排除所有可能会是软件的问题;

2、如果开启了看门狗,禁用后再测试是否仍然会复位;

3、示波器测3.3V电源,采用触发模式,看电源是否会瞬间跌落;

4、如果以上都确认了问题还是复现,那一定是芯片受干扰了。等到了这一步,我教你最后一招。

我正在调试一块数控电源,采用的TMS320F28035芯片在运行过程中时常出现宕机现象,采用仿真器跟踪发现,在芯片出错后,程序似乎从头开始执行,并停止在了InitSysCtrl()函数中的InitPLL()函数里,具体卡死的语句为

 while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1){// Uncomment to service the watchdog// ServiceDog();}

我用示波器观察过复位引脚和电源的波形,没有发现明显毛刺,在走线上也采用了功率地和信号地分开走线、单点接地的方式,附上PCB图(PCB比较渣,各位轻拍)

功率地在顶层接地

信号地在底层接地

各电源引脚去耦电容采用的是10uF(1.8V)和2.2uF(3.3V),小弟愚笨,对于导致这个问题的原因百思不得其解,希望各位能够为我解答,先行谢过各位。

user4499737:

回复 mangui zhang:

mangui zhang

降频率试试。

我正在调试一块数控电源,采用的TMS320F28035芯片在运行过程中时常出现宕机现象,采用仿真器跟踪发现,在芯片出错后,程序似乎从头开始执行,并停止在了InitSysCtrl()函数中的InitPLL()函数里,具体卡死的语句为

 while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1){// Uncomment to service the watchdog// ServiceDog();}

我用示波器观察过复位引脚和电源的波形,没有发现明显毛刺,在走线上也采用了功率地和信号地分开走线、单点接地的方式,附上PCB图(PCB比较渣,各位轻拍)

功率地在顶层接地

信号地在底层接地

各电源引脚去耦电容采用的是10uF(1.8V)和2.2uF(3.3V),小弟愚笨,对于导致这个问题的原因百思不得其解,希望各位能够为我解答,先行谢过各位。

user4499737:

回复 Seven Han:

Seven Han

或许不是您板子硬件的问题,关于c2000时钟锁相环的配置可以参考下帖子:

https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/116252

检查下仿真器连接是否加载了gel文件,或者外部拉低xrsn引脚,看是否可以通过while()等待。

我正在调试一块数控电源,采用的TMS320F28035芯片在运行过程中时常出现宕机现象,采用仿真器跟踪发现,在芯片出错后,程序似乎从头开始执行,并停止在了InitSysCtrl()函数中的InitPLL()函数里,具体卡死的语句为

 while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1){// Uncomment to service the watchdog// ServiceDog();}

我用示波器观察过复位引脚和电源的波形,没有发现明显毛刺,在走线上也采用了功率地和信号地分开走线、单点接地的方式,附上PCB图(PCB比较渣,各位轻拍)

功率地在顶层接地

信号地在底层接地

各电源引脚去耦电容采用的是10uF(1.8V)和2.2uF(3.3V),小弟愚笨,对于导致这个问题的原因百思不得其解,希望各位能够为我解答,先行谢过各位。

user4499737:

回复 Young Hu:

Young Hu

楼上各位,其实楼主给的测试结果以及PCB的layout其实是可以大概确定问题点的。如果卡死在下面这句话中,可能就是晶振部分的问题,或者起振不正常。

while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1)
     {
         // Uncomment to service the watchdog
         // ServiceDog();
     }
之所以让你改成内部晶振,目的是为了确定我的猜测。你的晶振部分的layout需要修改的。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28035芯片似乎受到干扰,求教导致问题的原因
分享到: 更多 (0)