一、I2C

1.定义

        内部集成电路的简称,半双工串行同步通信,是芯片和芯片之间的通信方式;通常只有一个主机,多个从机,采用主从应答的方式

  • 上图所示是IIC的总线的使用场景,所有挂载在IIC总线上的设备都有两根信号线,一根是数据线SDA, 另一根是时钟线SCL。这两个信号线都是双向的。
  • 作为一种通信方式,IIC总线在某一时刻,总线只允许有一个设备处于发送状态,所发生的数据被总 线上所有的设备所接收。IIC通信协议包含有设备地址,只有发送方携带的地址与某个接收方的地址 相同时,接收方才真正执行相关的指令。
  • 主从应答:命令总是由主机发起,从机应答,如果主机只有一个,叫单主机,两个或两个以上,是多主机,通常情况下为单主机;主机再发命令的时候,所有从机都能收到,从机的回答所有也都能收到;
  • 时钟信号线永远只有主机发;

2.释放总线:

  • 整根线为高电平
  • 释放总线的权利(1)应该由接收方来,谁要接收数据,谁要提前释放总线

3.上拉电阻

  •  IIC总线规定,设备在空闲时,两根总线都处于高电平状态。为保证这种状态,数据线SDA和时钟线SCL都 要外接上拉电阻。对于I.MX来说,这个上拉电阻也可以在引脚电器配置中设置。
  • 上拉电阻的作用就是当双方在发1的时候,保证最后线上是1,防止内阻拉低,看过原理图10k

4.I2C时序图:

  • 空闲时,两根线均处于高电平;
  • 每次通信前,发送方首先发送一个“起始”信号,其实信号就是在SCL为高电平 时,SDA发送一个低电平。时钟信号是由主机来控制和发送;
  • 时钟信号线为低电平时,数据信号线可以发生改变,当为高电平时,数据信号线必须保持稳定,接收方要在高电平阶段来采样。
  • 高位先行原则
  • 当发完信号时,接收方需要应答,应答为ACK(0)或者NACK(1)(芯片手册写);
  • 如果后续还有发送数据,就接着应答后面,继续发,依旧遵循上述原则
  • 如果后续没有发送数据,在时钟信号线为高电平时,把数据信号线拉为高电平,从此置空闲状态

每一个从机都有占有一个字节的地址值,而主机发完一个起始信号后,先发从机的地址,地址占7位;最后一个bit,是数据流向位。0:主机发从机收;1:从机发主机收,

5.I.MA6ULL

       I.MX6U 提供了 4 个 I2C 外设,通过这四个 I2C 外设即可完成与 I2C 从器件进行通信I.MX6U
的 I2C 支持两种模式:标准模式和快速模式,标准模式下 I2C 数据传输速率最高是 100Kbits/s,在快速模式下数据传输速率最高为 400Kbits/s。

6.寄存器I2C_I2CR

  • IEN(bit7):I2C 使能位,为 1 的时候使能 I2C,为 0 的时候关闭 I2C;
  • IIEN(bit6):I2C 中断使能位,为 1 的时候使能 I2C 中断,为 0 的时候关闭 I2C 中断;
  • MSTA(bit5):主从模式选择位,设置 IIC 工作在主模式还是从模式,为 1 的时候工作在主模式,为 0的时候工作在从模式;
  • MTX(bit4):传输方向选择位,用来设置是进行发送还是接收,为 0 的时候是接收,为 1 的是发送;
  • TXAK(bit3):传输应答位使能,为 0 的话发送 ACK 信号,为 1 的话发送 NO ACK 信号;
  • RSTA(bit2):重复开始信号,为 1 的话产生一个重新开始信号。

7.寄存器 I2Cx_I2SR 

  • ICF(bit7):数据传输状态位,为 0 的时候表示数据正在传输,为 1 的时候表示数据传输完成;
  • IAAS(bit6):当为 1 的时候表示 I2Cx_IADR 寄存器中的地址是从设备地址。为0表示I2Cx_IADR是自己的地址;
  • IBB(bit5):I2C 总线忙标志位,当为 0 的时候表示 I2C 总线空闲,为 1 的时候表示 I2C 总线忙;
  • IAL(bit4):仲裁丢失位,为 1 的时候表示发生仲裁丢失。仲裁丢失在手册第1455页有说明,如果多个设备同时尝试连接总线,则其中一个成为主设备。硬件会立即将仲裁失败的设备切换到Slave
  • Receive模式 。那么仲裁失败的设备就会产生仲裁丢失,导致此位置位。需要理解的是这种情况一定发生在发送起始位的时候,也就是说在发送完起始位之后应该判断此位是否为1;
  • SRW(bit2):从机读写状态位,当 I2C 作为从机的时候使用,此位用来表明主机发送给从机的是读还是写命令。为 0 的时候表示主机要向从机写数据,为 1 的时候表示主机要从从机读取数据;
  • IIF(bit1):I2C 中断挂起标志位,当为 1 的时候表示有中断挂起,此位需要软件清零;
  • RXAK(bit0):应答信号标志位,无论作为主机还是从机,为 0 的时候表示接收到 ACK 应答信号,为1 的话表示检测到 NO ACK 信号。

