I2C通信外设

I2C外设介绍

在这里插入图片描述
主机,就是拥有主动控制总线的权利。从机,只能在从机允许的情况下,才能控制总线。
多主机模型可分为固定多主机和可变多主机。固定多主机就是总线上,有2个或2个以上固定的主机,上面固定为主机,下面是从机,只能是主机对从机进行控制,从机不能控制主机,当2个主机同时控制时,就会产生总线冲突,就要进行总线仲裁,仲裁失败的一方让出总线控制权。

可变多主机,总线上挂载多个设备,总线上没有固定的主机和从机,任何一个设备,都可以在总线空闲时跳出来作为主机,然后指定其他任何一个设备进行通信,通信完成后,跳出来的主机就要退回到从机的位置。对于STM32的I2C,使用的是可变多主机。

支持7位/10位地址模式(7位地址只能支持128个设备,地址数量不够时可以通过开辟多条I2C总线或者改用10位地址来解决,十位地址的情况下就需要规定起始位后的两个字节都作为寻址为使用,如果想将第二个字节作为寻址使用那就要将第一个字节前五位写入11110来作为标志)

兼容SMBus协议(此协议是基于I2C总线改进而来的,主要应用于电源管理系统中)是系统管理总线。

硬件I2C和软件I2C,硬件I2C在stm32中最多只能有2路I2C总线。软件I2C,没有限制,只要代码存得下。

I2C外设框图

在这里插入图片描述

复用引脚,I2C1的
在这里插入图片描述
复用引脚,I2C2的引脚,I2C2还可以重映射到PB8,PB9两个引脚
在这里插入图片描述
在这里插入图片描述

I2C基本结构

在这里插入图片描述

这个移位寄存器和数据寄存器是核心,因为这是高位先行,所以这个移位寄存器向左先行,在法送时,最高位移出去,一个SCL时钟,是移位一次;移位8次,这就能把一个字节,由高位到低位,依次放到SDA总线上。

接收时,数据从GPIO口,从右边依次移进来,移位8次,最终一个字节就接收完成了。

对于GPIO口都要配置成复用开漏输出模式,复用就是GPIO口的状态,由片上外设控制的;开漏输出,是I2C协议要求配置。

SCL这里,时钟控制器通过GPIO去控制时钟线。SDA部分,输出数据,通过GPIO,输出到端口,输入数据,通过GPIO,输入到移位寄存器。

主机发送

在这里插入图片描述
7位地址的主发送和10位地址的主发送,区别是,7位地址,起始条件后的一个字节是寻址;
10位地址,起始条件后的两个字节都是寻址,其中前一个字节,帧头:内容是5位的标志位11110+2位地址+1位读写位,后一个字节,是8位地址,两个字节加一起,构成10位寻址。

7位地址的主发送:流程是,起始,从机地址,应答,数据1,应答,数据2,应答,最后P停止。

首先,初始化后,总线默认空闲状态,STM32默认从模式,为了产生一个起始条件,STM32需要写入控制寄存器,之后,STM32由从模式转换为主模式,然后会发生EV5事件,EV5其实相当于检查标志位,SB表示状态寄存器的一个状态,SB置1,表示起始条件已发送,当检测起始地址已发送时,就可以发送一个字节的从机地址,从机地址需要写到数据寄存器DR中,写入DR后,硬件电路会自动把这一字节,转到移位寄存器里,在把这个字节发送到I2C总线上,之后硬件自动接收应答并判读,如没有应答,硬件就会置应答失败的标志位,在寻址完成后,会发生EV6事件,EV6事件结束后,发送EV8事件,然后接收应答,数据2就转入移位寄存器发送,又发生EV8事件,但此时下一个数据,已经被写到寄存器等着了,所以EV8事件消失,之后应答,产生EV8事件,写入数据寄存器,EV8消失。一旦检测到EV8事件,就开始写入下一个数据,最后,当想要发送的数据写完后,这时就没有新的数据写入数据寄存器,当移位寄存器移位完成时,此时就是移位寄存器器空,数据寄存器也空状态,这个事件就是EV8_2,检测到EV8_2时,产生终止条件。

主机接收

在这里插入图片描述
时序流程是,起始,从机地址+读,接收应答,然后接收数据,发送应答,接收数据,发送应答,最后一个数据给非应答,然后终止。

