IMX6ULL裸机篇之I2C协议

news2025/3/12 9:33:26

一.  IIC实验简介

I2C 是最常用的通信接口,众多的传感器都会提供 I2C 接口来和主控相连。 比如摄像头、
加速度计、触摸屏等。
I.MX6U-ALPHA开发板 使用 I2C1 接口连接了一个距离传感器 AP3216C ,本章我们就来学习如何使用 I.MX6U I2C 接口来驱动 AP3216C ,读取 AP3216C 的传感器数据。

二.  I2C协议

1.  I2C简介

I2C 是很常见的一种总线协议 I2C 使用两条线在主控制器和从机之间进行数据通信。
一条是 SCL( 串行时钟线 ) ,另外一条是 SDA( 串行数据线 ) ,这两条数据 线需要接上拉电阻,总线空闲的时候 SCL SDA 处于高电平。
I2C 总线标准模式下速度可以 达到 100Kb/S ,快速模式下可以达到 400Kb/S

2.  I2C协议物理连接

I2C 是支持多从机的,也就是一个 I2C 控制器下可以挂多个 I2C 从设备,这些不同的 I2C
从设备有不同的器件地址,这样 I2C 主控制器就可以通过 I2C 设备的器件地址访问指定的 I2C
设备了。
一个 I2C 总线连接多个 I2C 设备,如下图:

3.  I2C协议

(1)   I2C 协议术语

I2C总线关键几点说明:
  I2C 使用两条线:SCL与SDL。这两根线必须要接一个上拉电阻,一般是 4.7K
②  I2C 是支持多从机的。
也就是一个 I2C 控制器下可以挂多个 I2C 从设备。通过从机地址来区分访问哪个从设备。
从机地址一般可以通过看器件手册知道。

起始位:

I2C 通信起始标志,通过这个起始位就可以告诉 I2C 从机,“我”要开始进行 I2C 通信了。在 SCL 为高电平的时候, SDA 出现下降沿就表示为起始位。
如下图所示:

停止位:

停止 I2C 通信的标志位,和起始位的功能相反。在 SCL 位高电平的时候,SDA

出现上升沿就表示为停止位。

如下图所示:

数据传输

I2C 总线在数据传输的时候要保证在 SCL 高电平期间, SDA 上的数据稳定,因此 SDA
的数据变化只能在 SCL 低电平期间发生。

如下图所示:

应答信号

I2C 主机发送完 8 位数据以后会将 SDA 设置为输入状态,等待 I2C 从机应答,也就是
等到 I2C 从机告诉主机它接收到数据了。
应答信号是由从机发出的,主机需要提供应答信号所 需的时钟。
主机发送完 8 位数据以后紧跟着的一个时钟信号就是给应答信号使用的。从机通过 SDA 拉低来表示发出应答信号,表示通信成功,否则表示通信失败。

(2)   I2C读写时序

I2C 写时序

I2C 总线单字节写时序 ,如下图所示:

 

具体步骤如下:

 开始信号。

 发送 I2C 设备地址。

每个 I2C 器件都有一个设备地址,通过发送具体的设备地址来决定访问哪个 I2C 器件。这是一个 8 位的数据,其中高 7 位是设备地址,最后 1 位是读写位,为 1 表示读操作,为 0 表示写操作。

③ I2C 器件地址后面跟着一个读写位,为 0 表示写操作,为 1 表示读操作。

  从机发送的 ACK 应答信号。

⑤ 重新发送开始信号。

⑥ 发送要写入数据的寄存器地址。

 从机发送的 ACK 应答信号。

  发送要写入寄存器的数据。

⑨ 从机发送的 ACK 应答信号。

  停止信号。

I2C 读时序

I2C 总线单字节读时序,如下图所示:

I2C 单字节读时序比写时序要复杂一点。
读时序分为 4 大步骤:
第一步:发送设备地址,
二步: 发送要读取的寄存器地址,
第三步:重新发送设备地址,
第四步: I2C 从器件输出要 读取的寄存器值。

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

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

相关文章

自学网络安全有什么好方法?

一、网络安全学习的误区 1.不要试图以编程为基础去学习网络安全 不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,且过渡到网络安全用到编程的用到的编程的关键点不多。一般人如果想要把编程学好再开始学习网络安全往…

深度学习AI编译器-TVM简介

1.为什么需要深度学习编译器 深度学习编译器主要为解决不同框架下训练的模型 部署到指定的某些设备上时所遇到的一系列复杂的问题,即将各种深度学习训练框架的模型 部署到各种硬件所面临的问题; 首先深度学习领域,从训练框架看,当…

C++ 编译过程(附简单实例)

C 编译的四个阶段:预处理、编译、汇编和链接。 这里以 g 为例,用到的文件分别为 mymath.h、mymath.cpp 和 main.cpp ,代码如下: // mymath.h extern int add(int, int);// mymath.cpp #include "mymath.h" // implemen…

攻防世界-web-newscenter

题目描述:打开链接,只有一个搜索框,然后就是一条一条新闻的记录 开启burpsuite,我们在搜索框中随便输入点什么,然后进行搜索,看下抓到的包 这里搜索的时候只有一个search参数,查询到的新闻数也变…

花6个月面过京东软件测试岗,拿个20K不过分吧?

