其实,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线的低电平后,微控制器可以切换到更高的采样率来探测用于同步的重复开始条件. 在开始字节后一个应答相关的时钟脉冲产生.设备不允许应答开始字节.

(5)I2C总线的10bit地址以及通用广播地址的更多相关文章

  1. 【转】I2C总线协议

    I2C总线(Inter Integrated-Circuit)是由PHILIPS公司在上世纪80年代发明的一种电路板级串行总线标准,通过两根信号线——时钟线SCL和数据线SDA——即可完成主从机的单工 ...

  2. (4)I2C总线的7bit从机地址

    时钟拉伸(Clock stretching)clock stretching通过将SCL线拉低来暂停一个传输.直到释放SCL线为高电平,传输才继续进行.clock stretching是可选的,实际上 ...

  3. Linux设备驱动模型之I2C总线

    一.I2C子系统总体架构 1.三大组成部分 (1)I2C核心(i2c-core):I2C核心提供了I2C总线驱动(适配器)和设备驱动的注册.注销方法,提供了与具体硬件无关的I2C读写函数. (2)I2 ...

  4. Linux+I2C总线分析(主要是probe的方式)

    Linux I2C 总线浅析 ㈠ Overview Linux的I2C体系结构分为3个组成部分: ·I2C核心: I2C核心提供了I2C总线驱动和设备驱动的注册.注销方法,I2C通信方法(即“algo ...

  5. 自制单片机之六……串行I2C总线E2PROM AT24CXXX的应用

    这一篇介绍I2C存储器的使用.主要是介绍AT24CXX系列器件,它分为两类,主要是通过被存储容量地址来分的,一类是AT24C02-AT24C16,它的存储容量从256字节到2048字节.另一类是AT2 ...

  6. I2C 总线原理与架构

    一.I2C总线原理 I2C是一种常用的串行总线,由串行数据线SDA 和串行时钟线SCL组成.I2C是一种多主机控制总线,它和USB总线不同,USB是基于master-slave机制,任何设备的通信必须 ...

  7. i2c总线驱动,总线设备(适配器),从设备,从设备驱动的注册以及匹配

    常用链接 我的随笔 我的评论 我的参与 最新评论 我的标签 随笔分类 ARM裸机(13) C(8) C++(8) GNU-ARM汇编 Linux驱动(24) Linux应用编程(5) Makefile ...

  8. i2c总线,核心,驱动详解

    Linux I2C驱动分析(一)----I2C架构和总线驱动 一.I2C总线原理 I2C是一种常用的串行总线,由串行数据线SDA 和串线时钟线SCL组成.I2C是一种多主机控制总线,它和USB总线不同 ...

  9. I2C总线驱动框架详解

    一.I2C子系统总体架构 1.三大组成部分 (1)I2C核心(i2c-core):I2C核心提供了I2C总线驱动(适配器)和设备驱动的注册.注销方法,I2C通信方法(”algorithm”)上层的,与 ...

随机推荐

  1. 【转】pybrain的使用——一个开源的python神经网络工具包

    原文地址   http://lavimo.blog.163.com/blog/static/2149411532013911115316263/ 昨天的主要活动内容是找一个神经网络的包....= =这 ...

  2. PHPCMS如何实现后台访问限制?

    修改phpcms 后台管理路径,可以有效的防止因为程序漏洞,或者是服务器安全问题所带来的 phpcms系统管理权限被黑客获取 文件路径:/caches/config/system.php 修改:'ad ...

  3. 总结源码编译安装mysql

    最近在学习源码编译安装LAMP.LNMP时,一直遇到一个难题,就是就是mysql无论怎么源码编译安装,到最后启动服务都提示"Starting MySQL.The server quit wi ...

  4. [旧博客]Python 第一次

    决定学习Python,发现其需要安装的东西很小,只需要在官方网站下载和15MB左右的安装包,Python for windows.安装完毕就双击IDE快捷方式就打开IDE了. 你很发现IDE好像很面熟 ...

  5. 一个基于集成jenkins的测试平台

    (一)先看测试业务的情况: 有各种各样的任务包括代码构建.部署搭建.单元测试.功能自动化测试(包括许多模块的功能自动化测试,有十几个居多),性能测试.正确性验证:复杂一点的是这些任务在不同的测试阶段中 ...

  6. google 开放I/O源码

    在这款应用程序中谷歌对部分功能.API和设计架构进行了非常详细的阐述,其中包括碎片.程序加载.服务.广播.接收器.警告.通知.SQLite数据库.内容提供商.Action Bar.导航Drawer和G ...

  7. bzoj 3105: [cqoi2013]新Nim游戏 异或高消 && 拟阵

    3105: [cqoi2013]新Nim游戏 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 535  Solved: 317[Submit][Stat ...

  8. x86, x86-64, i386, IA32, IA64...

    转自x86, x86-64, i386, IA32, IA64... x86:Intel从16位微处理器8086开始的整个CPU芯片系列,系列中的每种型号都保持与以前的各种型号兼容,主要有8086,8 ...

  9. 练习PYTHON之EVENTLET

    以下是重点,要会运用: eventlet是一个用来处理和网络相关的python库函数,而且可以通过协程来实现并发,在eventlet里,把“协程”叫做 greenthread(绿色线程).所谓并发,就 ...

  10. Jmeter 执行java脚本结束时提示:he JVM should have exitted but did not

    使用jmeter执行java协议测试结束时会提示:he JVM should have exitted but did not ,jmeter2.11以后的可以 通过设置:      jmeteren ...