IIC学习笔记(立创STMF4开发板)

目录

     

 #I2C涉及相关知识

  #I2C相关介绍

欢迎指正,希望对你,有所帮助!!!


                                        个人学习笔记,参考文献,链接最后!!!

     

 #I2C涉及相关知识

        SDA串行数据线: Serial Data Line 串口数据线 缩写 SDA 主要用于数据传输过程中,将数据一个比特或者一组比特按照时间顺序逐个传输的一条线路,在这跟线上进行数据的收发。

        SCL串行时钟线:Serial Clock Line  串口时钟线 缩写  SCL SCL线负责同步数据传输过程中的时序,这跟线保障了IIC是同步通信,也就是使用相同的时钟。

        串行通信协议:串行通信协议指的是,一种在数据传输过程中,信息以位(bit)进行传输的方式,常见的串行通信协议有,SPI  IIC USART  RS232 RS458

        一主多从:一个主设备 (Master),多个从设备 (Slave),在主设备的SCL 和 SDA线上挂在着多个从设备,单片机作为主机,主导IIC总线运行,挂在IIC总线的所有模块都是从机,而从机只有被主机点名后才能控制IIC总线。

        多主多从:多个主设备(Master),多个从设备(Slave),进行通信

        半双工:就像是对讲机,通信双方只能,从A到B 或者B到A  ,A和B不能同时交互传输数据。

        同步通信:通信双方使用时钟相同,不需要规定波特率。

        从机地址:挂在在IIC总线上的从机地址,在通信时需要加入在数据帧中,使从机检测知道,主机和谁通信,从而对应的从机去响应。常见从机地址为7位。

        使用IIC这种通信协议的设备,都有SCL还有SDA这两种引脚,如果在一个模块上面发现了SCL还有SDA引脚那么这个模块就是使用IIC通信协议进行通信的。

        #I2C相关介绍

       I2C: IIC属于两线式串行总线,同步通信,由飞利浦公司开发,用于微控制器(MCU)和外围设备(从设备)进行通信的一种总线,通常用于一主多从或者(常用),多主多从(不常用)。

        IIC硬件电路图连接规则:设备所有的SCL 和SDA都要连接在一起,所有的SCL和SDA都要配置为开漏输出模式(就是没有办法输出高电平) SCL和SDA各自要添加一个上拉电阻,阻值一般为4.7K左右。

                         

        IIC通信开启条件:SCL高电平期间,SDA从高电平切换到低电平,随后SCL也从高电平切换到低电平,代表开始通信。

                                                        

        IIC通信终止条件:SCL高电平期间,SDA从低电平切换到高电平,这个过程是SCL先为高电平,在停止信号发出后,主设备不能再发送数据除非,在发出开始信号。

                                                     

        IIC数据传输:在IIC经过了其实条件之后,就可以传输数据了,IIC通信开始后,SDA变为传输的电平信息,但是在传输数据的时候,必须为SCL高电平,此时SDA电平不能发生变化,传输完成,SCL拉低,SDA在此时改编为需要传输的数据,然后SCL拉高,SDA输出传输,是这样的一个过程,如果在SCL高电平期间SDA电平发生改变会被认为是,起始或者停止条件的一种。

        IIC应答机制:为了保证数据有被接受,IIC有一个特性,就是应答机制,当主机给从机发送了一个数据,此时从机会给主机发送应答信号,告诉主机,自己有成功接收数据。

       IIC应答信号电平(NACK):IIC发送应答信息,时SCL处于高电平,SDA为低电平,此时有效应答,为ACK                          

                                         

                                                                                

        IIC非应答信号(NACK):如果从机没有收到信息,此时发送的信息,就是非应答信号,此时SCL为高电平,SDA为高电平。

                                   

                                        到此介绍完了IIC的所有信号,传输表示形式,

                                                

 #I2C收发数据时数据帧格式介绍

       

           IIC主机发送数据格式:7bit(addresss)+1bit(read/write)+1bit(ACK)+8bit(data)+1bit(ACK)  ,在IIC通信开启之后,SDA上的数据帧是一个字节,也就是8bit附带一个应答位,所以一个数据帧总共有9位,数据帧最高位位(MSB)读写位,0表示主设备向从设备(write)写数据,1表示主设备向从设备(read)读数据

       

        

        上面这种是IIC发送数据帧格式,而IIC读取数据帧格式是和发送IIC数据帧格式是不一样的,下文介绍,而IIC通信协议,从主设备向从设备发送数据帧格式如上图所示,格式如下。  

                 7bit(addresss)+1bit(read/write)+1bit(ACK)+8bit(data)+1bit(ACK) 

        IIC主机读取数据格式:首先SDA下拉,产生开始信号,主机发送   7bit(addresss)+1bit(read/write)+1bit(ACK),此时第8为是写,主机收到应答,将要访问的从机寄存器地址发送出去,此时主机转换为接受,从机转换为发送,此时主机从新发送开始信号,附带从机地址,此时,1bit(read/write)为read,最后产生停止信号,结束传输过程

                                然后本文不对硬件IIC进行介绍。【立创·天空星STM32F407VET6】入门手册 - 飞书云文档 (feishu.cn)IIC原理超详细讲解---值得一看-CSDN博客

                                 欢迎指正,希望对你,有所帮助!!!

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

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

