【STM32】| 02——常用外设 | I2C

news2024/11/18 8:14:44

系列文章目录
【STM32】| 01——常用外设 | USART
【STM32】| 01——常用外设 | I2C


失败了也挺可爱,成功了就超帅。

文章目录

  • 1. 简介
  • 2. I2C协议
    • 2.1 I2C物理连接
    • 2.2 I2C通信协议
      • 2.2.1 起始和停止信号
      • 2.2.2 数据有效性

1. 简介

I2C是一种常用的串行通信总线,由串行数据线SDA 和串线时钟线SCL组成。I2C是一种多主机控制总线,由飞利浦公司为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。I2C 通讯协议(Inter-Integrated Circuit)是由于它引脚少,硬件实现简单,可扩展性强,不需要外部收发设备,被广泛地使用在系统内多个集成电路(IC)间的通讯。
I2C支持 0KHZ-5MHZ设备通信(hz相当于bps)。有如下几种模式

  • 普通模式 ——100kHz

  • 快速模式——400kHz

  • 快速模式——1MHz

  • 高速模式——3.4MHz

  • 超高速模式——5MHz

    我们常用400KHZ 在此基础上 Inter提出了SMBUS系统总线管理 该规范限制了通信速率10K-100KHZ.

I2C是一种主从通信 支持多主多从的总线。

2. I2C协议

2.1 I2C物理连接

在这里插入图片描述
如图 可以看到索引 I2C 设备都通过 SDA/SCL 连接到总线 总线接有上拉电阻(后面讲原因)
I2C特性如下:

  • 总线只需两条线路:一条串行数据线 SDA 一条串行时钟线 SCL并利用电阻将电位上拉
  • 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址,主机可以作为主机发送器或主机接收器
  • 它是一个真正的多主机总线 如果两个或更多主机同时初始化数据传输可以通过冲突检测仲裁机制可防止数据被破坏
  • 串行的 8位双向数据传输位速率在标准模式下可达 100kbit/s 快速模式下可达 400kbit/s 高速模式下可达 3.4Mbit/s 单向传输可以高达5Mbit/s
  • 片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整
  • 连接到相同总线的 IC 数量只受到总线的最大电容 400pF 限制

SCL和SDA都是双向的通过上拉电阻连接电源 总线在空闲时都输出高电平 总线具有 线与功能。

2.2 I2C通信协议

该协议约定了通信的起始、停止信号以及数据有效性、响应、仲裁同步、地址广播等。

2.2.1 起始和停止信号

在这里插入图片描述

起始信号:SCL高电平时,SDA由高电平转换为低电平
停止信号:SCL高电平时,SDA由低电平转换为高电平

起始信号和停止信号一般都是主机发出,当有起始信号时,总线就会处于被占用状态,当有停止信号时,总线处于空闲状态。

2.2.2 数据有效性

在这里插入图片描述
SDA数据线在 SCL 的每个时钟周期传输一位数据。传输时, SCL 为高电平的时候 SDA 表示的数据有效,即此时的 SDA 为高电平时表示数据“1”,为低电平时表示数据“0”。当 SCL为低电平时, SDA 的数据无效,一般在这个时候 SDA 进行电平切换(数据位切换高/低),为下一位要传输的数据做好准备(即下一位要传1 SDA切换为高电平反之低平)。

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

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

相关文章

一分钟带你了解--电商控价

电商行业发展至今带来了许多机遇,但同时也伴随着一些挑战。品牌电商在运营过程中,面临着诸如乱价、低价、窜货和假货等问题,这些问题不仅损害了品牌的形象和价值,也破坏了市场秩序,侵害了消费者的权益。 电商控价是解…

7.3 数据库的基本查询

数据库的基本查询 1. 提要2. 简单查询3. 高级查询3.1 数据分页_limit3.2 排序_order by3.3 查询去重_distinct 4. 条件查询 1. 提要 2. 简单查询 3. 高级查询 3.1 数据分页_limit 3.2 排序_order by 3.3 查询去重_distinct 4. 条件查询

Day30 78子集 90子集II 491非递减子序列

78 子集 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例: 输入: nums [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ] 注意…

Finder扩展Easy New File功能介绍

asy New File是一款适用于Mac的实用软件,用于快速创建新文件和文件夹。以下是它的一些主要功能: 📂 快速创建文件夹:Easy New File允许您通过右键点击桌面或Finder窗口来快速创建新文件夹,省去了手动打开菜单的步骤&a…

如何解决spy++无法捕获窗口消息问题

问题: spy无法捕获窗口消息。 64位软件,windows11系统。 直接使用visual studio 工具->Spy运行。 解决: Spy 调试工具简介 - Visual Studio (Windows) | Microsoft Learn 也就是说32为软件需要使用32为spy,进程名称是spyxx…

