I2C 协议抓包,学习,总结
文章目录
- I2C 调查
- 标准I2C协议介绍
- I2C时序介绍
- 起始信号
- 停止信号
- 重启信号
- 总线闲信号
- 总线忙信号
- 读写信号
- 应答信号
- 非应答信号
- 标准I2C协议读写介绍
- I2C写一个寄存器
- I2C 读一个寄存器
- I2C 连续写多个寄存器
- I2C 连续读多个寄存器
- I2C数据仲裁介绍
I2C 调查
标准I2C协议介绍
I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的设备之间通信。I2C的两根线SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,接口电路为开漏输出,需通过上拉电阻接电源VCC,当总线空闲时,两根线都是高电平。
常见的硬件结构图(一个适配器,两根线,若干设备而已)
I2C时序介绍
起始信号
启动信号描述: SCL为高电平时,SDA由高电平变成了低电平
停止信号
停止信号描述:SCL为高电平时,SDA由低电平变成高电平
重启信号
在I2C总线启动了起始信号,并且未启动停止信号过程中,再次发送起始信号,那么这个信号也被称为重启信号
总线闲信号
当SDA和SCL都为高,此时主控制器和从设备都未对这两根线进行操作,仅由I2C的上拉电阻将这两根线拉高
总线忙信号
当主控制器发起了START信号时,到发起STOP信号期间,I2C总线都处于忙状态
读写信号
应答信号
一般情况下,主控制器或者从设备,谁读取到对方的发过来的数据,谁就需要发送应答信号,比如主控制器将数据发送给从设备,从设备接收到后,将在总线上回复应答信号
非应答信号
非应答信号出现有两种情况,一种是异常情况,比如主控制器发送的数据,从设备未回复应答信号,即认为回复的是非应答信号,那么说明在传输数据过程中出现了异常,比如设备地址未设置正常,又比如,在某些需要主设备额外给设备提供时钟的情况下,并没有提供时钟,即从设备未能正常工作,都会认为从设备回复的是NCK。
还有一种是正常情况,即当主控制器接收到了从设备发送的数据后,主控制器主动发送NCK,来告诉从设备,已经成功读取到了数据,不再继续读取数据了。
标准I2C协议读写介绍
I2C写一个寄存器
- 整体流程如下
抓包分析如下
从设备地址为0x34,寄存器地址为0x01,写入的值为0x04
I2C 读一个寄存器
读从设备地址为0x34,寄存器地址为0x01的值
- 发送START信号
- 发送设备地址+写命令(0x34+Write), 等待设备回复ACK
- 写入即将要读的设备的寄存器地址(0x01),等待设备回复ACK
- 发送STOP信号
- 发送START信号(步骤4, 5其实可以合并为一个操作,即重启信号)
- 发送设备地址+读命令(0x34+Rread),等待设备回复ACK
- 读取设备回复的寄存器的值(0x04),主控制器发送NCK(高电平),告知设备结束接受数据,再发送STOP信号,停止当次传输
I2C 连续写多个寄存器
标准的I2C支持连续写多个I2C寄存器,需要I2C控制器和I2C从设备都需要支持该标准时,才真正有这个特性。
通过I2C,连续写入n个数据,从设备的某一个基地址(连续,依次写入,硬件一般会自动递增寄存器地址)
I2C 连续读多个寄存器
标准的I2C支持连读读错了I2C寄存器,需要I2C控制器和I2C从设备支持该标准时,才真正有这个特性。
通过I2C,连续读n个数据,从设备的某一个基地址(连续,依次读出,硬件一般会自动递增寄存器地址)
I2C数据仲裁介绍
一般只有在I2C总线系统中同时存在2个I2C住设备时,才会出现总线仲裁失败的问题。
参考链接: I2C总线的仲裁机制
I2C 协议抓包,学习,总结相关推荐
- ICMP协议抓包分析-wireshark
ICMP协议抓包分析-wireshark ICMP- (Internet Control Message Protocol,网际报文协议)是Internet协议族的核心协议之一,也可称为是网际控制报文 ...
- Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述
Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述 网络协议是用于不同计算机之间进行网络通信的.网络协议是网络上所有设备(如网络服务器.计算机.交换机.路由器等)之间通信规则的集合,它 ...
- TCP协议抓包分析 -- wireshark
TCP协议抓包分析 – wireshark TCP- (Transmission Control Protocol,传输控制协议)是一种面向连接的.可靠的.基于IP的传输层协议.它的主要目的就是为数据 ...
- UDP协议抓包分析 -- wireshark
UDP协议抓包分析 – wireshark UDP是User Datagram Protocol用户数据报协议的简称.他是OSI七层模型中一种无连接的传输层协议,提供面向事务的简单的不可靠信息传送服务 ...
- ARP协议抓包分析 -- wireshark
ARP协议抓包分析 – wireshark ARP- Address Resolution Protocol协议,即地址解析协议.该协议功能就是将IP地址解析成MAC地址. 在发送数据的时候,只知道目 ...
- http抓包实战 pdf_网络协议HTTP 协议(抓包实战和网络分层)
这篇文章主要介绍一下 Wireshark 抓包工具获取到的 HTTP协议 相关的数据,然后对这些数据进行简单的分析,主要目的是更深入的理解 HTTP协议,然后了解一下网络为什么要分层, OSI模型和T ...
- charles抓包工具_HTTP协议抓包工具:Charles for Mac
Charles mac版对于开发者来说应该都不会陌生,这是一款非常实用的HTTP信息抓包工具,可以帮助开发人员查看其机器和Internet之间的所有HTTP和SSL / HTTPS流量,让你可以快速诊 ...
- 第二课、《抓包学习——美团评论》
文章目录 第二课.<抓包学习--美团评论> 1.准备工作 2.分析网页 1.选择爬取对象 2.分析链接 3.抓取网页 1.抓包步骤 2.查看数据包并解析 3.爬取链接 4.筛选信息 1.更 ...
- 全栈-协议-抓包-脚本-编程开发
知识内容涉及: 全栈开发(前端:js.css.html)(后端开发:java.php) 协议(http协议) 抓包(手机.电脑http协议抓包) 手机.PC端脚本开发 我的公众号"潮酷科技& ...
最新文章
- 「面试必备」常见Java面试题大综合 马云见了都点赞
- java常用容器(集合)的总结
- C语言中链表的英文名字,数据结构C语言版 循环链表表示和实现(国外英文).doc
- 少儿编程语言python-青少儿编程语言Python的学习紧迫性
- ExtJS 动态增加与删除items,动态设置textField可见与否
- java的知识点27——lambda推导
- 选择嵌套_Python if语句嵌套(入门必读)
- 前端学习(1887)vue之电商管理系统电商系统之通过路由的形式显示用户列表
- 求1e11以内的素数
- windows phone 如何获得手机的分辨率
- python全栈 操作系统
- T-SQL笔记1:SELECT及SELECT高级应用
- 3.7-10设计一个算法,采用分治法求一个整数序列中的最大最小元素
- NIPS历年论文 NIPS2020论文集
- 小米wifi设置access_小米帐号的开放API
- mysql cluster 分片_MySQL Cluster --01
- 黑马程序员pink老师Javascript语法基础 | 总结
- PRN(20210421):Task-Free Continual Learning
- teambition桌面客户端的妙用(绝密)
- matlab画图时特殊符号的输入
热门文章
- Linux入门八:Linux的其他文本工具:echo,cat,tail,grep;
- php怎么切取部分歌曲,怎样把一首歌只留后半部分的副歌 怎么截取歌曲副歌部分...
- Mr.Alright---安卓Q Google日历选择提示音报错的解决及解决后的思考
- 单片机(AT89C51)按钮控制LED灯实现流水灯,闪烁流水灯
- cstringw转lpctstr_CString 强制类型转换为 LPCTSTR
- 第五节:文本样式、字体样式
- 学习Coq笔记(一):Windows下安装Coq
- 蓝牙串口通信java_Java程序与串口通信的实现及通信原码-全网最详细,一步一步教会...
- Unity3dRPG 相机跟随player旋转_人物头部和眼睛实现跟随目标转动的轻量级IK实践...
- 美和易思·湖南生机职院校企共建专业技能抽查标准认证会成功召开