当前位置: 首页 > news >正文

stm32f4xx-I2C

文章目录

  • 一、概述
    • 1.背景
    • 2.传输方向
    • 3.速度
    • 4.地址
  • 二、IIC通信过程
    • 1.I2C通信过程中,存在4种信号
    • 2.起始信号和停止信号
    • 3.同步信号
    • 4.数据收传输与应答
    • 总结:
  • 三、应用领域
  • 四、test。。。

一、概述

1.背景

I2C(IIC,Inter-Integrated Circuit)总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。一种串行、半双工总线,主要用于近距离、低速芯片之间的通信。IIC总线有两根双向信号线,一根数据线SDA用于收发数据,一根时钟线SCL(SCK)用于通信双方时钟的同步;IIC总线硬件结构简单,成本较低,应用广泛。

主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。

I2C总线简化了硬件电路PCB布线,降低了系统成本,提高了系统可靠性。因为I2C芯片(如mpu6050、ft5x06等)除了这两根线和少量中断线,与系统再没有连接的线,用户常用IC可以很容易形成标准化和模块化,便于重复利用。

在这里插入图片描述

2.传输方向

在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。

如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送。

如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下,主机负责产生定时时钟和终止数据传送。

3.速度

连接到相同总线上的IC数量只受总线最大电容的限制,串行的8位双向数据传输位速率在标准模式下可达100Kbit/s,快速模式下可达400Kbit/s,高速模式下可达3.4Mbit/s。

总线具有极低的电流消耗.抗高噪声干扰,增加总线驱动器可以使总线电容扩大10倍,传输距离达到15m;兼容不同电压等级的器件,工作温度范围宽。

4.地址

I2C总线上的每一个设备都可以作为主设备或者从设备,而且每一个设备都会对应一个唯一的地址(地址通过物理接地或者拉高,可以从I2C器件的数据手册得知,如AT24C02芯片,7位地址依次1010xxx, 最低三位可配,如果全部物理接地,则该设备地址为0x50),主从设备之间就通过这个地址来确定与哪个器件进行通信,在通常的应用中,我们把STM32作为主设备,把挂接在总线上的其他设备都作为从设备。

二、IIC通信过程

1.I2C通信过程中,存在4种信号

1.起始信号(条件):表示双方做好通信准备

2.主机发送1字节数据,指明从机地址和后续字节的传送方向

3.应答信号:有应答信号和无应答信号。有应答信号SDA为低电平,无应答信号为高电平

4.停止信号(条件):告诉从机通信结束,释放总线

在这里插入图片描述

在这里插入图片描述

2.起始信号和停止信号

在这里插入图片描述

3.同步信号

在这里插入图片描述

在这里插入图片描述

时钟线SCL低电平发送器向数据线SDA发送一位数据,此期间信号允许发送变化

时钟线SCL高电平接收器从数据线SDA读取一位数据,此期间信号不允许发送变化,必须保持稳定

SCL时钟线作用:告诉发送器和接收器对数据收发的时机

4.数据收传输与应答

先传输最高位,后传输低位发送完1字节后接收器必须发送1位应答位来回应发送器,所以一帧共有9位

在这里插入图片描述

在这里插入图片描述

总结:

IIC协议整个通信流程 = 起始信号 + 1字节(确定目标和传输方向)+ 应答信号(有0/无1) + 数据传输(发送/接收) + 停止信号

三、应用领域

摄像头控制、触摸屏、无人机、计步器(加速度/角速度/陀螺仪传感器)、心率(心率传感器)、激光测距、FM收音机(FM调频收音模块)

四、test。。。

相关文章:

  • 有了这个 Python 库,以后再也不用写正则表达式了
  • 学习python很无聊?看看这几个有意思的代码,拿去整蛊一下好朋友~ 适当娱乐哈
  • 【老生谈算法】matlab实现滤波器设计源码——滤波器设计
  • 后端研发工程师面经——手撕设计模式
  • 1679. K 和数对的最大数目-自定义哈希表解决
  • 【Objective-C内存管理之引用计数】
  • 找工作经验总结——嵌入式软件工程师必备的能力(表达篇)
  • 【vue基础篇】极简 ESLint + Prettier 配置教程
  • 线性代数-----矩阵复习2
  • 个人算法重刷记录
  • Charles日常使用
  • COLING 2022|CSL: 大规模中文科学文献数据集
  • angular开发新页面步骤总结
  • pta数据结构day12
  • Java并发编程解析 | 基于JDK源码解析Java领域中ReentrantLock锁的设计思想与实现原理 (一)
  • JavaScript-如何实现克隆(clone)函数
  • 【Amaple教程】5. 插件
  • 【comparator, comparable】小总结
  • emacs初体验
  • es6
  • Java 网络编程(2):UDP 的使用
  • Java 最常见的 200+ 面试题:面试必备
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Netty源码解析1-Buffer
  • nodejs:开发并发布一个nodejs包
  • Python3爬取英雄联盟英雄皮肤大图
  • Redash本地开发环境搭建
  • socket.io+express实现聊天室的思考(三)
  • 计算机常识 - 收藏集 - 掘金
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 前端技术周刊 2019-02-11 Serverless
  • 嵌入式文件系统
  • 使用parted解决大于2T的磁盘分区
  • 使用putty远程连接linux
  • 自制字幕遮挡器
  • MyCAT水平分库
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​LeetCode解法汇总518. 零钱兑换 II
  • #Lua:Lua调用C++生成的DLL库
  • #NOIP 2014# day.1 T2 联合权值
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (poj1.3.2)1791(构造法模拟)
  • (二)fiber的基本认识
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (十三)Flask之特殊装饰器详解
  • (五)网络优化与超参数选择--九五小庞
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • .“空心村”成因分析及解决对策122344
  • .describe() python_Python-Win32com-Excel