8.寄存器I2Cx_I2DR

        这是 I2C 的数据寄存器,此寄存器只有低 8 位有效,当要发送数据的时候将要发送的数据写入到此寄存器
注意:此时LSB代表的是数据流向,需要按照实际情况设置为1或者0;如果要接收数据的话
          直接读取此寄存器即可得到接收到的数据

二、电可擦存储器

1.时序图

(1)写8个bit数据

(2)连续写数据

写操作:首先主从机释放总线处于空闲状态,主机在clk处于高电平时,将sda电平拉高,发送起始位。接着主机发送8个bit的设备地址,第8位为数据流向位(0为主机写,1为主机读),从机收到后会发送ACK应答。主机收到从机的应答后,再发送寄存器的地址位,从机收到后发送ACK应答;之后主机发送数据,从机收到后发送ACK应答。主机发送完之后在clk位高电平时拉高电平发送停止位。

(3)当前位置发数据给主机

(3)主机从指定位读

读操作:主机先发送起始位,之后发送8位的设备地址,其中第8个bit写操作,从机收到发送ACK应答,主机再发送寄存器地址,从机回复ACK应答。之后主机会重发设备地址,但第8bit为读操作,从机收到回复ACK应答,从机发送数据,主机收到后回复ACK,主机在最后一个数据字节后回复NACK表示结束,之后主机发送停止位。

  • 如果最后主机回应NACK是从机不发了,如果主机发ACK的话,就继续发

三、I2C原理

1.总原理图

  • 作为发送方,是否要检测对面回应的ACK;
  • 作为接收方,回应的是ACK/NACK;

  • 一般用于停止位是否发送并且置1成功

四、I2C操作流程

1.初始化的流程图、写设备、读设备流程图

五、逻辑分析仪

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

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

相关文章

使用websockt

