Codoox 发表于 2017-11-13 21:04:29

STC15系列单片机受干扰导致损坏问题

一共焊了3块板,出现3种不同的现象,大伙来分析分析:

第一块板:
STC15W4K48S4-LQFP44,配置成外部24M晶振,下载完程序后,目前工作3周一切正常。

第二块板:
1.STC15W4K48S4-LQFP44,配置成外部24M晶振,下载完程序后冷启动运行正常。
2.运行电机,串口出现误码,持续10秒左右单片机死机,断电重启无效。
3.重新下载程序,无法下载。
4.单片机换成STC15F2K60S2-LQFP44,重新下程序后出现1、2、3现象。
5.调成内部晶振,试了多次,下载成功后频率调节误差显示是80%多或更大。
6.将外部晶振换成12M,使用外部晶振下载成功,上电工作一切正常,此板目前工作了2天未发现问题。

第三块板:
1.STC15W4K48S4-LQFP44,配置成外部24M晶振,下载完程序后冷启动运行正常。
2.运行电机,串口出现误码,持续10秒左右单片机死机,断电重启无效。
3.试了第二块板试过的各种办法,均不能下载。
4.更换单片机,(STC15W4K48S4-LQFP44、STC15F2K60S2-LQFP44),运行正常,但只要一运行电机,立马出现1、2、3现象。

说明:
1.电机驱动芯片是DRV8834,控制管脚直接接到单片机,驱动芯片5V供电,驱动一个28步进电机或一个6V直流减速电机,电流小于1A。
2.此驱动电路已在另一个产品上使用,单片机是STC15F2K60S2,电机是24步进电机,工作在11.0592MHz频率下,目前没有发现问题,已过医疗电磁兼容检测。
3.串口通讯用的是下载串口。

推测:
1.第二块板的单片机应该是固件丢失,内部晶振无法调正确,使用外部晶振工作正常。
2.第三块板的单片机可能是固件丢失,也有可能是单片机硬件损坏。

问:
1.除了硬件上将驱动芯片和单片机隔离、滤波,还有没有什么办法能提高单片机的抗干扰能力?
2.STC15系列的抗静电能力能到多少伏,有没有官方的数据?

zpywz 发表于 2017-11-13 22:06:32

猜测是你的SCH&PCB的设计有问题,单片机的外围设计的好就不会有这样那样莫名其妙的问题。

yangsen 发表于 2017-11-13 22:44:13

感觉是电源上串高压尖峰了。但你说只是控制24步进电机应该不会有这种干扰啊。

小李非刀 发表于 2017-11-13 23:44:28

基本就是两个问题:电源、IO口处理。

wyqgyn 发表于 2017-11-13 23:50:46

你的晶振附近有没有加匹配电容,如果有,有可能电容不对
如果没有匹配电容,感觉你的pcb有问题,电机驱动部分和通信部分没有做好隔离

Codoox 发表于 2017-11-14 09:11:11

未做隔离是考虑到电机小,电流小,所以只在驱动芯片电源上串了个磁珠,而且这个电路已经用了很久了没出过这种问题,没想到中招了。
能工作的板子拿去测了一下EMI,电机启动时辐射还是比较小的;拿示波器抓了一下驱动片子的电源有1V多的毛刺,磁珠之后就剩零点几伏了,脉宽只有几十ns;控制管脚上没抓到有毛刺。
给大家看一下电路

xiaobendan 发表于 2017-11-14 10:01:38

为啥要上24M?
在12C5A60S2上我试过24M是不行的,经常莫名其妙的出现一些问题,大体上就是某个IO的采集问题或者某个数据计算错误导致错误的输出。
换22.1184,什么都不用动,还是原来的芯片,原来的程序,一切OK。
不要试图使用有源晶振改变什么,因为也测试过了。无效的。

xiaobendan 发表于 2017-11-14 10:03:27

虽然芯片上打字是35M的频率的。我试过33M频率,根本不能用的,一样的程序只要几秒钟甚至上电就有问题。

Codoox 发表于 2017-11-14 10:28:26

xiaobendan 发表于 2017-11-14 10:03
虽然芯片上打字是35M的频率的。我试过33M频率,根本不能用的,一样的程序只要几秒钟甚至上电就有问题。 ...

有一段程序需要在中断里面快速处理,后面优化了一下程序换到12M晶振也还是损坏

makesoft 发表于 2017-11-14 10:34:22

有没有用过片内的DATAFLASH, 好像以前用过内部保存数据的产品均出现这样那样的问题,后来改成24CXX完美解决。

