首页 > 其他分享 >关于硬件IIC卡死在各事件的解决方法

关于硬件IIC卡死在各事件的解决方法

时间:2023-08-09 11:57:49浏览次数:40  
标签:IC卡 硬件 while 事件 IIC 卡死 I2C EV6

1、关于硬件IIC卡死在EV5事件解决方法

主机使用I2C_GenerateSTART()函数发送START条件后,主机必须等待事件5(启动条件已在I2C总线上正确释放),关于事件5,主要是对是否发送起始位(STAR1寄存器位0)、主从模式以及总线是忙还是空闲(STAR2寄存器位0、位1)进行判断,当这3位均为1,即已发送起始位、主模式且总线忙,会跳过while循环进行下一步操作。若卡死在while循环,可以检查一下以上寄存器3位是否为1。此外,卡死在EVT事件,可按照以下方法试一下能否解决问题:

  • 程序中关闭自动应答,不使用I2C_AcknowledgeConfig(I2C2, ENABLE),可以按照这样试一下;
  • 每次在读之前重新初始化一下IIC或者使能IIC试一下;
  • 关于EV5事件的清除,读SR1然后将地址写入DR寄存器将清除该事件,可在程序中按照该流程试一下;
  • 可尝试降低一下通信速度看看是否会有问题;
  • 加入超时机制,当卡死在某事件(while循环)一段时间之后,直接跳过该循环,等待下一次操作;

2、关于硬件IIC卡死在EV6事件解决方法

当使用硬件IIC驱动EEPROM卡死在EV6事件

while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED))

问题原因:在判断EV6事件的时候,EEPROM此时还在写入数据,我们发送了地址过去,但并没有产生应答

解决方法:在判断EV6事件之前加一个延时,如下图:

当使用硬件IIC主从通信主机卡死在EV6事件

该问题一般是由于从设备不够快造成的,可在配置IIC主机的时候总线速度适当降低一些或在各个读写操作中加入一定的延时。

 

3、关于IIC主从通信卡在while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));

该问题可检测一下总线空闲时是否都为高电平,其次注意一下外设的使能,先使能开启GPIO时钟,再开启IIC时钟,最后再配置IIC,注意顺序。

当卡死在while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));时同样可按照上述方法进行检查。

 

标签:IC卡,硬件,while,事件,IIC,卡死,I2C,EV6
From: https://www.cnblogs.com/liaigu/p/17616466.html

相关文章

  • 事件对象
    事件对象介绍事件对象:当事件发生的时候,浏览器会创建一个事件对象,这个对象包含了当前事件发生时的所有信息事件对象是一个全局对象,在事件发生时,浏览器会创建一个事件对象,并把它作为实参传递给事件处理函数,事件处理函数通过事件对象,可以获取到事件发生时的相关信息,如鼠标位置......
  • 【Spring | 事件监听概述】
    本篇主要对Spring的事件监听机制简单介绍下。(事件监听)概述  ApplicationContext中的事件处理是通过ApplicationEvent类和ApplicationListener接口提供的。如果将实现该ApplicationListener接口的bean部署到上下文中,那么每当ApplicationEvent发布到ApplicationCon......
  • Spring事件监听机制
    背景当我们的数据发生变化时,有很多别的业务逻辑需要去做,那么很适合使用事件监听来解耦合。比如目前做过的一个接口,会去修改指令的状态,修改完之后,需要调用持仓、额度等接口,那么每次有新增逻辑都需要来改我的这个接口,这很不方便,我完全可以修改完了之后,直接发布一个事件,让别的模块来......
  • 从实际案例出发,一文讲明如何设计小程序事件系统
    事件是视图层到逻辑层的通讯方式。事件可以将用户的行为反馈到逻辑层进行处理。事件可以绑定在组件上,当达到触发事件,就会执行逻辑层中对应的事件处理函数。事件对象可以携带额外信息,如id,dataset,touches。事件分为冒泡事件和非冒泡事件.冒泡事件:当一个组件上的事件被触发后,该事件......
  • 调整窗口大小事件
      ......
  • 页面加载事件
        ......
  • JS监听浏览器关闭、刷新及切换标签页触发事件
    蛮简单的东西,知道就会,不知道就不会,没什么逻辑可言。简单记录一下,只为加深点儿印象。visibilitychangevisibilitychange可以监听到浏览器的切换标签页。 直接上代码: <script>document.addEventListener('visibilitychange',documentVisibilityChange)functiondocumentVis......
  • 键盘事件
         ......
  • RTSP流媒体服务器LntonNVR(源码版)平台硬件更改设备的DNS的具体操作步骤
    LntonNVR作为视频边缘计算网关,提供了软件平台版和硬件设备版两种选择。硬件版本的LntonNVR具有体积小、方便部署等特点,配置完成后可以直接放置在现场,只需通电并连接网络即可使用。因此,很多项目中用户都会选择部署LntonNVR来满足其需求。当用户在配置完固定IP后遇到无法访问域名地址......