|
马上注册登陆,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?用户注册
x
在应该收到ACK信号的时候没有收到ACK信号,2就会产生一个ACK的中断,告诉2发生了ACK。通常情况是本身的问题。icp备案查询的相关资讯可以到我们网站了解一下,从专业角度出发为您解答相关问题,给您优质的服务!
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方法已经能为大家解决大部分问题,如果还是没解决,一般是芯片问题或者原厂底层,可以找芯片原厂支持。 |
|