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

news2024/10/7 14:22:54

目录

     

 #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.coloradmin.cn/o/1862118.html

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

相关文章

【Docker】rancher 管理平台搭建

目录 1. 所有节点安装docker 2. 所有节点配置/etc/sysconfig/docker 文件修改如下配置 3. 配置证书 4. 镜像仓库导入镜像 5. 创建镜像仓库 5.1 查询上传的 image id 5.2 镜像打标签 5.3 镜像上推 6. server 节点 7. client 节点 8. 在 server 节点启动 9. 查看运行…

OpenCV的学习大纲

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,广泛用于各种计算机视觉应用中。以下是一个基本的OpenCV学习大纲,帮助初学者系统地学习OpenCV。 基础知识 计算机视觉简介:了解计算机…

Baidu Comate专业版90天使用福利免费送,AI编码解放程序员双手

具体的能力介绍和示例不赘述,可直接参考:Comate官网:Baidu Comate Coding mate, Pair you create 基于文心大模型,结合百度编程大数据,为你生成优质编程代码 你的AI编程助手,你的编码效率提升好帮手 Baidu…

C语言| 冒泡排序-从大到小-

【冒泡排序】最基本的排序方法,一定要掌握。 【冒泡排序的原理】 从左往右,相邻元素进行比较。 每次比较一轮,就会找到序列中最大的一个元素或者最小的元素。 这个数就会从序列的最右边冒出来,所以叫冒泡排序。 以从小到大排序为…

基于51单片机的RFID门禁系统-LCD12864显示

一.硬件方案 本RFID系统设计可分为硬件部分和软件部分。硬件部分以MFRC522射频识别模块为核心,结合主控模块STC89C52设计系统的外围硬件电路,实现对射频卡的控制与MCU之间的互通。软件部分采用C语言进行系统的下位机程序的开发,完成与IC卡之…

【C++进阶学习】第四弹——多态——迈向C++更深处的关键一步

前言: 在前面我们已经学习了C中继承的相关知识,已经体会到C在与C语言的对比中的便捷性,但是有一些问题并没有被解决,比如继承中如何使不同的派生类公用基类的一个函数,这就需要多态的知识,而且,…

数据可视化期末考试(编程)

1.KNN 1.新增数据的分类 import pandas as pd # 您的原始数据字典 data { 电影名称: [电影1, 电影2, 电影3, 电影4, 电影5], 打斗镜头: [10, 5, 108, 115, 20], 接吻镜头: [110, 89, 5, 8, 200], 电影类型: [爱情片, 爱情片, 动作片, 动作片, 爱情片] } …

240621_Git初始配置及常用命令

Git初始配置及常用命令 初始配置 在安装Git后,我们应该首先设置修改、查看用户名及邮箱 运行Git Bash,使用以下命令设置本地Git工具的用户名及邮箱(比如你的用户名是zhangsan,邮箱是zhangsan1123163.com)&#xff1…

Tomcat 下载部署到 idea

一、下载Tomcat Tomcat 是Apache 软件基金会(Apache Software Foundation)下的一个核心项目,免费开源、并支持Servlet 和JSP 规范。属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发…

昇思25天学习打卡营第2天 | 张量Tensor

张量Tensor 张量(Tensor)基础 张量是MindSpore中的基本数据结构的一种,类似于NumPy中数组和矩阵非常相似。它具有以下重要属性: 形状(shape)和数据类型(dtype):每个张量…

AI大模型的核心

前言 没错,AI大模型的核心成功因素通常可以归结为三大要素:大数据、大算力和强算法。这三个因素相辅相成,共同推动了现代人工智能技术的发展。 1. 大数据 • 定义:指的是涵盖广泛领域的海量数据,包括文本、图像、音…

tensorflow学习:错误 InternalError: Dst tensor is not initialized

tensorflow学习:错误 InternalError: Dst tensor is not initialized_dst tensor is not initialized.-CSDN博客https://blog.csdn.net/wanglitao588/article/details/77033659

我是如何从功能测试转成自动化测试的!

大家好,我是测试君。(六哥也行) 时间过得好快,不知不觉已经在这个行业摸爬滚打10年多了,也算是测试圈的一枚老兵了。 回想自己在自动化求知路上的种种,依然历历在目,看着自己一步步的走来&#…

Git 使用指南(附详细解释)

Git 是一个强大的版本控制系统,广泛用于软件开发中,用于跟踪文件的更改、协作工作等。无论你是新手还是有经验的开发者,掌握 Git 都是非常有益的。这篇博客将带你了解 Git 的基本使用,希望能帮助你快速入门并有效使用 Git。 1. 创…

【大数据】大数据的核心特征与挑战:Volume、Velocity、Variety、Veracity

目录 Volume:海量数据的挑战与机遇 挑战 技术挑战 机遇 Velocity:数据处理的速度与实时性 挑战 技术挑战 机遇 Variety:数据类型的多样性与复杂性 挑战 技术挑战 机遇 Veracity:数据的真实性与质量控制 挑战 技术挑…

《数字图像处理》实验报告四

一、实验任务与要求 对 Fig0403.tif 进行傅里叶变换并显示其频谱图像;fft2(x) 对 Fig0405.tif 图像进行填充和非填充的高斯滤波,并观察其不同;paddedsize,fft2(x,m,n) 由 sobel 空间滤波算子生成相应的频率…

A股3000点下方继续跳水,股民都跌懵了。

今天的A股跌懵了,让人几乎无法呼吸,盘面上出现2个重要信号,不废话,直接说重点: 1、今天两市又跳水了,但绝大多数的个股已经拒绝下跌,市场已然处于一个阶段底部,短线反弹随时可能出现…

找不到d3dcompiler_47.dll如何修复,这几种修复方法可搞定

最近,我在尝试运行一款游戏时遇到了一个问题,系统提示我丢失了d3dcompiler_47.dll文件。这让我感到非常困扰,因为这个问题导致我无法正常运行游戏。经过一番搜索和尝试,我找到了几种修复这个问题的方法,并成功解决了这…

k8s使用Endpoint将信息存储到集群外部数据库

https://mp.csdn.net/mp_blog/creation/editor/139864305 上一篇文章

01数字电子技术基础

第一节课:introduction 导论 决定了这门课的学习方法、学习内容、一个大概的把握、虽不是具体的技术,不是细节,但是这是一节思想 每门课都重要,但侧重点不同。 学习前人的思想和营养,为自己所用。 1.课程性质&#x…