首先,写入控制寄存器start位,产生起始条件,然后等待EV5事件,EV5事件代表起始条件已发送,之后是寻址,接收应答,产生EV6事件,EV6事件代表寻址已完成,数据1代表数据正通过移位寄存器进行输入,,EV6_1是没有对应的事件标志,只适用于接收1个字节的情况,这个,EV6_1,是数据1还在移位,数据没有收到,所以事件没有标志位,之后当时序单元完成时,把应答位发送出去,移入的一个字节就整体转移到数据寄存器,同时置RXNE标志位,表数据寄存器费空,收到了一个字节的数据,就是,EV7事件,当把数据读走后,,EV7事件就没了,说明此时数据1被读走,当然数据1还没读走的时候,数据2就可以直接移入移位寄存器,之后,数据2移位完成,收到数据2,产生,EV7事件,读走数据2,,EV7事件没了,按照这个流程,就一直接收数据,最后,当不需要接收时,需要在最后一个时序单元发生时,提前把ACK置0,,并设置终止条件的请求,这就是,EV7_1事件,之后,在时序完成后,设置了ACK=0,这里就给出非应答,由于设置STOP位,产生终止条件。

软件硬件波形对比

在这里插入图片描述
上面波形是软件I2C波形,下面波形是硬件I2C波形。
软件和硬件生成时序异同:引脚电平变化趋势一样,时钟线规整程度上看,硬件I2C更加规整;软件I2C,由于加了延时,软件时序不规整。

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

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

相关文章

【Unity | Editor强化工具】资产快速访问工具

经常在Project窗口中翻找资产相对麻烦,Unity自带的Favorite功能又和Project窗口强绑定,且只能在双列视图下使用,故制作了一个可以在独立窗口中列举常用资产的小工具: Unity Asset Quick Access 。 CSDN弄了个Github加速计划&…

教你申请永久免费的 us.kg 域名 支持接入 Cloudflare

本文首发于只抄博客,欢迎点击原文链接了解更多内容。 前言 之前的永久免费域名 eu.org 已经很久没有审批新的域名了,今天给大家推荐的 us.kg 不需要审批,注册账号申请域名后直接可以使用,并且它也可以像 eu.org 一样接入 Cloudfl…

联合(union)和枚举(enum)学习(c语言)

