IIC的通信波形分析

2023-05-16

关于IIC,不解释它的历史了,有兴趣自己去百度看看,本文的图片是由周立功的LAB6021逻辑分析仪抓取的,通信的波形是抓取的cypress的psoc 4000芯片得到的。

最近项目需要用到触摸IC,使用了一片触摸cypress的触摸IC,这个触摸IC的内核挺强大的,主要是可编程,自己配置引脚功能,并通过模拟的分析套件直接在PC端直接显示波形图,通过直观的观察自定义触摸模块的灵敏度,芯片在项目中作为IIC的从设备。芯片的触摸功能我会在另一篇博文说明,本文主要说说怎么查看IIC的波形图。

IIC总线可以接多个设备,协议并不约束设备的主从关系,但是,在同一时间只能有一个主设备,每个设备都有一个设备地址,而cypress的设备可以设置两个设备地址,_(:зゝ∠)_,虽然我不知道要两个设备地址干嘛。

       上图是一个完整的IIC的一个读操作,从设备地址为0xB4,读取的地址为0x2a,读取的值为0xA5.

协议的结构如下图


然后结合图片一点一点的分析IIC的时序(读操作)

1、起始信号


开始的时候,SDA和SCL都空闲,被上拉电阻拉为高电平,SDA被主设备拉低,持续需要大于0.6us(图中时间持续了15us),然后SCL被拉低,一个起始信号完成。

2、然后是发送第一个数据,从设备地址


     从图中可以看到,从设备地址为0xb4,数据操作为写操作,注意一点,IIC的地址位为7位,最后一个脉冲是读写的操作方式,根据通信协议,需要对这个设备进行操作第一步需要唤醒从设备,操作方式为写操作。关于协议解析,IIC协议是电平触发的,只有在高电平的时候数据有效,低电平无效,所以直接将图中的SCL的高电平下的SDA的数据记下来,按照8位读取10110100,翻译成16进制就是0xb4,按照7位读取1011010,翻译成16进制就为0x5a,这只是翻译时候选取的位数不同,不是错误,切记,根据通信协议,后面还有一个地址,那是读操作,地址如果按照8位读取就变成了0xb5,有时候看别人的程序,写地址的时候第二个地址位比第一个多了1,那不是错误,是操作方式而已。╮(╯▽╰)╭,我在看别人的代码的时候就出过这样的笑话,甚是尴尬。最后一个脉冲完成的时候,主设备释放SDA控制权,如果总线正常,从设备存在,从设备将SDA拉低,作为应答,这时候,主设备将SCL 拉高,如果主设备检测到SDA为底时,说明应答成功,也可以说是通信握手。然后主设备继续接管SDA,进行下一个数据发送。

注意一点,数据传输时,scl为高电平的时候,sda不允许变化,只有在scl为低电平的时候

才允许sda变换电平;在scl为高电平的时候,sda电平变化意味该信号为起始或停止信号。

3、发送寄存器的基地址


第二个数据是需要读取的寄存器的基地址,当主设备接收到从设备的应答信号之后,发送第二个数据,在IIC通信协议中,这个数据是寄存器基地址,数据都是8位的,没有操作位,直接将SCL的8个脉冲翻译过来就好了,图中的数据为0x2A,说明需要操作的寄存器为0X2A。

4、发送一次起始位,再次发送一个从设备地址,以及真正的操作位


在发送完成基地址之后,释放SCL和SDA,然后再次发送一个起始位,发送完起始位之后发送从设备地址,关于从设备地址,请读者看看,如果将SCL的8个脉冲上的SDA直接读取,得到的是10110101,翻译过来就是0X85,参考第1点,IIC通信中,设备地址为7位,所以,直接将最后一位丢掉,得到1011010,翻译过来是0x5a,最后一位为读操作,最后一位为读操作,最后一位为读操作,然后释放SDA,等待从设备应答。

5、接收从设备的数据


从设备根据SCL的电平信号,在SCL为低电平时,发送数据,在SCL为高电平时,接收数据。8个数据发送完成后,从设备释放SDA控制,等待主设备应答,如果主设备任然需要读取数据,会发送一个应答信号,应答信号为SDA被主设备拉低,然后发送一个SCL的高脉冲,告知从设备需要继续读取数据,否则不应答,直接发送停止信号,结束通信。

6、停止信号


