STM32学习之I2C(理论篇)

news2025/6/8 17:11:34

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载注明出处

I2C答疑点

疑惑:这个函数已经声明了,为什么还是显示这个警告?

答复:原因是头文件里面的if def名称跟文件名没对上。
修改后,函数名显示正常,能正常跳转。

疑惑:I2C验证,如何接线,环境怎么搭建?

答复:
1、主板子的SCL引脚(时钟线)连接到从板子的SCL引脚。SCL用于同步主从设备之间的数据传输,确保数据在正确的时刻被接收和发送。
2、主板子的SDA引脚(数据线)连接到从板子的SDA引脚。SDA用于传输实际的数据,包括地址信息、控制指令和数据字节等。

将主版的数据线和子版的数据线连在一起,时钟和时钟线连在一起,然后再分别接一个上拉电阻

3、 还需要将主从板子的电源和电源引脚,地线和地线都要连在一起。

但是我看代码中选择SCL和SDA的PIN是根据I2C的类别来的,所以怀疑3609是不是支持多个I2C总线?

疑惑:I2C上拉电阻的作用?

答复:I2C协议规定总线处于空闲时为高电平状态。这样通过判断总线当前是否为空闲状态。
还有一个就是想要实现“线与“。

疑惑:什么是上拉电阻、下拉电阻?

答复:上拉电阻连接到电源正极,会使连接点的电平被拉高到电源电压附件。下拉电阻反之。
作用就是使与上下拉电阻相连的引脚处于高电平或是低电平的状态。

疑惑:I2C总线,为什么要实现“线与“?

答复:I2C总线允许多个主设备和从设备连接在同一个总线上。
借助“线与“机制,就可以避免访问冲突。
比如:两个主设备几乎同时想要向从设备发送数据,当其中一个主设备率先拉低总线时,另一个主设备通过检测总线电平变化,就知道当前总线已被占用,进而调整自身的发送时机。

疑惑:上下拉电阻值一般是多大?

答复:一般在1k欧到10k欧之间。
疑问:如何解决I2C总线上多个主机访问的冲突?

答复: 通过I2C总线仲裁。

疑问:详细解释下I2C的总线仲裁?
答复:当两个主机在总线空闲的时候都产生了一个有效的起始位,这种情况就需要决定由哪个主机来完成数据传输,也就是仲裁的过程。
仲裁的原则是“低电平优先“,即谁先发送低电平谁就掌握了对总线的控制权。
其次,仲裁的过程跟从机无关。

疑问:一个I2C总线上最多可以挂载多少个从机?

答复:I2C从机的地址长度位7bit,因此理论上,只要地址不同,一个主机可以挂在2的7次方个从机,即128个。但是从机数量增加会导致总线寄生电容增大,影响通讯质量。因此在实际应用中,一般最多不超过8个,总线容量控制在400pF以内。

疑惑:I2C的应用场景有哪些?

答复:一般用于跟传感器通信。温湿度、气压、运动、红外等传感器。

疑惑:为什么I2C常用于传感器之间的通信?

答复:
1、 I2C只需要两根线就可以与设备连接,而传感器通常体积较小,引脚数量有限。
2、 I2C多主多从的结构,允许一个总线上挂在多个传感器,不需要额外的片选线,简化了布线。比如一个电路版上同时连接温度传感器和光传感器,共用I2C总线就能节省资源。
3、 I2C速度方面虽然不及SPI,但是对于大部分传感器都足够了。
4、 其次,功耗低。

疑惑:I2C在项目中如何体现使用经验?

答复:比如通过I2C协议控制XX传感器。这里尤其是摄像头,虽然我们之前有项目经验,但是对于图像数据的传输,I2C支持不了。
那就只能在其他项目中加入这个接口协议了。

疑惑:I2C时序问题?

答复:
开始信号:SCL为高电平时,SDA电平由高变低。即出现下降沿为开始。
结束信号:SCL为高电平时,SDA电平由低变高。即出现上升沿为结束。
读取数据:SCL为高电平时,SDA保持稳定。数据传输为MSB,高位优先。
应答机制:每传输8位数据,接收方就要发送一个应答信号ACK,即低电平,表示成功接收。

疑惑:单片机支持多个I2C接口吗?

答复:是的,大多数STM32系列至少支持2个独立I2C接口(I2C1、I2C2),高端型号会支持3个I2C接口,每个接口都有不同的引脚分配。

疑惑:I2C的速率只有一个吗?

答复:不是。有标准模式和快速模式,前者速度可达100kbit/s,后者可达1000kbit/s

疑惑:I2C主机和从机数据发送和接收是这样一个过程呢?

答复:

疑惑:如何界定主机和从机?

答复:

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

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

相关文章

Python_day47

作业:对比不同卷积层热图可视化的结果 一、不同卷积层的特征特性 卷积层类型特征类型特征抽象程度对输入的依赖程度低层卷积层(如第 1 - 3 层)边缘、纹理、颜色、简单形状等基础特征低高,直接与输入像素关联中层卷积层&#xff08…

如何在mac上安装podman

安装 Podman 在 macOS 上 在 macOS 上安装 Podman 需要使用 Podman 的桌面客户端工具 Podman Desktop 或通过 Homebrew 安装命令行工具。 使用 Homebrew 安装 Podman: (base) ninjamacninjamacdeMacBook-Air shell % brew install podman > Auto-updating Hom…

小黑一层层削苹果皮式大模型应用探索:langchain中智能体思考和执行工具的demo

引言 小黑黑通过探索langchain源码,设计了一个关于agent使用工具的一个简化版小demo(代码可以跑通),主要流程: 1.问题输入给大模型。 2.大模型进行思考,输出需要执行的action和相关思考信息。 3.通过代理&…

