接口协议分析——I2C

本文详细介绍了I2C协议的原理,包括数据传输方式、应答机制和读写操作流程。同时,深入探讨了Linux内核中的I2C驱动架构,包括I2C核心框架、总线驱动和设备驱动的组成及功能,解析了关键的数据结构和接口函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、I2C协议

    2条双向串行线,一条数据线SDA,一条时钟线SCL。

   SDA传输数据是大端传输(高位在前,低位在后),每次传输8bit,即一字节(工作速率有100Kbit/s、400Kbit/s和3.4Mbit/s三种;(一般使用小于100Kbit/s))。8bit数据包括 读写位 + 7个bit位 组成

   支持多主控(multimastering),任何时间点只能有一个主控

   连接到总线的接口数量由总线电容400pF的限制决定

2、I2C位传输

   开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
   结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
   slave应答:Master每发送完8bit数据后,即在第9个clock,slave发送ACK(SDA会被拉低),表示传输成功。
                     若没有ACK,SDA会被置高,这会引起Master发生RESTART或STOP流程

   应答:      在第9个clock,slave拉低SDA表示应答,然后检测SCL是否被拉低,发送应答数据

   注意如下:

   1、 I2c发送数据的前提是SCL信号与SDA信号均为高电平

   2、I2c发送数据的前提是SCL信号与SDA信号均为高电平

   3、总是由Master拉低/拉高SCL

   4、总是由slaver拉低/拉高SCL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值