STM32f0按键模块电路经常遇到上电不复位的情况

描述:
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和外围电路均需要复位的情况,因此各个模块可能需要隔离测试,最终锁定问题才能找到解决的方法。

Vivado怎么避免信号被优化掉
上海航天电源技术有限责任公司锂电池产品系列
新品开箱:看北通宙斯游戏手柄初音未来限定版玩转甜美机械风
三大运营商高度重视雄安新区建设 可能成为中国率先规模商用实验5G的地区
PCB回收:如何回收电路板
STM32f0按键模块电路经常遇到上电不复位的情况
【节能学院】安科瑞电力监控系统在中国人民银行金融信息中心数据中心的设计与应用
2000元左右价位:荣耀V9、锤子M1L、一加3T、小米6,选这四款手机准没错
持续发力机器人,刘强东的机器人大军
QCA4010开发套件:无主机、低功耗Wi-Fi SoC
电气设备的热管理助于防止过热和电路故障
华测导航前三季度净利润同比预增27.79%至30.05%
“网红”长沙有了新地标!24日海信品质之家等你来打卡
半导体模拟开关的一些小知识
苹果新专利:防指纹涂层,暗示未来或推出钛金属外壳设备
智能制造核心技术发展现状_智能制造未来的发展方向
设备232、485和TTL都是串口通讯的常见接口类型的区别及如何选择
古瑞瓦特逆变器安装说明_安装注意事项
变电站是干什么的 变电站有辐射吗
第一代5G手机因基站问题只能用4G网络