Notepad++运行C语言输出乱码

编码-编码字符集-中文-GB2312 这时原程序中文会变成乱码,我是重新输入中文 重新编译执行即可

外汇天眼:模拟大赛报名人数突破一万大关

🔥🔥🔥 第二届模拟交易世界杯模拟交易赛区:截止到2024年1月15日上午9:58:06 报名人数已突破10000大关,累计模拟交易人数突破6800,日均模拟交易人数达1100,累计模拟交易金额超650亿,…

Nodejs基础3之fs模块的文件重命名和移动、文件的删除、文件夹操作、查看资源状态、fs路径

Nodejs基础二 fs模块文件重命名和移动文件的重命名文件的移动同步重命名和移动 文件的删除使用unlink进行删除unlink异步删除unlinkSync同步删除 使用rm进行删除rm异步删除rmSync同步删除 文件夹操作创建文件夹递归创建文件夹 读取文件夹删除文件夹rmdir删除文件夹删除递归文件…

记录centos7.9 离线安装fastllm 编译遇到的问题

centos7.9 安装fastllm 编译步骤 Step1安装cmake: 参考: https://bitsanddragons.wordpress.com/2022/09/19/error-cmake-3-1-or-higher-is-required-you-are-running-version-on-centos-7-x/ ​ 问题1:/lib64/libstdc.so.6: version GLIBCXX_3.4.20‘ not found …

request entity too large

1、分2中情况。 (1)带413 请求文件太大(不包含参数) 413 Request Entity Too Large (2)不带413 请求实体太大(包含参数,文件等) 客户端发送的实体主体部分比服务器能…

GoZero微服务个人探索之路(三)Go-Zero官方rpc demo示例探究

官方网址:https://go-zero.dev/docs/tasks/cli/grpc-demo 项目结构 demo包 两个文件均为protoc-gen-go-grpc自动生成构成一个完整的 gRPC 服务的定义和实现 democlient包 demo.go goctl生成的客户端代码 Request 和 Response 别名: 定义了 Request 和…

springboot+mysql大学生就业推荐系统-计算机毕业设计源码01535

摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对学生就业管理等问题,对学生就业…

【CGAL系列】---Mesh修复

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享CGAL中关于Mesh修复问题,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞关注,小易会继续努力分享,一起进步! 你的点赞就是我的动…

Java中单体应用锁的局限性分布式锁

互联网系统架构的演进 在互联网系统发展之初,系统比较简单,消耗资源小,用户访问量也比较少,我们只部署一个Tomcat应用就可以满足需求。系统架构图如下: 一个Tomcat可以看作是一个JVM进程,当大量的请求并发到达系统时&…

使用php代码调用jar包里面的类方法的实战操作

#php调用jar包# 需求说明 接到一个需求,网站是使用php开发的帝国cms,现接到需求是需要对接一个系统 ,但系统里面有一个数据加密字段,需要使用jar包进行加解密。 技术解决方案,资源包解决一切。下载就行了&#xff0…

Springboot整合Redission分布式锁使用实例

Springboot整合Redission分布式锁 引言:实际项目中,我们经常会遇到一些需要考虑使用分布式锁的场景,以防止页面重复请求或者多系统之间相互重复调用的产生业务偏差的问题; 例如: 1.并发的场景下,生成订单需…

LeetCode刷题---基本计算器

解题思路: 根据题意,字符串中包含的运算符只有和- 使用辅助栈的方法来解决该问题 定义结果集res和符号位sign(用于判断对下一数的加减操作),接着对字符串进行遍历。 如果当前字符为数字字符,判断当前字符的下一个字符是否也是数字字符&#x…

(2023版)斯坦福CS231n学习笔记:DL与CV教程 (2) | 图像分类与损失函数

前言 📚 笔记专栏:斯坦福CS231N:面向视觉识别的卷积神经网络(23)🔗 课程链接:https://www.bilibili.com/video/BV1xV411R7i5💻 CS231n: 深度学习计算机视觉(2017&#xf…

深度学习 Day25——J4 ResNet与DenseNet结合探索(DPN)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制🚀 文章来源:K同学的学习圈子 文章目录 前言1 我的环境2 pytorch实现DPN算法2.1 前期准备2.1.1 引入库2.1.2 设置GP…

如何构建高质量,低成本的移动机器人(AGV/AMR)?

中国移动机器人行业规模的不断扩大,低成本无人化是现市场需求突出的特点之一。然而研发一套完整的移动机器人导航方案不仅需要耗费大量的人力成本,还要经过漫长的市场验证,这将滞后整个产业的发展,并有可能错失市场的抢占先机。 如…