【STM32 CubeMX】I2C层次结构、I2C协议

文章目录

  • 前言
  • 一、I2C的结构层次
    • 1.1 怎样在两个设备之间传输数据
    • 1.2 I2C如何传输数据
    • 1.3 硬件框图
    • 1.4 软件层次
  • 二、IIC协议
    • 2.1 硬件连接
    • 2.2 I2C 总线的概念
    • 2.3 传输数据类比
    • 2.3 I2C信号
    • 2.4 I2C数据的含义
  • 总结


前言

在STM32 CubeMX环境中,I2C(Inter-Integrated Circuit)是一种常用的串行通信协议,广泛应用于连接各种外设和传感器。理解I2C的层次结构、协议和硬件结构对于STM32微控制器的开发至关重要。通过STM32 CubeMX提供的图形化配置工具,我们能够更轻松地理解和配置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位表示地址和读写标识,但是后面的并未规定他有什么含义

如果说,你要去访问一个存储芯片,你确定地址之后,你就可以发送数据
如果你想写,你肯定先要确定写地址,后面的就是存储数据

如果是读操作:
在这里插入图片描述
在上一次你把存储地址发给设备了,在第二次你发起一个读操作,他就把那个地址上的数据返回给你。
这些数据的含义完全由芯片决定!


总结

在STM32 CubeMX环境中,对I2C的深入理解对于嵌入式系统的开发至关重要。I2C的层次结构、协议和硬件结构直接影响了通信的效率和可靠性。通过使用STM32 CubeMX的图形化配置工具,我们能够更便捷地进行I2C通信的配置,提高了开发效率。总体而言,对于STM32微控制器开发者而言,深入了解I2C的各个方面,有助于更好地利用该通信协议,构建出稳定可靠的嵌入式系统。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB数据库又被勒索攻击了

前言 朋友发来一张图片,说MongoDB数据库被勒索了,问我是哪个家族的...... (上图来源于网络),当笔者看到朋友发的图片之后,判断应该是黑客入侵了MongoDB数据库服务器,然后删除了数据库里面的数据&#xff0…

QPaint绘制自定义坐标轴组件00

最终效果 1.创建一个ui页面,修改背景颜色 鼠标右键->改变样式表->添加颜色->background-color->选择合适的颜色->ok->Apply->ok 重新运行就可以看到widget的背景颜色已经改好 2.创建一个自定义的widget窗口小部件类,class MyChart…

OpenCV-41 使用掩膜的直方图

一、掩膜 掩膜即为与原图大小一致的黑底白框图。 如何生成掩膜? 先生成一个全黑的和原始图片大小一样大的图片。mask np.zeros(img.shape, np.uint8)将想要的区域通过索引方式设置为255.mask[100:200, 200:300] 示例代码如下: import cv2 import ma…

【电路笔记】-LR串联电路

LR串联电路 文章目录 LR串联电路1、概述2、示例1所有线圈、电感器、扼流圈和变压器都会在其周围产生磁场,由电感与电阻串联组成,形成 LR 串联电路。 1、概述 在本节有关电感器的第一个文章中,我们简要介绍了电感器的时间常数,指出流过电感器的电流不会瞬时变化,而是会以恒…

【LeetCode: 107. 二叉树的层序遍历 II + BFS】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

不花一分钱,在 Mac 上跑 Windows(M1/M2 版)

这是在 MacOS M1 上体验最新 Windows11 的效果: VMware Fusion,可以运行 Windows、Linux 系统,个人使用 licence 免费 安装流程见 👉 https://zhuanlan.zhihu.com/p/452412091 从申请 Fusion licence 到下载镜像,再到…

PPT导出PDF时保持图像高清的方法

问题: 我们经常会发现,在PPT中插入的图片非常高清,但是通过PPT转换为PDF之后,图片就会出现不同程度的失真。 问题产生的原因: 这是因为Acrobat的PDF Maker在将PPT转换为PDF的时候,对PPT中的图片进行了压缩 Solution: 在PPT的…

信息安全技术基础知识

