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

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

3天内不再提示

I2C通信介绍及软测方法

硬件设计解析 来源:爱搞研究的阿灿 作者:爱搞研究的阿灿 2023-04-17 16:35 次阅读

一、I2C总线的介绍

  I2C是一种非常常见的通信协议,是philips公司提出的,由数据线SDA和时钟线SCL两条双向信号线组成,CPU利用串行时钟线发出时钟信号,利用串行数据线发送或者接受数据。SDA线传输数据是大端传输(字节高位先传),每次传输8bit,即1字节。支持多主控,任何时间点只能有一个主控。每个连接到总线的设备都有一个独立的地址addr,共7个bit,主机正是利用该地址对设备进行访问(这是I2C和SPI最大的不同点之一,I2C对从设备进行操作需要知道从设备地址,然后进行寻址;而SPI则不需要通过设备地址寻址)。
  当总线空闲的时候,SDA和SCL都是高电平。在数据传输过程中,SCL为高电平的时候,SDA线必须保持稳定,SDA上传输1个bit数据;当SCL为低电平的时候,SDA线才可以改变电平。简言之,只有当SCL为高电平时,SDA的数据才有意义。

5ad07028-da9f-11ed-a826-dac502259ad0.png


  开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。起始信号由主控制器产生。
  结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。结束信号也只能由主控制器产生。
  (记忆窍门:因为总线空闲时两根线都是高电平,所以开始信号是由高电平变为低电平;而结束信号是要回到总线空闲的状态,所以是从低电平变为高电平)

5add7f98-da9f-11ed-a826-dac502259ad0.png


  发送到SDA线上的每个字节必须是8位,每次传输可以发送的字节数量不受限制,每个字节后必须跟一个ACK应答位,数据从最高有效位(MSB)开始传输。
  主机每发送完8bit数据后等待从机ACK。即在第9个clock,若从机发回ACK,SDA会被拉低。若没有ACK,SDA会被置高,这会引起主控发生RESTART或STOP流程。根据近期实际开发经验,主机在第一次寻址失败后,会再次寻址,如果两次都失败,那么SDA就会把电平拉高(同时SCL处于高电平状态),结束通信。

5ae290fa-da9f-11ed-a826-dac502259ad0.png


  I2C总线上的所有数据都是以8位字节传送的,发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。应答信号为低电平时,规定为有效应答位(ACK简称应答位),表示接收器已经成功地接收了该字节;应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。(无论是发送地址还是数据,其后都紧跟着一个ACK/NACK。ACK和NACK由slave提供。)
  如果从机要在完成一些其他功能之后才能接收或发送下一个完整的数据字节,则可以使时钟线SCL 保持低电平,从而迫使主机进入等待状态。当从机准备好接收下一个数据字节,并且释放时钟线SCL 后,数据传输继续。
  当主控器接收数据时,在最后一个数据字节,必须发送一个非应答信号(NACK),使受控器释放数据线,以便主控器产生一个停止信号来终止总线的数据传送。
  在起始信号结束后,发送一个7bit的从设备地址,然后紧跟着读写标志位(“0”表示写,“1”表示读)。如果从设备有回应,就可以继续读写数据,具体读写哪个寄存器也要有所说明。

5ae83d7a-da9f-11ed-a826-dac502259ad0.png

二、逻辑分析仪抓取总线波形

  在实际工作中可以使用逻辑分析仪抓取I2C总线的波形进行排故。

5b0102a6-da9f-11ed-a826-dac502259ad0.png


  由于我手上只有杜邦线,缺少逻辑分析仪专用的数据线(一头带夹子,如下图所示),没有办法在连接外设的同时抓取波形,所以此处只能简单抓取主设寻址外设的波形。
  抓取波形使用的软件是USBee Suite,如下图所示:

5b29e13a-da9f-11ed-a826-dac502259ad0.png


5b3368fe-da9f-11ed-a826-dac502259ad0.png


  快速设置信号4,5为I2C总线,这种设置方法也决定了硬件上的连接。

5b47ec84-da9f-11ed-a826-dac502259ad0.png


  设置采样率和样本数如图所示:

