0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

I2C子系统ACK error

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-22 14:39 次阅读

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

图片

1、检查 device 是否存在,i2c bus number 和 device address 是否正确。示例如下:i2c number 为6,addr 为 0x28:

[31.092951][xxx]i2c i2c-6:addr:0x28,ACK error

2、检查 device 是否已经上电使能,以及正确的 init

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

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

5、GPIO check 以下几个部分

GPIO 电流驱动能力

GPIO 工作模式是否是 I2C 模式

GPIO 是否有内部上拉电阻

GPIO 默认电平状态

从 i2c spec 看,如下情况 NACK

I2C 写

图片

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

I2C 读

图片

主机从从机接收数据时,最后一个 Byte 数据时,主机不回应该从机,即 NACK.

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1415

    浏览量

    121740
  • 系统
    +关注

    关注

    1

    文章

    990

    浏览量

    21144
收藏 人收藏

    评论

    相关推荐

    Linux内核中I2C系统的设计思路

    [ 导读] 本文通过阅读内核代码,来梳理一下I2C子系统的整体视图。在开发I2C设备驱动程序时,往往缺乏对于系统整体的认识,没有一个清晰的思路。所以从高层级来分析一下
    发表于 09-06 09:40 320次阅读
    Linux内核中<b class='flag-5'>I2C</b><b class='flag-5'>系统</b>的设计思路

    linux I2C子系统的相关资料分享

    文章目录linux I2C子系统框架在设备树中添加从设备信息,mpu5060I2C driver 程序的编写mpu6050 I2C程序具体实现linux
    发表于 02-10 06:06

    i2c总线ppt(I2C总线器件应用)

    I2C总线器件应用第一节 I2C总线器件应用概述I2C总线工作原理I2C总线系统结构I2C总线
    发表于 08-13 17:34 0次下载

    I2C Guid I2C指南

    I2C Guid  I2C指南 The I2C bus is used in a wide rangeof applications because it is simpleand
    发表于 04-23 13:55 36次下载

    i2c

    单片机i2c总线操作;单片机i2c总线操作;单片机i2c总线操作;
    发表于 05-17 11:09 35次下载

    I2C总线应用系统设计运用

    I2C总线应用系统设计运用
    发表于 09-22 11:44 10次下载
    <b class='flag-5'>I2C</b>总线应用<b class='flag-5'>系统</b>设计运用

    I2C系列的合集,可以系统学习I2C协议

    这篇文章给大家带来了I2C系列的合集,可以系统学习I2C协议。大家赶紧看看吧! 1、I2C总线:何时使用I2C缓冲器 本文讨论了使用
    的头像 发表于 09-23 15:28 2940次阅读

    Linux内核中I2C子系统的整体视图

    本文通过阅读内核代码,来梳理一下I2C子系统的整体视图。在开发I2C设备驱动程序时,往往缺乏对于系统整体的认识,没有一个清晰的思路。所以从高层级来分析一下
    的头像 发表于 12-31 10:40 2036次阅读
    Linux内核中<b class='flag-5'>I2C</b><b class='flag-5'>子系统</b>的整体视图

    linux I2C子系统(及相关程序设计MPU6050)

    文章目录linux I2C子系统框架在设备树中添加从设备信息,mpu5060I2C driver 程序的编写mpu6050 I2C程序具体实现linux
    发表于 12-06 13:36 9次下载
    linux <b class='flag-5'>I2C</b><b class='flag-5'>子系统</b>(及相关程序设计MPU6050)

    嵌入式内核及驱动开发-09IIC子系统框架使用(I2C协议和时序,I2C驱动框架,I2C从设备驱动开发,MPU6050硬件连接

    文章目录I2c协议和时序I2c介绍I2c硬件连接I2c总线的信号I2c总线写时序I2c总线读时序
    发表于 12-06 14:06 17次下载
    嵌入式内核及驱动开发-09IIC<b class='flag-5'>子系统</b>框架使用(<b class='flag-5'>I2C</b>协议和时序,<b class='flag-5'>I2C</b>驱动框架,<b class='flag-5'>I2C</b>从设备驱动开发,MPU6050硬件连接

    I2C接口配置ES7243录音芯片,MCU(STM32)收不到I2C ACK的问题

    I2C接口配置ES7243录音芯片,MCU(STM32)收不到I2C ACK的问题
    发表于 12-08 16:36 10次下载
    <b class='flag-5'>I2C</b>接口配置ES7243录音芯片,MCU(STM32)收不到<b class='flag-5'>I2C</b> <b class='flag-5'>ACK</b>的问题

    硬件I2C与模拟I2C

    硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率要远高于软件模拟的I2C;一般也较为稳定,但
    发表于 12-28 19:14 78次下载
    硬件<b class='flag-5'>I2C</b>与模拟<b class='flag-5'>I2C</b>

    I2C子系统debug的常见问题

    常见问题 1、同一条 i2c bus 上所有的外设的 i2c addr 要不同 1)相同 address 注册时冲突 [ 2.059184 ][xxx]i2c i2c- 1 :Fail
    的头像 发表于 07-22 14:52 676次阅读

    I2C子系统SW Architecture

    I2C SW Architecture 【driver 驱动层】由普通驱动工程师负责,【i2c 核心层】由 Linux 提供,【i2c 核心层】以下由芯片原厂负责。 I2C
    的头像 发表于 07-22 16:01 655次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>子系统</b>SW Architecture

    I2C子系统几个主要的结构体

    I2C Data Structure 我们要搞懂一个 Linux 子系统,必须研究它的数据结构,搞懂每个结构体存储了什么东西,才能梳理清楚该子系统的架构。 I2C
    的头像 发表于 07-22 16:04 596次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>子系统</b>几个主要的结构体