I2C之知(五)--I2C总线的10bit地址以及通用广播地址

2023-11-08

        其实,10bit地址我没用过,通用广播地址更没用过.通用广播地址应该是在多个mcu之间用i2c进行通信时使用的.虽说没用到,但还是做了翻译,说不定以后有机会用到:

10bit地址
10bit的寻址扩展可能寻址的数目.有7bit地址和10bit地址的设备可以连接到相同的I2C总线上,而且7bit寻址和10bit寻址都可以用在所有的总线速度模式下.不过,10bit寻址用的不多.
10bit的从机地址由开始条件(S)或重复开始条件(Sr)后的两个字节组成.第一个字节的前7位是1111 0XX,XX是10bit地址的最高有效位的前两位.第一个字节的第8bit是读写位,决定传输方向.
尽管1111 XXX有8种可能的组合,然后只有1111 0XX这四种可以用于10bit寻址.剩下的1111 1XX这四种是为将来I2C扩展用的.
前面描述的用于7bit寻址的读写格式都适用于10bit寻址.详情如下:
1.主-发送器传输到从-接收器(10bit从机地址)

从图中看出传输方向不变.当接收到开始条件后的10bit地址,从机就和它自己的地址比较从机地址的第一个字节(1111 0XX),并检查第八个bit(读写位)是否为0.有可能多个设备都匹配并产生应答(A1).接下来所有从机开始匹配自己地址与第二个字节的8个bit(XXXX XXXX),这时就只有一个从机匹配并产生应答(A2).被主机寻址匹配的从机会保持被寻址的状态直到接收到终止条件或者是重复开始条件后跟着一个不同的从机地址.
2.主-接收器从从-发送器接收数据(10bit从地址)
在第二个读写位之后传输方向就会改变.

在第二个应答A2之前,处理过程与上面的主-发送器寻址从-接收器一致.在重复开始条件(Sr)之后,匹配的从机会保持被寻址上的状态.这个从机会检查Sr之后的第一个字节的前7bit是否正确,然后测试第8bit是否为1(读).如果这也匹配的话,从机就认定它被作为一个发送器被寻址到了并产生应答A3.从-发送器会保持被寻址的状态知道接收到终止条件(P)或者重复开始条件(Sr)跟着一个不同的从机地址.然后这个时候的重复开始条件下,所有的从机会比较它们的地址与11110XX比较并测试第八位(读写位).然而它们不会寻址到,因为对于10bit设备,读写位是1,或者对于7bit的设备,1111 0XX的从机地址不匹配.

保留地址
下表是保留的两组地址的描述:

[1]通用广播地址是用来包括软件复位的几个功能
[2]没有设备可以应答开始字节
[3]CBUS地址是保留的,使得同一个系统可CBUS总线兼容的设备和I2C总线兼容的设备.I2C兼容的设备不允许响应这个地址
[4]为不同总线格式保留的

通用广播地址
通用广播地址是用来同时寻址所有连接到I2C总线上的设备.如果一个设备在广播地址时不需要数据,它可以不产生应答来忽略.如果一个设备从通用广播地址请求数据,它可以应答并当作一个从-接收器.当一个或多个设备响应时主机并不知道有多少个设备应答了.每一个可以处理这个数据的从-接收器可以响应第二个字节.从机不处理这些字节的话,可以响应NA.如果一个或多个从机响应,主机就无法看到NA.通用广播地址的含义一般在第二个字节中指明.

有两种情况需要考虑:
1.最低有效位B是0
2.最低有效位B是1
当B是0,第二个字节有如下的定义:
1.0000 0110(06h):复位并通过硬件写从机地址的可编程部分.在接收到这样的2个字节时,所有可以响应这个广播地址的设备将复位并进入地址的可编程部分.要采取预防措施来确保设备不会在加上电源电压后将SDA或SCL拉低,因为这些低电平会阻塞总线.
2.0000 0100(04h):通过硬件写从机地址的可编程部分.行为同上,但设备不复位
3.0000 0000(00h):这个不应该作为第二个字节使用
编程过程的顺序参考相应设备的datasheet




软件复位
在通用广播(0000 0000)之后发送0000 0010(06h)作为第二个字节会引起软件复位.这个特性是可选的,不是所有的设备都会响应这个命令.在接收到这样的2个字节时,所有可以响应这个广播地址的设备将复位并进入地址的可编程部分.要采取预防措施来确保设备不会在加上电源电压后将SDA或SCL拉低,因为这些低电平会阻塞总线.

