硬汉嵌入式论坛

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

[I2C] I2C硬件锁死

[复制链接]

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2026-5-2 13:33:00 | 显示全部楼层 |阅读模式
目前在开发p169h002这个屏幕和lvgl,屏幕驱动是st7789(spi),触摸是cst816(i2c)。我在项目中屏幕采用的spi+dma,触摸是外部中断结合安富莱按键fifo存储键值。图片是中断优先级,tim6中放着lvgl的心跳节拍。屏幕项目思路是填充时标志位置1,spi中断中置0。触摸是当有外部中断,中断中置一个标志位,主循环中检测标志位并i2c读取将键值填入fifo,lvgl的触摸读取函数中读出键值。开发过程中一上电BERR就置位,触摸过程中不定会arlo和busy置位。锁死后使用软件复位和发送9个脉冲仍然不能复位,除非单片机复位,请问我这情况是怎么回事。恳请大佬指正。
屏幕截图 2026-05-02 132257.png
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
122500
QQ
发表于 2026-5-2 16:11:58 | 显示全部楼层
GUI类的触摸芯片,使用软件I2C主机就行,简单易用可靠。因为软件I2C无正常应答时,可以直接放弃这次触摸数据。有效避免软件I2C被抢占之类问题导致的出错。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2026-5-2 16:56:52 | 显示全部楼层
eric2013 发表于 2026-5-2 16:11
GUI类的触摸芯片,使用软件I2C主机就行,简单易用可靠。因为软件I2C无正常应答时,可以直接放弃这次触摸数 ...

感谢硬汉哥,改成软件确实可以,是不是以后主机基本都是软件模拟,从机使用硬件?如果是这样,那软件模拟的延时函数是要阻塞的吗,放到freertos中又该怎么样
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2026-5-2 17:10:34 | 显示全部楼层
eric2013 发表于 2026-5-2 16:11
GUI类的触摸芯片,使用软件I2C主机就行,简单易用可靠。因为软件I2C无正常应答时,可以直接放弃这次触摸数 ...

感谢硬汉哥解答,这算不算st的bug呢?那这样以后是不是主机使用软件模拟,从机使用硬件?软件模拟使用阻塞吗?
回复

使用道具 举报

46

主题

253

回帖

391

积分

高级会员

积分
391
发表于 2026-5-2 20:03:19 | 显示全部楼层
专业苟三十年 发表于 2026-5-2 17:10
感谢硬汉哥解答,这算不算st的bug呢?那这样以后是不是主机使用软件模拟,从机使用硬件?软件模拟使用阻 ...

我记得有错误回调函数,或者超时。发生这个,重新初始化硬件
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2026-5-2 22:04:37 | 显示全部楼层
snakeemail 发表于 2026-5-2 20:03
我记得有错误回调函数,或者超时。发生这个,重新初始化硬件

感谢大佬回复,我也之前使能了错误中断,在回调中重新初始化包括软件模拟发送9个时序进行强制暂停,但是真的没反应,i2c就跟死了一样,我也搞不太清楚了,见识太少了
回复

使用道具 举报

6

主题

89

回帖

107

积分

初级会员

积分
107
发表于 2026-5-3 11:01:08 | 显示全部楼层
每一步操作都要判断状态,超时要重新初始化I2C!
回复

使用道具 举报

0

主题

14

回帖

14

积分

新手上路

积分
14
发表于 2026-5-5 08:37:24 | 显示全部楼层
我之前也是搞这个st7789+cst816触摸屏 , 我是用spi+dma 硬件iic ,但是我是用了FMC外部SDRAM做lcd缓存才出现iic锁死问题,无法操作,后面也是改成软件iic就没问题
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-5-13 02:43 , Processed in 0.266875 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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