当前位置: 首页 > news >正文

【江科大】STM32:I2C通信外设(硬件)

在将2C通信外设之前,我们先捋一捋,串口的相关特点来和I2C进行一个对北比。
首先:
1,大部分单片机,设计的PCB板均带有串口通信的引脚(也就是通信基本都借助硬件收发器来实现)
2.对于串口的异步时序,软件实现起来就异常麻烦。硬件实现非常简单。所以串口的实现基本就全倒向了硬件。
右边的图片中的串口时序就可以看出来软件模拟的复杂性
其次:II2C是同步时序,软件实现简单灵活,(在前面讲过的I2C时序,明显就简单的多)
硬件实现,相比之下,去并不能让人完全省心。
所以I2c的实现,软件模拟的情况是非常多的.
但是考虑到硬件I2C也有很多独有的优势,比如执行效率比较高,可以节省软件资源。
功能比较强大,可以实现完整的多主机通信模型,时序波形规整,通信速率快等等。
所以硬件I2C也有相应的应用场景。
现在我们就来学习一下关于I2C通信外设。也就是硬件实现I2C通信。

硬件资源:STM32内部的I2C外设

在这里插入图片描述
4.支持不同的通讯速度,标准速度(高达100kHz),快速(高达400kHz)
5.支持DMA(多字节传输,可以提高传输效率)
6.兼容SMBust协议(了解即可)
7.STM32F103C8T6硬件2C资源:I2C1、I2C2(硬件资源有限,软件就无限了)
硬件2C的引脚都是固定在对应的引脚上。(参考引脚定义表)
这里提一句,STM32参考手册中2C描述的多主机模型,如果对12C没学过基本是看不懂的。
只有先简单的学习过一主多从模型,再去看手册才比较容易理解。
STM32的硬件12C采用的就是多主机模型中的可变多主机,所以就必须按照该模型进行操作

当需要通信的时候,

1.第一步要将该从机先跳出来,变成主机。
2第二步指定要通信的从机
数据收发的核心部分:如下图红框中

发送的流程:

  1. 可以把一个字节写到数据寄存器DR
  2. 当移位寄存器没有数据移位时,会将数据寄存器中的数据移到移位寄存器中
  3. 在移位的过程中,我们就会把下一个数据写到数据寄存器中。
  4. 连续循环。
  5. 当数据寄存器的值移到移位寄存器中时,状态寄存器的TXE位为1,表示发送寄存器为空

接收的流程:

  1. 输入的数据一位一位的动引脚移位到移位寄存器里
  2. 当一个字节的数据收齐以后,数据就整体从移位寄存器转到数据寄存器·
  3. 同时置标志位RXNE,表示接收寄存器非空。
  4. 这个时候我们就可以把数据从数据寄存器读出来了

至于什么时候收,什么时候发?

我们就必须借助控制寄存器。起始,应答,停止,均是由控制电路完成。

I2C内部外设结构图

在这里插入图片描述

I2C基本结构

在这里插入图片描述

主机发送

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

主机接收

在这里插入图片描述

相关文章:

【江科大】STM32:I2C通信外设(硬件)

在将2C通信外设之前,我们先捋一捋,串口的相关特点来和I2C进行一个对北比。 首先: 1,大部分单片机,设计的PCB板均带有串口通信的引脚(也就是通信基本都借助硬件收发器来实现) 2.对于串口的异步时序&#xff…...

【机器学习300问】15、什么是逻辑回归模型?

一、逻辑回归模型是为了解决什么问题? 逻辑回归(Logistic Regression)是一种广义线性回归分析模型,尤其适用于解决二分类问题(输出为两个类别)。 (1)二分类举例 邮件过滤&#xff…...

C#调用C动态链接库

前言 已经没写过博客好久了,上一篇还是1年半前写的LTE Gold序列学习笔记,因为工作是做通信协议的,然后因为大学时没好好学习专业课,现在理论还不扎实,不敢瞎写; 因为工作原因,经常需要分析一些字…...

前端实现转盘抽奖 - 使用 lucky-canvas 插件

目录 需求背景需求实现实现过程图片示意实现代码 页面效果lucky-canvas 插件官方文档 需求背景 要求实现转盘转动抽奖的功能: 只有正确率大于等于 80% 才可以进行抽奖;“谢谢参与”概率为 90%,“恭喜中奖”概率为 10%; 需求实现 实…...

2024.1.23力扣每日一题——最长交替子数组

2024.1.23 题目来源我的题解方法一 枚举 题目来源 力扣每日一题;题序:2765 我的题解 方法一 枚举 每次都以两个相邻作为满足要求的循环数据,并且以一个布尔变量控制循环的位置 时间复杂度:O(n) 空间复杂度:O(1) pub…...

C语言王道练习题第七周两题

