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

I2C通信中的当前地址指针(CADDR)工作原理

一、工作简介

I2C通信中,寄存器地址通常用于指定要读取或写入的特定寄存器。然而,在某些情况下,寄存器地址可以设置为 None,这通常表示在当前的通信操作中不需要指定寄存器地址。

在I2C通信协议中,当主机需要从从机读取数据时,通常会先发送从机的设备地址,然后发送要读取的寄存器地址。但是,有些从机设计有当前地址指针(CADDR)的概念,这是一个内部寄存器,指向从机内部当前激活的寄存器。在这种设计中,如果主机在读取操作中指定了寄存器地址,从机会更新 CADDR 为新的地址。如果主机在读取操作中没有指定寄存器地址(即寄存器地址为None),从机会将CADDR保持在上次写入操作后的地址,或者重置到从机的默认寄存器地址。

所以,I2C通信中寄存器地址可以是None,这通常用于指示在当前操作中不需要指定寄存器地址,或者利用从机的当前地址指针机制。

二、工作原理

在I2C通信协议中,当前地址指针(CADDR)是指在从设备内部用来跟踪当前正在访问的寄存器地址的一个计数器。这个指针通常在从设备的内部存储器中实现,并在每次成功的读写操作后自动增加,以便下次读写操作能够访问到下一个寄存器。

当主机设备想要读取或写入从设备的特定寄存器时,它会首先发送从设备的地址以及一个读写位(0表示写入,1表示读取)。在读取操作中,如果是当前地址读,主机不需要再次发送寄存器地址,因为从设备的CADDR已经指向了上一次读写操作后的下一个寄存器。从设备在接收到读取请求后,会将CADDR指向的寄存器内容发送给主机。读取完成后,CADDR会自动递增,准备下一次读取操作。

如果是指定地址读,主机则会在读写位为1的情况下,先发送一个额外的寄存器地址,告诉从设备从哪个寄存器开始读取数据。在这种情况下,CADDR不会自动递增,直到下一次独立的读写操作发生。

CADDR的设计简化了I2C通信过程,允许主机设备高效地访问从设备的多个寄存器,而无需在每次读取或写入时都发送完整的寄存器地址。

相关文章:

  • 【韩顺平Java笔记】第3章:变量
  • Spring Boot 配置全流程 总结
  • 【linux 多进程并发】linux进程状态与生命周期各阶段转换,进程状态查看分析,助力高性能优化
  • 51单片机和ARM单片机的区别
  • “领航猿1号” 正式更名为 “AGI舰长”
  • 代码随想录冲冲冲 Day59 图论Part10
  • 数据结构 ——— C语言实现无哨兵位单向不循环链表
  • Linux基础命令lsblk详解
  • vue限定类型上传文件 最简单实践(单个可文件、可图片)
  • Hive数仓操作(五)
  • STM32--GPIO点亮LED灯(手把手,超详细)
  • @antv/x6 动态的修改attr与prop,以及动态改变节点的大小
  • 2024年_ChatGPT 及类似的人工智能技术带来的影响与改变 怎样利用 ChatGPT 提高学习效率
  • 【JAVA源码授权】
  • 计算机毕业设计Hadoop+Spark知识图谱美团美食推荐系统 美团餐厅推荐系统 美团推荐系统 美食价格预测 美团爬虫 美食数据分析 美食可视化大屏
  • Angularjs之国际化
  • gulp 教程
  • swift基础之_对象 实例方法 对象方法。
  • TypeScript迭代器
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 从0实现一个tiny react(三)生命周期
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 多线程 start 和 run 方法到底有什么区别?
  • 警报:线上事故之CountDownLatch的威力
  • 理解在java “”i=i++;”所发生的事情
  • 实战|智能家居行业移动应用性能分析
  • 问题之ssh中Host key verification failed的解决
  • 最简单的无缝轮播
  • Android开发者必备:推荐一款助力开发的开源APP
  • 数据可视化之下发图实践
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​secrets --- 生成管理密码的安全随机数​
  • ​卜东波研究员:高观点下的少儿计算思维
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (2015)JS ES6 必知的十个 特性
  • (28)oracle数据迁移(容器)-部署包资源
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (floyd+补集) poj 3275
  • (Ruby)Ubuntu12.04安装Rails环境
  • (八十八)VFL语言初步 - 实现布局
  • (六)激光线扫描-三维重建
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (转)LINQ之路
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .form文件_SSM框架文件上传篇
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET C# 配置 Options
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .net 连接达梦数据库开发环境部署
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .net中的Queue和Stack