Codoox 发表于 2017-11-14 10:40:24

makesoft 发表于 2017-11-14 10:34
有没有用过片内的DATAFLASH, 好像以前用过内部保存数据的产品均出现这样那样的问题,后来改成24CXX完美解决 ...

谢谢 没有用到

weare 发表于 2017-11-14 11:08:37

以前用过60S的内部晶振跑到28M以上也没问题,这个电机的干扰不至于那么大,还是考虑下程序的问题吧,硬件上面就是把5V的纹波降下来~~~

Codoox 发表于 2017-11-14 11:42:17

weare 发表于 2017-11-14 11:08
以前用过60S的内部晶振跑到28M以上也没问题,这个电机的干扰不至于那么大,还是考虑下程序的问题吧,硬件上 ...

一样的板一样的程序,第二块板换完单片机跑了几天了没问题,第三块板一直烧片子。
而且控制IO我配置成双口,即使IO短路也不至于把单片机烧了,我想象不出来什么样的程序会导致烧片子

chen849928055 发表于 2017-11-14 12:56:57

看看地线的走线。

weare 发表于 2017-11-14 13:03:29

Codoox 发表于 2017-11-14 11:42
一样的板一样的程序,第二块板换完单片机跑了几天了没问题,第三块板一直烧片子。
而且控制IO我配置成双 ...

会不会是你VCC边上的RST脚受到干扰导致的,下载的时候好像是可以选择RST脚作为复位脚还是IO口的;

Codoox 发表于 2017-11-14 20:55:15

chen849928055 发表于 2017-11-14 12:56
看看地线的走线。

四层板,有地层

Codoox 发表于 2017-11-14 21:01:07

weare 发表于 2017-11-14 13:03
会不会是你VCC边上的RST脚受到干扰导致的,下载的时候好像是可以选择RST脚作为复位脚还是IO口的; ...

用做IO了,即使是用做RST,受干扰也应该是单片机复位,不应该损坏啊。
只能先重布一下,加点滤波试一下了。

huangyu_ninbo 发表于 2017-12-6 14:14:32

xiaobendan 发表于 2017-11-14 10:01
为啥要上24M?
在12C5A60S2上我试过24M是不行的,经常莫名其妙的出现一些问题,大体上就是某个IO的采集问题 ...

哗,真是遇到知音了。我用24M的晶振,串口485通讯,有的稳定,有的不行。质量有波动。

Codoox 发表于 2017-12-6 16:45:08

重新布了一下板,电机供电加了大电容,测试电源上没有毛刺了。同时优化了一下程序将时钟降到12M,目前没有发现问题。
估计是电机启停时造成的电源波动(脉宽几十ns,峰值1V)把芯片干掉了。
如果真是这样的话,这个单片机防静电能力应该比较差。
在测试的时候发现STC15W比STC15F系列更容易损坏,特别是在时钟频率比较高的时候。

makesoft 发表于 2017-12-6 20:28:50

肯定不会那么不堪,虽然文档做的不明不白的。

makesoft 发表于 2017-12-6 20:32:39

本帖最后由 makesoft 于 2017-12-6 20:35 编辑

项目用15w4k60s4从年初每天十几小时满负荷工作,晶体和楼主一样用22.184带三台电机及若干电磁阀,同时还和485-232几个方向路由通讯(用了仨串口),除了用片内flash偶尔掉程序,后来数据保存改片外,一直稳定运行,几十套这样的系统不出故障。

mkliop 发表于 2017-12-6 21:17:09

makesoft 发表于 2017-12-6 20:32
项目用15w4k60s4从年初每天十几小时满负荷工作,晶体和楼主一样用22.184带三台电机及若干电磁阀,同时还和4 ...

程序怎么外挂的?求指导外部FLASH吗?

makesoft 发表于 2017-12-6 22:10:22

mkliop 发表于 2017-12-6 21:17
程序怎么外挂的?求指导外部FLASH吗?

我的系统因为使用液晶所以有SPI_FLASH烧录的字库,还剩余不少空间,原来运行的记录文件保存在STC片内,发现丢程序后改在字库不用的剩余空间了。

lxk52000 发表于 2017-12-7 14:06:54

Codoox 发表于 2017-11-14 09:11
未做隔离是考虑到电机小,电流小,所以只在驱动芯片电源上串了个磁珠,而且这个电路已经用了很久了没出过这 ...

驱动IO上面建议串100欧电阻,并小电容

ax6808 发表于 2022-2-10 21:52:29

拜读了! 近日碰到类似干扰问题:
近日研究:stc8+I2C气压温度传感器,USB-B小插座兼容充电及当串口监控数据(USB转TTL串口线接电脑充电或监控),里面一个锂电池,充电时要求可实时监控电池电压。
存在问题:用USB转串口接电脑后利用其5V电源边充电、工作及监控没都问题,但单独用充电器一插就经常运行不正常,工作状态指示灯闪时长不对,数据显示混乱;
          奇怪的是:串口发上来的数据中,主要是开机初始数据都不对了,实时数据(可对比监控的)也会错,显示单位不变;
          更奇怪的是:期间,MCU没死机也没复位,工作中拔掉充电器后,MCU运行貌似正常了,初始数据已经不对了不变了,但显示的实时数据也依然不对这就怪了,得重新复位才行!

T0= 0.0℃   P0=0.0hPa          //初始温度、气压值变为0了;
T = 17.7℃    P= 12233.8hPa   //实时温度对的,实时气压一直不对(高了一定数量);
---------------------------------------
VCC = 4.105V                            //实时电压检测:对的,无影响;

kundi 发表于 2022-2-10 22:43:17

ax6808 发表于 2022-2-10 21:52
拜读了! 近日碰到类似干扰问题:
近日研究:stc8+I2C气压温度传感器,USB-B小插座兼容充电及当串口监控数 ...

这样看来,也要考虑板子布线或其滤波电容的问题。比如电容值不足,如果条件允许可用钽电容

ax6808 发表于 2022-2-12 01:41:47

本帖最后由 ax6808 于 2022-2-12 02:27 编辑

没事了,刚才用USB转串口线插到通用5V充电器兼容当充电线用,后来插到电脑不认U口了,还以为烧坏了。后来一检查,显示“非旺玖原装的PL2303,请联系您的供货商”,百度重新安装新的驱动就好了! 可能今天电脑刚好更新了不认旧驱动了。
问题:之前买过几个PL2303,也经常重装驱动,难道是盗版芯片么!哈哈

ax6808 发表于 2022-2-12 02:36:17

kundi 发表于 2022-2-10 22:43
这样看来,也要考虑板子布线或其滤波电容的问题。比如电容值不足,如果条件允许可用钽电容 ...

今天又试了一下,干脆用我的USB转串口线(里面接3到4根线)加个二极管和PPTC限流插电脑或5V充电器兼容监控和充电了,暂时无乱码,继续观察研究! 用廉价4.2VUSB-B口充电器只有2根线,可能质量也差,暂时不用该方案了。谢谢!新PCB已适当改进,加几处小电容滤波,串口串电阻等,其实主要是要解决共模干扰,要彻底解决得花点时间和成本,看具体情况需要了。

ax6808 发表于 2022-2-14 13:58:23

电源波动(脉宽几十ns,峰值1V)把芯片干掉了:很有可能,!
如果真是这样的话,这个单片机防静电能力应该比较差:可能性极小!单片机防静电原理跟供电原理不同.

例如我最近碰到的问题!:
用了只有2线的USB充电线:换一根标准的USB数据线(最好带双层标准屏蔽的)就好了;
分析:干扰主要来自2线充电线感应静电干扰(就算设备有电池供电,USB充电头没插电只连线也有这种情况 )或USB5V充电头正常插电充电时传过来的共模干扰(一般的滤波都不起作用的,串磁珠有一定作用)。使用标准数据线及合格充电头一般不会!
关于线缆屏蔽:
内层使用铝箔屏蔽:主要防静电感应干扰、单点接地的多;(射频同轴电缆原理不同)
外层使用丝网屏蔽:第一层电防护,主要防大干扰或安全考虑,单点、两端或多点接地(具体情况具体分析);

ax6808 发表于 2022-2-14 14:03:07

关于通信线缆屏蔽(不含射频屏蔽线缆),目前找到的较好的解释.
其原理是:
1.单层屏蔽一端接地,不形成电位差,一般用于防静电感应。
2.双层屏蔽,最外层屏蔽两端接地,内层屏蔽一端等电位接地。此时,外层屏蔽由于电位差而感应出电流,因此产生降低源磁场强度的磁通,从而基本上抵消掉没有外屏蔽层时所感应的电压。

