硬汉嵌入式论坛

 找回密码
 立即注册
查看: 269|回复: 6
收起左侧

记录贴!关于CH390D的INT引脚使用避坑记录

[复制链接]

7

主题

31

回帖

52

积分

初级会员

积分
52
发表于 2025-5-19 11:31:04 | 显示全部楼层 |阅读模式
本帖最后由 LY_Bear 于 2025-5-20 17:02 编辑

背景:
最近在项目中使用到了CH390D这个芯片,硬件设计倒是很简单,但是软件测试那边出现了
一些使用上的问题,最终解决问题,故此记录,方便日后查找。

问题:
使用INT引脚中断读取的方式,持续通讯一两个小时之后就会接收不到东西,但是能发送;
使用查询方式就可以正常使用,但是这种方式太慢,不现实;
软件测试将CH390D模块换为ENC28模块,相似代码,依旧出现同样问题;

原因:
由于是通过INT引脚触发MCU的外部中断去读取信息,在连续接收中如果,触发一次中断
只读取一次,就有可能在处理的过程CH390D那端又接收到一帧,INT引脚一直处于低电平
就会导致无法再触发MCU的外部中断,也就无法接收到信息。

解决方法:
在触发中断后,循环读取CH390D的数据帧,读完一帧后,读取INT引脚电平,若恢复高电平
则结束读取,若未恢复高电平则继续读取数据帧。

测试结果:
软件工程师连续压力测试6小时未出现问题,故应该已解决。

总结:
对于这种带INT引脚且数据更新速度快的芯片,应采用
中断触发读取 + 电平检测决定是否读取完成
的方式来处理。


回复

使用道具 举报

3

主题

425

回帖

434

积分

高级会员

积分
434
发表于 2025-5-19 14:30:26 | 显示全部楼层
总结很到位。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116197
QQ
发表于 2025-5-22 08:22:38 来自手机 | 显示全部楼层
谢谢楼主分享
回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2025-5-22 17:14:40 | 显示全部楼层
使用带低电平触发的单片机可以解决这个BUG。哈

评分

参与人数 1金币 +10 收起 理由
LY_Bear + 10 赞一个!

查看全部评分

回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2025-5-22 17:15:08 | 显示全部楼层
使用低电平触发中断的单片机解决这个BUG哈
回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2025-5-22 17:19:32 | 显示全部楼层
还有一个问题需要解决 发送过程需要关闭接收中断才行,不然发送过程接收中断会导致SPI时钟出错,发送完检测中断引脚是低就需要读取数据直到高电平后再开启中断
回复

使用道具 举报

7

主题

31

回帖

52

积分

初级会员

积分
52
 楼主| 发表于 2025-5-23 16:20:01 | 显示全部楼层
denike 发表于 2025-5-22 17:14
使用带低电平触发的单片机可以解决这个BUG。哈

有些芯片好像没有高低电平触发,只有边沿触发
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-9 22:09 , Processed in 0.417268 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表