关于IIC超时的问题与解决办法

[OTA-day2IIC]软件模拟IIC使用24C02 4.读数据:我们可以用到GD32官方库的函数BIT(i)[将0x01左移I位],先判断SDA读到的数据为高电平,就将该位置1,反之则置0,因为我们声明Rxd的时候就是Rxd=0,所以读到0可以不做任何操作,读完一位然后等待应答ACK,如果是8位数据前7位都是应答,最后一位不应答,接受完数据后IIC_Stop();i--) 从第七位开始判断,如果为高电平则SDA输出高,如果为低电平SDA输出低,然后释放总线SCL,开始下一个数据发送。 阅读详情

1.I2C中是否存在超时概念?

I2C协议中不存在超时的概念,而SMBus有超时概念,对于10kHz的最小时钟速度,可以考虑35ms的超时。

2.I2C总线什么时候可能被挂死

IIC总线在传输过程中出现以下情况时候(SDA电平被从机拉低):

(1) 当主机向从机写入数据或地址时,如果从机发送ACK响应,它将在第9个CLK期间下拉SDA

(2) 当主机读取数据时,从机向主机发送0(低电平)时

3.解除IIC中SDA被挂死的方法

(1) 方法1重置从设备(假设该设备具有Reset引脚)

(2) 方法2使用总线恢复序列(协议中申明)(五步)

1 step:主机停用IIC

2 step:I2C接口复用到GPIO模式

3 step:将SDA保持在高水平。

4 step:主设备通过在SCL线上以GPIO翻转模式提供至少9个时钟来释放从设备

5 step:主机重新初始化i2C模块,使i2C接口启用i2C功能。

4.PMBus可以超时:

PMBus支持更强大的协议,因为它提供超时和可选的数据包错误检查(PEC)来增强数据完整性。超时可以防止速度较慢的从设备保持时钟线超过指定的超时间隔,从而避免总线挂起。

5.使用IIC 写M24C04(EEPROM)与重定向

模拟IIC通讯 模拟IIC通讯 //__delay_us __delay_ms使用的是单片机自带的延迟 //模拟IIC必须带延迟否则无法正常工作 void BS8116A_Start() { BS_SDA_SetHigh(); BS_SCL_SetHigh(); __delay_us(5); BS_SDA_SetLow(); __delay_us(5); // Delay_5_us(1); BS_SCL_SetLow(); } void BS8116A_Stop( 阅读详情

相关推荐

IIC通信】Chap.1(I2CIIC通信原理、IIC读写时序详解

IIC通信以两根连线SDA、SCL实现了完善的全双工同步数据传送, 可以方便地构成多机系统和外围器件扩展系统。

Jie_MSD的博客 2万+

精华秘籍:MTK平台如何提高I2C驱动能力.docx

I2C总线最多可以挂127个设备,但实际应用中可能会出现挂两个I2C设备就无法正常工作的情况,如何提高I2C的驱动能力,而不是一味调整I2C上拉电阻值,很多人在这里存在认识误区

模拟IIc通讯失败解决办法&&通讯线长度问题

在原厂DEMO下移植模拟IIC通讯,调试SQ52205的模拟IIC通信记录但是出现IIC通讯失败,发现IIC从机未有ACK回应,查明原因是因为IIC通讯线过长:剪短II从通讯线。

kingboj的博客 2339

解决树莓派i2c串口超时问题

解决树莓派i2c串口超时问题树莓派i2c串口连接超时的原因是:使用的io口i2c冲突了。注意:使用拓展板的时候一定要看原理图,不然要花费很长的时间去解决问题。 使用树莓派时出现的小问题,找了半天也没有找到原因,最后花了两天时间排查的,由于是自己的粗心,没有看原理图导致的。怕以后会忘,故以此来记录。 树莓派i2c串口连接超时的原因是:使用的io口i2c冲突了。 注意:使用拓展板的时候一定要看原理图,不然要花费很长的时间去解决问题。 ...

Edgar的博客 1347

GD32 I2C读取标志位超时问题解决

对于I2C,为啥很多人说他不好用呢,主要是它超时根本没有一个超时时间,那么在硬件上出现问题,比如把一根线拔了就永久的进入死循环,整机直接跑死,这对于四轴这种东西的话就是直接掉下来了,非常的恐怖。经过测试就算I2C跑死也不会影响成程序正常运行。就一个while跑死去读标志位。

yybyg的博客 1620

STM32 I2C 死锁笔记

问题 调试中遇到过这样一个问题,主芯片访问外部I2C设备时,市场出现I2C读写time out,而且一旦出现这个问题后,I2C的SCL一直为高,SDA一直为低;I2C访问会一直失败。 分析 1) 对于I2C主设备来说,由于检测到SDA信号为低电平,则会认为I2C总线被占用,I2C主设备等待从设备释放SDA信号,而同时I2C从设备又在等待主设备将SCL信号拉低以释放应答信号,两者相互等待,I2C总线...

原初引力 1558

STM32F407 IIC通信

* 定义 I2C 引脚 *//* I2C SDA 或 SCL 引脚拉高或拉低 *//*** @brief 初始化 I2C 引脚* @param 无* @retval 无*//* 使能时钟 *//* 配置 I2C 引脚 *//* 设置引脚为输出模式 *//* 设置引脚为上拉方式 *//* 设置引脚速率为50MHz *//* SCL 配置为推挽输出(强驱动) *//* 设置 IIC 的 SCL 引脚 *//* 设置 SCL 为推挽输出 */

m0_54259189的博客 2227

IIC死锁现象和解决办法

