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

发布者:国宝集团最新更新时间:2015-10-13 来源: eefocus关键字:I2C  I2C总线  通用广播地址 手机看文章 扫描二维码
随时随地手机看文章
其实,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线的低电平后,微控制器可以切换到更高的采样率来探测用于同步的重复开始条件.
在开始字节后一个应答相关的时钟脉冲产生.设备不允许应答开始字节.

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

上一篇:I2C之知(三)--I2C总线的字节格式、时钟同步和仲裁
下一篇:I2C之知(六)--s3c2440用I2C接口访问EEPROM

推荐阅读最新更新时间:2024-05-03 00:01

基于 STM32 的硬件 I2C 读取 MPU6050 数据
MPU6050其实就是一个 I2C 器件,里面有很多寄存器(但是我们用到的只有几个),我们通过读写寄存器来操作这个芯片。所以首要问题就是 STM32 和 MPU6050 的 I2C 通信。 1、配置 STM32 (用I2C1:PB6——SCL;PB7——SDA) 1)时钟 RCC RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1 , ENABLE); 2)GPIO 配置 GPIO_InitStructure.GPIO_Pin = GPIO
[单片机]
基于 STM32 的硬件 <font color='red'>I2C</font> 读取 MPU6050 数据
I2C 协议之软件模拟时序
1.1 I2C 简介 I2C 总线时 PHILIPS 公司推出的一种串行总线,具备多主机系统所需的包括总线仲裁和高低速器件同步功能的高性能串行总线。它只需要两跟双向的信号线,一根数据线 SDA,一个是时钟线 SCL。在 I2C 总线上面,每个器件都有自己相应的 I2C 地址,所以在两个器件之间进行通信的时候,都要首先呼叫你想要通信的器件地址,然后等待相应的从器件进行应答之后才开始通信。首先我们来看一下,一个 I2C 信号传输的一个过程,如图: 从图上我们可以看出在 I2C 上面一个完整信号的传输过程,一定要有一个始信号,还有一个结束信号,在每个字节传输结束的时候,从机还要提供一个应答信号。一个完整的信号传输就是
[单片机]
<font color='red'>I2C</font> 协议之软件模拟时序
浅谈STM8S(1)——I2C配置
前几天使用STM8S103K3调AT24C256,用到它的硬件I2C,遇到不少问题,查了很多资料,终于是调通了。 以下是以标准模式(即100KHz)的设置为主的I2C初始化配置的一些问题。 (1)I/O的配置问题。 无需对I/O口引脚处理。 如果I2C的两个接口引脚在事先没有被用作其他用途,仍保持着复位后默认状态,则不需要对其处理。 因为使用硬件I2C时,其对应的两个接口引脚需要被配置为浮空输入,而初始复位时,所有引脚均被设置为浮空输入。 即Px_CR1复位值为0x00 (2)I2C时钟频率等配置 I2C_FREQR = 系统时钟频率(单位:MHz) I2C_TRISER = I2C_FREQR + 1 I2C
[单片机]
STM32L051上使用RT-Threa (三、I2C通讯)
前言 经过前面两篇文章的准备,我们终于可以开始写应用代码了,在添加我们自己的驱动文件之前,本文会说明一下 RT-Thread Studio 如何添加自己的.c 和 .h文件。 然后在此基础上,完成 SHT21 温湿度传感器的 I2C 驱动移植。 ❤️ 本 RT-Thread 专栏记录的开发环境: RT-Thread记录(一、RT-Thread 版本、RT-Thread Studio开发环境 及 配合CubeMX开发快速上手) RT-Thread记录(二、RT-Thread内核启动流程 — 启动文件和源码分析) ❤️ RT-Thread 内核篇系列博文链接: RT-Thread记录(三、RT-Thread 线程操作函数及线程管理与F
[单片机]
STM32L051上使用RT-Threa (三、<font color='red'>I2C</font>通讯)
基于ATtiny841通过I2C总线连接GPS模块
本篇文章主要描述了如何通过I2C总线连接一个简单的GPS模块。使用的控制器是ATtiny841: 简介 将GPS纳入到项目中是一项非常艰巨的任务。首先,您必须正确解析您使用的GPS模块返回的NMEA语句,然后如果您使用接收到的经度和纬度进行任何计算,则需要将浮点GPS库结合到例程中来执行计算。 如果您需要处理一些任何其他重要的事情,GPS处理任务可能会干扰您的其他任务。将GPS处理作为单独的I2C模块解决了这个问题。 我最初设计这个是为运行我的Lisp解释器uLisp的电路板提供GPS支持,但它对于您希望通过简单的I2C接口访问GPS数据的任何其他应用程序都很有用。 GPS变量 I2C数据中的18个字节包含从
[单片机]
基于ATtiny841通过<font color='red'>I2C总线</font>连接GPS模块
I2C总线详解笔记
1. 引言 I2C总线是事实上的世界标准,现在由超过50家公司制造的1000多种不同的IC实现。此外,多功能I2C总线用于各种控制架构,如系统管理总线(SMBus),电源管理总线(PMBus),智能平台管理接口(IPMI),显示数据通道(DDC)和高级电信计算架构(ATCA))。 在消费者电子电讯和工业电子中看上去不相关的设计里经常有很多相似的地方例如几乎每个系统都包括: 为了使这些相似之处对系统设计者和器件厂商都得益而且使硬件效益最大电路最简单Philips (现NXP)开发了一个简单的双向两线总线实现有效的IC 之间控制这个总线就称为Inter IC 或I2C 总线。所有符合I2C总线的器件组合了一个片上接口使器件之间
[单片机]
<font color='red'>I2C总线</font>详解笔记
i2c信号线隔离电路
I2C和SMBUS总线主从方式与4线SPI QSPI和Microwire数据接口标准不同,这种 总线方式仅仅需要2条线用于数据传输在同一条线上发送和接收数据。图1可实现隔离的 2线接口。隔离的5V电源可以通过一个小变压器和MAX253变压器驱动器图1中没有画出 从主电源得到根据数据速率和隔离电压选择变压器和光耦图1选用了6N138,有关供应 商信息请参考MAX253和MAX845的说明书。 假设主控端是uP或uC,SDA 端的灌入电流决定了光耦的最小导通电流在3mA 以内,即 使这样,光耦300%的电流传输比CTR 足以保证该电路正常工作,从端应选用与I2C兼容的 器件,如8位D/A转换器MAX517或MAX127数据采集系统
[模拟电子]
<font color='red'>i2c</font>信号线隔离电路
STM32F103 硬件I2C主从机通信
官方例程并没有像网上大多数代码在IIC中断里面调用库函数来发,而是采用判断寄存器的值来处理数据的收发等,所以在阅读官方的的代码前最好准备stm32参考手册,主要就是SR1,SR2,这两个寄存器。 在官方例程里面默认是主机的读写,我做的是主机读取从机的内容。当然,简单改下就可以实现主机向从机写数据。 主机先使能中断和方向、地址。 之后就发送开始条件。 最后中断接收 下面从机初始化后,所有的数据接收、发送都在中断里面处理。从机发送 从机接收 最后通信成功 这是从机需要发送的数据。 哈哈哈。。。还有些函数需要再封装一下。 下一步就是在I2C总线上再挂几个单片机。 代码贴在这: https://down
[单片机]
STM32F103 硬件<font color='red'>I2C</font>主从机通信
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved