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
    +关注

    关注

    27

    文章

    1313

    浏览量

    120441
  • 系统
    +关注

    关注

    1

    文章

    973

    浏览量

    20992
收藏 人收藏

    评论

    相关推荐

    I2C规范,I2C总线原理

    ................................................... 3518 F/S 模式I2C 总线系统的双向电平转换器
    发表于 04-09 18:34

    I2C 随机读 地址的问题

    I2C 随机读 操作过程 开始--发送器件地址(写)--ack--发送字节地址--ack--开始--发送器件地址(读)--ack--接受数据--no
    发表于 12-05 08:59

    求助,用GPIO模拟I2C收不到ACK

    本帖最后由 小飞侠123141 于 2017-7-10 17:01 编辑 求助,用GPIO模拟I2C收不到ACK测量的波形如下(第一次发帖不知道放上去没)因为是测试,所以只有 起始位 从机地址
    发表于 07-10 11:03

    EEAckPolling()后I2C时钟保持低电平

    你好。我是新的图片,我希望你们可以给我和一个有用的建议。我用PIC24FV32 KA301 I2C外设编辑寄存器POE PSE TPS23 84.i某处(?)下载了由Microchip制作的这个
    发表于 09-07 15:08

    I2C驱动程序与DRV I2C BUFFER EVENT ERROR协调挂起

    嗨,我已经产生了I2C驱动程序和谐。我需要在EEPROM中连续地在5个不同的位置写入数据。但是我的代码挂在DRVIII2CYBuffRyEngEngError事件中。如果
    发表于 10-22 14:58

    I2C从器件不等待ACK

    嗨,我正在用一个PIC32 MZ2048 EFM100进行I2C从机处理,我注意到在主读操作期间的一些错误。我发现,当问题发生时,从中断发生在第八个SCL时钟(TBF为空)之后,而不是第九个时钟
    发表于 11-19 10:17

    PIC18F25K42 i2c从器件识别地址但不会发送ACK

    以MCC生成的I2C从配置为起点,也是ISR(随着修改次数的增加)!读取和写入奴隶产生相同的结果:地址被复制到ADB0,ADRIF被设置。但是从来没有ACK:SDA在地址字节之后仍然很高。查看
    发表于 11-28 16:45

    I2C始终报告忙

    的情况下工作在I2C链接上,但是当我使用STM8作为从属时它失败了。时钟和数据线在示波器上看起来不错,漂亮和正方形。我比较了32-32和32-8的信号,在32-8中'ACK'脉冲保持高电平而不是拉低
    发表于 12-18 16:29

    adpd142的I2C通讯没有ACK进行回应

    这是adpd142驱动,采用了模拟I2C进行通讯,I2C的传输速率为80K,ADPD142供电为1.8V和5V电压正常,并且I2C接口通过UM3212,将I2C的1.8V变为3.3V与
    发表于 12-28 09:56

    到底什么是I2C

    )。TI的用于构建I2C树状图的产品组合可以分为三个功能,如图1所示:缓冲转换器、I / O扩展器和I2C开关。 图1:具有各种I2C功能设备的电
    发表于 07-23 04:45

    I2C总线中的ACK只能下拉到1.5V的原因?

    我的项目用到了I2C总线,开始用F28069自带的模块工作在中断方式和轮询方式,结果2者都不能出数据,无奈我用GPIO仿真I2C,在示波器里发现,传感器ACK响应了,但是
    发表于 05-13 08:59

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

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

    I2c协议和时序的相关资料推荐

    文章目录I2c协议和时序I2c介绍I2c硬件连接I2c总线的信号I2c总线写时序I2c总线读时序
    发表于 02-10 06:51

    STM32 I2C Hal驱动问题怎么解决?

    在 HAL_I2C_Mem_Read 中观察到 STM32 I2C Hal 驱动程序中存在问题,但其他读取命令中可能存在相同问题。我观察到有时 I2C 主机无法确认并发送停止条件的问题,之后 SDA
    发表于 12-30 06:06

    ESP32C3 I2C no ack无应答怎么解决?

    the ack is successfully receive.I have change the pin of i2c, but it does not work!the board
    发表于 03-07 08:45