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

server/2024/10/20 5:36:42/

目录

     

 #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.ppmy.cn/server/53238.html

相关文章

Interview preparation--elasticSearch正排索引原理

正排索引 ElastciSearch 适合做或者说擅长做全文检索,在做全文检索的时候,他会通过生成倒排索引的方式来辅助查询,生成一个词项到 文档id的一个倒排表,这样直接通过 词项可以快速找到所有的 稳定信息。 但是并不是所有的搜索都是…

淘客返利系统的分布式事务处理

淘客返利系统的分布式事务处理 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨如何在淘客返利系统中实现分布式事务处理,确保系统的数…

通过代理从ARDUINO IDE直接下载开发板包

使用免费代理 实现ARDUINO IDE2.3.2 下载ESP8266/ESP32包 免费代理 列表 测试代理是否可用的 网站 有时,代理是可用的,但依然有可能找不到开发板管理器的资料包。 可以多换几个代理试试。 代理的配置 文件 -> 首选项 -> 网络 进入后做如下配置…

基于weixin小程序农场驿站系统的设计

管理员账户功能包括:系统首页,个人中心,农场资讯管理,用户管理,卖家管理,用户分享管理,分享类型管理,商品信息管理,商品类型管理 开发系统:Windows 架构模式&…

WPF----自定义滚动条ScrollViewer

滚动条是项目当中经常用到的一个控件&#xff0c;大部分对外项目都有外观的需求&#xff0c;因此需要自定义&#xff0c;文中主要是针对一段动态的状态数据进行展示&#xff0c;并保证数据始终在最新一条&#xff0c;就是需要滚动条滚动到底部。 1&#xff0c;xaml中引入 <…

微信小程序自定义指令

微信小程序自定义指令 在微信小程序开发中&#xff0c;自定义指令&#xff08;Custom Directive&#xff09;是一种强大的工具&#xff0c;它允许开发者在页面的模板中编写复用性高、逻辑清晰的代码片段&#xff0c;用于处理视图层的逻辑和交互。通过自定义指令&#xff0c;开发…

决策树之美:探索机器学习中的多面手

在机器学习领域&#xff0c;决策树算法以其独特的优势在众多算法中脱颖而出。作为一种监督学习算法&#xff0c;决策树通过递归地将数据集分割成越来越小的子集&#xff0c;直到满足某个停止准则&#xff0c;从而构建起一个树形结构的模型。本文将深入探讨决策树算法的主要优点…

python中的高阶函数介绍

在Python中&#xff0c;高阶函数是指那些可以接受函数作为参数或者返回函数作为结果的函数。这种特性使得函数式编程成为可能&#xff0c;并且可以编写出更加简洁和灵活的代码。以下是Python中一些常用的高阶函数&#xff1a; map() map() 函数接受一个函数和一个可迭代对象作为…