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

10.IIC和BH1750

目录

IIC

常见的通信接口

IIC(I2C)的初识

IIC 通信的结构图

IIC 的时序基本单元

        开始信号 

        结束信号 

        发送一个字节 -- 主机-->从机 

        接收一个字节 -- 从机-->主机 

        发送应答 -- 收到数据,可以发送下个数据了

        接收应答 -- 主机检测从机是否发送应答,用来判断从机是否收到数据 

        注意的细节 

IIC 的写完整时序 STM32-->从设备

        发送 1 个字节 

        发送 2 个字节 

        IIC 的读完整时序 -- 先写在读 

IIC 器件地址如何确定

STM32 上如何实现 IIC 时序

光照传感器的讲解 

常见的 IIC 接口的设备

IIC 和光照传感器的关系

光照传感器

光照传感器和开发板的连接

光照传感器

        光照测量步骤 

        指令集合 

        器件地址确定 

        数据的处理 

STM32 中硬件 IIC 的讲解 

硬件 IIC

STM32F103ZET6 的硬件 IIC 资源

STM32 的 IIC 特点

STM32 的框图

STM32 的硬件 IIC 的 IO 口配置

主发送器传送序列图

主接收器传送序列图 


IIC

常见的通信接口

        常见的数字通信接口:UART SPI 单总线 IIC CAN 485 

        常见的模拟通信接口:电压型 电流型 – 通过 ADC 采集 

IIC(I2C)的初识

        IIC 历史 

                I2C(Inter IC Bus)是由 Philips 公司开发的一种通用数据总线 

        IIC 的通信线 

                SCL -- 时钟引脚 -- 时钟引脚一般由主机控制 

                SDA-- 数据引脚 -- 数据引脚可由主机或从机控制 

        IIC 的通信特点 

                单端同步串行半双工通信 主从通信

        IIC 的速率 

                IIC 总线的传输速率可以分为三种模式: 

                        标准模式(S 模式):最大传输速率为 100Kbps,即12.5KByte/s。 

                        快速模式(F 模式):最大传输速率为400Kbps,即50KByte/s。 

                        高速模式(HS 模式):最大传输速率为3.4Mbps,即435KByte/s。 

IIC 通信的结构图

        所有 I2C 设备的 SCL 连在一起,SDA 连在一起 

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

                开漏输出:只能输出低电平,不能输出高电平,结合上拉电阻使用 

                推挽模式也可以,但是需要输入输出模式切换,比较麻烦 

        SCL 和 SDA 各添加一个上拉电阻,阻值一般为 4.7KΩ/10KΩ 左右具有”线与”特性,当没有设备拉低这跟线的时候,这根线就是高电平,所以 SCL 和 SDA 空闲是高电平。

IIC 的时序基本单元

        开始信号 

                SCL 高电平期间,SDA 从高电平切换到低电平 

                开始信号谁发起:主机发起 

        结束信号 

                SCL 高电平期间,SDA 从低电平切换到高电平 

                结束信号谁发起:主机发起

        发送一个字节 -- 主机-->从机 

                SCL 低电平期间,主机将数据位依次放到 SDA 线上(高位先行),然后主机释放 SCL,从机将在 SCL 高电平期间读取数据位,所以 SCL 高电平期间 SDA 不允许有数据变化,依次循环上述过程 8 次,即可发送一个字节

        接收一个字节 -- 从机-->主机 

接收一个字节:SCL 低电平期间,从机将数据位依次放到 SDA 线上(高位先行),然后主机释放 SCL,主机将在 SCL 高电平期间读取数据位,所以 SCL 高电平期间 SDA 不允许有数据变化,依次循环上述过程 8次,即可接收一个字节(主机在接收之前,需要释放 SDA) 

        发送应答 -- 收到数据,可以发送下个数据了

发送应答:主机在接收完一个字节之后,在下一个时钟发送一位数据,数据 0 表示应答,数据 1 表示非应答

主机接收到 1 个字节之后,还需要接收后续的内容,主机发送应答(SDA 低电平)

主机接收到 1 个字节之后,不需要接收后续的内容,主机发送非应答(SDA 高电平)

SCL 高电平的时候,SDA 的电平决定是应答还是非应答,高电平非应答,低电平应答

        接收应答 -- 主机检测从机是否发送应答,用来判断从机是否收到数据 

接收应答:主机在发送完一个字节之后,在下一个时钟接收一位数据,判断从机是否应答,数据 0 表示应答,数据 1 表示非应答(主机在接收之前,需要释放 SDA)

从机接收到 1 个字节之后,从机会发送应答,表示接收成功。

