江协科技stm32————10-4 I2C通信协议

news2024/9/24 11:33:07

目录

I2C外设简介

I2C功能框图 

基本结构图(一主多从)

GPIO复用输入输出图 

 主机发送​编辑

 START

stop ​

EV5 (标志位)

BTF

主机接收

ACK

 软件/硬件波形对比

I2C外设简介

  •  可变多主机模型
  • 11110作为10位地址模式的标志位,后面跟着的8位位地址位

I2C功能框图 

 

一、SDA和SCL借用GPIO的复用模式与外部相连 

二、一个字节的数据写入DR,在数据移位寄存器没有数据移位时,DR的值转入移位寄存器,在其移位过程中,下一个数据就可以在DR中等待,移位完成立即接上,当R的值转入移位寄存器时,置状态寄存器的TXE位为1,表示发送寄存器为空

三、接收时,数据由SDA一位一位的移入移位数据寄存器,收齐之后,整体转入DR,置标志位RXNE为1,表示接收寄存器非空

四、STM32为 可变多主机模型,在作为从机时,支持同时响应两个从机地址,所以有自身和双地址寄存器

基本结构图(一主多从)

 

I2C高位先行,移位寄存器是左移的

GPIO配置为复用开漏输出模式 

GPIO复用输入输出图 

 

 主机发送

STM32默认为从模式

7位主发送流程:起始、从机地址、应答、数据1、应答、数据2、应答、……、停止 

EV8_1时,移位寄存器空,DR空,写入DR,

EV8时,数据由DR转入移位寄存器,此时DR空,移位寄存器非空,继续写入数据在DR中EV8状态消失,随后数据由DR转入移位寄存器,此时DR空,移位寄存器非空………………直到所有想要的数据发送完毕,EV8_2,移位寄存器空,BTF字节发送结束,随后STOP。

 START

写1产生起始条件

 

stop 

EV5 (标志位)

SB为1,表示起始条件已发送

BTF

 

主机接收

 

起始,EV5(起始条件已发送),寻址,接收应答,EV6(寻址已完成),数据1(代表数据正在通过移位寄存器进行输入),EV6_1(数据还在移位,没有标志位),数据1传输完成时,A响应,此时移位寄存器已经转入一个字节的数据1,将数据1的一个字节整体转入数据寄存器DR中(EV7:置RXNE,表示DR非空),重复此过程接收数据,当不在需要接收数据时,EV7_1:将ACK置0,和STOP请求

ACK

 

 软件/硬件波形对比

 

软件时序的时钟周期、占空比不如硬件规整(不影响效果) 

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

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

相关文章

「OC」初识MVC —— 简单学习UITableView的解耦

「OC」初识MVC —— 简单学习UITableView的解耦 文章目录 「OC」初识MVC —— 简单学习UITableView的解耦写在前面认识MVC解耦数据源代理 创建cell的基础类创建section的相关类分离数据源分离代理总结参考资料 写在前面 最近在学习了解MVC,然后开始发现&#xff0c…

VSCode连接SSH发生connection timeout

想用用实验室服务器连接vscode跑HM编码,今天突然连服务器连不到,报错:[13:47:13.068] Opening exec server for ssh-remotea406-server-lan [13:47:13.082] Initizing new exec server for ssh-remotea406-server-lan [13:47:13.089] Using c…

Apple LLM: 智能基础语言模型(AFM)

今天想和大家分享一下我最近在arXiv.org上看到苹果发表的一篇技术论文 Apple Intelligence Foundation Language Models (https://arxiv.org/abs/2407.21075),概述了他们的模型训练。这虽然出乎意料,但绝对是一个积极的惊喜! 这篇论文有那么多…

Dubbo如何传递链路追踪id?

1.什么是链路追踪? 分布式链路追踪就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。 链路跟踪主要功能: 故障快速定…

ET6框架(五)ECS组件式编程

文章目录 一、什么是ECS:二、ECS编程原则:三、组件生命周期: 一、什么是ECS: ECS即Entity、Component、System的简称,遵循组合优于继承的原则 Entity(实体) : 实体是一个概念,是指存在你游戏世界中的一个独立物体,是一…

图机器学习实战:从数据源到可视化

《动手学图机器学习》并不是一本纯粹介绍图机器学习理论的著作,Alessandro Negro 博士作为科学家和 Reco4 公司的 CEO,长期维护图数据源的推荐系统。他结合机器学习工程和图机器学习方法,通过推荐引擎、欺诈检测和知识图谱等案例,…

【书生2.4】InternLM + LlamaIndex RAG 实践

InternLM LlamaIndex RAG 实践 1 环境安装2 材料准备3 还原实验4 更换问题验证rag 【Intern Studio的gpu不足。本实验使用自有服务器】 1 环境安装 conda create -n llamaindex python3.10 conda activate llamaindex conda install pytorch2.0.1 torchvision0.15.2 torchau…

新160个crackme - 042-crackme

运行分析 提示需要key.dat文件 同目录下创建一个key.dat,提示key.dat内容不对 PE分析 C程序,32位,无壳 静态分析&动态调试 ida搜索字符串,找到关键字符串双击进入关键函数 对关键函数进行分析,注释如上当满足67行公…

信息安全数学基础(4)最大公因数

前言 在信息安全数学基础中,最大公因数(Greatest Common Divisor, GCD)是一个核心概念,它在密码学、数论等多个领域都有广泛应用。以下是对最大公因数的详细阐述: 一、定义 设a和b是两个非零整数,若整数d同…

论文阅读——Compact Single-Feed Dual-Mode Antenna for Active RFID Tag Application

文章目录 摘要一、天线设计A. 天线结构B. 天线演进 二、天线仿真与测试总结 论文来源:https://ieeexplore.ieee.org/document/7247651 摘要 文章提出了一种用于主动射频识别(RFID)标签应用的紧凑型单馈双模天线。该天线由一个位于FR4基板上的…

【读点论文】Scene Text Detection and Recognition: The Deep Learning Era

Scene Text Detection and Recognition: The Deep Learning Era Abstract 随着深度学习的兴起和发展,计算机视觉发生了巨大的变革和重塑。场景文本检测与识别作为计算机视觉领域的一个重要研究领域,不可避免地受到了这波革命的影响,从而进入…

ARM32开发——(二十一)ADC系统工作原理

1. ADC硬件结构 内部结构简化框图 2. ADC转换模式 2.1 单次转换,非扫描模式 2.2 连续转换,非扫描模式 2.3 单次转换,扫描模式 2.4 连续转换,扫描模式 3. 规则组和注入组 4. ADC数据对齐 5. ADC转换时间 总转换时间采样时间12 个 CK_ADC 周期 6. ADC内部校准 ADC有一个内置自…

前端速通面经八股系列(六)—— Vue(下)

接上ueue Vue下篇 四、路由1. Vue-Router 的懒加载如何实现2. 路由的hash和history模式的区别1. hash模式2. history模式3. 两种模式对比 3. 如何获取页面的hash变化4. $route 和$router 的区别5. 如何定义动态路由?如何获取传过来的动态参数?6. Vue-rou…

读书笔记:《深入理解Java虚拟机》(2)

Java内存区域与内存溢出异常 Java与C之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里 面的人却想出来。 对于从事C、C程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的“皇帝”&#xf…

[Leetcode 435][Medium]-无重叠区间-贪心

目录 一、题目描述 二、整体思路 三、代码 一、题目描述 题目地址 二、整体思路 要求移除区间的最小个数,也就是要求使得剩余区间互不重叠的最大区间数。 可以先将区间按右端点的值进行升序排序,然后遍历数组,在此基础上保留左端点>最小右端点的值…

【C++ Primer Plus习题】7.7

问题: 解答: #include <iostream> using namespace std;#define SIZE 10double* fill_array(double* begin, double* end) {for (begin; begin < end; begin){cout << "请输入值:";cin >> *begin;if (cin.fail()){cout << "非法数字…

PCIE-校验和纠错

各种编码&#xff1a; &#xff08;1&#xff09;ECRC/LCRC (为什么需要ECRC?) &#xff08;3&#xff09;PCRC&#xff08;Plaintext CRC&#xff0c;纯文本 CRC&#xff09;&#xff1a;是 IDE TLP 中的概念&#xff0c;在大多数方面&#xff0c;PCRC的计算方法与ECRC相…

【论文阅读】为大规模航空图像应用神经辐射场

【论文阅读】为大规模航空图像应用神经辐射场 ABSTRACTI. INTRODUCTIONV. EXPERIMENTSA. Evaluations on the entire datasetsA.1. State-of-the-Art comparisonA.2. Cloud-to-Cloud comparisonA.3. Accuracy and completeness B. Evaluations on the selected regionsB.1. Fi…

时序预测相关论文阅读笔记

笔记链接&#xff1a; 【有道云笔记】读论文&#xff08;记录&#xff09;https://note.youdao.com/s/52ugLbot用于个人学习记录。

Python-MNE-源空间和正模型07:修复BEM和头表面

有时在创建BEM模型时&#xff0c;由于可能出现的一系列问题(例如&#xff0c;表面之间的交叉)&#xff0c;表面需要手动校正。在这里&#xff0c;我们将看到如何通过将表面导出到3D建模程序blender&#xff0c;编辑它们&#xff0c;并重新导入它们来实现这一点。我们还将给出一…