相关文章

leetcode226反转二叉树

本文主要讲解反转二叉树的要点与细节,按照步骤思考更方便理解 c和java代码如下,末尾 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 具体要点: 1. 首先我们要理解题意, 反转二叉树具体…

MyBatis-Plus:快速入门

1. 概念 MyBatis-Plus(简称 MP)是一个MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。其突出的特性如下: * **无侵入**:只做增强不做改变,引入它不会对现有…

昇思25天学习打卡营第11天|基于MindSpore通过GPT实现情感分类

学AI还能赢奖品?每天30分钟,25天打通AI任督二脉 (qq.com) 基于MindSpore通过GPT实现情感分类 %%capture captured_output # 实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下面mindspore的版本号 !pip uninsta…

Kubernetes面试整理-RBAC(基于角色的访问控制) 的理解和配置方法

在 Kubernetes 中,RBAC(基于角色的访问控制,Role-Based Access Control)是一种控制访问权限的机制,用于管理用户和服务账户对集群资源的访问。RBAC 通过定义角色和角色绑定来控制谁可以对哪些资源执行哪些操作。 核心概念 1. Role 和 ClusterRole: ● Role:定义在特定命…

java基于微信小程序+mysql+RocketMQ开发的医院智能问诊系统源码 智能导诊系统 智能导诊小程序源码

java基于微信小程序mysqlRocketMQ开发的医院智能问诊系统源码 智能导诊系统 智能导诊小程序源码 医院导诊系统是一种基于互联网和定位技术的智能化服务系统,旨在为患者提供精准、便捷的医院内部导航和医疗就诊咨询服务。该系统整合了医院的各种医疗服务资源&#x…

【软件实施】软件实施概论

目录 软件实施概述定义主要工作软件项目的实施工作区别于一般的项目(如:房地产工程项目)软件实施的重要性挑战与对策软件项目实施的流程软件项目实施的周期 软件企业软件企业分类产品型软件企业业务特点产品型软件企业的分类产品型软件企业的…

PortSip测试

安装PBX 下载 免费下载 PortSIP PBX 安装PBX,安装后,运行 ,默认用户是admin 密码是admin,然后配置IP 为192.168.0.189 设置域名为192.168.0.189 配置分机 添加分机,添加了10001、10002、9999 三个分机&#xff0c…

Android Studio中使用命令行gradle查看签名信息

Android Studio中使用命令行gradle查看签名信息: 使用 Gradle 插件生成签名报告 打开 Android Studio 的 Terminal。 运行以下命令:./gradlew signingReport 将生成一个签名报告,其中包含 MD5、SHA1 和 SHA-256 的信息。 如果失败&#xf…

10分钟完成微信JSAPI支付对接过程-JAVA后端接口