注意:为什么以低电平作为应答?

        注意的细节 

IIC 的写完整时序 STM32-->从设备

        读写位:写 0 读 1 

        发送 1 个字节 

        发送 2 个字节 

        IIC 的读完整时序 -- 先写在读 

注意:读时序,一般先写再读,因为要通过写的过程告诉从机,主机想要什么数据或者干什么。

IIC 器件地址如何确定

        器件地址要从从设备手册确定,一般为 7 位的地址,也有 10 位的。 

STM32 上如何实现 IIC 时序

        模拟(软件)IIC 

                封装出来,起始信号,结束信号,发送 1 个字节,接收 1 个字节,发送应答,接收应答。然后再按照协议,拼积木拼起来只需要接在普通的 GPIO 口上就可以。

        硬件 IIC 

                需要确定单片机的 IIC 资源,必须接在有 IIC 功能的引脚上。 

光照传感器的讲解 

常见的 IIC 接口的设备

        IIC 是一种通信接口,下面列的是常见 IIC 接口器件 

        EEPROM(AT24C02) OLED MPU6050 光照传感器 

IIC 和光照传感器的关系

        IIC 是一种重要的通信接口,可以和 IIC 接口的设备进行通信. 

        光照传感器(BH1750)它的接口就是 IIC,所以选择 IIC 和它通信. 

光照传感器

光照传感器和开发板的连接

GND:                                 接 GND 

ADDR 或者 ADO:             内部直接接 GND,不需要接:器件地址 0100011 

SDA:                                 单片机 PB7 

SCL:                                  单片机 PB6 

VCC:                                  接 3.3V 

注意:ADO/ADDR 可以用来改变器件地址。

光照传感器相对于光敏电阻可以反应真实的光照强度

光照传感器

        光照测量步骤 

        指令集合 

        器件地址确定 

                根据 ADO/ADDR 引脚的电平,决定器件地址 

        数据的处理 

STM32 中硬件 IIC 的讲解 

硬件 IIC

        串口 SPI 单总线 IIC PWM 都可以通过 IO 口模拟实现,模拟实现的称为软件 

        STM32 自带的有硬件串口、PWM、IIC、SPI 

STM32F103ZET6 的硬件 IIC 资源

两个 IIC 接口

        如果使用硬件 IIC,IIC 接口的设备,必须接在有 IIC 功能的引脚上。 

        如果使用模拟 IIC,任意两个 GPIO 口就可以。

STM32 的 IIC 特点

        I2C 主设备功能 

        支持不同的通讯速度

STM32 的框图

STM32 的硬件 IIC 的 IO 口配置

主发送器传送序列图

主接收器传送序列图 

 

http://www.xdnf.cn/news/585109.html

相关文章:

  • 基于单片机的室内采光及可燃气体泄漏报警装置设计
  • SCons构建工具使用指南及示例
  • JAVA SE — 循环与分支和输入输出
  • 有没有开源的企业网盘,是否适合企业使用?
  • 记录:express router,可以让node.js后端文件里的路由分布的更清晰
  • vim以及vi编辑器常用快捷键指令
  • 服务器操作系统调优内核参数(方便查询)
  • 复杂项目中通过使用全局变量解决问题的思维方式
  • 2025中青杯数学建模B题思路+模型+代码
  • 【TTS回顾】CosyVoice 深度解析:基于LLM的TTS模型
  • iOS 直播弹幕功能的实现
  • 前端三件套之html详解
  • DevOps体系之Jmeter
  • java面试每日一背 day2
  • MySQL错误1419(HY000)解决方案:SUPER权限缺失与二进制日志启用冲突的3种处理方式
  • 内存管理子系统学习记录
  • uniapp实现H5、APP、微信小程序播放.m3u8监控视频
  • AVL树的实现
  • 【线段树】P2846 [USACO08NOV] Light Switching G|LG4|普及+
  • 无人机集装箱箱号识别系统准确率如何?能达到多少?
  • 微服务架构中的 RabbitMQ:异步通信与服务解耦(一)
  • Linux探秘:驾驭开源,解锁高性能——基础指令(续集)
  • LeetCode 1340. 跳跃游戏 V(困难)
  • 【Harmony】【鸿蒙】List列表View如果刷新内部的自定义View
  • 力扣HOT100之二叉树: 236. 二叉树的最近公共祖先
  • vue3定于组件名字的几种方法
  • 杨校老师竞赛课之青科赛GOC5-6年级组模拟题
  • ISO 26262- 5 评估硬件度量值
  • 2025年中青杯赛题浅析-快速选题
  • 12kV 环保气体绝缘交流金属封闭开关设备现场交流耐压试验规范