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

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

3天内不再提示

别被IIC总线给坑了

lilihe92 来源:最后一个bug 2023-10-11 16:03 次阅读

1

I2C通信理解

很多朋友在进行IIC通信协议开发的时候比较迷茫,一方面是可能长时间没怎么用了,相关的知识有所忘却,也算正常,不过如果重新围着通信时序图看来看去,那还是比较麻烦的,比如IIC的起始电平条件、停止电平条件、以及数据保持即更新条件等等:

56c76720-680c-11ee-939d-92fbcf53809c.png

虽然每个器件对IIC通信的波形要求不是太相同,但IIC的通信时序容忍度非常高,基本上常规范围的通信参数和驱动都是通用的。

IIC数据的传输过程,在SCL通信同步时钟节拍的控制下,主机发送数据主动使得总线电平发生变化,供从机检测接收,而当从机接收到数据以后接着主动的拉低SDA来作为应答信号通知主机,如果没有拉低则表示非应答。

之前很多朋友都不太理解IIC的主机是怎么检测到从机应答的,似乎从SDA线上的波形看都好像是主机发送出来的,所以在进行通信波形解析的时候一定要注意区分信号到底是主机还是从机在处理。

2

IIC数据帧

对于通信的应用,重要的并不是所谓的电平变化,当然也不是说不重要,毕竟有时候通信不稳定还得从原始波形进行分析,但是大部分应用开发人员更多的是要了解如何传递数据帧,掌握好数据帧的传递过程和方式。

不同厂商的数据帧稍微有所差异,比如7位地址、8位地址和10位地址,但总体上都是大同小异,大家可以参考对应的芯片手册进行学习,这里以最常用的7地址位跟大家介绍一下:

IIC是一种主从通信方式,通信发起者为主机,主要熟悉三种数据帧传递过程:

1、单次或连续向从机写数据

56d689c6-680c-11ee-939d-92fbcf53809c.png

注意如上仅仅只是数据帧传递,类似于我们平时的串口通信,而至于通信数据域内的数据含义,是由通信双方共同约定即可,也就是所谓的应用层协议的制定了。

2、单次或连续向从机读数据

56e4649c-680c-11ee-939d-92fbcf53809c.png

读数据的过程主机发送的读写标志位发生变化,在数据部分从机主动控制总线发送数据给主机,然后主机来进行应答,刚好与IIC写数据相反。

3、通讯过程读写切换

56ed0c5a-680c-11ee-939d-92fbcf53809c.png

在通信过程中需要进行读写切换时不需要发送停止,而是应答以后重新发一次起始和从机地址及读写状态,接着进行下面的数据处理即可。

3

IIC通信别忘了上拉

对于IIC总线不要忘记通信IO上拉,上拉主要是保证信号线在空闲的状态保持高电平,也就是逻辑1,。

同时IIC总线采用的是一种开漏输出的架构,通信线上的器件可以将线路的电平拉低,即逻辑0;但是无法主动将线路拉高到逻辑1,所以上拉必不可少。

所以为了确保通信线上能够提供足够的驱动能力,同时也不能导致信号失真,上拉电阻阻值的选择尤为重要。

4

上拉电阻怎么选?

上拉电阻该怎么选呢?那影响因素可就多了~

1、通信的总线长度

通常通信线路越长,电阻要稍微大一点。

2、通信的总线材质

如果总线提供的容性负载较高,要适当减小电阻,以加快信号的变化时间。

3、通信的速率

适当降低上拉电阻,提高驱动电流,加快电平反应速度。

具体情况就具体分析和折中去选择上拉电阻了,最后就是注意电平上的匹配,避免损坏芯片~






审核编辑:刘清

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

    关注

    5

    文章

    359

    浏览量

    30565
  • IIC总线
    +关注

    关注

    1

    文章

    66

    浏览量

    20285
  • SDA
    SDA
    +关注

    关注

    0

    文章

    124

    浏览量

    28112
  • IIC通信
    +关注

    关注

    0

    文章

    19

    浏览量

    3003

原文标题:别被IIC总线给坑了~

