问题:在进入freeze休眠前需要设置特定IO关闭电源灯操作,唤醒后需要将特定IO恢复原来正常工作状态,此时出现偶然性(概率很低)的IO控制失效问题;【平台:君正X1600HN】
一、问题点分析
1、电路
- GPIO电流驱动能力排查
2、检查 GPIO 是否被其他外设复用
排查方法:
- 检查设备树
- 尝试禁用其他外设驱动,排除干扰
3、驱动设置问题
- 查看设备树的对应IO配置是否设置正确
4、IO口竞争
- 中断干扰
- 系统任务调度延时(采用实时性更好的驱动方法,如gpio_set_value)
二、解决思路
通过建立log日志的方式,把对应IO口时钟配置寄存器、复用功能寄存器、方向寄存器、状态寄存器这几个值存到一个文件中,然后等出现异常时候,查看文件里面寄存器的变化
① 进入休眠前记录这几个数据
② 唤醒后记录这几个数据
正常的IO状态
| GPIO | 功能 | 正常工作状态 | 睡眠状态 | 唤醒状态 |
|---|---|---|---|---|
| PC25 | CAN使能引脚 | 0 | 1 | 0 |
| PD00 | 屏幕电源控制 | 1 | 0 |

最低0.47元/天 解锁文章
1114

被折叠的 条评论
为什么被折叠?