背景知识 1.IIC总线空闲状态 IIC总线中,当SCL和SDA都为高电平时,总线处于空闲状态 2.IIC总线起始信号 IIC总线中,当处于空闲状态时,SCL为高,SDA由高到低的变化为起始信号 3.IIC总线停止信号 IIC总线中,当传输完数据后,SCL为高,SDA由低变高为停止信号,停止信号都由主机发出 4.SCL为低时可以传输数据,传送完后SCL会被拉高,在SCL上升沿开始传输数据。SCL为高时要保持SDA数据稳定 5.发送完数据,读完数据,发送完STOP信号,都要延时一会,等设备反应 IIC死锁现象

ZDQ1431的博客 8230

IIC实测波形入手,搞懂IIC通信

玩单片机的朋友都知道IIC通信这个工具,但好多人只是会用,内部的原理不求甚解,或是想要了解其原理,但却对抽象的时序描述一头雾水。本文将从实测的IIC波形入手,带你看到真实的IIC样子,进而去理解IIC的通信原理。 1 IIC基础知识 首先复习一下IIC基础知识,这部分看不懂的请先带着疑问,然后我们通过分析IIC的真实波形,这些疑问可能就豁然开朗了~ 1.1 IIC是什么 IIC(Inter Integrated Circuit,集成电路总线)是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制

码农爱学习的博客 2万+

IIC总线的原理Verilog实现

IIC总线的原理Verilog实现1、 软件平台硬件平台2、 原理介绍2.1 IIC总线的特点:2.2 IIC总线协议详解:2.2.1 IIC主机往从机里面写入数据的步骤2.2.2 IIC主机从从机里面读出数据的步骤2.2.3 通信状态空闲状态起始状态和结束状态有效的数据位传输应答信号非应答信号2.2.4 读写过程**主机通过IIC总线往从机里面写数据**主机通过IIC总线从从机里面读数据3、 目标任务4、 设计思路及Verilog代码编写4.1 IIC发送模块的接口定义整体设计4.2 IIC接收

ToFPGA的博客 1万+

STM32F4硬件IIC+DMA使用

1.STM32硬件IIC一直被大家说存在问题,实际测试发现确实是有这种情况,借助网上很多人的经验,终于把硬件IIC写完了。 2.使用DMA时,发现发送数据(写寄存器)时序和实际不符,比如发送4字节数据时,如果DMA缓冲区单字节长度配置为4,则实际时序发现只有三个,需要将DMA缓冲区单字节长度配置为5,才可以正常使用 3.当然,如果使用STM32的HAL库,这些问题其实都可以避免,因为底层ST已...

qq_24896591的博客 2万+

关于IIC总线的若干问题

IIC是飞利浦提出的一种通信总线结构,其硬件架构比较简单,仅包含SCL和SDA两条线。根据最新的IIC总线标准,IIC总线包含Standard-mode(100kbit/s)、Fast-mode(400kbit/s)、Fast-mode Plus(1Mbit/s)、High-speed mode(3.4Mbit/s)以及Ultra-Fast-mode(5Mbit/s)5种不同速率的模式,图一给出了前三种模式的相关参数。图1 IIC总线几种模式的相关参数根据图1,可以提出以下几个问题:1、几种不同模式的硬件架

qq_32437519的博客 2307

IICIIC总线原理Verilog实现

IIC总线原理及Verilog实现

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 8246

RK3288 android7.1.2 i2c 出现timeout 超时错误分析

1.如果出现一下超时信息,有以下几种可能造成的; 1)硬件没有连接好,或者初始化失败; 解决方法:开发板重新上电,或者reboot 即可正常。 2)i2c clock 设定太大; 解决方法:将clk 由400kHz改为100kHz。 [ 1654.382893]rk3x-i2c ff14000...

Navy的博客 7268

IIC通信协议总结

(1)概述 I2C(Inter-Integrated Circuit BUS) 集成电路总线,该总线由NXP(原PHILIPS)公司设计,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。 经常IIC和SPI接口被认为指定是一种硬件设备,但其实这样的说法是不尽准确的,严格的说他们都是人们所定义的软硬结合体,分为物理层(四线结构)和协议层(主机,从

zhc的博客 11万+

i2c 驱动编程接口 i2c_master_send 和 i2c_master_recv i2c_transfer

1、通信接口 i2c发送或者接收一次数据都以数据包 struct i2c_msg 封装 [cpp]  struct i2c_msg {      __u16 addr;     // 从机地址      __u16 flags;    // 标志  #define I2C_M_TEN   0x0010  // 十位地址标志  #define I2C_M_RD    0x0001  /

zclongembedded的专栏 3万+

软件模拟IIC需要注意的问题

iic 总结: 1、从主ic的gpio口出来的电压要确定是高电压,也就是开始模拟iic之前,要把gpio口电压置1 2、在等待ACK的函数里,在置SDA为输入前,可以把SDA置为高输出,然后再置SDA为输入,       这样可以明显看出ACK(要是有ACK来的时候),确认有ACK之后再把这多余的置SDA为高输出的注释掉。 3、至于延时处理,不是适用于所有的IC的,很多网上的例程代码都有做延时处理...

dearlaoyuan的专栏 8077

软件模拟IIC主从机

软件模拟IIC从机部分从机接收部分从机发送部分主机部分主机接收部分主机发送部分 上个月入职了一家做消费类电子的公司,做了两个小项目,用的是NY8芯片,资源有限,没有串口和IIC,其中一个项目是做闹钟显示板,只用将主机发过来来命令处理就行,做的是通版,使用串口和IIC两种方式数据。 网上搜寻一边,参考借鉴了整理出一份可行的方案,项目是用从机,发到博客上方便日后工作及有需要的朋友使用。 从机部分 因为...

lala0903的博客 6798
上一篇: Excel VBA的应用
下一篇: RS232 工作原理以及特性
万三千wan
博客等级 码龄9年 3521粉丝 11原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值