IIC时序(通俗易懂版,嘎嘎简单)

news2024/9/20 5:39:47

介绍

简述:IIC总线就是一个两根线的规则(半双工),规定通信双方如何传送数据,至于传送数据,无非就是主机给从机发送数据,或者从机给主机发送数据,其中加了一点发过去的数据有没有回应,也就是应答!或者不应答。还有一点IIC是一个多机通信的协议。话不多说,上才艺!跟着开心哥的小火车发车了!

作者:王开心

时间:2024.22.12

两根线:SCL时钟线,控制数据传送节拍的。SDA数据线,传送数据的线

(一)IIC时序

第一步

如上图书所示!起始信号也就是通信开始条件,IIC规定在SCL时钟为高电平的时候,且SDA由高到低的变化。即为通信开始!终止条件,也就是通信的结束条件,IIC同样规定SCL也是高电平期间,且SDA由低到高的变化。即为通信的结束!

第二步

发送一个字节,顾名思义就是发送8位二进制,利用一个循环将8个二进制给发送出去。一般我们编程都是以主控为编程期间,”显而易见“,发送一个字节,也就是说我们给主机编程让他发送一个字节数据,如何配置,IIC规定在SCL=0的期间,我们可以将想要发送的数据放到SDA这个数据线上(一次放一位二进制),等待发射信号也就是起发信号,IIC规定当SCL=1时,数据就可以通过SDA发送出去了(先发高位),发送期间不允许有数据变化!

第三步

接收一个字节,也很简单,对于主机而言的,接收一个字节,也就是从机发数据给主机,看图自己理解,比较简单!(也是从高位开始接收的)简单说一下,scl=0,允许SDA变化(也就是从机把数据放到SDA上),scl=1,从机把数据发送出去,主机接收!

注意:主机在接受数据前一定要释放SDA,不要一直抓着不放!会受不了的,用完就放开她,从机也要用的!

第四步

显而易见!应答,也就我数据发送出去有没有回应!形成闭环控制,一句话有始有终!也就是说,主机发送出去的数据,从机最起码要给出应答(我们采用第九位二进制表示)(可以参考数据帧,一帧数据,既包括地址,开始信号,数据位,停止位,奇偶校验位等等!)

(二)三种IIC数据帧格式

第一种

从机地址+读还是写(读:输入,从机发给主机。写:输出,主机发送给从机)

7位地址位加一个读写位。一般为7位,有更多的,,通过上图可知可以发送N个字节数据

RA=0,receive ack :表示接收应答信号,向谁发送数据,也就是从机地址(要发的给对象)

第二种

 注意:此时,R: 读操作,即从机向主机发送数据,也就是我们主机对SDA的控制权交给从机了,(写程序的时候一定要注意,主机发送完数据,一定要释放SDA数据线)

向谁收数据:从机地址

举个简单例子,如下图通信对话

: 小明你来回答这个问题,:小明说收到,,小明开始回答问题,,回答完毕,提问结束,

第三种(稍微有一点小难度)

W:写->主机发送送数据给从机,也就是主机对从机输入数据

R:读 ->主机接收从机的数据,也就是从机给主机发送数据,

举个简单例子:W:主机对从机说,你欠我的500元啥时候还我,R:从机回答说,没钱,不还。

AT24C02 的IIC通信(支持IIC通信的芯片采用IIC的符合格式,也就是第三种)

在程序设计的我们都会设计一个函数,如开始信号,写操作,读操作,介绍应答等,如发送一个字节需要一个参数,也就是传入从机地址(下一节实战AT24C02存储芯片-EEPROM实验)

(三)典型IIC时序介绍(中文)


IIC寄存器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2129496.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

佰朔资本:大宗交易是什么?出现大宗交易意味着什么?

大宗生意,又叫作大宗生意,是指抵达规则的最低限额的证券单笔生意申报,生意两边经过协议达到共同并经生意所招认成交的证券生意。 出现大宗生意,说明该股票的整体体现弱于商场均匀体现,且主力正在减仓或许出货。大宗生…

charles使用ssl证书抓包https请求失败解决方案

前提 手机必须有root权限,并且是使用Magisk(面具)进行root; ssl证书安装 安卓7.0以下的手机,ssl证书是直接安装到了‘系统证书’里,可以直接抓取https请求,但是目前的手机大部分都是7.0以上的&#xff1…

第17章.RCC-STM32时钟配置

目录 0. 《STM32单片机自学教程》专栏 17.1 STM32时钟树 17.1.1 时钟源 17.1.2 锁相环PLL 17.1.3 系统时钟 17.1.3.1 系统时钟SYSCLK 17.1.3.2 AHB/APB总线时钟 17.1.3.3 其他时钟 17.1.3.4 MCO 时钟输出 17.2 系统时钟库函数 17.3 系统时钟配置练习 …

Python基础语法(1)上

常量和表达式 我们可以把 Python 当成一个计算器,来进行一些算术运算。 print(1 2 - 3) print(1 2 * 3) print(1 2 / 3) 这里我们可能会有疑问,为什么不是1.6666666666666667呢? 其实在编程中,一般没有“四舍五入”这样的规则…