文章出处:【微信号:最后一个bug,微信公众号:最后一个bug】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    IIC总线的FPGA实现原理及过程

    IIC总线的FPGA实现原理及过程 IIC总线概述 IIC开发于1982年,当时是为了电视机内
    的头像 发表于 05-15 02:35 2191次阅读
    <b class='flag-5'>IIC</b><b class='flag-5'>总线</b>的FPGA实现原理及过程

    一文详解IIC总线

    IIC(Inter-Integrated Circuit)集成电路总线,它是一种两线式串行通信总线,又叫I2C,使用多主从架构,由飞利浦公司在1980年推出的。多用于主控制器和从器件间的主从通信,在
    发表于 06-07 15:38 9655次阅读
    一文详解<b class='flag-5'>IIC</b><b class='flag-5'>总线</b>

    介绍IIC总线仲裁

    IIC总线
    电子电器
    发布于 :2023年02月07日 11:24:43

    IIC总线概述

    )实现双向数据传输(IIC通信属于同步、半双工串行通信)。IIC总线遵从主/从结构,可以实现一个主器件和多个从器件之间的通信,并且从器件永远不会主动主器件发送数据。器件发送数据到
    发表于 08-10 07:11

    什么是IIC总线

    - 什么是IIC总线IIC总线是同步通信的一种特殊形式,具有接线口少、控制简单、器件封装形式小、通信速率高等特点。在主从通信中,可以有多个IIC
    发表于 01-24 08:27

    IIC总线接口学习

    在多主设备IIC 总线模式下,多个S3C2440A 微处理器可以从从属设备接收或发送串行数据。主设备S3C2440A 可以初始化和终止一个基于IIC 总线的数据传输。在S3C2440A
    发表于 04-27 15:31 61次下载
    <b class='flag-5'>IIC</b><b class='flag-5'>总线</b>接口学习

    LESSON8_IIC总线工作原理

    LESSON8_IIC总线协议 LESSON8_IIC总线协议
    发表于 02-18 18:23 0次下载

    iic总线通信程序

    iic总线通信,要的人速度下载看看哦。
    发表于 03-21 13:50 30次下载

    一文解读IIC总线的FPGA实现原理及过程

    本文首先介绍IIC总线概念和IIC总线硬件结构,其次介绍
    发表于 05-31 10:56 6688次阅读
    一文解读<b class='flag-5'>IIC</b><b class='flag-5'>总线</b>的FPGA实现原理及过程

    MCU_IIC总线

    MCU_IIC总线
    发表于 11-16 09:36 20次下载
    MCU_<b class='flag-5'>IIC</b><b class='flag-5'>总线</b>

    【51单片机】IIC总线

    什么是IIC 总线IIC是Inter IC Bus的缩写,是由PHLIPS提出的一种串行总线,具备多主机系统所需要的包括总线裁决和高低速器
    发表于 11-23 16:20 14次下载
    【51单片机】<b class='flag-5'>IIC</b><b class='flag-5'>总线</b>

    IIC通信总线寻址

    IIC的使用IIC总线简介IIC通信时序IIC总线寻址IIC
    发表于 12-04 16:06 14次下载
    <b class='flag-5'>IIC</b>通信<b class='flag-5'>总线</b>寻址

    IIC总线学习笔记

    IIC总线学习笔记(2020.11.8)文章目录*IIC总线学习笔记(2020.11.8)*一、I^2^C总线背景二、I^2^C
    发表于 01-17 13:33 6次下载
    <b class='flag-5'>IIC</b><b class='flag-5'>总线</b>学习笔记

    IIC总线规范(中文版)免费下载

    IIC总线规范,详细介绍IIC总线传输、仲裁、寻址、高低速模式等。
    发表于 02-22 14:35 0次下载

    GD32 MCU碰到IIC总线卡死怎么办?

    大家在使用MCU IIC通信时,若碰到设备复位或者总线干扰等情况,可能会导致IIC总线卡死,表现上总线上SDA或者SCL其中一根线为低电平,
    的头像 发表于 02-24 09:46 3693次阅读
    GD32 MCU碰到<b class='flag-5'>IIC</b><b class='flag-5'>总线</b>卡死怎么办?