leesoft 发表于 2017-4-28 14:46:38

STM8S003F3或103F3 IIC引起单片机复位

STM8S003F3或103F3IIC引起单片机复位
   最近使用这颗MCU开发了一款电压取样板,AD转换使用的是MCP3421(因为精度要求高,所以没有使用单片机内部AD转换),打样回来后测试发现一个现象。使用串口工具与之通讯,通讯指令时间间隔越快,单片机出现复位现象越容易发生,而且是单片只要一复位就会一直出现复位状态,就好像我们常见的开关电源输出短路,打嗝一样。出现这种现象后只有单片机重新上电才能恢复正常。如果串口工具间隔2秒发送一次指令与之通讯,有时候也会复位。当有两种状况:1、可能复位一下就工作正常了。2、一直出现复位状态。如果断开与之相连的MCP3421和SDA与SCL上拉电阻,不管怎么快的速度发送指令,单片机一直正常工作不会出现其他状况。
网上看到有人说003和103的IIC通讯不稳定不如直接用IO口模拟好,请教真的是这样吗?还是另有原因,请高手指点。


leesoft 发表于 2017-4-28 14:47:04

现在发现当出现反复复位现象时,用镊子短路RM6故障解除,怀疑是I2C工作电流太小,把RM6阻值减小到1K,还是一样。难道阻值还要减小吗?单片机手册和我的AD转换IC手册上都说上拉电阻阻值1--10K之间

majibutt 发表于 2017-4-28 23:07:36

应该是你的程序问题,STM8系列的处理器携带的RAM非常小。你的软件在通讯的时候肯定是有内存溢出的现象,从而毁掉了程序的堆栈而导致出现频繁的重新启动现象。:)

majibutt 发表于 2017-4-28 23:10:43

程序的问题,程序堆栈溢出,出现了致命的问题。认真检查你的程序吧。

sssdd 发表于 2017-5-4 15:02:13

本帖最后由 sssdd 于 2017-5-4 15:05 编辑

可能是内核电压不稳导致。内核稳压电容474是下限。。搞个105或更大试试。
仔细量下电源电压。最好拿示波器看看。

都没问题。那么就是软件问题了。
不想查的,就用IO模拟IIC。
八成是帧出错或者别的什么出错一直没处理。锁死在中断里。然后被狗咬了。
软件调试就知道了。看是不是程序一直都呆在中断。

稀饭放姜 发表于 2017-5-13 21:40:46

ST为了规避I2C的版权问题,没有解决硬件I2C的互锁问题。

如果干扰比较大的地方,I2C通信用模拟的吧。如果非要硬件I2C,需要用一个定时器做应答超时处理。
页: [1]
查看完整版本: STM8S003F3或103F3 IIC引起单片机复位