引入架包 <dependency><groupId>com.github.javen205</groupId><artifactId>IJPay-WxPay</artifactId><version>${ijapy.version}</version></dependency>配置类 package com.joolun.web.config;import org.springframework.b…

【递归、搜索与回溯】记忆化搜索

记忆化搜索 1.记忆化搜索2.不同路径3.最长递增子序列4. 猜数字大小 II5.矩阵中的最长递增路径 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603;…

5000字深入讲解:企业数字化转型优先从哪个板块开始?

很多企业都知道数字化转型重要&#xff0c;但不知道应该怎样入手&#xff0c;分哪些阶段。以下引用国内领先数字化服务商 织信Informat 的数字化转型方法论材料&#xff0c;且看看他们是如何看待数字化转型的&#xff1f;数字化转型应该从哪先开始&#xff1f;如何做&#xff1…

Java中的类与接口:抽象与实现的艺术

Java中的类与接口&#xff1a;抽象与实现的艺术 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨Java中类与接口的设计原则&#xff0c;以及如…

P1107 [BJWC2008] 雷涛的小猫

[BJWC2008] 雷涛的小猫 题目背景 原最大整数参见 P1012 题目描述 雷涛同学非常的有爱心&#xff0c;在他的宿舍里&#xff0c;养着一只因为受伤被救助的小猫&#xff08;当然&#xff0c;这样的行为是违反学生宿舍管理条例的&#xff09;。在他的照顾下&#xff0c;小猫很快…

阿里云服务器数据库迁云: 数据从传统到云端的安全之旅(WordPress个人博客实战教学)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 一、 开始实战1.2创建实验资源1.3重置云服务器ECS的登录密码&#xff08;请记住密码&#xff09;1.4 设置安全组端口1…

C++ STL: std::vector与std::array的深入对比

什么是 std::vector 和 std::array 首先&#xff0c;让我们简要介绍一下这两种容器&#xff1a; • std::vector&#xff1a;一个动态数组&#xff0c;可以根据需要动态调整其大小。 • std::array&#xff1a;一个固定大小的数组&#xff0c;其大小在编译时确定。 虽然…

Adobe Acrobat Pro或者Adobe Acrobat Reader取消多标签页显示,设置打开一个pdf文件对应一个窗口。

Windows系统&#xff1a;Adobe Acrobat Pro或者Adobe Acrobat Reader首选项-一般-取消在同一窗口的新标签中打开文档&#xff08;需要重启&#xff09;的对勾&#xff0c;点击确定&#xff0c;彻底关闭后重启&#xff0c;这样打开的每一个PDF文件对应的是一个窗口&#xff0c;并…

力扣第214题“最短回文串”

在本篇文章中&#xff0c;我们将详细解读力扣第214题“最短回文串”。通过学习本篇文章&#xff0c;读者将掌握如何使用 KMP 算法来解决这一问题&#xff0c;并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释&#xff0c;以便于理解。 问题描述 力扣第214题…

拓展方法知识点

拓展方法的基本概念 概念 为现有非静态变量类型添加新方法。 作用 1.提升程序拓展性。 2.不需要再对象中重新写方法。 3.不需要继承来添加方法。 4.为别人封装的类型写额外的方法。 特点 1.一定是写在静态类中。 2.一定是个静态函数。 3.第一个参数为拓展目标。 4…

Bridging nonnull in Objective-C to Swift: Is It Safe?

Bridging nonnull in Objective-C to Swift: Is It Safe? In the world of iOS development, bridging between Objective-C and Swift is a common practice, especially for legacy codebases (遗留代码库) or when integrating (集成) third-party libraries. One importa…

重磅更新-UniApp自定义字体可视化设计

重磅更新-UniApp自定义字体可视化设计。 DIY可视化为了适配不同APP需要&#xff0c;支持用户自定义字体&#xff0c;自定义字体后&#xff0c;设计出来的界面更多样化&#xff0c;不再是单一字体效果。用户可以使用第三方字体加入设计&#xff0c;在设计的时候选择上自己的字体…