第一题 Description 输入一个学生的学号,姓名,性别,用结构体存储,通过 scanf 读取后,然后再 通过 printf 打印输出 Input 学号,姓名,性别,例如输入 101 xiongda m Output 输出…...

某马头条——day11+day12

实时计算和定时计算 流式计算 kafkaStream 入门案例 导入依赖 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-streams</artifactId><exclusions><exclusion><artifactId>connect-json</artifactId&…...

springboot实现aop

目录 AOP(术语)引入依赖实现步骤测试验证感谢阅读 AOP(术语) 连接点 类里面哪些方法可以增强&#xff0c;这些点被称为连接点 切入点 实际被真正增强的方法 通知&#xff08;增强&#xff09; 实际增强的逻辑部分称为通知&#xff08;增强&#xff09; 通知&#xff08;增强&…...

Golang 中高级工程师学习笔记

闭包的作用 闭包&#xff08;Closure&#xff09;是一种函数值&#xff0c;它可以引用在其外部定义的变量。闭包允许这些变量保持在函数内部&#xff0c;而不是被每次调用时重新创建。闭包的作用主要体现在以下几个方面 封装&#xff1a; 闭包允许函数访问其外部作用域中的变…...

USB-C接口给显示器带来怎样的变化?

随着科技的不断发展&#xff0c;Type-C接口已经成为现代电子设备中常见的接口标准。它不仅可以提供高速的数据传输&#xff0c;还可以实现快速充电和视频传输等功能。因此&#xff0c;使用Type-C接口的显示器方案也受到了广泛的关注。本文将介绍Type-C接口显示器的优势、应用场…...

写一份简单的产品说明书:格式和排版建议

现在的市场竞争那么激烈&#xff0c;拥有一份简洁明了的产品说明书可以说是很重要的。产品说明书不仅向用户提供了对产品的详细了解&#xff0c;还能够树立品牌形象&#xff0c;提升用户体验。 | 一、写一份简单的产品说明书—一些建议 1.创意封面设计 一个吸引人的封面设计能…...

【Python学习】Python学习21- 正则表达式(1)

目录 【Python学习】Python学习21- 正则表达式&#xff08;1&#xff09; 前言re.match函数实例 re.search方法re.match与re.search的区别参考 文章所属专区 Python学习 前言 本章节主要说明Python的正则表达式。 正则表达式是一个特殊的字符序列&#xff0c;它能帮助你方便的…...

Docker 和 Kubernetes:容器化时代的崛起与演变

在过去的十年间&#xff0c;容器化技术彻底改变了软件开发和部署的面貌。 Docker 的登场无疑是这场变革的催化剂&#xff0c;它将应用和服务的打包、分发、部署流程标准化&#xff0c;让开发者的生活变得更加简单。 紧随其后&#xff0c;Kubernetes 作为容器编排的领军者&#…...

美易官方京东养车回应索赔事件:推动行业健康发展并携手品牌商家加码补贴

近日&#xff0c;一则关于途虎养车起诉京东索赔500万元的新闻引起了业界的广泛关注。据华尔街见闻1月25日报道&#xff0c;针对此事&#xff0c;京东养车相关负责人作出了回应。京东养车表示&#xff0c;“震虎价”并非针对特定企业&#xff0c;其核心目的在于通过提升效率来改…...

深度学习与图像描述生成——看图说话(3)

目录 一、整体架构 二、学习策略 2.1 监督学习 2.2 无监督学习 2.3 强化学习 三、特征映射 3.1 定义 3.2 原理 3.3 关键技术 3.4 重要案例 3.5 特别注意下特征空间这一概念 四、语言模型 4.1 定义与原理 4.2 关键技术 4.3 重要性与作用 4.4 案例与应用 五、注…...

[SAP ABAP] ABAP编程中SY-SUBRC值的含义

在ABAP编程中&#xff0c;SY-SUBRC是一个系统变量&#xff0c;用于表示最近一次执行的系统命令(例如数据库操作、函数模块调用等)的结果状态码 SY-SUBRC的值用于检查命令是否执行成功&#xff0c;通常用于控制程序的流程 查询数据 使用SELECT语句选择查询 SY-SUBRC 0 &qu…...

测试模型分类

测试模型 1. 概述 软件测试和软件开发一样,都遵循软件工程原理,遵循管理学原理,所以理解好软件的开发模型会便于理解测试模型. 软件测试的一般流程: 我们发现一般的软件测试流程和软件开发的流程一样,但是这样的流程测试介入的较晚,对于前期重大的bug很难修复.所以测试的流程…...

mavros和PX4中的海拔高与椭球高转换

飞控高度传感器中一般有两种高度&#xff1a; 海拔高。也称AMSL&#xff08;Above Mean Sea Level&#xff09;height或者geoid height或者正高&#xff0c;顾名思义就是指高于当地平均海平面的高度。我猜气压计测得的高度应当就是与海平面相关的。椭球高。也称ellipsoid heig…...