前言 Hello,亲爱的小伙伴们,好久不见,今天我们继续来学习新的内容-----联合和枚举 如果喜欢作者菌的文章的话,就不要吝啬手中的三连呀,万分感谢!! 联合(共用体)(union&…

【计算机网络】计算机网络的组成与功能

计算机网络的组成与功能 导读一、计算机网络的组成1.1 从组成方式上1.1.1 硬件1.1.2 软件1.1.3 协议 1.2 从工作方式上1.3 从功能组成上 二、计算机网络的功能2.1 数据通信2.2 资源共享2.3 分布式处理2.4 提高可靠性2.5 负载均衡2.6 其它 结语 导读 大家好,很高兴又…

Web3开发框架分析

Web3开发框架旨在简化区块链和去中心化应用(DApp)的开发过程,为开发者提供必要的工具和库。以下是一些主要的Web3开发框架。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.Truffle Suite Truffl…

$MPC 登录MEXC,加速Partisia Blockchain 生态市场进程

Partisia Blockchain是一个以MPC技术方案为基础,具备可审计特性的隐私Layer1生态,与此同时,该链通过系列创新的系统架构,能够兼顾高迸发、安全、可拓展性以及可互操作特性。基于系列技术特性,Partisia Blockchain正在构…

OrangePi KunPengPro | linux系统下挂载U盘

OrangePi KunPengPro | linux系统下挂载U盘 时间:2024年6月6日21:32:53 文章目录 OrangePi KunPengPro | linux系统下挂载U盘1.参考2.操作fdisk -l 列出系统上所有磁盘的分区表信息将 /dev/sda1 分区挂载到 /mnt/udisk/ 目录显示文件系统的磁盘空间使用情况卸载文件…

RAG检索增强生成(1)-大语言模型的外挂数据库

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks Lewis P, Perez E, Piktus A, et al. Retrieval-augmented generation for knowledge-intensive nlp tasks[J]. Advances in Neural Information Processing Systems, 2020, 33: 9459-9474. RAG结合了信息检…

C++入门 ros服务通信

一、 开发环境 ubuntu20.04 ros版本noetic 参考视频 https://www.bilibili.com/video/BV1Ci4y1L7ZZ/?p52&spm_id_from333.1007.top_right_bar_window_history.content.click&vd_source4cd1b6f268e2a29a11bea5d2568836ee 二、 编写srv文件 在功能包下面创建srv文件夹…

【SpringBoot + Vue 尚庭公寓实战】项目初始化准备(二)

尚庭公寓SpringBoot Vue 项目实战】项目初始化准备(二) 文章目录 尚庭公寓SpringBoot Vue 项目实战】项目初始化准备(二)1、导入数据库2、创建工程3、项目初始配置3.1、SpringBoot依赖配置3.2、创建application.yml文件3.3、创建…

【Linux取经路】网络套接字编程——TCP篇

文章目录 前言十、Tcp Server 端代码10.1 socket、bind10.1 listen——监听一个套接字10.2 accept——获取一个新连接10.3 read——从套接字中读取数据10.4 write——向套接字中进行写入10.5 Tcp Service 端完整代码(单进程版)10.6 Tcp Server 端代码&am…

这个世界,对于心态好的人,就是个大游乐场,越刺激越好玩。对于胆小鬼,那就是地狱,随时随地都会受伤

心态决定你的世界:游乐场还是地狱 在这个充满变数的世界里,我们的心态决定了我们看待世界的方式。对于心态积极的人来说,世界就像一个巨大的游乐场,每一个挑战都是一个新的游戏,每一个刺激都是乐趣的一部分。而对于那…

解决跨域的几种方法

解决跨域的方法主要有以下几种: 1.CORS(跨域资源共享) CORS是一种W3C规范,它定义了一种浏览器和服务器交互的方式来确定是否允许跨源请求。 服务器通过设置响应头Access-Control-Allow-Origin来允许或拒绝跨域请求。例如&#xf…

[笔试训练](三十四)100:[NOIP2008]ISBN号码101:kotori和迷宫102:矩阵最长递增路径

目录 100:[NOIP2008]ISBN号码 101:kotori和迷宫 102:矩阵最长递增路径 100:[NOIP2008]ISBN号码 题目链接:[NOIP2008]ISBN号码_牛客题霸_牛客网 (nowcoder.com) 题目&#xff1a; 题解: 简单模拟 #include <iostream> #include<string> using namespace std; str…

5-Django项目--分页与搜索(资产页面)

目录 views/asset_data.py asset_data/asset_data.html 搜索与分页笔记: 搜索 整数搜索 字符串搜索 分页 views/asset_data.py # -*- coding:utf-8 -*- from django.shortcuts import render, redirect, HttpResponse from django.utils.safestring import mark_safe f…

电子元器件采购商城的售后服务保障

电子元器件采购商城的售后服务保障是用户在采购电子元器件时的重要考量因素之一。以下是常见的售后服务保障内容&#xff1a; 退换货政策&#xff1a; 质量问题退换货&#xff1a;如果用户收到的元器件存在质量问题&#xff0c;通常可以在一定时间内申请退换货。无理由退换货&a…

数据分析第一天(pandas简单的对快餐店数据进行操作获得想要的信息,使用apply,groupby)

前言 数据保存在 https://github.com/harkbox/DataAnalyseStudy 数据名称&#xff1a;快餐数据.tsv &#xff08;tsv是用\t作为字符分隔符的文件格式&#xff1b;csv是逗号&#xff09; 因此可以用pandas的read_csv函数读取数据 1.读取数据 import pandas as pd import matp…

PCA算法

PCA算法 原创 小王搬运工 时序课堂 2024-06-06 19:16 四川 1. PCA算法 PCA算法称为主成分分析&#xff0c;是一种无监督学习算法&#xff0c;主要用于数据降维和特征提取。 PCA是一种数据降维模型&#xff0c;它的基本模型是通过线性变换将数据转换到新的空间&#xff0c;这…

windows架设NTP时间服务器进行时间同步

一、windows架设NTP时间服务器 1.win11更改注册表 winR输入regedit 2.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config&#xff0c;找到Config目录&#xff0c;双击Config目录下的AnnounceFlags&#xff0c;设为5。 3.HKEY_LOCAL_MACHINE\SYSTEM\Current…

【养老政策问答】银发经济你怎么看?

概述 养老政策问答是一个专门为老年人设计的一站式问答服务平台。该应用旨在为用户提供关于养老政策的全面信息和专业解答&#xff0c;帮助老年人理解和获取相关政策的详细内容&#xff0c;享受无忧的老年生活。用户可以通过此应用获取关于基本养老保险、养老保险的缴费与领取…