建设银行辽宁省分行网站esuwiki wordpress
web/
2025/10/7 21:42:31/
文章来源:
建设银行辽宁省分行网站,esuwiki wordpress,网络规划设计师视频徐朋百度网盘,做私人彩票网站文章目录 前言一、I2C的结构层次1.1 怎样在两个设备之间传输数据1.2 I2C如何传输数据1.3 硬件框图1.4 软件层次 二、IIC协议2.1 硬件连接2.2 I2C 总线的概念2.3 传输数据类比2.3 I2C信号2.4 I2C数据的含义 总结 前言
I2C#xff08;Inter-Integrated Circuit#xff09;是一… 文章目录 前言一、I2C的结构层次1.1 怎样在两个设备之间传输数据1.2 I2C如何传输数据1.3 硬件框图1.4 软件层次 二、IIC协议2.1 硬件连接2.2 I2C 总线的概念2.3 传输数据类比2.3 I2C信号2.4 I2C数据的含义 总结 前言
I2CInter-Integrated Circuit是一种常用的串行通信协议广泛应用于各种嵌入式系统和传感器设备中。它允许多个设备通过同一根总线进行通信同时具有高度可靠性和灵活性。在 MicroPython 中I2C 提供了一种简单而有效的方式来控制硬件与外部设备进行通信。本文将介绍 I2C 的层次结构和协议以帮助读者更好地理解和应用 MicroPython 中的 I2C 功能。 一、I2C的结构层次
1.1 怎样在两个设备之间传输数据
在两个设备之间进行数据的传输我们有两种方式一种是异步传输一种是同步传输。 比如串口他是异步传输。 比如I2C他是同步传输。
1.2 I2C如何传输数据
在I2C中他有两个引脚
SCL SCL为时钟信号在时钟的同步下我们就可以进行数据的传输SDA SDA进行数据的传输。
I2C是半双工的因为他只有一条数据线只能发送完了再接收或者接收完了再发送而我们的串口可以一边发送一边接收串口是全双工的。
1.3 硬件框图
比如说oled的硬件框图里面有一个ssd1306的主控芯片 如果我们想在屏幕上显示文字我们只需要编写程序来初始ssd1306芯片 接下来我们把数据通过IIC总线写到ssd1306里面的显存来 显存里面就保存着要显示的数据。这个芯片会周而复始的把数据刷到屏幕里面。 在以后我们只需要初始化好ssd1306然后把数据写到显存里面来就可以。
1.4 软件层次 二、IIC协议
2.1 硬件连接
I2C在硬件上的接法如下所示主控芯片引出两条线SCL,SDA线在一条I2C总线上可以接很多I2C设备我们还会放一个上拉电阻(放一个上拉电阻的原因以后我们再说)。
2.2 I2C 总线的概念
I2C(Inter-Integrated Circuit又称 IIC)总线是一种由 PHILIPS 公司开发的串行总 线用于连接微控制器及其外围设备它具有如下特点 只有两条总线线路一条串行数据线(SDA)一条串行时钟线(SCL)。
每个连接到总线的器件都可以使用软件根据它的惟一的地址来识别。
传输数据的设备间是简单的主/从关系。
主机可以用作主机发送器或主机接收器。
它是一个真正的多主机总线两个或多个主机同时发起数据传输时可以通过冲 突检测和仲裁来防止数据被破坏。
串行的 8 位双向数据传输位速率在标准模式下可达 100kbit/s在快速模式下 可达 400kbit/s在高速模式下可达 3.4Mbit/s。
片上的滤波器可以增加抗干扰功能保证数据的完整。
连接到同一总线上的 IC 数量只受到总线的最大电容 400pF 的限制。
对于I2C协议一个I2C总线可以接多个设备.
2.3 传输数据类比
先说明一些术语如下所示。 ◼ 发送器发送数据到总线的器件 ◼ 接收器从总线接收数据的器件 ◼ 主机发起/停止数据传输、提供时钟信号的器件 ◼ 从机被主机寻址的器件 ◼ 多主机可以有多个主机试图去控制总线但是不会破坏数据 ◼ 仲裁当多个主机试图去控制总线时通过仲裁可以使得只有一个主机获得总线 控制权并且它传输的信息不被破坏 ◼ 同步多个器件同步时钟信号的过程
比如说上体育课一个老师和多个学生
发球 老师:开始了(start) 老师:A!我要发球给你!(地址/方向) 学生A: 到!(回应) 老师把球发出去(传输) A收到球之后应该告诉老师一声(回应) 老师: 结束(停止)
接球 老师:开始了(start) 老师: B!把球发给我!(地址/方向) 学生B:到! B把球发给老师(传输) 老师收到球之后给B说一声表示收到球了 (回应) 老师:结束(停止)
① 老师说开始了表示开始信号(start) ② 老师提醒某个学生要发球表示发送地址和方向(address/read/write)发送的第一个字节前7位表示发送的地址最后一位表示是写还是读0位读1为写。 ③ 老师发球/接球表示数据的传输 ④ 到球要回应回应信号(ACK)传输完一位后主机会拉高SDA如果找到了从机从机会把SDA拉低表示有这个设备 ⑤ 老师说结束表示 IIC 传输结束§
2.3 I2C信号
在SCL为高电平的期间SDA数据要保持稳定对方就是在SCL为高电平期间来读取SDA数据的如果你想修改下一位数据你需要把SCL拉低保持SCL为低电平在SCL为低电平期间SDA切换数据如下图所示 如果说主机传输完了开始信号但是数据并没有准备好那么我们的SCL拉低等待我们的数据到来他可以由主机拉低也可以由从机拉低表示现在没有数据要等一下
2.4 I2C数据的含义
在I2C中有下面的数据传输 第一个8位表示地址和读写标识但是后面的并未规定他有什么含义
如果说你要去访问一个存储芯片你确定地址之后你就可以发送数据 如果你想写你肯定先要确定写地址后面的就是存储数据
如果是读操作 在上一次你把存储地址发给设备了在第二次你发起一个读操作他就把那个地址上的数据返回给你。 这些数据的含义完全由芯片决定 总结
通过本文的介绍我们了解了 I2C 的层次结构和协议。I2C 的层次结构包括总线、主设备和从设备主要分为两根信号线时钟线SCL和数据线SDA。在协议方面I2C 使用起始信号、停止信号、ACK/NACK 等机制进行通信具有简洁而有效的数据传输方式。在 MicroPython 中通过 machine 模块中的 I2C 类我们可以方便地控制硬件 I2C 总线并与外部设备进行通信。对于嵌入式开发者来说掌握 I2C 协议和 MicroPython 中的应用将有助于更灵活地设计和开发各种嵌入式系统。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88704.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!