I2C协议

一.硬件连接

       I2C必须使用开漏(或集电极开路)的引脚,其引脚框图如下所示。        

        SCL0对应78K0的P6.0引脚,SDA0对应78K0的P6.1引脚。

        在使用开漏引脚通信时,需注意如下事项:

1)两条总线须外接上拉电阻;

2)通信前须设置引脚的I/O模式:

①输出信号时,PM6.0/PM6.1=0;

②输入信号时,PM6.0/PM6.1=1;。

3)开漏输出属于“线与”逻辑。故此,将总线置1即为释放总线,而总线上任一引脚置0,总线即为0。

二.I2C协议

        I2C总线协议定义如下:

1)只有在总线空闲时才允许启动数据传送;

2)在数据传送过程中,当时钟线为高电平时,数据线必须保持稳定状态,不允许有跳变。时钟线为高电平时,数据线的任何电平变化将被看作总线的起始或停止信号。

2.1 总时序图

   I2C总线串行数据传送时序如下图所示:

①起始信号:SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号。

②停止信号:SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。

③应答信号:每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。在第9个时钟信号的高电平期间:若SDA为0,则为应答;若SDA为1,则为非应答。

2.2 各信号时序图

(1)起始和停止信号

         起始和终止信号都是由主机发出的(从机均能检测到),在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。

        为什么在SCL高电平期间不允许SDA数据变动?

        因为,时钟线为高电平时,数据线的任何电平变化将被看作总线的起始或停止信号。

(2)应答信号(第9个时钟)

       SCL线上的时钟脉冲信号由主机产生。

①当产生第9个时钟脉冲低电平时,发送器件释放SDA线,接收器把SDA线拉低,以给出一个接收确认位;

②第9个时钟脉冲高电平时,发送器检测到这个确认位,然后开始下一字节的传送,下一字节的第一个时钟脉冲低电平期间接收器释放SDA(刚才确认信号为低电平)。

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

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

相关文章

【Java - API - 多线程】(01) 通过Java 8完成多线程的创建,快速上手

通过"Java 8"完成多线程的创建,快速上手; 实操 【前提】 使用"Windows 11"系统通过"IntelliJ IDEA"软件完成; 【目录】 “方式1”:通过继承"Thread"完成-正常操作;“方式2”…

【QT入门】 Qt自定义信号后跨线程发送信号

往期回顾: 【QT入门】 lambda表达式(函数)详解-CSDN博客 【QT入门】 Qt槽函数五种常用写法介绍-CSDN博客 【QT入门】 Qt实现自定义信号-CSDN博客 【QT入门】 Qt自定义信号后跨线程发送信号 由于Qt的子线程是无法直接修改ui,需要发送信号到ui线程进行修改…

【Unity投屏总结】投屏方案总结

【背景】 想方便自己在VR中工作,打算做一个能够挂多个屏幕的远程控制VR桌面。研究下来发现细分场景有很多,有点鱼和熊掌不可兼得的意味,细分如下。 【投屏场景与解决方案】 希望多人能够同时观看我的屏幕,也就是一屏投多屏&…

C语言知识复盘— 递归算法 | 函数 | 数组

递归 ○ 算法思想: 递归算法分为两大阶段 : 递和归,即就是有去(递去)有回(归来)。 递去:将递归问题分解为若干个规模较小,与原问题形式相同的子问题,这些子问题可以用相同的解题思路来解决。归…

spring cloud项目微服务间互相调用使用自定义标注进行鉴权方案

来吧,贴代码。 一、背景 我们有一个项目使用了spring cloud,有的微服务需要调用别的微服务,但这些调用没有鉴权;当初项目时间非常紧,同时这部分微服务有的对外也没有鉴权,在代码中设置了无须鉴权&#xf…

字节跳动面试被拷打:高效处理大量数据的JavaScript技巧

一、文章内容 时间分片宏任务微任务前置内容实现时间分片 二、时间切片 什么是时间切片?通过字面意思我们不难理解时间切片就是将时间分成多个片段进行一一渲染数据,时间切片是个抽象的问题,我们可能会想到JavaScript中window自带的setTimeout的延迟函数或者是 w…

Docker进阶教程 - 2 Docker部署SpringBoot项目

更好的阅读体验:点这里 ( www.doubibiji.com ) 2 Docker部署SpringBoot项目 已经学习了 Dockerfile 了,下面介绍一下如何将 SpringBoot 项目通过 Dockerfile 来部署到 Docker 中。 1 修改项目配置 首先需要准备一个 SpringBo…

初识二叉树