如果是防止静电干扰,必须单点接地,不论是一层还是二层屏蔽。因为单点接地的静电放电速度是最快的。但是,以下两种情况除外:
1、外部有强电流干扰,单点接地无法满足静电的最快放电。
如果接地线截面积很大,能够保证静电最快放电的话,同样也要单点接地。当然了,真是那
样,也没有必要选择两层屏蔽。否则,必须两层屏蔽,外层屏蔽主要是减少干扰强度,不是消除干扰,这时必须多点接地,虽然放不完,但必须尽快减弱,要减弱,多点接地是最佳选择。比如,企业中的电缆桥架其实就是外屏蔽层,它是必须多点接地的,第一道防线,减小干扰源的强度。内层屏蔽层(其实,大家不会买双层的电缆,一般是外层就是电缆桥架,内层才是屏蔽电缆的屏蔽层)必须单点接地,因为外部强度已经减少,尽快放电,消除干扰才是内层的目的。
2、外部电击和防雷等安全的要求。
这种情况必须要两层防护,外层不是用来消除干扰的,是出于安全的考虑的,保证人身和设
备安全的,必须多点接地。内层才是防止干扰的,所以必须单点接地。

ax6808 发表于 2022-2-14 20:45:06

今天!
终于查实了一个特别古怪的问题的定位:
结果反复验证:原来,确认是我之前所用的一根2pinUSB充电线的MICRO-B小公头有问题!
现象:最后剪掉线只剩公头了,插到我小设备U口(母座是专门设计的,可兼容供电、充电和串口ISP或监控等),STC8运行就大概率不正常(串口乱码、有的控制信号失常)!,换5pin的头无论接不接线都没有问题!
分析:(可能非VIP不能传图)可能这个2pin的头阻抗刚好不匹配,对我的STC8 11.0592MHz 9600波特率等干扰较大。。。。
下一步:进行研究(暂无高级仪器)。(老中医、老射频工程师的我刚涉足MCU不久,只能与时俱进,见招拆招)

ax6808 发表于 2022-2-18 22:07:35

小李非刀 发表于 2017-11-13 23:44
基本就是两个问题:电源、IO口处理。
(引用自4楼)

应该无非如你所说这两大方面! 为此,重新搜集研究了有关资料(下面是笔记摘录,仅供参考)

电源方面:总之要够功率的情况下,电压尽量稳,接口尽量干净,方案选型方法一大堆,基本原则都知道的,最终无非看总体要求和成本了。

I/O口设置方面 (我用的STC8G1K08):
    只能看手册及遵循基本设计标准、规范、要求或指南了。
   我逐字再看了几遍有关I/O口设置的各条目,要看最新的手册(时不时都有增加附录内容:注意事项等);
   我当时是想充分利用好其内部特性和资源,倒过来先从有关省电入手的,如悬空脚的设置,检测拨码开关状态该怎么设置利用内部上拉电阻可省掉外部上拉排阻还更省电,ADC电压检测注意事项,外围电路电平转换等等是否合理; PCB基本原则等。
      其他一 一再对照检查; 最后却在外接收发串口的阻抗匹配上犯了低级错误,造成我前面回帖中不断玩弄拷机中才发现的的怪现象(一接2P的USB充单电线就时不时运行异常,而接5P的还没发现过问题):其实一点不怪!只需串口I/O设置合理,再简单串个小电阻或源段正串二极管即可解决阻抗匹配问题,甚至连电平转换问题都或许可以一并简单解决了(手册都有的);(该外接串口利用麦克B口,供电、充电、ISP和监控口兼容一体。设备正常使用时无需外部串口线,充好电可连续用几个月,我是射频工程师,本来阻抗匹配是我们最基本的技能,不过单片机刚自学半年一下没有注意)。

摘录(STC1K08)
I/O口相关寄存器设置:
   除 P3.0 和 P3.1 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在使用 I/O 口时必须先设置 I/O 口模式;
      1.端口数据寄存器(Px):可直接读写端口状态,写0、1,读管脚电平;
      2.端口模式配置寄存器( PxM0, PxM1):00双向,01推挽出,10高阻入,11开漏出;
       注意:当有I/O口被选择为ADC输入通道时,必须设置PxM0/PxM1寄存器将I/O口模式设置为输入模式(高阻10)。
             另外若MCU进入掉电模式/时钟停振模式后,仍需(我不需)使能ADC通道,则需要设置PxIE寄存器关闭数字输入,才能保证不会有额外的耗电;
      3.端口上拉电阻控制寄存器( PxPU):内部4.1K上拉电阻控制位(P3.0和P3.1口上的上拉电阻略小);0:禁止,1:使能;
      4.端口施密特触发控制寄存器( PxNCS):0:使能(复位默认)1:禁止;
      5.端口电平转换速度控制寄存器( PxSR):0:快,1:慢;
      6.端口驱动电流控制寄存器( PxDR):0:增强,1:一般;
      7.数字信号输入使能控制(PxIE)设置:
       0:禁止数字信号输入。作比较器输入口、 ADC 输入口或者触摸按键输入口等模拟口时,进入时钟停振模式前,须设置为0,否则有额外耗电。
         1:使能数字信号输入。作数字口时,必须置为 1,否 MCU 无法读取外部端口的电平。