封装websocktHooksimport { ref, onMounted, onUnmounted } from vue;/*** webSocket的Hooks* param {string} websocket链接地址* */ export function useWebSocket(url: string) {// 核心状态 const data: Ref<any> ref(null);//收到websocket返回的数据const socke…

Jmeter自定义脚本

目录 log&#xff1a;输出类 Label&#xff1a;你自定义的组件的名称 FileName&#xff1a;添加的脚本文件的文件名 Parameters&#xff1a;你传入的参数&#xff0c;是一个字符串 args&#xff1a;你传入的参数&#xff0c;是一个数组 Parameters和args的异同&#xff1…

飞算 JavaAI 电商零售场景实践:从订单峰值到供应链协同的全链路技术革新

目录 一、电商核心场景的技术攻坚 1.1 分布式订单系统的事务一致性设计 1.1.1 TCC 模式下的订单创建流程 1.1.2 订单状态机的可靠流转 1.2 高并发秒杀系统的架构设计 1.2.1 多级限流与流量削峰 1.2.2 库存防超卖机制 1.3 智能推荐与用户行为分析 1.3.1 用户行为实时采…

51单片机-51单片机介绍

51单片机介绍单片机简介什么是单片机呢&#xff1f;单片机是一种集成电路芯片&#xff0c;采用超大规模集成电路技术将中央处理器&#xff08;CPU&#xff09;、随机存储器&#xff08;RAM&#xff09;、只读存储器&#xff08;ROM&#xff09;、多种I/O口、中断系统、定时器/计…

8月AI面试工具测评:破解规模化招聘难题

金秋校招临近&#xff0c;企业面临“百万简历涌入VS面试官团队告急”的典型困境。传统线下面试效率低下、标准参差&#xff0c;难以应对短时间内爆发式的人才筛选需求。AI面试工具凭借自动化与智能化特性成为破局关键&#xff0c;但市面上产品良莠不齐——究竟哪款能兼顾效率与…

Debian新一代的APT软件源配置文件格式DEB822详解

Debian 的 DEB822 格式详解&#xff1a;新一代 APT 源配置 DEB822 是一种基于 RFC 822 数据格式的配置文件语法&#xff0c;Debian 新一代的 APT 软件源配置文件格式就采用了 DEB822。DEB822 格式从 Debian 11 (Bullseye) 开始被引入&#xff0c;并在 Debian 12 (Bookworm) 中成…

实战 AI8051U 音视频播放:USART-SPI→DMA-P2P→SPI+I2S 例程详解

视频P2P播放&#xff0c;时间计算&#xff1a;fps20,50ms 周期刷屏时间&#xff1a;160*80 一帧刷屏时间28.2ms帧间隔&#xff1a;50ms-28.2ms21.8ms音频双缓冲区交叉播放&#xff0c;利用视频播放帧间隔加载下一个缓冲区音频数据&#xff0c;时间计算&#xff1a;16000采样率 …

解释器模式C++

解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为型设计模式&#xff0c;它用于定义一种语言的语法规则&#xff0c;并构建一个解释器来解释该语言中的句子。这种模式适用于需要处理固定语法规则的场景&#xff0c;如表达式解析、配置文件解析等。 解释器模式…

debian 13 显示中文字体 不再显示菱形块 终端显示中文

找了很多坑。。其它就安装一下中文字体即可 。 apt install ttf-wqy-zenhei 之后测试命令 fc-list &#xff1a;langzh 显示了刚字体的路径和中文字即成功了。 rootdebian:~# dpkg-reconfigure locales 以上命令配置中文语言。 debian 12.11 安装 MySQL 下载配置文件 &am…

51单片机-驱动蜂鸣器模块教程

本章概述思维导图&#xff1a; 51单片机驱动蜂鸣器模块教程 蜂鸣器简介 蜂鸣器是一种将电信号转换为声音信号的电子元件&#xff0c;广泛应用于报警、提示、通知等场景。其核心原理基于压电效应或电磁感应&#xff1a;因此可分为两种类型蜂鸣器&#xff1a;压电式蜂鸣器和电磁…

常用Linux指令:Java/MySQL/Tomcat/Redis/Nginx运维指南

一、基础Linux指令1. 文件与目录操作ls -lh # 查看文件详情(人类可读格式) pwd # 显示当前目录路径 cd /path # 切换目录 mkdir dirname # 创建目录 rm -rf dirname # 强制删除目录 cp -r src dest # 递归复制目录 mv old new # 移动/重命…

小红书帖子评论的nodejs爬虫脚本

从小红书上爬取评论&#xff0c;但是目前还不能完全爬取子评论&#xff0c;使用GPT没能解决这个问题。后续博主可能会改进。或者如果你懂的话&#xff0c;可以在博主代码基础上改进。需要安装nodejs软件&#xff0c;部署环境变量。博主是在pycharm中运行的。代码无套路获取。自…

【iOS】多线程原理

目录 前言 基本概念及原理 线程、进程与队列 线程的定义&#xff1a; 进程的定义&#xff1a; 线程与进程之间的联系与区别&#xff1a; 线程和runloop的关系 影响任务执行速度的因素 多线程 多线程生命周期 线程池的原理 iOS中多线程的实现方式 线程安全问题 互斥…

药房发药的“时间密码”:同步时钟用药安全?

在医院的药房里&#xff0c;每一粒药片的流转都暗藏“时间密码”。从药品入库到患者服药&#xff0c;时间记录的精确性直接关乎生命安全。一旦时间数据出现偏差&#xff0c;轻则导致用药争议&#xff0c;重则引发医疗事故。近年来&#xff0c;随着医疗数字化进程加速&#xff0…

UI-TARS-Desktop 深度解析:下一代智能自动化桌面平台

目录 1. 产品概述 2. 核心功能与技术架构 2.1 关键技术 2.2 功能亮点 3. 竞品对比分析 4. 部署与成本分析 4.1 部署方案 4.2 隐性成本 5. 商业化前景 5.1 目标市场 5.2 盈利模式 5.3 风险挑战 6. 未来演进方向 7. 总结 1. 产品概述 UI-TARS-Desktop 是一款基于A…

STM32L051同时处理Alarm A和Alarm B中断

同时处理Alarm A和Alarm B中断 当同时启用Alarm A和Alarm B时&#xff0c;需要在中断处理程序中准确判断是哪个闹钟触发了中断。以下是完整的解决方案&#xff1a; 中断判断与处理流程 1. 在RTC中断服务程序中判断中断源 // stm32l0xx_it.c void RTC_IRQHandler(void) {/* USER…

OpenCV---morphologyEx形态学操作

在计算机视觉与图像处理领域&#xff0c;形态学操作是一种基于图像形状的非线性处理方法&#xff0c;广泛应用于噪声去除、边缘检测、目标分割等任务。OpenCV提供的morphologyEx函数是形态学操作的“瑞士军刀”&#xff0c;它整合了多种高级形态学运算&#xff0c;能够实现开运…

RuoYi-Cloud 接入 Sentinel 的 3 种限流方式

场景&#xff1a; 服务&#xff1a;ruoyi-robot&#xff08;对外接口统一在 /external/gs/**&#xff09; 网关&#xff1a;ruoyi-gateway&#xff08;转发到 ruoyi-robot&#xff09; 注册/配置&#xff1a;Nacos 流控&#xff1a;Sentinel 1.8.x 控制台 Dashboard&#x…

快速搭建python HTTP Server测试环境

这里用python http.server搭建一个api测试环境&#xff0c;自定义请求处理程序&#xff0c;以模拟不同api相应。 1 服务代码 /api/data&#xff0c;端口8000&#xff0c;GET 返回json数据为"{"message": "This is a sample API response"}" 代…

Docker容器定时任务时区Bug导致业务异常的环境变量配置解决方案

Docker容器定时任务时区Bug导致业务异常的环境变量配置解决方案 &#x1f31f; Hello&#xff0c;我是摘星&#xff01; &#x1f308; 在彩虹般绚烂的技术栈中&#xff0c;我是那个永不停歇的色彩收集者。 &#x1f98b; 每一个优化都是我培育的花朵&#xff0c;每一个特性都是…