停止信号如图,在通信期间,主设备先将SDA、SCL拉低,持续0.6us,然后将SCL拉高,持续1.2us,将SDA拉高。这就是停止信号,通信停止。如果将SCL拉低变成一个脉冲那就是继续通信的意思。

关于写操作,额……_(:зゝ∠)_忘了抓波形图了。过几天再抓个波形图再写。
写于深圳 2017-4-1


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IIC的通信波形分析 的相关文章

  • 对IIC总线时序的一点理解以及ACK和NACK(NAK)

    参考自 xff1a http blog chinaunix net uid 16100003 id 3059814 html 关于IIC的响应问题 xff1a 对于每一个接收设备 xff08 从设备 xff0c slaver xff09 x
  • STM32基于IIC协议的OLED模块的使用

    前言 一 项目涉及的内容 项目简介 二 模块实操 1 IIC模块 1 1 IIC协议格式 1 2 开始信号与停止信号 1 3 写数据 1 3 1 硬件IIC代码编写 1 3 2 软件模拟IIC代码编写 2 OLED板块 前言 本篇文章对使用
  • IIC通讯详解笔记

    IIC概述 IIC总线是一种串行半双工两线总线 一根是双向的数据线SDA xff0c 另一根是时钟线SCL 所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上 xff0c 各设备的时钟线SCL接到总线的SCL上 硬件拓扑如下图所示
  • IIC通信协议

    IIC通信协议 一 什么是IIC通信协议 xff1f 二 IIC协议时序分析1 空闲状态2 起始信号和停止信号3 数据传输 xff08 1 xff09 写操作 字节写 xff08 2 xff09 写操作 页写 xff08 3 xff09 读
  • 0.96OLED 4针IIC STM32-标准库版本(附源码)

    0 96OLED 4针IIC STM32标准库版本 在前面已经介绍过 xff0c 这里就不多说了 xff0c 详情请见 xff1a 0 96OLED 4针IIC STM32HAL库版本 另外 xff0c 本人在代码中封装了一个OLED显示的
  • STM32 模拟IIC驱动MS5607气压传感器调试记录

    标题 STM32 模拟IIC驱动MS5607调试记录 因项目需求 xff0c 需使用MS5607的作为检测气压 xff0c 再此写下自己遇见的问题以及调试记录 硬件原理图如下 xff1a IIC接口总线使用了气压传感器 xff0c SHT3
  • STM32F1 TCA9548A 驱动多个IIC器件

    TCA9548A的用途就是IIC扩展 xff0c 每个TCA9548A可以扩展出8路IIC TCA9548A芯片带有地址选择引脚A0 A1 A2 xff0c 根据高低电平不同 xff0c 从MCU的一路IIC最多可以接入8个TCA9548A
  • IIC通信协议总结(详细说明完整过程)

    IIC协议简介 IIC xff08 inter integrated Circuit集成电路总线 总线支持设备之间的短距离通信 xff0c 用于处理器和一些外围设备之间的接口 xff0c 它需要两根信号线来完成信息交换 IIC的一个特殊工艺
  • IIC详细解答+ 面试 + 代码

    目录 IIC背景提炼部分 xff08 面试 xff09 xff08 详解 43 代码 xff09 协议部分IIC部分初始化 IIC 的 IO 口IIC 开始信号IIC发送一个字节IIC 读一个字节响应ACK和非响应NACKIIC 停止信号
  • iic片选PCA9548A芯片

    PCA9548A数据表 产品信息和支持 TI com iic片选深入 从上图中我们可以看到通过iic的iic 例如 iic0 扩展出8路iic来访问slave 例如8个口的光模块 那么里面的原理是什么呢 我们先来看PCA9548A 文档 需
  • IIC总线基础知识

    IIC总线基础知识 一 简介 IIC xff08 Inter Integrated Circuit xff09 是一个多主从的串行总线 xff0c 又叫I2C xff0c 是由飞利浦公司发明的通讯总线 xff0c 属于半双工同步传输类型总线
  • DHT12温湿度传感器IIC,I2C接口调试心得和代码说明

    来源 xff1a http www fuhome net bbs forum php mod 61 viewthread amp tid 61 2141 DHT11那个单总线的温湿度传感器用的很多了 xff0c aosong推出了DHT12
  • TI CC265x的IIC通讯读取IMU BMI08x数据

    SmartLink CC265x是TI公司出的无线MCU平台器件 最近玩了个小项目用TI的CC265x平板IIC接口通讯 xff0c 获取博世BMI08x陀螺仪 加速度计传感器的数据 本篇博客亦是对博客 树莓派IIC通讯获取BMI08x I
  • UART, IIC, SCI, SPI, 232, 485, 422, CAN, SDIO, GPIO, MODBUS, TCP/IP汇总简介

    UART IIC SCI SPI 232 485 422 CAN SDIO GPIO MODBUS TCP IP汇总简介 UART xff1a Universal Asynchronous Receiver Transmitter xff1
  • IIC的通信波形分析

    关于IIC xff0c 不解释它的历史了 xff0c 有兴趣自己去百度看看 xff0c 本文的图片是由周立功的LAB6021逻辑分析仪抓取的 xff0c 通信的波形是抓取的cypress的psoc 4000芯片得到的 最近项目需要用到触摸I
  • STM32标准库通用软件模拟IIC

    STM32标准库通用软件模拟IIC 继上次通用可移植的矩阵键盘之后 xff0c 便继续寻找着下一个能够拿来只需改改引脚就可以使用的通用方案 恰好最近在研究PCA9685 xff0c 这是一片能够产生最多十六路PWM信号的芯片 xff0c 通
  • I2C总线时序以及ACK和NACK(NAK),SCL被从机拉低?

    1 I2C协议详解及裸机程序分析 简书 通俗易懂 根据上图 我们首先设置IICCON 来设置时钟 时钟源是PCLK 是50MHZ 太快了我们需要设置这个分频系数 把时钟降低 降低到我们想要的SCL 然后我们要发出start信号 我们需要设置
  • 基于STM32 的IIC 模拟主机编写

    最近在学习STM32 的IIC IO 模拟主机方式 好像失败了 include myiic h include delay h MCU VERSION DATA 作者 other Function IIC
  • STM32 IIC通信干货!理论+实例

    I2C总线简介 I2C总线介绍 I2C Inter Integrated Circuit 总线 也称IIC或I2C 是由PHILIPS公司开发的两线式串行总线 用于连接微控制器及其外围设备 是微电子通信控制领域广泛采用的一种总线标准 它是同
  • I2C与SPI通信总线协议

    仅以寄存器地址为8Bit的器件为例 例如MPU6500 LSM6DS3 I2C通信协议 I2C 的要点是了解I2C通信帧的组成部分 START起始位 STOP停止位 ACK NACK信号 从机器件地址 从机寄存器地址 I2C读的时序比较繁琐