洛谷刷题-【入门2】分支结构

目录 1.苹果和虫子 题目描述 输入格式 输出格式 输入输出样例 2.数的性质 题目描述 输入格式 输出格式 输入输出样例 3.闰年判断 题目描述 输入格式 输出格式 输入输出样例 4.apples 题目描述 输入格式 输出格式 输入输出样例 5.洛谷团队系统 题目描述 …...

文件包含技术总结

开发人员一般会把重复使用的函数写到单个文件中&#xff0c;需要使用某个函数时直接调用此文件&#xff0c;而无需再次编写&#xff0c;这中文件调用的过程一般被称为文件包含。 allow_url_fopen On&#xff08;是否允许打开远程文件&#xff09; allow_url_include On&…...

别再只用Canvas了!用Vue3组合式API优雅封装fabric.js的画笔与橡皮擦(附完整Hook代码)

重构Canvas交互&#xff1a;用Vue3组合式API封装fabric.js的工程化实践 在Web图形编辑领域&#xff0c;fabric.js以其强大的对象模型和交互能力成为许多开发者的首选。但当我们将它集成到Vue3项目中时&#xff0c;常常会遇到状态管理混乱、代码耦合度高的问题。本文将展示如何用…...

Fillinger智能填充脚本终极指南:如何快速实现图形元素的智能分布

Fillinger智能填充脚本终极指南&#xff1a;如何快速实现图形元素的智能分布 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts Fillinger是一款专为Adobe Illustrator设计的智能填充脚…...

基于springboot图书综合服务平台设计与开发(源码+精品论文+答辩PPT等资料)

博主介绍&#xff1a;CSDN毕设辅导第一人、靠谱第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交…...

GIS小白必看!Global Mapper处理正射影像的5个高频问题解答(含奥维地图导入避坑指南)

GIS新手实战指南&#xff1a;Global Mapper正射影像处理全解析 第一次打开Global Mapper时&#xff0c;那些密密麻麻的工具栏和复杂的参数设置确实让人望而生畏。去年我刚接触GIS时&#xff0c;处理无人机航拍的正射影像就踩了不少坑——坐标系选错导致影像偏移几百米、导出分幅…...

ESP32-S3 OV2640摄像头从AP模式到STA模式的保姆级切换教程(附完整代码)

ESP32-S3 OV2640摄像头从AP模式到STA模式的保姆级切换教程&#xff08;附完整代码&#xff09; 当你第一次拿到ESP32-S3开发板和OV2640摄像头模块时&#xff0c;可能会被官方例程中的AP&#xff08;热点&#xff09;模式所困扰。虽然AP模式让设备快速上线&#xff0c;但在实际家…...

3步搞定ERPNext自动化部署:让企业管理系统安装变得简单

3步搞定ERPNext自动化部署&#xff1a;让企业管理系统安装变得简单 【免费下载链接】erpnext_quick_install Unattended install script for ERPNext Versions, 13, 14 and 15 项目地址: https://gitcode.com/gh_mirrors/er/erpnext_quick_install 还在为复杂的ERPNext安…...

STM32温湿度监控系统设计与实现

## 1. 工业生产线温湿度监控系统设计### 1.1 系统架构设计 基于STM32F103C8T6微控制器的工业级温湿度监控系统采用三层架构&#xff1a; - **感知层**&#xff1a;3个DHT22数字温湿度传感器 - **控制层**&#xff1a;STM32F103C8T6最小系统板 - **云平台层**&#xff1a;ESP826…...

Qt操作Excel避坑指南:为什么我放弃了QAxObject而选择QXlsx?

Qt操作Excel的终极方案&#xff1a;从QAxObject到QXlsx的技术迁移实战 三年前接手一个工业数据采集项目时&#xff0c;我遇到了职业生涯中最棘手的Excel导出问题。客户现场同时安装了Office 2016和WPS&#xff0c;导致基于QAxObject开发的报表模块随机崩溃。更糟的是&#xff0…...

基于FDM - EDFM的油气藏地层压力场计算:MATLAB实战

基于有限差分-嵌入式离散裂缝网络&#xff08;FDM-EDFM&#xff09;的油气藏地层压力场计算&#xff0c;通过matlab代码实现&#xff0c;可提供理论指导和相关问题&#xff0c;可计算不同裂缝网络的压力分布。在油气藏工程领域&#xff0c;准确计算地层压力场对于理解油藏动态、…...

像素幻梦·创意工坊应用场景:复古风APP启动页加载动画AI生成方案

像素幻梦创意工坊应用场景&#xff1a;复古风APP启动页&加载动画AI生成方案 1. 引言&#xff1a;像素艺术的复兴与AI赋能 在移动应用设计领域&#xff0c;复古像素风格正经历一场文艺复兴。从独立游戏到主流应用&#xff0c;越来越多的产品选择用像素艺术打造独特的品牌识…...