文章目录 一.什么是树二.什么是二叉树三.二叉树的访问次序四.特殊的二叉树五.求结点个数六.平衡二叉树总结 一.什么是树 树是由一个集合以及在该集合上定义的一种关系构成的。 集合中的元素称为树的节点,所定义的关系称为父子关系。 父子关系在树的节点之间建立了一…

安装OneNote for Win10 | Win10/Win11

前言 PC端的OneNote分为2个版本,分别是Microsoft Store版本和Office版本,Microsoft Store版本即为OneNote for Win10,此版的OneNote有最近笔记功能,但检索功能不如Office版本,个人认为2个版本各有优劣。 但OneNote f…

新人应该从哪几个方面掌握大数据测试?

什么是大数据 大数据是指无法在一定时间范围内用传统的计算机技术进行处理的海量数据集。 对于大数据的测试则需要不同的工具、技术、框架来进行处理。 大数据的体量大、多样化和高速处理所涉及的数据生成、存储、检索和分析使得大数据工程师需要掌握极其高的技术功底。 需要你…

nodejs中使用@maxmind/geoip2-node 查询地理位置信息

介绍 maxmind/geoip2-node 是一个Node.js模块,用于与MaxMind的GeoIP2数据库进行交互,从而获取IP地址的地理位置信息。MaxMind的GeoIP2数据库包含了全球范围内的IP地址和对应的地理位置信息,如国家、城市、经纬度等。使用maxmind/geoip2-node…

Python连接MariaDB数据库

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)【持续更新最新版】-CSDN博客 Python连接MariaDB数据库 一、安装mariadb库 pip install mariadb 二、连接…

机器视觉学习(六)—— 图像的颜色识别

目录 一、色彩空间 1.1 RGB色彩空间 1.2 HSV色彩空间 1.3 灰度 1.4 CMYK色彩空间 1.5 Lab色彩空间 二、色彩空间转换 三、识别颜色 3.1 识别一种特定的颜色 3.2 识别多种颜色 一、色彩空间 计算机视觉中常用的色彩空间有RGB色彩空间、HSV色彩空间、CMYK色彩空间、La…

34-Java传输对象模式 ( Transfer Object Pattern )

Java传输对象模式 实现范例 传输对象模式(Transfer Object Pattern)用于从客户端向服务器一次性传递带有多个属性的数据传输对象也被称为数值对象,没有任何行为传输对象是一个具有 getter/setter 方法的简单的 POJO 类,它是可序列…

解锁AI之门:协助探索Amazon Bedrock服务

AI愈加强大的功能和广泛的应用场景,正逐渐改变着我们的工作和生活方式。 Amazon Bedrock在AI的时代潮流中,也以其强大而灵活的功能特性,正在成为越来越多企业和个人的智能助手。 亚马逊云科技通过VERYCLOUD睿鸿股份的服务能力,使…

揭秘!自定义三维模型如何在RflySim中实现仿真(一)

一.技术背景 在无人系统研发过程中,需要进行大量的运动控制系统半物理实时仿真实验,传统仿真界面的运动轨迹显示多采用的是二维曲线形式,运动过程和状态是通过文本数据显示。随着数据量的增加,该方式缺乏直观性,不易观…

python四川火锅文化网站的设计与实现flask-django-php-nodejs

四川火锅文化网站的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品,体验高科技时代带给人们的方便,同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓,iOS相比较起来,…

蓝桥杯单片机快速开发笔记——特训2 按键的长按与短按

一、题目要求 在CT107D单片机综合训练平台上,通过I/O模式编写代码,实现以下功能: 系统上电后,关闭蜂鸣器、继电器和全部指示灯,数码管显示初始值为28,仅显示数码管最右边两位。利用定时器0实现10ms间隔定…

预测一下,GPT-5 会在什么时候发布,又会有哪些更新?

发布预期:GPT-5预计将于11月发布,可能与ChatGPT发布两周年同期。竞争态势:谷歌的Gemini与GPT-4 turbo已展开竞争。逐步发布:GPT-5可能通过模型训练过程中的中间检查点逐步发布。训练与安全测试:实际训练可能需3个月&am…

发布 AUR 软件包 (ArchLinux)

首发日期 2024-03-09, 以下为原文内容: 理论上来说, 我们应该平等的对待每一个 GNU/Linux 发行版本. 但是, 因为窝日常使用 ArchLinux, 所以对 ArchLinux 有一些特别的优待, 比如自己做的软件优先为 ArchLinux 打包发布. 本文以软件包 librush-bin 为例, 介绍发布 AUR 软件包的…