一、考点分布 信息安全基础(※※)信息加密解密技术(※※※)密钥管理技术(※※)访问控制及数字签名技术(※※※)信息安全的保障体系 二、信息安全基础 信息安全包括5个基本要素&#…

ChatGPT绘图指南:DALL.E3玩法大全(一)

一、 DALLE.3 模型介绍 1、什么是 DALLE.3 模型? DALLE-3模型,是一种由OpenAI研发的技术,它是一种先进的生成模型,可以将文字描述转化为清晰的图片。这种模型的名称"DALLE"实际上是"Deep Auto-regressive Latent …

Qt:Qt3个窗口类的区别、VS与QT项目转换

一、Qt3个窗口类的区别 QMainWindow:包含菜单栏、工具栏、状态栏 QWidget:普通的一个窗口,什么也不包括 QDialog:对话框,常用来做登录窗口、弹出窗口(例如设置页面) QDialog实现简易登录界面…

致敬新春“不回家”的厨师,李锦记让厨师的年味更有滋味

“新春饭市万家团圆,致敬千万坚守岗位的厨师” 新春团圆饭向来是餐饮行业最为关注的节点,但过去几年,在疫情与后疫情时期,新年团圆饭市不免冷清。而今年餐饮行业真正迎来“龙抬头”,龙年除夕夜的团圆饭市终于重迎来了…

第三十三回 镇三山大闹青州道 霹雳火夜走瓦砾场-python分割字符串

黄信和刘知寨押解宋江和花荣向青州走,碰到了燕顺等三人来劫囚车,黄信逃走了,刘知寨被抓住,被花荣一刀杀了。 黄信把情况报给青州知府,派来了青州兵马秦统制,人称霹雳火的秦明。秦明与花荣打,花…

Go语言每日一练——链表篇(九)

传送门 牛客面试笔试必刷101题 ----------------链表相加(二) 题目以及解析 题目 解题代码及解析 解析 这一道题主要是要对链表相加的过程进行模拟,虽然思路不难但是细节出比较多,这里博主的思路主要是先将两个链表反转过来然后以Head1为基础来模拟…

JAVA并发编程(八)-无锁-乐观锁(非阻塞)

文章目录 🐶一、无锁实现(CAS)1、代码演示2、CAS效率分析3、CAS的特点 🐱二、原子整数🐭三、原子引用1、代码演示2、ABA问题3、AtomicMarkableReference 🐹四、原子数组🐰五、字段更新器&#x…

多线程的基本原理学习

由一个问题引发的思考 线程的合理使用能够提升程序的处理性能,主要有两个方面,第一个是能够利用多核cpu以及超线程技术来实现线程的并行执行;第二个是线程的异步化执行相比于同步执行来说,异步执行能够很好的优化程序的处理性能提…

EasyRecovery软件有哪些版本?如何下载2024最新版本

EasyRecovery 是一款功能强大的数据恢复软件,适用于电脑上的数据恢复需求。以下是该软件的不同电脑版本及其主要特点: EasyRecovery Home(家用版): 主要针对家庭用户,提供常规的数据恢复功能。可以恢复各种…

计算机毕业设计SSM基于的高校学习资源共享系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: vue mybatis Maven mysql5.7或8.0等等组成,B…

项目管理工具软件Maven趣闻

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl Maven这个单词来自于意第绪语(Yiddish),这是一种与德语和希伯来语有密切关系的犹太民族语言。在这个语境中,Maven意为“知识的…

typescript环境搭建,及tsc命令优化

typescript typescript. 是一种由微软开发的 开源 、跨平台的编程语言。. 它是 JavaScript 的超集,最终会被编译为JavaScript代码。. TypeScript添加了可选的静态类型系统、很多尚未正式发布的ECMAScript新特性(如装饰器 [1] )。. 2012年10月…

面试:正确率能很好的评估分类算法吗

正确率(accuracy) 正确率是我们最常见的评价指标,accuracy (TPTN)/(PN),正确率是被分对的样本数在所有样本数中的占比,通常来说,正确率越高,分类器越好。 不同算法有不同特点,在不同…