STM32,嵌入式系统中的I2C协议

I2C协议——读写EEPROM

关注我,共同交流,一起成长

  • 前言
  • 一、协议简介
  • 二、I2C特性及架构
  • 三、通信过程


前言

这是一种主要用于集成电路和集成电路(IC)通信,计算机中复杂的问题大多数就是用分层来进行解决,这个通讯也是一样的道理,这里就是会分为物理层和协议层,物理层就是确保了我们的原始数据在物理媒体的传输,协议层主要规定了通讯相关逻辑。


一、协议简介

这个地方物理层其实作用不大,主要是这个地方的相关的协议层的东西。物理层的一个特点就是每一个主机和从机都引出来两条线交接到这个SCL总线和SDA总线上面去。主机通过这个总线输出一个时钟,然后从机就依靠这个时钟信号来进行数据采集和数据发送,然后依靠这个时钟来协调通讯和同步。
数据包要搞清楚,能够理解好
具体来说就是关于基本读写、通讯起止、数据有效性、地址及数据方向、响应等等的东西。(写程序的时候对这个协议是必须要搞得滚瓜烂熟才行的。)这个协议传输过程的逻辑还是比较清晰的存在的。通过两个总线的不同状态来表示一个数据包,具体有起点、终点、读、写、复合格式,例如说:
在这里插入图片描述
这个起始点就是相当于上课了,那么接在这个总线上边的各个从机就要去听老师有没有点自己的adress名字了。
数据是否有效性也是通过两根总线的这种交互产生的

二、I2C特性及架构

STM32的I2C外设可用作通讯的主机以及从机,支持100Kbit/s和400Kbit/s的速率,支持7位、10位设备地址,支持DMA数据传输,并具有数据校验功能。
如果我们直接控制STM32的两个GPIO引脚,分别用作SCL和SDA,分别用作SCL及 SDA,按照上述信号的时序要求,直接像控制LED灯那样控制引脚的输出(若是接收数据时则读取SDA电平),就可以实现I2C通讯。同样,假如我们按照USART的要求去控制引脚,也能实现USART通讯。所以只要遵守协议,就是标准的通讯,不管您如何实现它,不管是ST生产的控制器还是ATMEL生产的存储器,都能按通讯标准交互。
意思就是,这里其实就是一种联对的逻辑,我们只需要更高级地设定好一个存在之后,然后系统的内部设定就会根据你的这个选择将两根总线的输出进行一定的调节控制,然后就用不着直接去控制相关总线了。
硬件实现协议:由STM32的I2C片上外设专门负责实现I2C通讯协议,只要配置好该外设,它就会自动根据协议要求产生通讯信号,收发数据并缓存起来,CPU只要检测该外设的状态和访问数据寄存器,就能完成数据收发。这种由硬件外设处理I2C协议的方式减轻了CPU的工作且使软件设计更加简单。
然后,这里有一个架构图的存在,通过这个架构图可以从中看到很多的别的东西,对于架构剖析来说的话,主要有这个通讯引脚、时钟控制逻辑(SCL线)、数据控制逻辑(SDA线)、整体控制逻辑(SMBA)之分。就是说,因为这个I2C里面存在着这样子的一个结构,就能够直接去控制那些引脚,就不用再去进行软件模拟了。

三、通信过程

使用12C 外设通讯时,在通讯的不同阶段它会对“状态寄存器(SR1及 SR2)”的不同数据位写入参数,我们通过读取这些寄存器标志来了解通讯状态。
只有了解了这个过程流程,此后在书写软件来进行数据的收发的时候就会方便很多了。那么我们通过这个状态寄存器就能够发现在这个背后传输过来的这个事件,
在这里插入图片描述
上面那行东西是控制寄存器发送的内容,而下面的那一行则是状态寄存器最终检测的内容了,控制寄存器每做一个步骤,状态寄存器都会产生一个事件,为了看是否进行控制下一个步骤。