附录R 应用注意事项(20211217版)
R.3 STC8G1K08 系列
1. STC8G1K08 系列 C 版芯片和 D 版芯片的 LVD 中断、定时器 2 中断、 INT2 中断、 INT3 中断和 INT4 中断的关闭中断指令无法在一个时钟内完成,用户必须在关闭中断指令后多加 1个 NOP 指令。( D 版本芯片在 C 版本芯片的基础上修改了高速脉冲输出会受到同一组 I/O口翻转影响的问题)
2. STC8G1K08 系列 C 版芯片的 PCA 高速脉冲输出功能会受到同一组 I/O 口翻转的影响,建议不要使用高速脉冲输出功能( D 版芯片无此问题)。
3. 特别注意:由于 STC8G 系列的所有 I/O(除了 ISP 下载口 P3.0/P3.1 外)在上电后都是高阻输入模式, I/O 外部电平不固定,此时如果 MCU 直接进入掉电模式/停机模式,会导致I/O 有额外的耗电,所有在 MCU 进入掉电模式/停机模式前,必须将所有 I/O 口都根据实际情况设置好 I/O 口的模式,对于所有没有使用的外部悬空的 I/O 都需要设置为准双向口,并固定输出高电平。特别是部分管脚的芯片,由于芯片内部有部分 I/O 口并没有打线到外部管脚,所以这些 I/O 也是处于悬空状态的,这部分 I/O 也需要设置为准双向口,并固定输出高电平。


ax6808 发表于 2022-2-20 18:52:11

ax6808 发表于 2022-2-18 22:07
应该无非如你所说这两大方面! 为此,重新搜集研究了有关资料(下面是笔记摘录,仅供参考)

电源方面:总 ...
(引用自33楼)

嗯!不好意思,之前没彻底解决问题没说完整。
说到接口:任何内外部接口,都应考虑匹配问题:至少注意接口电平;外接口:能否热插拔(就是外接口断开或连上时都应无任何影响)、防误插损坏(包括正反插错、电压不对,信号线接反等)、连接线屏蔽等等。。。

我这次的问题主要是沿用他人部分代码,只发不收情况下没禁止串口收,断开外部连线时模块串口收发是开路的,造成收发严重串扰至MCU运行异常。
已彻底解决BUG问题:我的模块只发监控数据不收的,MCU禁止收数据功能后就好了, 再串电阻或二极管主要是为了这个usb口能够匹配或隔离外接供电口、充电口、监控口或ISP口的电平,互不影响防误插(就是这个USB口随便你插什么线到5VUSB口都可正常供电,有转接芯片的线还可正常监控或ISP)

ax6808 发表于 2022-2-20 20:56:42

kundi 发表于 2022-2-10 22:43
这样看来,也要考虑板子布线或其滤波电容的问题。比如电容值不足,如果条件允许可用钽电容 ...
(引用自27楼)

嗯!不好意思,之前没彻底解决问题没说完整。
总之,碰到问题应先查找自身问题,先看看功能代码是否存在BUG(特别是他人的代码得一条条搞懂再优化)
I/O脚:要一一检查设置对否,是入还是出?悬空脚处理、
接口:任何内外部接口,都应考虑匹配问题:至少注意接口电平;外接口:能否热插拔(就是外接口断开或连上时都应无任何影响)、防误插损坏(包括正反插错、电压不对,信号线接反等)、连接线屏蔽等等。。。

我这次的问题主要是沿用他人部分代码,只发不收情况下没禁止串口收,断开外部连线时模块串口收发是开路的,造成收发严重串扰至MCU运行异常。
已彻底解决BUG问题:我的模块只发监控数据不收的,MCU禁止收数据功能后就好了, 再串电阻或二极管主要是为了这个usb口能够匹配或隔离外接供电口、充电口、监控口或ISP口的电平,互不影响防误插(就是这个USB口随便你插什么线到5VUSB口都可正常供电,有转接芯片的线还可正常监控或ISP)
页: [1]
查看完整版本: STC15系列单片机受干扰导致损坏问题