阿里云ACP云计算备考笔记 (4)——企业应用服务

目录 第一章 企业应用概览 第二章 云解析 1、云解析基本概念 2、域名管理流程 3、云解析记录类型 4、域名管理 ① 开启注册局安全锁 ② 域名赎回 第二章 内容分发网络CDN 1、CDN概念 2、使用CDN前后对比 3、使用CDN的优势 4、阿里云CDN的优势 5、配置网页性能优化…

ARM SMMUv3简介(一)

1.概述 SMMU(System Memory Management Unit,系统内存管理单元)是ARM架构中用于管理设备访问系统内存的硬件模块。SMMU和MMU的功能类似,都是将虚拟地址转换成物理地址,不同的是MMU转换的虚拟地址来自CPU,S…

hadoop集群datanode启动显示init failed,不能解析hostname

三个datanode集群,有一个总是起不起来。去查看log显示 Initialization failed for Block pool BP-1920852191-192.168.115.154-1749093939738 (Datanode Uuid 89d9df36-1c01-4f22-9905-517fee205a8e) service to node154/192.168.115.154:8020 Datanode denied com…

浏览器工作原理05 [#] 渲染流程(上):HTML、CSS和JavaScript是如何变成页面的

引用 浏览器工作原理与实践 一、提出问题 在上一篇文章中我们介绍了导航相关的流程,那导航被提交后又会怎么样呢?就进入了渲染阶段。这个阶段很重要,了解其相关流程能让你“看透”页面是如何工作的,有了这些知识,你可…

|从零开始的Pyside2界面编程| 用Pyside2打造一个AI助手界面

🐑 |从零开始的Pyside2界面编程| 用Pyside2打造一个AI助手界面 🐑 文章目录 🐑 |从零开始的Pyside2界面编程| 用Pyside2打造一个AI助手界面 🐑♈前言♈♈调取Deepseek大模型♈♒准备工作♒♒调用API♒ ♈将模型嵌入到ui界面中♈♈…

pikachu靶场通关笔记20 SQL注入03-搜索型注入(GET)

目录 一、SQL注入 二、搜索型注入 三、源码分析 1、渗透思路1 2、渗透思路2 四、渗透实战 1、渗透准备 2、SQL注入探测 (1)输入百分号单引号 (2)万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取…

产品笔试专业名词梳理

目录 产品常识 四种常见广告形式 贴片广告 中插广告 信息流广告 横幅广告 BAT和TMD BAT TMD 付费渗透率 蓝海市场、红海市场 蓝海市场 红海市场 竞品研究 SWOT分析 SWOT分析的核心目的: SWOT分析的优点: SWOT分析的局限与注意事项&…

【前端】es6相关,柯里化

0. 严格模式 严格模式的概念从ES6引进。通过严格模式,可以在函数内部选择进行较为严格的全局或局部的错误条件检测。 MDN中严格模式的描述 严格模式通过抛出错误来消除了一些原有静默错误严格模式修复了一些导致 JavaScript引擎难以执行优化的缺陷:有时…

51单片机基础部分——矩阵按键检测

前言 上一节,我们说到了独立按键的检测以及使用,但是独立按键每一个按键都要对应一个IO口进行检测,在一些需要多按键的情况下,使用过多的独立按键会过多的占用单片机的IO资源,为了解决这个问题的出现,我们…

SpringBoot2.3.1集成Knife4j接口文档

首先要查看项目中pom文件里面有没有swagger和knife4j的依赖&#xff0c;如果有的话删除&#xff0c;加入以下依赖 <!-- swagger --><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-spring-boot-starter</…

容器安全最佳实践:云原生环境下的零信任架构实施

&#x1f4cb; 目录 引言&#xff1a;容器安全的重要性零信任架构基础理论云原生环境的安全挑战容器安全威胁模型分析零信任架构在容器环境中的实施关键技术组件与工具安全策略与最佳实践监控与响应机制案例研究与实施路径未来发展趋势 引言 随着容器技术和云原生架构的快速…

[BIOS]VSCode zx-6000 编译问题

前提&#xff1a;Python 3.6.6及以上版本安装成功&#xff0c;Python 3.6.6路径加到了环境变量# DEVITS工具包准备好 问题&#xff1a;添加环境变量 1&#xff1a;出现环境变量错误&#xff0c;“py -3” is not installed or added to environment variables #先在C:\Windows里…

CICD实战(二)-----gitlab的安装与配置

1、安装gitlab所需要的依赖包与工具 sudo yum install wget net-tools sudo yum install curl policycoreutils openssh-server openssh-clients postfix -y 2、配置清华源 vim /etc/yum.repo.d/gitlab-ce.repo[gitlab-ce] namegitlab-ce baseurlhttp://mirrors.tuna.tsin…

[GitHub] 优秀开源项目

1 工具类 1.1 桌面猫咪互动 BongoCat

Linux中su与sudo命令的区别:权限管理的关键差异解析

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析LLP (二)

低层协议&#xff08;Low Level Protocol, LLP&#xff09;详细解析 1. 低层协议&#xff08;Low Level Protocol, LLP&#xff09;核心特性 包基础 &#xff1a;基于字节的包协议&#xff0c;支持 短包 &#xff08;32位&#xff09;和 长包 &#xff08;可变长度&#xff0…

第4天:RNN应用(心脏病预测)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标 具体实现 &#xff08;一&#xff09;环境 语言环境&#xff1a;Python 3.10 编 译 器: PyCharm 框 架: Pytorch &#xff08;二&#xff09;具体步骤…