关注我,持续了解行业知识;如果本文让你有所收获,期待你的点赞。
如果想要获取相关知识资料,请扫码关注微信公众号:

在这里插入图片描述

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

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

相关文章

OpenAI 文生视频大模型Sora,看完别说WC啊

OpenAI,发布了他们的文生视频大模型Sora(Sora 是一个 AI 模型,可以根据文本指令创建现实且富有想象力的场景) 来感受下震撼视觉冲击,看看你有没有说WC… 地址:sora 提示:一位时尚女性走在充满…

51单片机项目(30)——基于51单片机的心率血氧脉搏检测的proteus仿真

1.功能设计 可以测量脉搏、心率、血氧浓度、体温,并且实时显示在LCD1602屏幕上,(第一行是体温血氧,第二行是心率脉搏)。 (需要完整源文件的,直接看最后一节) 另外,还…

开源软件的影响力:塑造数字世界的无形之手

随着科技的飞速发展,开源软件已经成为了推动数字世界发展的重要力量。它不仅改变了软件开发的传统模式,还对整个科技行业乃至社会产生了深远的影响。在这篇文章中,我们将探讨开源软件的影响力以及它如何塑造我们的数字世界。 一、开源软件的…

蓝桥杯电子类单片机提升一——超声波测距

前言 单片机资源数据包_2023 一、超声波测距原理 二、超声波测距的应用 1.超声波的发射 2.单片机知识补充:定时器 3.超声波的接收与计时 4.距离的计算 1)定时器1为16位自动重载+1T11.0592MHz 2)定时器1为16位自动重载&am…

Peter算法小课堂—哈希与哈希表

额……字符串我们是第一次学,给大家铺一些基础的不能再基础的基础, 字符串比较大小 字符串大小的比较,不是以字符串的长度直接决定,而是从最左边第一个字符开始比较,大者为大,小者为小,若相等…

[01] Vue2学习准备

目录 vue理解创建实例插值表达式 {{}}响应式特性 vue理解 Vue.js 是一套构建用户界面的渐进式框架。 Vue 只关注视图层&#xff0c; 采用自底向上增量开发的设计。 Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。 创建实例 准备容器 <div id…

嵌入式中I2C 相关的硬件问题汇总及死锁解决办法

本文主要介绍如何解决I2C设备硬件设计上的各种问题&#xff0c;希望对大家有所帮助&#xff01; 关于I2C协议详细的讲解&#xff0c;可以参考之前的推文&#xff1a;全面解析 I2C 通信协议 一般情况下&#xff0c; i2c 设备焊接没什么问题&#xff0c;按照设备手册一步步来&a…

Github 2024-02-15 开源项目日报 Top9

根据Github Trendings的统计&#xff0c;今日(2024-02-15统计)共有9个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量TypeScript项目4Python项目2Solidity项目2Rust项目1JavaScript项目1Go项目1C项目1 Terraform: 以安全和可预测…

【研究生复试】计算机软件工程人工智能研究生复试——资料整理(速记版)——JAVA

1、JAVA 2、计算机网络 3、计算机体系结构 4、数据库 5、计算机租场原理 6、软件工程 7、大数据 8、英文 自我介绍 1. Java 1. 和 equals的区别 比较基本数据类型是比较的值&#xff0c;引用数据类型是比较两个是不是同一个对象&#xff0c;也就是引用是否指向同 一个对象&…

[职场] 优质简历怎么做 #学习方法#笔记

优质简历怎么做 简历是求职的“敲门砖”&#xff0c;直接影响着求职成败。然而&#xff0c;不少求职者对简历不太重视&#xff0c;认为简历就是写自己的经历。因此&#xff0c;在招聘现场&#xff0c;常会看到这样的简历&#xff1a;有的是从某招聘网站直接下载而来&#xff0c…

kali无线渗透之用wps加密模式破解出wpa模式的密码12

