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

stm32中IIC通讯协议

参考资料:大部分均引用b站江协科技课程、GPT及网络资料

        什么是IIC(i2C)通讯协议?

关键字:SCL、SDA、半双工、同步、串行。

        IIC(Inter-Integrated Circuit),也称为I2C(Inter-Integrated Circuit),是一种由Philips公司(现为NXP)开发的用于在集成电路之间进行短距离通信的串行总线协议。IIC协议非常适合低速设备之间的数据传输,具有简单、低成本和易于实现的特点。

      其中有几个问题:为什么是短距离?什么是串行总线?这个等学完概念后再进行解答。

概念:

IIC总线基本特性
  1. 双线结构:IIC总线采用两根双向线路进行通信:

    • SCL(串行时钟线):由主设备产生的时钟信号,用于同步数据传输。
    • SDA(串行数据线):用于传输数据,数据在时钟信号的控制下进行传输。
  2. 多主从结构:支持总线挂载多设备(一主多从、多主多从)。每个设备都有一个唯一的地址

  3. 地址分配IIC设备使用7位或10位地址来唯一标识每个设备。在传输数据时,主设备通过地址帧选择目标从设备

  4. 同步,半双工

数据传输
  • 数据帧:每次传输的数据帧由8位数据组成,从高位(MSB)到低位(LSB)传输
  • 应答位(Acknowledge Bit):在每个数据帧传输之后,由接收方发送一个应答位。若应答位为低电平,表示接收成功;若应答位为高电平,表示接收失败。
数据读写过程
  1. 写操作

    • 主设备发送起始条件。
    • 主设备发送从设备地址以及读写控制位(0表示写,1表示读)。
    • 从设备发送应答位。
    • 主设备发送要写入的数据。
    • 从设备发送应答位。
    • 重复数据传输和应答,直到所有数据传输完毕。
    • 主设备发送停止条件。
  2. 读操作

    • 主设备发送起始条件。
    • 主设备发送从设备地址以及读写控制位。
    • 从设备发送应答位。
    • 主设备切换到接收模式,读取数据。
    • 主设备发送应答位。
    • 重复数据读取和应答,直到所有数据读取完毕。
    • 主设备发送停止条件。

IIC时序:

1.起始和终止

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

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

2.发送和接收

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

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

3.应答

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

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

        了解了这些基本知识,再回到开头,IIC其只需要两根线控制,一根时钟线(SCL)控制同步,一根数据线(SDA)传输数据,因为只有一根数据线,数据逐个传输,因此是串行通讯。

        其中还提到了半双工,这里来解释下:

        半双工:数据可以在两个方向上传输,但不能同时进行,如iic,rs485

        全双工:数据可以在两个方向上同时进行传输。发送和接收可以同时进行,不会互相干扰,

如RS-232。

        单工:数据只能在一个方向上传输。发送方只能发送,接收方只能接收,如电视广播。

iic在长距离的环境中,容易受到干扰造成电平跳变,会严重影响数据的准确性,且IIC协议依赖于时钟线(SCL)和数据线(SDA)的同步工作。长距离可能导致信号延迟不一致,因此其适合短距离通讯。

相关文章:

stm32中IIC通讯协议