5b5ecec2-da9f-11ed-a826-dac502259ad0.png


  设置下降沿触发(倒数第3个信号通道,软件上标注的SDA和SCL并不是实际上的SDA和SCL,这是一个软件BUG,根据波形来判断,有规律的进行跳变的就是SCL, 另外一个是SDA.):

5b74d7d0-da9f-11ed-a826-dac502259ad0.png


  使用单次触发方式捕获波形:

5b991de8-da9f-11ed-a826-dac502259ad0.png


  实际捕获到的波形如下图所示:

5bb2197e-da9f-11ed-a826-dac502259ad0.png


5bc2a190-da9f-11ed-a826-dac502259ad0.png


  根据波形可以看出,GM5主设两次寻址地址为0X22的从设备,但是没有收到从设备的回应(NACK),最终主设停止了本次通信。


原文标题:二、逻辑分析仪抓取总线波形

文章出处:【微信公众号:爱搞研究的阿灿】欢迎添加关注!文章转载请注明出处。

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

    关注

    4

    文章

    728

    浏览量

    29548
  • I2C总线
    +关注

    关注

    8

    文章

    357

    浏览量

    60408
  • 逻辑分析仪
    +关注

    关注

    3

    文章

    200

    浏览量

    22914
  • I2C通信
    +关注

    关注

    0

    文章

    22

    浏览量

    8756
收藏 人收藏

    评论

    相关推荐

    3分钟理解通信协议之I2C总线 #通信协议

    通信协议I2CI2C总线总线/接口技术
    硬声课堂
    发布于 :2021年10月18日 10:39:12

    I2C串行通信特点简介

    I2C串行通信特点简介Philips公司推出的I2C、硬件协议十分巧妙,在单主方式的I2C总线系统中,总线上只有一个单片机,其余都是带
    发表于 07-15 14:48

    I2C通信

    I2C通信怎么利用串口来检测呢。(比如向串口发送一些汉字等数据)
    发表于 04-22 15:18

    I2C通信问题

    //定义从机读控制字节typedef unsigned char uint8;uint8 date;***it SDA=P2^0;//定义I2C通信的数据线***it SCL=P2^1
    发表于 10-05 17:35

    I2C通信协议介绍

    的串行通信协议主要有EIA-232、EIA-232、EIA-485、USB、IEEE 1394几种: 以下着重介绍I2C总线:一、I2C总线概述:I
    发表于 07-19 02:36

    i2c通信协议

    1.1 i2c通信协议通信协议:用来实现数据传输。i2c物理总线:SCL(时钟线) SDA(数据线)i2c
    发表于 03-06 16:15

    I2C不迷茫--系列文章讲透I2C

    2 C是我个人最喜欢的。尽管I2 C的吞吐率可能与其他串行通信方法不一样,但它能够通过两条线控
    发表于 09-22 09:31

    什么是软件I2C和硬件I2C

    学习I2C总线通信协议,完成基于I2C硬件协议的AHT20温湿度传感器的数据采集,并将采集的温度-湿度值通过串口输出。具体任务:1)解释什么是“软件I2C”和“硬件
    发表于 08-23 06:19

    AT32 I2C 2.0版新库使用分享(一)

    的demo,很容易上手,因为我要用到I2C,所以仔细的研究了一下,特此给大家分享一下库函数使用方法void i2c_reset(i2c_type *
    发表于 11-20 11:11

    STM32硬件I2C重新编制I2C通信流程

    怎么用软件模拟I2C?怎样去编制I2C通信流程?
    发表于 12-14 07:09

    I2C总线简单介绍

    1.I2C简单介绍I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代
    发表于 01-14 07:10

    I2C协议介绍

    多个寄存器I2C 连续读多个寄存器I2C数据仲裁介绍I2C 调查标准I2C协议介绍
    发表于 01-20 08:04

    I2C通信协议的原理是什么

    I2C通信协议I2C通信原理I2C通信原理:I2C
    发表于 02-17 07:16

    I2C通信详解

    关于蓝桥杯嵌入式板子的I2C,如果你以前没有接触过I2C通信。重点:懂得通过电路图判断出I2C设备的地址会看I2C读写时序图。底层驱动,考试
    发表于 02-28 11:24

    I2C非阻塞式通信相关资料分享

    一种I2C非阻塞式通信方法
    发表于 12-09 06:07