C++入 门——“多态”

一、多态 多态是面向对象的一个重要特性,它允许程序在运行时通过传入不同对象而呈现出不同的运行结果,比如同样的采访,询问老师的年龄和学生的年龄最后得到的结果是不一样的,这就呈现出一种多态。 多态分为两种:静态多…

鸿蒙OpenHarmony【轻量系统芯片移植】内核移植

移植芯片架构 芯片架构的移植是内核移植的基础,在OpenHarmony中芯片架构移植是可选过程,如果当前OpenHarmony已经支持对应芯片架构则不需要移植操作,在“liteos_m/arch”目录下可看到当前已经支持的架构,如表1: 表1 …

2024年全国大学生软件测试大赛赛项安排(一)

✨博客主页: https://blog.csdn.net/m0_63815035?typeblog 💗《博客内容》:.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 📢博客专栏: https://blog.csdn.net/m0_63815035/cat…

怎么选择靠谱AI论文生成工具?看完我的试用都会明白!

2024年上半年开始AI论文写作工具开始火了,层出不穷!作为一个经常需要写论文的懒人,我非常好奇这些AI工具的实际效果到底怎么样?为了测试不同工具的实力,我对他们都进行了试用,发现了一些意想不到的结果....…

【楚怡杯】职业院校技能大赛 “云计算应用” 赛项样题一

某企业根据自身业务需求,实施数字化转型,规划和建设数字化平台,平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”,拟采用开源OpenStack搭建企业内部私有云平台,开源Kubernetes搭建云原生服务平台,选…

【F172】基于Springboot+vue实现的智能菜谱系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 项目描述 近些年,随着中国经济发展,人民的…

消防装备仓库管理系统|实现消防装备全流程跟踪

智慧消防装备仓库管理系统(智物资DW-S302)是一套成熟系统,依托互3D技术、云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对RFID智能仓库进行统一管理、分析的信息化、智能化、规范化的系统。 1、支持实时物资仓库货位二维和三维孪生…

第七篇——数学应用:华罗庚化繁为简的神来之笔

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 数学的意义,以及它对于生活的指导边界,是那么的重…

Oracle CloudWorld 2024:多云时代的AI与数据库融合革命

在今年的 Oracle CloudWorld 大会上,甲骨文董事会主席兼首席技术官Larry Ellison 深入探讨了AI、云计算与数据库融合的未来。 在这一技术盛宴中,Ellison的演讲不仅展现了云计算的新趋势,还为企业数字化转型提供了前瞻性的技术路线。 我们来回…

kettle 数据库迁移 使用分页原理实现 数据库mysql

使用 kettle 9.0 先修改配置文件: C:\Users\xx\.kettle 新增如下配置,解决mysql 空字符串 自动转 null bug KETTLE_EMPTY_STRING_DIFFERS_FROM_NULLY git地址: GitHub - 2292011451/kettle_tool 第一步: 先把要迁移的表进行读取,循环查询每个表的最大数量以及页数,追加到…

(一)模式识别——基于SVM的道路分割实验(附资源)

写在前面:本报告所有代码公开在附带资源中,无法下载代码资源的伙伴私信留下邮箱,小编24小时内回复 一、实验目的 1、实验目标 学习掌握SVM(Support Vector Machine)算法思想,利用MATLAB的特定工具箱和库函…

MFC工控项目实例之十四模拟量信号名称从文件读写

承接专栏《MFC工控项目实例之十三从文件读写板卡信号名称》 在BoardTest.cpp文件中添加代码 int m_CountGetCurSel_AD[16];//索引号 UINT m_CountComboID_AD[16]//控件ID号{IDC_COMBO33,IDC_COMBO34,IDC_COMBO35,IDC_COMBO36,IDC_COMBO37,IDC_COMBO38,IDC_COMBO39,IDC_COMBO40…

语言模型微调:提升语言Agent性能的新方向

人工智能咨询培训老师叶梓 转载标明出处 大多数语言Agent依赖于少量样本提示技术(few-shot prompting)和现成的语言模型。这些模型在作为Agent使用时,如生成动作或自我评估,通常表现不佳,且鲁棒性差。 论文《FIREACT…

2024外滩大会:远的更近 旧的更新

文 | 大力财经 导语:2024 外滩大会圆满落幕!未来更近了,旧的更创新了。全球 500 多位精英齐聚,50 余家企业 “招才”。在这里,我们不仅看到未来商业形态,更望见未来的影子。 为期三天的2024外滩大会圆满落幕…

flv复合流

一、什么是flv flv流媒体协议是Adobe公司推出的一种流媒体协议。其特点就是封装后的音视频数据量很小,并且协议规范相对简单,所以FLV流媒体协议适合网络传输,但是他是一个私有协议,所支持的网络传输比较有限:如RTMP、H…

Mysql异常断电InnoDB损坏处理

一、mysql启动报错信息收集 1、截图 [ERROR] InnoDB: Database page corruption on disk or a failed file read of page [page id: space0, page number203]. You may have to recover from a backup. Jun 27 13:30:06 localhost mysqld: 2024-06-27T13:30:06.14747208:00 0 …