嵌入式常见协议---IIC协议

1.IIC(I²C)协议是什么?

全称 Inter-Integrated Circuit ,字面意思是集成电路之间,是I²C BUS简称,中文应该叫集成电路总线,是一种串行通信总线(同步串行半双工),使用多主从架构,由飞利浦公司在1980年代为了让主板、嵌入式系统或手机用以连接低速周边设备而发展。

2.IIC(I²C)是用来干什么的?

为了让主板或者嵌入式能与其他外设之间通信而开发的通信协议。比如STM32想要使用其他外设进行通信就需要接线-写代码-烧录运行  即STM32与外设通信过程;

3.IIC(I²C)通信过程

接线:搭建通信线路;写代码:指定通信传输协议;烧录运行:正式通信;;

通信可以比喻为两个人说话 :能不能听懂--双方之间约定的信号协议  ;;速度是否适合:双方满足时序要求。即两线——串行数据(SDA)串行时钟(SCL) 线在连接到总线的器件间传递信息。SDA:数据信号线,用于传输数据 SCLK:时钟信号线用于产生时钟频率,控制时序,实现协议过程;   一个IIC总线上,可以挂载多个外接设备。由于是单总线进行数据传输,所以IIC协议是半双工的。

3.1空闲状态

SDA与SCL同是出于高电平。由上拉电阻拉高

3.2起始信号与停止信号

开始信号:当SCLK时钟信号一直处于高电平状态时,SDA线由高电平跳变到低电平这个动作,表示起始信号

结束信号:当SCLK时钟信号一直处于高电平状态时,SDA线由低电平跳变到高电平这个动作,表示结束信号

3.3应答信号ACK

发送器每发送一个字节,就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。应答信号为低电平则为有效应答位(ACK简称应答位),表示成功接收该字节;若为高电平则为非应答位(NACK)表示未接收成功; 低有高无

在SCL高电平期间 SDL必须稳定;

等待数据线是高 return1; 是低 return 0;

SCL为1时观察SDA是否为0  确定是否产生应答

3.4数据有效性

在SCL电平上升沿到来之前和之后数据必须稳定 如下图所示

3.4.1发送数据

3.4.2读取数据

3.5数据的传送

每一位数据都有一个时钟脉冲相对应,即在SCL时钟的配合下,在SDA上逐位串行传输每一位数据

4.实际中如何完成通信? 

总结:在 I2C 通信中,主设备主动控制通信的开始和结束,以及数据的读取和写入。从设备则在被选择后响应主设备的请求,但不会主动发起通信。信号的发出是由主设备根据通信协议和操作需要决定的。

IIC总线可挂很多设备 多个主设备 多个从设备

IIC协议超详细解释(适合小白入门)_板栗阿叔的博客-CSDN博客

第52讲 I2C通信实验-M3_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/177882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

给csgo游戏搬砖新手的十大建议

1、不要参与赌博性质的开箱和炼金,因为真的会上瘾,赚了还好,亏了你得哭。 2、实在想要玩饰品,直接去悠悠有品或者网易buff看价格,底价再砍10元,总会有人愿意卖的。 3、在steam上不要接受陌生人的好友申请…

MidJourney笔记(4)-settings

前面已经大概介绍了MidJourney的基础知识,后面我主要是基于实操来分享自己的笔记。可能内容顺序会有点乱,请大家理解。 这次主要是想讲讲settings这个命令。我们只需在控制台输入/settings,然后回车,就可以执行这个命令。 (2023年11月26日版本界面) 可能有些朋友出来的界…

leetcode:有效的括号

题目描述 题目链接:20. 有效的括号 - 力扣(LeetCode) 题目分析 题目给了我们三种括号:()、{ }、[ ] 这里的匹配包括:顺序匹配和数量匹配 最优的思路就是用栈来解决: 括号依次入栈…

01 项目架构

关于我 曾经就职于蚂蚁金服,多年的后端开发经验,对微服务、架构这块研究颇深,同时也是一名热衷于技术分享、拥抱开源技术的博主。 个人技术公众号:码猿技术专栏个人博客:www.java-family.cn 前期一直在更新《Spring…

OCR文字识别工具 Cisdem OCRWizard激活最新 for Mac

为了提高内容识别的准确性,Cisdem OCRWizard提供供您选择两种模式:文件或名片。此外,它会自动分析的内容,标志着不同颜色的页面上几个区域根据给定部分的性质:文本(绿色标记),图像&a…

干货分享 | TSMaster采样点配置方法与消除错误帧流程

