大茂名网

 找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 197|回复: 0

[【编导】] 看看:通信协议 I2C 子系统之 Debug2022/12/26 8:37:54

[复制链接]

2万

主题

2万

帖子

9万

积分

钻石元老

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

积分
98065
发表于 2022-12-26 08:37 | 显示全部楼层 |阅读模式

马上注册登陆,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?用户注册

x

在应该收到ACK信号的时候没有收到ACK信号,2就会产生一个ACK的中断,告诉2发生了ACK。通常情况是本身的问题。ip域名查询网的相关知识也可以到网站具体了解一下,有专业的客服人员为您全面解读,相信会有一个好的合作!


I2C常见有两种错误:I2CACK、I2C

一、I2CACK在应该收到ACK信号的时候没有收到ACK信号,2就会产生一个ACK的中断,告诉2发生了ACK。通常情况是本身的问题。



1、检查是否存在,2和是否正确。示例如下:2为6,为028:

[31092951][]22-6::028,ACK2、检查是否已经上电使能,以及正确的。

3、检查2是否适配,大于支持的也会造成ACKE。降低速度,如果仍然可以工作的话就说明是相关问题。

4、检查2信号电平是否与AP匹配。

5、GPIO以下几个部分:

GPIO电流驱动能力。GPIO工作模式是否是I2C模式。GPIO是否有内部上拉电阻。GPIO默认电平状态。从2看,如下情况NACK是正常的。

I2C写

主机向从机发送数据时,比较后一个B数据时,从机可能应答也可能非应答,但不怎样主机都可以产生停止条件,如果主机在向从机发送数据(甚至包括从机地址在内)时检测到从机非应答,则会及时停止传输。

I2C读

主机从从机接收数据时,比较后一个B数据时,主机不回应该从机,即NACK。

二、I2C当I2C传输发生时,一般会有类似如下打印:

[48197718][]22-1::0,

1、GPIO以下几个部分。

GPIO电流驱动能力。GPIO工作模式是否是I2C模式。GPIO是否有内部上拉电阻。GPIO默认电平状态。2、排查顺序。

中首个发生的。有控制和控制的。。复现问题后,可以手动将相应外设去掉,确认是哪个外设将2拉住,再与供应商沟通,一下该IC状态,理清拉住2原因。

、2-2-也很好用,这个工具工具博主上次写过,参考以下文章:

??手把手教你使用2-。??

四、常见问题1、同一条2上所有的外设的2要不同(1)相同注册时冲突

[2059184][]22-1:F22402051(-16)[2059189][]22-1:C'051对应的错误码是-16。

-510--#EPERM1*O*#ENOENT2*N*#ESRCH3*N*#EINTR4*I*#EIO5*IO*#ENXIO6*N*#E2BIG7*A*#ENOEXEC8*E*#EBADF9*B*#ECHILD10*N*#EAGAIN11*T*#ENOMEM12*O*#EACCES13*P*#EFAULT14*B*#ENOTBLK15*B*#EBUSY16*D*可以执行2查看对应的2-1下是否已经有注册相同的的外设。

若返回-11,-EAGAIN。代表总线正忙,或法申请到总线锁。如果总线正忙,请等待,或查看是哪个一直在发送。如果法申请到总线锁,请查看是否在中断函数或原子上下文调用了2_。

(2)隐藏的2,即外设存在多个2或外设HW,导致2通讯异常。

示例:在2-1上注册了050地址,而虽然注册到060地址,但对050也能产生响应,拉低了SDA,从而。

方法:

软件上确认数据及对应的是否正确。硬件上逐一去掉外设,确认是哪个外设导致。2、示波器ACK的地方有毛刺在第9个产生ACK应答后,换成端来控制时产生的毛刺。此毛刺不会影响I2C总线读写时序,需处理。

即和控制总线切换间隔,没有人控制总线,带来的毛刺。

3、半高电平在外接上拉电阻的情况下,有内部下拉电阻,导致总线上有半高电平。

4、总线上电平拉不到地端发送数据时电平拉不到地,可以增大驱动电流或者上拉电阻。端拉不到地,可以咨询供应商看是否能增大端驱动电流或者上拉电阻。5、RK平台I2C来源于。

-_CNF-RK3399_2I2C通信失败,出现:“,:000,:1”

请检查硬件上拉是否给电。

调用2_返回值为-6

返回值为-6表示为NACK错误,即对方设备应答响应,这种情况一般为外设的问题,常见的有以下几种情况:

I2C地址错误,解决方法是测量I2C波形,确认是否I2C设备地址错误;I2C设备不处于正常工作状态,比如未给电,错误的上电时序等;时序不符合I2C设备所要求也会产生N信号。当外设对于读时序要求中间是信号不是信号的时候,该如何处理

这时需要调用两次2_,I2C拆分成两次,修改如下:

2__(2_*,8,8*,8_){2_[2];;8*;=(_,GFP_KERNEL);(!)-ENOMEM;[0]=-;[0]=-;[0]=1;[0]=;=2_(-,,1);(0){_(--,"2\");();;}[1]=-;[1]=-|I2C_M_RD;[1]=_;[1]=;=2_(-,[1],1);(0)_(--,"2\");(,,_);();;}相信以上的I2C方法已经能为大家解决大部分问题,如果还是没解决,一般是芯片问题或者原厂底层,可以找芯片原厂支持。
爱上大茂名,喜当大猫友,吃喝玩乐事,天天乐开怀!
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

QQ|客服:0668-2886677QQ:75281068|大茂微博|小黑屋|手机版|Archiver|大茂名网 ( 粤ICP备18149867号 )茂名市大茂科技有限公司 版权所有 

GMT+8, 2024-11-29 12:41 , Processed in 0.095057 second(s), 8 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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