参考资料:大部分均引用b站江协科技课程、GPT及网络资料 什么是IIC(i2C)通讯协议? 关键字:SCL、SDA、半双工、同步、串行。 IIC(Inter-Integrated Circuit),也称为I2C(In…...

允许防火墙通过端口 6379(通常用于 Redis 服务)那些年因为连接失败而一起熬过的夜

要允许防火墙通过端口 6379(通常用于 Redis 服务),您可以按照以下步骤在防火墙中添加规则。这里提供了使用 firewalld 和 ufw 两种常见防火墙管理工具的方法。 使用 firewalld (CentOS、Red Hat 等) 1. 启动并启用 f…...

tsconfig.json的include和exclude作用

tsconfig.json中的include和exclude属性用于指定需要被编译的TypeScript文件和需要被排除的文件。‌ include属性:‌用于指定哪些.ts、‌.tsx或.d.ts文件需要被编译。‌如果不指定include属性,‌则默认当前目录下除了exclude之外的所有.ts、‌.d.ts、‌…...

firewalld(8) policies

简介 前面的文章中我们介绍了firewalld的一些基本配置以及NAT的相关配置。在前面的配置中,我们所有的策略都是与zone相关的,例如配置的rich rule,--direct,以及NAT,并且这些配置都是数据包进入zone或者从zone发出时设置的策略。 我们在介绍…...

为什么进口主食冻干那么高贵?必入榜主食冻干总结分享

新手养猫人常常会有这样的疑问:为何进口主食冻干价格如此昂贵,但仍有大量养猫达人对其推崇备至?与国产主食冻干相比,进口产品的价格高出3-4倍之多,那么这高昂的价格背后,进口主食冻干是否真的值得推荐&…...

状态模式在金融业务中的应用及其框架实现

引言 状态模式(State Pattern)是一种行为设计模式,它允许对象在内部状态改变时改变其行为。状态模式通过将状态的相关行为分离到独立的状态类中,使得状态转换更加明确和简洁。在金融业务中,状态模式可以用于实现交易状…...

redis学习(002 安装redis和客户端)

黑马程序员Redis入门到实战教程,深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目 总时长 42:48:00 共175P 此文章包含第5p-第p7的内容 文章目录 安装redis启动启动方式1:可执行文件启动启动方式2 基于配置文件启动修改redis配置文件 …...

在线客服系统多国语言,适合跨境外贸业务对外沟通 ,哈萨克语客服系统,根据浏览器语种标识自动切换...

我们看一下我们客服系统的哈萨克语展示。 演示网站:gofly.v1kf.com 有个客户,他们的业务主要是位于哈萨克斯坦,需求是访客端使用哈萨克语来展示。 现在这个界面就是哈萨克语的。当然,也可以切换成中文。界面上的文案已经切换成中文…...

等保2.0是否强制要求所有物联网设备都必须支持自动更新?

等保2.0对物联网设备自动更新的要求 等保2.0(网络安全等级保护2.0)是中国政府为了加强网络安全而推出的一套标准和要求。在物联网设备的安全管理方面,等保2.0确实提出了一系列措施,以确保设备的软件安全更新。这些措施包括&#…...

gin框架解决跨域问题

文章目录 前言一、使用github.com/gin-contrib/cors 前言 今天遇到了前后端跨域问题,前后端跨域解决蛮简单的,下面是解决方案 一、使用github.com/gin-contrib/cors go get github.com/gin-contrib/cors在路由的地方 r : gin.Default()corsConfig : c…...

4.判断登录用户选择按钮的展示

接着上一个文章,我们把按钮设置好了之后怎样可以做到登录的用户不同,选择展示的按钮不同? 我们可以从面向对象上手,例如获取到返回网站数据中,判断登录用户有特殊权限,就是管理员: # 1.判断登录…...

【硬核科普】存算一体化系统(Processing-in-Memory, PIM)深入解析

文章目录 0. 前言1. 提出背景1.1 存储墙1.2 功耗墙 2. 架构方案2.1 核心特征2.2 技术实现2.2.1 电流模式2.2.2 电压模式2.2.3 模式选择 2.3 PIM方案优势 3. 应用场景4. 典型产品4.1 鸿图H304.2 三星HBM-PIM 5. 存算一体化缺点6. 总结 0. 前言 按照国际惯例,首先声明…...

基于Java的壁纸网站设计与实现

💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…...

Zookeeper底层原理

ZooKeeper 是一个高可用的分布式协调服务,广泛应用于分布式系统中,用于解决分布式系统的一致性问题。下面将详细介绍 ZooKeeper 的底层原理,包括其架构、数据模型、核心机制和一致性协议等方面。 1. 架构 ZooKeeper 采用主从架构&#xff0…...

Spring Boot 事件监听机制实战【自定义 Spring Boot 事件监听】

前言: 上一篇我们分析了 Spring Boot 事件监听的原理,本篇我们来自定义实现自己的监听器。 Spring Boot 系列文章传送门 Spring Boot 启动流程源码分析(2) Spring Boot 启动流程源码分析(2) Spring Bo…...

AIGC笔记--Stable Diffusion源码剖析之DDIM

1--前言 以论文《High-Resolution Image Synthesis with Latent Diffusion Models》 开源的项目为例,剖析Stable Diffusion经典组成部分,巩固学习加深印象。 2--DDIM 一个可以debug的小demo:SD_DDIM 以文生图为例,剖析SD中DDIM的…...

【BUUCTF-PWN】13-jarvisoj_level2_x64

参考:BUU pwn jarvisoj_level2_x64 64位函数调用栈 - Nemuzuki - 博客园 (cnblogs.com) 64位,开启了NX保护 执行效果如下: main函数: vulnerable_function函数 read函数存在栈溢出,溢出距离为0x808 查找后门…...

项目实战--Spring Boot 3整合Flink实现大数据文件处理

一、应用背景 公司大数据项目中,需要构建和开发高效、可靠的数据处理子系统,实现大数据文件处理、整库迁移、延迟与乱序处理、数据清洗与过滤、实时数据聚合、增量同步(CDC)、状态管理与恢复、反压问题处理、数据分库分表、跨数据…...

开发者工具攻略:前端测试的极简指南

前言 许多人存在一个常见的误区,认为测试只是测试工程师的工作。实际上,测试是整个开发团队的责任,每个人都应该参与到测试过程中。 在这篇博客我尽量通俗一点地讲讲我们前端开发过程中,该如何去测试 浏览器开发者工具简介 开…...

git保存分支工作状态

git stash...

新手必看:Neeshck-Z-lmage_LYX_v2界面状态管理,让你的设置不再丢失

新手必看:Neeshck-Z-lmage_LYX_v2界面状态管理,让你的设置不再丢失 1. 工具简介:为什么需要状态管理? 当你第一次打开Neeshck-Z-lmage_LYX_v2这个绘画工具时,可能会被它简洁的界面所吸引。但真正让它与众不同的&…...

Windows系统优化神器:Winhance中文版全面使用指南

Windows系统优化神器:Winhance中文版全面使用指南 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance-zh_CN …...

告别繁琐配置:用Docker一键搞定RKNN模型转换环境(Windows/Linux/Mac通用)

跨平台RKNN模型转换实战:Docker化环境搭建与高效部署指南 当AI开发者需要在不同设备上部署模型时,环境配置往往成为最耗时的环节。特别是在使用Rockchip NPU进行边缘计算时,传统的虚拟机配置、交叉编译等方法既繁琐又容易出错。本文将介绍如何…...

别再手动改请求头了!用BurpSuite插件5分钟搞定自动化添加(附完整Java代码)

解放双手:用BurpSuite插件实现HTTP请求头自动化管理 每次安全测试时,你是否也厌倦了反复点击"拦截"按钮、手动添加X-Debug-Header或修改User-Agent?作为一名长期与BurpSuite打交道的安全工程师,我深知这种重复性操作不仅…...

别死记硬背了!一张图带你理清编译原理‘语法制导翻译’到‘代码优化’的核心链路

编译原理核心链路解析:从语法制导翻译到代码优化的实战指南 编译原理作为计算机科学的重要基石,常常让学习者感到知识点零散、难以形成系统认知。本文将以赋值语句为例,通过清晰的逻辑链路,展示从源代码到优化代码的完整编译过程&…...

[语音转文字工具] AsrTools:让音频转写效率提升300%的开源解决方案

[语音转文字工具] AsrTools:让音频转写效率提升300%的开源解决方案 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio in…...

MATLAB实战:如何用三种噪声干扰模拟器提升脉冲雷达抗干扰能力

MATLAB实战:三种噪声干扰模拟器在脉冲雷达抗干扰测试中的应用 雷达系统在现代电子战中扮演着关键角色,而抗干扰能力是评估雷达性能的重要指标。本文将深入探讨如何利用MATLAB构建射频噪声、调幅噪声和调频噪声三种干扰模拟器,通过完整的代码实…...

Multisim仿真避坑指南:振幅调制器设计时,如何搞定静态工作点和输出幅度?

Multisim仿真实战:振幅调制器设计的5个关键调试技巧 在电子工程课程设计中,振幅调制器是一个经典但充满挑战的项目。许多学生在Multisim仿真阶段就会遇到各种问题——静态工作点不稳定、输出波形失真、峰峰值不达标...这些问题往往让初学者感到挫败。本文…...

RTX5 | 消息队列实战 - 中断与线程间的数据桥梁

1. 消息队列在RTX5中的核心价值 第一次接触RTX5的消息队列功能时,我正被一个串口通信问题困扰:每次收到数据包都要在中断里完整解析,导致系统响应变慢。后来发现,消息队列就像快递柜——中断服务程序(ISR)是快递员,只需…...

ClickHouse:大数据领域的实时分析新宠

ClickHouse:大数据领域的实时分析新宠 关键词:ClickHouse、实时分析、列式存储、向量化执行、分布式数据库 摘要:在数据爆炸式增长的今天,企业对“实时看到数据价值”的需求越来越迫切。传统数据库在面对海量数据时,要么查询慢如蜗牛,要么成本高到离谱。而ClickHouse作为…...