i2c时序图_I2C协议详解

I2C总线协议是一种同步通信协议,支持多个slave设备和mul-master系统,只需两根线进行数据交换。它允许在SCL上升沿时采样数据,每个数据帧后需接收ACK/NACK。I2C协议包括启动信号、地址帧、数据帧、应答信号、停止信号等关键时序。时钟同步和仲裁机制确保多个master设备间的数据传输。文中还比较了I2C与串口、SPI的区别,并提供了I2C波形图和源码示例。
摘要由CSDN通过智能技术生成

I2C通信协议

697434ce07163c001237bbe517b88021.png

I2C通信协议的基础

简介

I2C「Inter-integrated Circuit」总线支持设备之间的短距离通信,用于处理器和一些外围设备之间的接口,它只需要两根信号线来完成信息交换。I2C最早是飞利浦在1982年开发设计。

652172a6b1cdb8a77e4d32165d10f2cb.png

I2C是同步传输信号,关于同步和异步这个经常在面试的时候会考到,同步和异步的核心的,我把消息发出去,我要关心你有没有收到,你收到了之后,我才会发下一条消息。异步就是,我发消息给你,我不管你收到消息没有,我都直接发下一条消息。所以SPI和I2C是同步通讯,UART是异步通讯。

I2C

I2C最少只需要两根线,和异步串口类似,**但是,I2C可以支持多个slave设备。**和SPI不同的是,I2C可以支持mul-master系统,允许有多个master并且每个master都可以与所有的slaves通信「master之间不可通过I2C通信,并且每个master只能轮流使用I2C总线」。master是指启动数据传输的设备并在总线上生成时钟信号以驱动该传输,而被寻址的设备都作为slaves。

c7a452749e57872b1b61b12919cbfa48.png

I2C的数据传输速率位于串口和SPI之间,大部分I2C设备支持100KHz和400KHz模式。使用I2C传输数据会有一些额外消耗,每发送8bits数据,就需要额外1bit的元数据「ACK或NACK」,这个也是I2C通讯的核心,应答信号。I2C支持双向数据交换,由于仅有一根数据线,故通信是半双工的。

硬件复杂度也位于串口和SPI之间,而软件实现可以相当简单。

I2C协议

I2C协议把传输的消息分为两种类型的帧:一个地址帧 「用于master指明消息发往哪个slave」 一个或多个数据帧 「 在SDA线上传输的数据帧,每

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值