当通讯节点间采样点参数和波特率参数不匹配造成一些错误帧时,我们如何在TSMaster中设置以及调整波特率参数和采样点参数,来减少以及消除总线上出现的错误帧,进一步提高通信质量。本文着重讲解讲解如何借用TSmaster更加便捷地获取相应的采样点…

SpringBoot 入门学习

开发环境配置 JDK 1.8、Maven 3.8.8、 IDEA CE 2023.2 框架介绍 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置…

QT QComBox实现模糊查询

一、概述 在Qt中,可以通过QComboBox和QLineEdit实现模糊查询的功能。模糊查询是指根据用户输入的文本,在下拉框的选项中进行模糊匹配,并动态地显示匹配的选项。 二、基础知识 1、QCompleter (1)QCompleter 是 Qt 框架中提供的一个用于自动…

JOSEF 漏电继电器JHOK-ZBL1 DH-50L 系统1140V 电源AC220V

系列型号: JHOK-ZBL多档切换式漏电(剩余)继电器 JHOK-ZBL1多档切换式漏电(剩余)继电器 JHOK-ZBL2多档切换式漏电(剩余)继电器 JHOK-ZBM多档切换式漏电(剩余)继电器 …

【Java Spring】SpringBoot 五大类注解

文章目录 Spring Boot 注解简介1、五大类注解的作用2、五大类注解的关系3、通过注解获取对象4、获取Bean对象名规则解析 Spring Boot 注解简介 Spring Boot的核心就是注解。Spring Boot通过各种组合注解,极大地简化了Spring项目的搭建和开发。五大类注解是Spring B…

老师怎样处理校园欺凌

校园欺凌是一个让人痛心又不可忽视的问题。作为老师,该如何处理这种问题,既能够保护受欺凌的学生,又能够让施暴者得到应有的教训呢? 及时发现并介入 经常关注学生的动态,一旦发现有校园欺凌的苗头,就要及时…

pytorch读取tiny-imagenet-200的验证集(val)

ori_train torchvision.datasets.ImageFolder(root args.datadir /tiny-imagenet-200/train/, transformtransform)#可以获取class_idx的映射class_idx ori_train.class_to_idx val_annotations.txt中存储着每个图片对应的类别 获取验证集的标签 test_target []#读取val_…

python项目报错

解决办法:不要用配置的镜像脚本,直接用此命令 pip install pandas -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

Java第二十章多线程

线程简介 在 Java 中,并发机制非常重要。在以往的程序设计中,我们都是一个任务完成后再进行下一个任务,这样下一个任务的开始必须等待前一个任务的结束。Java 语言提供了并发机制,程序员可以在程序中执行多个线程,每一…

SimpleDateFormat在多线程下的安全问题

目录 情景重现 SimpleDateFormat解析 解决方案 局部变量 加锁 使用线程变量 使用DateTimeFormatter 情景重现 SimpleDateFormat类是Java开发中的一个日期时间的转化类。它可以满足绝大多数的开发场景,但是在高并发下会出现并发问题。接下来查看下文中的案例。…

Python中的datetime库

1. datetime datetime是Python中用于处理日期和时间的类,它包含在datetime模块中。使用datetime类,我们可以创建表示特定日期和时间的对象,以及进行日期和时间的计算和操作。 from datetime import datetime, timedelta# 获取当前日期和时间…

爬虫如何确定HTTP代理IP是否符合自己业务需求?

HTTP代理在许多业务场景中发挥着关键作用,但要确保其能够满足业务需求,需要考虑多个方面的因素。今天我们一起看看,要如何判断HTTP代理是否适合自己的业务,以及在选择HTTP代理时需要考虑的综合因素。 1. 稳定性 稳定性是HTTP代理…

使用Moment.js中获取上周的开始日期和结束日期(可自定义)

前言 有时候需求是这样的,想要获取上周的开始日期和结束日期,或者前几周的时间范围 比如今天是2023.11.28号,我想获取上周的周一到周日,也就是,上周的开始日期: 2023-11-20,上周的结束日期: 2023-11-26 1.…

爬虫系统Docker和Kubernetes部署运维最佳实践

在构建和管理爬虫系统时,使用Docker和Kubernetes可以带来诸多好处,如方便的部署、弹性伸缩和高可靠性。然而,正确的部署和运维实践对于确保系统稳定运行至关重要。在本文中,我将分享爬虫系统在Docker和Kubernetes上的最佳部署和运…

SSM卫生信息管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 卫生信息管理系统是一套完善的信息系统,结合springMVC框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模…