单片机
返回首页

单片机自动复位原因_单片机复位电路为什么不能复位

2023-01-31 来源:elecfans

  单片机自动复位原因

  单片机自动复位常见的原因有:

  1.掉电或电压过低(我用STC单片机的时候遇到过因为电源电压过低而导致自动复位的情况)

  2.程序跑飞或者死机后,由看门狗引发的复位

  3.复位引脚接收到复位信号(人工产生或者外部看门狗等电路产生)

  4.STC89C52RC单片机在使用汇编语言编程时,出现类似C语言中函数递归的语句时,可以自动复位。这个我在实验时看到过这个现象,但具体原因不明,我没有使用看门狗。

  5.有些单片机可以在程序控制下自动复位。

  单片机复位电路不能复位的原因

  STM32f0按键模块电路经常遇到上电不复位的情况,芯片采用的是stm32f030,按键模块采用ZLG7290芯片、4X4按键LED矩阵。ZLG7290是周立功公司专门开发的按键芯片,其最大可支持64个按键和64个LED,可通过I2C协议对其读写,ZLG7290与stm32f030复位电路采用datasheet参考电路,如下:

单片机自动复位原因_单片机复位电路为什么不能复位

  正常情况下,电路上电后会有一个LED全部点亮的过程,上电稳定延时后,LED自动全部熄灭,正常运行时,按下相应按键其对应的LED灯应被点亮。

  问题:

  STM32复位电路内部有自带的上拉电阻,同时PVD的电源检测阈值采用的是默认值2.2V,采用电池供电,电压表测量引脚电压在2.8V左右,但是电路上电后不能正常运行,LED矩阵上电不能被点亮,按键按下后相应LED灯无反应。

  测试

  stm32f030复位测试

  stm32f030上电复位后,程序依次执行初始化的过程,其中包括设置时钟为内部48MHZ时钟频率,设置并启动串口、I2C等,之后执行LED灯全部点亮函数,延时3s关闭所有LED并进入主功能程序。

  测试任务:stm32f030是否能复位:

  既然上电后LED灯不能全部点亮,则LED灯全部点亮函数不能正常执行,则在此函数之前添加一个UART串口发送函数。

  测试结果:

  串口发送函数被执行,在超级终端收到正常的数据。

  此时表示stm32f030能正常复位。

  测试任务:注释掉LED灯全部点亮函数

  此时上电后,LED不能被全部点亮(函数被注释),但是按下按键后相应LED可以被点亮。此时可锁定问题在LED灯全部点亮函数上。

  分析:

  LED灯全部点亮函数实际上是一个I2C写函数,通过向ZLG7290相应寄存器写入0xFF,可点亮LED。采用上面测试的方法,在函数的每一条语句之前插入一条UART发送函数,分析执行情况,其中

  while(I2C_GetFlagStatus(I2C1, I2C_FLAG_TXIS) == RESET);

  执行没有问题,再次说明stm32f030能正常复位。但是在

  I2C_Senddata(I2C1, data);

  语句之后,UART发送函数不能被正常执行,因此问题被锁定。

  ZLG7290不能被正常读写,很可能ZLG7290没有被复位。

  查阅ZLG7290的datasheet,发现ZLG7290复位时间在20ms左右,其远远大于stm32f030,因而产生ZLG7290没有正常复位的情况。

  结论:

  电路上电不复位的原因可能是多方面的,特别是stm32f030和外围电路均需要复位的情况,因此各个模块可能需要隔离测试,最终锁定问题才能找到解决的方法。


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • PIC单片机控制的遥控防盗报警器电路

  • 短波AM发射器电路设计图

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 如何构建一个触摸传感器电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章