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.hqwc.cn/news/471242.html

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

相关文章

关于内存相关的梳理

1 关键字 总结 (lowmemory,anr in) 2 知识储备 虚拟机原理 垃圾回收算法 又包含标记 和清除两种算法 标记:程序计数器-已过时,可达性分析 具体可见 http://help.eclipse.org/luna/index.jsp?topic%2Forg.ec…

什么是 Docker 容器?以及操作 Docker 容器相关的命令汇总

镜像仓库常用指令:Docker 镜像仓库是什么?有哪些镜像仓库命令? 镜像常用指令:操作 Docker 镜像的常用命令 1. 什么是容器? 容器是镜像的运行实体。容器是基于镜像创建的可运行实例,并且单独存在&#xff0…

打字侠网站,提供免费的双拼打字练习

在当今信息时代,电脑已成为人们生活、学习和工作不可或缺的一部分。随着电脑的普及和广泛应用,打字成了一项必备的技能,尤其是对于从事编程和写作等工作的人来说甚至更为重要。而要想提高打字速度和准确度,良好的打字练习是必不可…

BMS再进阶(新能源汽车电池管理系统)

引言 一文入门BMS(电池管理系统)_bms电池管理-CSDN博客 BMS进阶(Type-C、PD快充、充电IC、SOC算法、电池管理IC)_充电ic asi aso功能-CSDN博客 本文是上面两篇博客的续篇,之前都是讲解一些BMS基本原理,…

算法之贪心

1.部分背包问题 代码1: 代码2: 但如果金币不能分割,那贪心就不是最优解,正确的做法是搜索或动态规划。 2.排队接水 3.在规定时间内参加最多的比赛 4.合并果子 使用memset初始化int数组时,第二个参数如果是0&#xff0…

《合成孔径雷达成像算法与实现》Figure6.18

% rho_r c/(2*Fr)而不是rho_r c/(2*Bw) % Hsrcf exp函数里忘记乘pi了 clc clear close all参数设置 距离向参数设置 R_eta_c 20e3; % 景中心斜距 Tr 2.5e-6; % 发射脉冲时宽 Kr 20e12; % 距离向调频率 alpha_os_r 1.2; …

AJAX——接口文档

1 接口文档 接口文档&#xff1a;描述接口的文章 接口&#xff1a;使用AJAX和服务器通讯时&#xff0c;使用的URL&#xff0c;请求方法&#xff0c;以及参数 传送门&#xff1a;AJAX阶段接口文档 <!DOCTYPE html> <html lang"en"><head><meta c…

Node.js开发-express框架

express框架 1) 介绍2) express 路由3) express 响应设置4) express 其他响应5) express中间件6) 静态资源中间件7) 获取请求体数据 body-parser8) Router 路由模块化9) EJS 模板引擎 1) 介绍 express 是一个基于 Node.js 平台的极简、灵活的 WEB 应用开发框架&#xff0c;官方…

Docker安装nginx和基本配置

Docker安装nginx和基本配置 一、拉取镜像&#xff0c;创建容器二、修改展示页面三、基本配置四、配置反向代理 一、拉取镜像&#xff0c;创建容器 &#x1f340;1、拉取 nginx 镜像 docker pull nginx:1.17.8&#x1f340;2、查看所有镜像 docker images&#x1f340;3、根据…

FL Studio 21.2.3.4004 All Plugins Edition Win/Mac音乐软件

FL Studio 21.2.3.4004 All Plugins Edition 是一款功能强大的音乐制作软件&#xff0c;提供了丰富的音频处理工具和插件&#xff0c;适用于专业音乐制作人和爱好者。该软件具有直观的用户界面&#xff0c;支持多轨道录音、混音和编辑&#xff0c;以及各种音频效果和虚拟乐器。…

2.15学习总结

2.15 1.聪明的质监员&#xff08;二分前缀和&#xff09; 2.村村通&#xff08;并查集&#xff09; 3.玉蟾宫(悬线法DP) 4.随机排列&#xff08;树状数组逆序对问题&#xff09; 5.增进感情&#xff08;DFS&#xff09; 6.医院设置&#xff08;floyd&#xff09; 聪明的质监员…