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

IIC通信(STM32笔记)

简介

两根通信线:SDA和SCL。同步时序。有应答机制。可以跟多个设备之间进行通信(一主多从/多主多从)

SCL:同步时序,来中断的时候可以暂停

SDA:数据线,仅此一根,半双工

一主多从:从机只有被主机点名后才能控制IIC总线

多主多从:任何一个模块都有可能成为主机控制IIC

多主多从模式下在某时刻可能会有多个设备同时控制IIC总线,这时候IIC会进行总线仲裁

硬件电路

这个为一主多从的设备,空闲时刻下,主设备会控制SCL和SDA的控制权,只有当从机发数据和响应时,从机才会得到SDA的控制权,从机不能获取SCL的控制权,并且从机绝对不能主动地去获取SDA的控制权,只有主机在准备读取从机的数据或从机返回响应信号的时候从机才能得到SDA的控制。因为主机对SCL有绝对的控制权,所以主机的SCL输出模式设置为推挽输出从机的SCL输入设置为上拉输入或浮空输入

SDA:禁止一切设备输出高电平,采用上拉电阻+开漏输出的模式(避免推挽输出模式下一高一低造成短路或者毁坏)

开漏输出模式内部没有上拉电阻,需要外接一个弱上拉电阻。

采用开漏+上拉电阻避免了输入输出模式的频繁切换
输出模式,输出低电平就拉低,输出高电平就不用拉低操作
输入模式:观察高低电平直接将对应的0/1输入

时序基本单元

起始和终止

起始条件:SCL高电平期间,SDA从高电平切换到低电平

终止条件:SCL高电平期间,SDA从低电平切换到高电平

发送一个字节

SCL为低电平期间,主机将数据位依次放在SDA上,随后释放SCL。从机在SCL上升沿时读取数据位,SCL高电平期间SDA不能有任何数据变化

接收一个字节

SCL低电平期间,从机将数据位依次放在SDA上,随后主机释放SCL后,主机在SCL上升沿时读取数据

发送和接收应答

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

(主机接收到一个字节后,给从机发送一个应答位。告诉从机,你是不是要继续发。如果从机发送完一个字节后,接收到主机的应答,那么从机就继续发)

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

(主机发送字节,问有没有收到)

主机发送应答 = 我已收货 从机发送接收应答 = 买家已收货

时序

指定地址写

对于指定设备(Slave Address),在指定地址(Reg Address)下,写入指定数据(Data)

指定设备7位,最后一位是读写位(0写,1读)

主机每次发送完一个字节后,都会得到一个接收从机的应答位,此时主机会释放SDA,使SDA变为高电平,从机此时拉低电平就是代表从机的接收应答位为0,不拉低就是代表从机的接收应答为1。

当前地址读

对于指定设备(Slave Address),在当前地址指针指示的地址下,读取从机数据(Data)

设备内部寄存器是一个线性表。每次写入或者读出时,内部线性表的指针所指向的区域不会改变

起始信号,设备号+读写信号,随后进入接收应答。应答返回0后,数据传输方向改变,从从机到主机

指定地址读

对于指定设备(Slave Address),在指定地址(Reg Address)下,读取从机数据(Data)

前面两个时序是指定设备的指定地址随后接收应答返回0,随后后面两个时序,另起一个时序进行指定的地址读

http://www.gsyq.cn/news/1637708.html

相关文章:

  • trae接如claudecode
  • 167、PCIE硬件设计概述:PCB与连接器
  • 2026年AI论文软件测评:5款神器从大纲到答辩全链路通关攻略
  • 私有化部署Dify:四步在Windows本地搭建开源AI应用开发平台
  • 打通运维知识壁垒:以 CentOS7 与数据库为核心,搭建系统 - 网络 - 数据一体化运维体系
  • 用运筹学与强化学习构建个人发展量化分析模型
  • 图像和视频处理的核心概念(在图像上画直线)
  • Perplexity vs 秘塔AI vs Google SGE:三大AI搜索引擎横评
  • 四类芯片对比(一)
  • 【极简监控·番外篇】被逼无奈的“降维打击”:Java Remote Debug 救火指南
  • Allegro 生产文件导出:Gerber 274X 与钻孔文件 5 步标准化检查清单
  • 【算法从零到千】【32-41】位运算(详细讲解+题目运用)
  • 教育学论文降AI工具免费推荐:2026年教育学毕业论文AIGC超标4.8元亲测99.26%知网完整方案
  • 羽球联盟 HarmonyOS NEXT 实战系列 (03/20):四Tab首页容器与资讯首屏搭建
  • Agentic AI:换个角度,从问题拆解到交付验证
  • 数智驱动 全域增长:劲捷KINGJOY的跨界突围与全域增长之路
  • Linux指令实战学习之内存泄漏
  • 堪萨斯大学新研究:揭示读唇出错原因,有望提升读唇训练与AI转录能力
  • 小模型回到电脑本地,数据安全就自动解决了吗?
  • 一颗Codec芯片的生存法则:为什么AI语音产品需要TP9311?
  • 图像哈希算法(aHash/dHash/pHash)Python实战:3种方法对比与汉明距离阈值调优指南
  • 每个按键都能单独屏蔽!这款免费小工具,治好了我的误触强迫症
  • 生命涌现的小龙虾技能之【Cat Face Recognition Skill | 猫脸识别技能】简介
  • 虚拟化技术深度解析:从底层原理到产业实践,读懂云计算的核心基石
  • ARIMA 模型定阶实战:基于 ACF/PACF 图的 4 种典型模式识别与 p, q 值选择
  • CubeSandbox 线下体验
  • 电脑磁盘分区|C盘爆红|实现过程中出现的问题并解决
  • mcntools - Minecraft 模组 JAR 文件硬编码翻译工具
  • GitHub 热榜项目 - 周榜(2026-07-04)
  • 机器人5公里长跑背后的技术:强化学习与模型预测控制如何实现动态平衡