随机推荐

  • 在ros2 foxy安装镭神M10激光雷达

    前言 记录ros2 机器人开发历程 xff0c 全当做个笔记 xff0c 以后用到好查找 xff0c 也给后来者留下一些脚印 提示 xff1a 以下是本篇文章正文内容 xff0c 下面案例可供参考 一 环境 环境 xff1a ubuntu
  • Authentication认证和Authorization授权的作用

    认证 Authentication xff1a 你是谁 授权 Authorization xff1a 你有权限干什么 认证意味着确认自己的身份 xff0c 而授权意味着授予对系统的访问权限 简单来说 xff0c 认证是验证身份的过程 xff
  • 51单片机串口通信的原理及使用方法(附串口收发数据例程代码)

    温馨提示 xff1a 本篇文章详细介绍了串口的原理及使用方法 xff0c 涉及的内容较多 xff0c 但也较为全面 xff0c 学者若想充分掌握串口通信的原理和具体使用方法 xff08 部分限于51单片机 xff09 xff0c 请静下心来
  • RoboMaster大疆开发板C型入门学习(1)配置加流水灯(循环亮灯

    cubeMX新建工程 xff0c 这里我们假设已经安装好了cubeMX 我们本次使用Clion进行相关操作 在这里我们使用STM32F407IGHx芯片 在System Core下选择RCC选项 xff0c 在RCC mode and Co
  • 如何使用cvx工具箱求解凸优化问题呢?

    以下是一个简单的MATLAB求解凸优化问题的案例 xff0c 使用cvx 工具箱求解 xff1a 1 导入cvx工具箱 addpath 39 cvx 39 2 定义问题 n 61 2 变量数量 x 61 sym 39 x 39 n 1 定义
  • 基于stm32单片机智能导盲拐杖源程序Proteus仿真设计

    功能介绍 xff1a 采用stm32单片机作为主控CPU xff0c 采用srf05超声波模块测量障碍物距离 xff0c LCD1602显示屏显示当前的障碍物距离 xff0c 通过传感器测量障碍物的距离的远近来进行相关报警 xff0c 距离
  • virtualbox上安装ubuntu20.04清华源镜像

    一 下载Ubuntu镜像文件 这里我选择国内清华源下载ubuntu镜像文件 步骤一 xff1a 清华源下载地址 xff1a Index of ubuntu releases 20 04 清华大学开源软件镜像站 Tsinghua Open S
  • 计算机视觉(一):初识OpenCV,更好更快掌握OpenCV

    计算机视觉 xff08 一 xff09 xff1a 初识OpenCV 近几个月 xff0c 也是一直在寻找自己以后的方向 xff0c 一直在迷茫中 xff0c 但也在不断得探索着 觉得自己最感兴趣的还是计算机技术这一块 xff0c 尤其是计
  • 虚拟机扩容(超详细实测好用步骤)

    第一步 xff1a 把虚拟机关机 第二步 xff1a 点击编辑虚拟机设置 xff0c 选择硬盘 xff0c 点击扩展 xff0c 如下图 xff1a 第三步 xff1a 输入你现在想要的磁盘大小 xff08 如果你原来是200G xff0c
  • 结构体的对齐规则(结构体的计算)

    1 第一个成员在与结构体变量偏移量为0的地址处 2 其他成员变量要对齐到某个数字 xff08 对齐数 xff09 的整数倍的地址处 对齐数 61 编译器默认的一个对齐数 与 该成员大小的较小值 3 结构体总大小为最大对齐数 xff08 每个
  • hostapd 配置项解析

    hostapd 配置项解析 1 interface2 wps state3 hw mode4 channel5 beacon int6 max num sta 1 interface 一般默认interface 61 wlan0 注 xff
  • 滑动窗口算法总结

    算法目的 滑动窗口法 xff0c 也叫尺取法 xff08 可能也不一定相等 xff0c 大概就是这样 61 61 xff09 xff0c 可以用来解决一些查找满足一定条件的连续区间的性质 xff08 长度等 xff09 的问题 由于区间连续
  • linux软链接的创建、删除和更新

    大家都知道 xff0c 有的时候 xff0c 我们为了省下空间 xff0c 都会使用链接的方式来进行引用操作 同样的 xff0c 在系统级别也有 在Windows系列中 xff0c 我们称其为快捷方式 xff0c 在Linux中我们称其为链
  • 进程、线程、多进程、多线程的优缺点和区别

    进程 xff1a 是并发执行的程序在执行过程中分配和管理资源的基本单位 xff0c 是一个动态概念 xff0c 竞争计算机系统资源的基本单位 线程 xff1a 是进程的一个执行单元 xff0c 是进程内科调度实体 比进程更小的独立运行的基本
  • Postman 汉化(Postman中文版)

    1 首先从官网下载postMan安装包 postman官网下载地址 Download Postman Get Started for Free 2 下载postMan 汉化包 app zip postman汉化包 Releases hlmd
  • UDP的客户端和服务器端的实例(VC6.0实现)

    服务器端程序 xff1a UdpServer cpp Defines the entry point for the console application include 34 stdafx h 34 include lt stdio h
  • STM32中关于串口中断的调试(不断进入发送中断的原因)

    说来惭愧 xff0c 前日在调试stm32f10系列的单片机的时候 xff0c 想做一个关于串口发送的状态机 xff0c 每隔100毫秒发送一次命令 没有用DMA xff0c 就是想单纯的使用发送中断来数据 xff0c 结果在调试的时候一直
  • Psoc Creator 入门——空工程的建立

    最近在做psoc 4000芯片的开发 xff0c 现在简单的说说怎么利用psoc creator进行开发 首先 xff0c 安装psoc creator xff0c 我使用的版本是4 0 安装过程省略 xff0c 赛普拉斯官网有下载链接 x
  • mbedtls使用openssl生成的自签名证书进行TLS实验

    目录 1 使用openssl生成自签名证书2 VS2013编译mbedtls3 mbdtls默认对证书的要求4 mbdtls测试例子详解5 运行测试程序 1 使用openssl生成自签名证书 openssl是一个安全套接字层密码库 xff0
  • IIC的通信波形分析

    关于IIC xff0c 不解释它的历史了 xff0c 有兴趣自己去百度看看 xff0c 本文的图片是由周立功的LAB6021逻辑分析仪抓取的 xff0c 通信的波形是抓取的cypress的psoc 4000芯片得到的 最近项目需要用到触摸I