背景介绍 计算机专业,代码能力一般,之前有过两段实习以及一个学校项目经历。第一份实习是大二暑期在深圳的一家互联网公司做软件测试,第二份实习由于大三暑假回国的时间比较短(小于两个月),于是找的实习是在…

通过Python的fitz库提取pdf中的图片

文章目录 前言一、fitz库是什么?二、安装fitz库三、查看fitz库版本四、pymupdf库是什么?五、安装pymupdf库六、查看pymupdf库版本七、fitz和pymupdf是什么关系?八、提取pdf中的图片1.引入库2.定义pdf路径3.打开PDF文件4.遍历所有页面5.获取页…

javaWeb ssh小区物业管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh小区物业管理系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0…

Pytest测试框架中,setup和teardown函数的作用及使用方法

作为一名Python开发人员,您一定知道Pytest是一个广泛使用的Python测试框架。 它具有易用性和灵活性,可以帮助您快速编写测试用例,并且能够支持包括单元测试、集成测试、功能测试等多种测试类型。而其中,setup和teardown函数是Pyt…

C++三大特性—多态 “抽象类与虚函数表”

抽象类和虚函数表是 C中实现多态性的重要概念,它们对于学习 C非常重要。 掌握抽象类和虚函数表的使用方法对于理解 C的多态性是非常重要的。在 C中,通过使用抽象类和虚函数表,可以实现基于多态性的各种功能,如继承、多态、模板等。…

极简JVM结构图示

参考资料 JVM极简教程 JVM结构 JIT编译器,对于经常需要执行的字节码进行 类加载子系统 类加载器 tomcat的自定义类加载器 为了进行类的隔离,如果Tomcat直接使用AppClassLoader类加载类,那就会出现如下情况: 应用A中有个com.e…

Android中Binder在项目中的具体使用详解

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。 👉点击跳转到教程 前言:Binder的介绍 在 Android 中,Binder 是一种跨进程通信&…

静默安装oracle

oracle依赖环境包 一、创建用户属组 [rootlocalhost ~]# groupadd oinstall[rootlocalhost ~]# groupadd dba[rootlocalhost ~]# groupadd oper[rootlocalhost ~]# useradd -g oinstall -G dba,oper oracle[rootlocalhost ~]# passwd oracle #修改oracle用户密码 二、创建目录…

二叉搜索树(BST)详解及代码实现

推荐可视化插入、删除节点的二叉树网站:Binary Search Tree Visualization (usfca.edu) 1. 概述 二叉搜索树(Binary Search Tree,简称BST)是一种特殊的二叉树结构,它具有以下特点: 有序性:对于…

Eureka入门 ; 服务注册中心,服务注册服务发现;SpringCloud eureka

一、引入 Spring Cloud封装了netflix公司的Eureka模块来进行实现服务治理。 在传统的RPC远程调用框架中,管理每个服务服务之间依赖关系比较复杂,所以需要服务治理,管理服务之间的依赖。可以实现服务注册、调用、负载均衡、容错等技术。 1. 服…

2023九坤投资暑期实习笔试复盘

5.22号笔试,5.24确认自己笔试挂。想想这也是自己第一次做量化私募基金的笔试,在此复盘一下。情况:北邮本硕。但开始准备暑期准备的比较晚,4月初才开始一边刷题一边投简历,所以手撕算法不太强,但运气和灵感好…

ChatGPT除了模型, 各个大厂、中厂、小厂们还在卷什么?

ChatGPT 问世后,各大公司都在「大模型」上下了苦功,模型能力也成为大家最关注的话题。ChatGPT 虽直接定义了基于大模型的生成式对话机器人这个产品类型,其模型的强大也导致大家都忽略了它在产品使用上的问题。 其实不管是底层模型开发的大厂…

印尼市场入门指南:品牌如何在当地获得市场份额?

2023年,印尼成为了全球最大的新兴市场之一。印尼是东南亚最大的经济体,拥有庞大的人口和潜在的消费市场,吸引着越来越多的国际品牌进入。根据预测,印尼的消费支出将在2023年达到1.3万亿美元,成为亚洲增长最快的消费市场…

个人博客搭建详细步骤

1. 安装 jdk 和 tomcat 下面将带大家安装 jdk 和部署 tomcat; 首先在本地下载好 jdk 和 tomcat 安装压缩包在服务器新建一个目录,比如在服务器新建一个目录 soft,上传 jdk, tomcat 到服务器 mkdir soft cd soft rz 选择上传的文件名称 //上传文件新建…

【windows脚本】使用diskpart命令管理未分配磁盘

环境 系统:win10 x64 概述 使用windows脚本管理未分配磁盘,手动操作需要做以下几步: 1、初始化磁盘GPT形式; 2、新建简单卷,设置大小和驱动器号。 3、格式化。 diskpart命令 使用diskpart工具,命令如…

PNAS| 绘制人脑发育曲线:横断面研究低估了人脑变化

文章目录 第一部分:横断面数据低估了与年龄相关的大脑变化。第二部分:横截面规范模型最小限度地帮助个体化预测。第三部分:非年龄相关因素对于预测个体变化的误差起到了贡献作用。参考 **按:**研究人脑毕生发展对于理解常见的精神…