开始字节
微控制器有两种方式连接到I2C总线上.有片上的硬件I2C总线接口的微控制器可以变成为只接收总线的中断请求.当设备没有这样的接口,它必须要通过软件手段来检测总线.很明显,微控制器检测的时间或者轮询总线的时间越多,实现自己功能的时间就越少.
因此快速硬件设备和依赖软件轮询的相对慢速微控制器是有速度差别的.
在这种情况下,数据传输前有一个比正常时间长很多的起始过程.起始过程组成如下:
一个开始条件(S)
一个开始字节(0000 0001)
应答位(ACK)
重复的开始条件(Sr)


主机发送完开始条件后,发送开始字节(0000 0001).另外的微控制器可以以低采样率来采样SDA线知道开始字节的7个0中的一个被侦测到.在侦测到SDA线的低电平后,微控制器可以切换到更高的采样率来探测用于同步的重复开始条件.
在开始字节后一个应答相关的时钟脉冲产生.设备不允许应答开始字节.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

I2C之知(五)--I2C总线的10bit地址以及通用广播地址 的相关文章

  • MySQL5.7保姆级安装教程

    环境 Linux版本 Mysql版本 待安装 CentOS 7 5 7 1 配置YUM源 在MySQL官网中下载YUM源rpm安装包 http dev mysql com downloads repo yum 目前MySQL官网下载的MyS
  • C++ 的string类学习

    一 string类型变量构造赋值方法 1 构造 1 用等号直接赋值S0 2 定义一个空白变量S1 3 定义一个新变量S2 内容完全等于S0 4 定义一个新变量S3 内容是S0从第八个字符开始的三个字符 5 定义一个新变量S4 用括号赋值 和
  • Python并发编程之线程池/进程池

    转载 http python jobbole com 87272 引言 Python标准库为我们提供了threading和multiprocessing模块编写相应的多线程 多进程代码 但是当项目达到一定的规模 频繁创建 销毁进程或者线程是
  • 任意宽度灰度BMP图像读写 V1

    一般BMP图像读写程序只能正确读写宽度为4的倍数的图像 而在图像处理领域所用到的图像宽度不一定满足4的倍数 我在一般BMP图像读写程序基础上进行了改进 使得程序可以读写任意宽度的灰度BMP图像 特分享给大家 希望能够给大家带来帮助 头文件
  • mysql版本5.5.*升级为5.7.*,遇到的问题和解决方法都来看看吧,最终升级成功~

    背景 由于项目比较老 用的数据库版本也是相当低 现在业务需求需要做数据同步 使用FlinkCDC的时候报数据库版本低 查询FlinkCDC要求的最低版本后果断升级mysql FlinkCDC对mysql最低版要求如下图 从 2 2 版本开始
  • 大疆云台和华为P30_超全,一篇文章搞清楚大疆Osmo三款产品区别!

    超全 一篇文章搞清楚大疆Osmo三款产品区别 2020 06 06 17 23 07 33点赞 179收藏 13评论 先说结论吧 Mobile 3适合日常用手机作为主力拍摄工具的人群 手机的拍摄能力以及符合你对画面的要求 另外你还可以接受每
  • code runner 中文使用指南

    Code Runner 用法 运行代码 使用快捷键 Ctrl Alt N 按F1然后选择 键入 Run Code 右键单击文本编辑器 然后在编辑器上下文菜单中单击 Run Code 命令 单击编辑器标题菜单中的 Run Code 按钮 单击
  • 车载毫米波雷达信号处理中的模糊问题仿真分析

    车载毫米波雷达信号处理中的模糊问题仿真分析 概述 车载毫米波雷达在现代汽车领域中扮演着重要的角色 用于实现自动驾驶 智能巡航控制和碰撞警报等功能 然而 在车载毫米波雷达信号处理中 存在各种模糊问题 这些问题可能会影响雷达系统的性能和准确性
  • MySQL数据库之DCL命令

    一 DCL命令 GRANT 授予访问权限 REVOKE 撤销访问权限 COMMIT 提交事务处理 ROLLBACK 事务处理回退 SAVEPOINT 设置保存点 LOCK 对数据库的特定部分进行锁定 查看用户权限 SHOW GRANTS F
  • vue学习笔记(三)

    1 vue开发存在SEO问题 前端开发采用vue开发后是单页面 单页面里面 前后端分离 渲染过程是js写的 在js调用接口返回数据之前 页面已经被打开了 实际上就是空白页面 这个时候右键点击查看源代码 实际上是都看不到内容的 对SEO不太有
  • 什么是节点光端机?总线型光端机有哪些优势?

    节点式光端机又称总线型光端机 其准确的定义是采用单 双纤链路式组网形式的图像传输系统 也被称为链路式光端机 那么 节点式光端机具体是什么呢 总线型光端机又有哪些优势呢 接下来我们就跟随飞畅科技的小编一起来详细了解下吧 什么是节点光端机 节点

随机推荐