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

【stm32】I2C通信协议

【stm32】I2C通信协议

概念及原理

  • 如果我们想要读写寄存器来控制硬件电路,就至少需要定义两个字节数据

    • 一个字节是我们要读写哪个寄存器,也就是指定寄存器的地址

    • 另一个字节就是这个地址下存储寄存器的内容

      • 写入内容就是控制电路,读出内容就是获取电路状态

I2C硬件规定(硬件电路)

一主多从
  1. cpu就是我们的单片机,作为总线的主机

    1. 任何时候都是主机掌控SCL线

    2. 在空闲状态下,主机可以主动发起对SDA的控制

    3. 只有在从机发送数据和从机应答的时候,主机才会转交SDA的控制权给从机

    4. 对于从机在任何时候,都只能被动的获取SCL时钟线,从机不允许控制SCL线

    5. 对于SDA数据线,只有在主机发送读取从机的命令后,或者从机应答的时候,从机才能短暂的获取SDA的控制权

L2C的SCL和SDA的输入输出配置问题
  1. 为了避免总线没协调好导致电源短路这个问题(从机一个输出高电平一个输出低电平),I2C的设计是,禁止所有设备输出强上拉的高电平

  2. 采用外置弱上拉电阻加开漏输出的电路结构

    1. 在这里插入图片描述

    2. 就是设备的SCL和SDA均要配置成开漏输出模式

  3. 在这里插入图片描述

    1. 要是想输出,就去拉杆子或放手,操作杆子变化就行

    2. 要是像输入,就直接放手,观察杆子高低就行

    3. 因为开漏模式下,开漏模式下,输出高电平就相当于断开引脚

      1. 所以在输入之前,可以直接输出高电平

      2. 不需要再切换成输入模式了

关于SCL和SDA时序问题

  1. 拽下SCL是因为:

    1. 一方面是占用这个总线

    2. 另一方面也是方便我们这些基本单元的拼接

      1. 就是我们之后会保证,除了起始和终止条件,每个时序单元的SCL都是以低电平开始低电平结束
  2. 主机接收一个字节数据

    1. 在接收前需要释放SDA,释放SDA就相当于切换成输入模式

    2. 或者理解成,所有设备包括主机都处于输入模式,当主机需要发送的时候,可以主动拉低SDA,而主机在被动接收的时候,就必须先释放SDA

    3. 因为总线是线与的特征,任何一个设备拉低,总线就是低电平

如果有相同的芯片挂在同一条总线

  • 这就用到地址中的可变部分了

  • 一般器件的最后几位是可以在电路中改变的

  • 比如MPU6050地址的最后一位,就可以由板子上的AD0引脚确定

    • 这个引脚接低电平,那他的地址就是1101 000

    • 这个引脚接高电平,那他的地址就是1101 001

http://www.lryc.cn/news/335198.html

相关文章:

  • 《论文阅读》构建情感共识并利用未配对数据生成共情对话 ACL 2021
  • xilinx fpga 程序固化(含sdk)
  • 更高效、更简洁的 SQL 语句编写丨DolphinDB 基于宏变量的元编程模式详解
  • Python中的sort()与sorted()用法
  • 15.队列集
  • Dubbo 集群容错
  • 杨辉三角形(蓝桥杯,acwing)
  • 计算系数(acwing,数论)
  • 阿里面试题二
  • 第9章 文件和内容管理
  • 【Erlang】【RabbitMQ】Linux(CentOS7)安装Erlang和RabbitMQ
  • pe格式从入门到图形化显示(七)-导出表
  • 图片地址生成二维码(通过前端实现)
  • window安装maven和hadoop3.1.4
  • Redis系列之主从复制集群搭建
  • spring框架介绍
  • 如果在 Ubuntu 系统中两个设备出现两个相同的端口号解决方案
  • 随手分享的APP链接,可能会让你“大型社死”
  • 国内AI大模型已近80个,哪个最有前途?
  • 美团一面:说说synchronized的实现原理?问麻了。。。。
  • P1123 取数游戏(dfs算法)
  • 交叉验证(Cross-Validation)
  • 【kears】(01)keras使用介绍
  • 2. TypeScript 安装与环境配置指南
  • python pygame库的略学
  • 大模型日报2024-04-09
  • 抖音视频如何下载保存(方法分享)
  • MySQL-用户与权限管理:用户管理、权限管理、角色管理
  • Vue.js中如何使用Vue Router处理浏览器返回键的功能
  • QT drawPixmap和drawImage处理图片模糊问题