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

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

3天内不再提示

I2C基本的传输方式知识整理

Q4MP_gh_c472c21 来源:未知 作者:李倩 2018-05-25 15:09 次阅读

I2C是inter-integrated circuit的缩写,又名为TWI,只需要用两条物理线进行传输,分别命名为SDA和SCL,用于传输serial data和serial clock。I2C工作时分为主从工作模式,而在同总线上可以存在多个主机。每一个连接到总线的器件都可以通过唯一的地址与总线连接,主机控制主机为发送器模式或是接收器模式。多个主机控制时可以通过冲突检测和仲裁防止数据被破坏。I2C总线有几种不同速率的工作模式,标准模式的速率为100kbps,快速模式下速率为400kbps,在高速模式下速率可达到3.4Mbps。整理下I2C基本的传输方式。

数据发送过程

发送从起始到结束为一次完整发送过程,如图所示一次完整的发送过程,起始后先发送地址信息,R/W表示写入或是读取数据,如果一次过程中,需要切换读写操作时,需要重新发送start。SDA线上的每个字节必须为8位,每次传输可以发送的字节数量不受限制,而每个字节后必须跟一个响应位。从机在处理其他事件而不能接收数据时,可以通过控制SCL保持低电平来等待数据接收,等到准备好继续传输时,释放SCL。在总线上每个模块具有唯一的地址,当然亦可以设计广播地址,通知所有其他模块。

启动和停止

当I2C不工作时,SDA和SCL一样都处于高位HIGH,SCL保持为HIGH,SDA由HIGH变LOW时表示开始传输,而SCL保持HIGH,SDA由LOW变为HIGH时表示停止传输。Sr和S完全相同,差别只是第一次Start之后没有进行stop,再次启动Start。

数据产生

SDA上传送的数据必须在时钟高电平时保持稳定,而数据的改变只有在SCL为低时进行,而SCL由主机控制产生。

冲突仲裁

主机在总线空闲时候启动传输。而当总线上有多个主机时,可能产生同时启动的冲突,因此需要仲裁。仲裁方式是,当SCL线是高电平时,仲裁在SDA线发生 这样在其他主机发送低电平时发送高电平的主机将断开它的数据输出级,因为总线上的电平与它自己的电平不相同,总线上的电平总是在一个输出为低时就为低。仲裁可以持续多位,当丢失仲裁的主机同时具有从机功能时,需要立即切换从机状态。

从机挂起数据发送示例

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

    关注

    14

    文章

    2213

    浏览量

    70619
  • 总线
    +关注

    关注

    10

    文章

    2695

    浏览量

    87156
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1343

    浏览量

    120729

原文标题:带你理解I2C总线数据传输方式

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    i2c总线协议pdf

    I2C 总线规范目录1 序言
    发表于 08-13 17:16

    I2C规范,I2C总线原理

    I2C规范,I2C总线原理1 序言
    发表于 04-09 18:34

    浅谈I2C总线

    从该总线上取下,而不会影响其他设备。一些生产商比如 Microchip 公司、Philips 公司、Intel 公司等生产的小型微处理器都内置了 I2C 接口。I2C 总线的数据传输率比 SPI 总线
    发表于 11-30 11:50

    i2c通信协议

    1.1 i2c通信协议通信协议:用来实现数据传输i2c物理总线:SCL(时钟线) SDA(数据线)i2c通信协议是 串行、同步、半双工 的通信方式
    发表于 03-06 16:15

    i2c总线怎么传输

    你好,我有2个pic微芯片,在一张图片中我使用了3个变量:“variable1”,“variable2”和“variable3”。我想把它们通过i2c总线传输到我的另一张图片上。有谁能
    发表于 03-25 09:08

    I2C总线协议的基础知识

    。需要注意的是I2C的通讯方式为半双工,因为只有一条数据线,某一时刻只可能单向通讯。这也说明了I2C不适合大数据量的传输应用。对于主机、从机的区分很简单,发布主要命令的就是主机,接受命
    发表于 08-25 11:16

    HarmonyOS 驱动平台---I2C

    条件。数据传输以字节为单位,高位在前,逐个bit进行传输I2C总线上的每一个设备都可以作为主设备或者从设备,而且每一个设备都会对应一个唯一的地址,当主设备需要和某一个从设备通信时,通过广播的
    发表于 09-16 18:54

    初始化I2C

    目录1、初始化I2C2、启动传输3、发送数据流程4、接收数据5、Code6、注意:对于有嵌入式开发经历的人来说,I2C是使用场合较多的一种通讯方式,比如MPU6050、AT24
    发表于 08-11 09:19

    I2C总线传输协议的知识点,总结的太棒了

    I2C总线传输协议的知识点,总结的太棒了
    发表于 11-04 07:14

    I2C怎么使用

    硬件I2C(中断方式)以STC8F2K08S2单片机为例一、I2C相关的寄存器STC8系列单片机硬件I2C使用教程(一)二、
    发表于 12-02 08:16

    I2C物理层接口的相关资料分享

    系列索引:《嵌入式系统原理与应用》 | 嵌入式系统 重点知识梳理目录I2C的物理层接口(电平特性)及互联I2C、SPI及UART三者之间的对比I2C中的主从机、收发器的概念
    发表于 12-20 07:38

    I2C协议简介

    中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。(硬件)I2C 通讯设备之间的常用连接方式物理层特点:I2C的物理层就是一个总线,多个设备共用的数据线和时钟线。在一个
    发表于 01-12 07:25

    AT32 I2C程序使用讲解

    -- eeprom 使用示例关于I2C传输数据的流程,官方已经封装了一个应用层,用户无需再关心数据传输流程,只需要调用相关接口初始化I2C,然后再调用相关接口
    发表于 02-09 22:06

    I2C总线支持几种传输模式

    I2C 总线提供了一种串行通信方式,用在 MCU 与 EEPROM,LCD模块,温度传感器等等之间控制。I2C 用两条线 (数据线SDA 和时钟线 SCL) 在设备间传输数据。
    发表于 02-11 07:05

    如何使用imx6ull实现裸机开发I2C读取MPU6050,并使用DMA方式传输数据?

    我最近想使用imx6ull实现裸机开发I2C读取MPU6050,并使用DMA方式传输数据。我在官方的I2C寄存器手册里并没有看到关于DMA使能相关的寄存器,但是我在内核中发现了一些与
    发表于 05-17 06:04