WPS(Wi-Fi Protected Setup&#xff0c;Wi-Fi保护设置)是由Wi-Fi联盟推出的全新Wi-Fi安全防护设定标准。该标准推出的主要原因是为了解决长久以来无线网络加密认证设定的步骤过于繁杂之弊病&#xff0c;使用者往往会因为步骤太过麻烦&#xff0c;以致干脆不做任何加密安全设定&…

基于FPGA的OFDM基带发射机的设计与实现

文章目录 前言一、OFDM描述二、本系统的实现参照 1.IEEE 802.11a协议主要参数2.不同调制方式与速率 3. IFFT映射关系4. IEEE 802.11a物理层规范5. PPDU帧格式三、设计与实现 1.扰码2.卷积编码与删余3.数据交织4.符号调制5.导频插入6.IFFT变换 7.循环前缀&加窗8.训练序列生成…

LocaSpace Viewer图新地球 4.4.9工程版授权

LocaSpace Viewer图新地球是一个独特的三维数字地球软件&#xff0c;它不用安装&#xff0c;且是一个轻量级的软件&#xff0c;永久授权激活&#xff0c;没有功能方面的限制&#xff0c;在这里&#xff0c;你可以根据需要进行各种操作&#xff0c;如获取多种在线地图资源&#…

Kubernetes安装部署 2

Kubeadm创建集群 如上所示&#xff0c;在阿里云的香港地域的ECS服务器上拉取下载Kubernetes官方提供的容器镜像 如上所示&#xff0c;在阿里云的香港地域的ECS服务器保存镜像到本地 Node A服务器的IP地址&#xff1a;192.168.0.130 端口号6443开放、部署Docker容器引擎、支持cr…

linux系统zabbix监控分布式监控的部署

分布式监控 服务器安装分布式监控安装工具安装mysql导入数据结构配置proxy端浏览器配置 zabbix server端监控到大量zabbix agent端&#xff0c;这样会使zabbix server端压力过大&#xff0c;使用zabbix proxy进行分布式监控 服务器安装分布式监控 安装工具 rpm -Uvh https://…

【C语言】简单贪吃蛇实现保姆级教学!!!

关注小庄 顿顿解馋૮(˶ᵔ ᵕ ᵔ˶)ა 新年快乐呀小伙伴 引言&#xff1a; 小伙伴们应该都有一个做游戏的梦吧&#xff1f;今天让小庄来用C语言简单实现一下我们的童年邪典贪吃蛇&#xff0c;顺便巩固我们的C语言知识&#xff0c;请安心食用~ 文章目录 贪吃蛇效果一.游戏前工作…

拿捏单链表

目录 引言 一&#xff1a;链表的定义 二&#xff1a;单链表的定义 三&#xff1a;单链表的增删查改 1.单链表增删查改及遍历的声明 注&#xff1a;在测试中创建指向头结点的指针plist 2.二级指针应用的说明 3.单链表的遍历 4.创建节点 5.单链表的插入 (1)头插 …

防御保护--内容安全过滤

目录 文件过滤 内容过滤技术 邮件过滤技术 应用行为控制技术 DNS过滤 URL过滤 防火墙 ---- 四层会话追踪技术 入侵防御 ---- 应用层深度检测技术 深度包检测深度流检测 随着以上俩种的成熟与完善&#xff0c;提出了所谓的内容安全过滤 当然上网行为确实需要治理&…

相机图像质量研究(16)常见问题总结:光学结构对成像的影响--IRCUT

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

BDD - Python Behave 用户自定义配置文件

BDD - Python Behave 用户自定义配置文件 引言默认 behave.ini 配置文件自定义配置文件json 格式的配置文件ini 格式的配置文件 实例应用项目结构代码BDD/Features/user_data.feature 文件BDD/steps/user_data_steps.py 文件BDD/environment.py 文件默认配置文件 behave.ini自定…