C8051单片机基础第五章SMBus总线概要.pptVIP

  • 14
  • 0
  • 约3.53千字
  • 约 45页
  • 2016-11-23 发布于湖北
  • 举报
C8051单片机基础第五章SMBus总线概要

SMBus0 I/O接口是一个双线的双向串行总线。SMBus0完全符合系统管理总线规范1.1 版,与I2C 串行总线兼容。系统控制器对总线的读写操作都是以字节为单位的,由SMBus接口自动控制数据的串行传输。 数据传输的最大速率可达系统时钟频率的1/8(可能比SMBus的规定速度要快,取决于所使用的系统时钟)。可以采用延长低电平时间的方法协调同一总线上不同速度的器件。 SMBus0可以工作在主或从方式,一个总线上可以有多个主器件。 SMBus0提供了SDA(串行数据)控制、SCL(串行时钟)产生和同步、仲裁逻辑以及起始/停止的控制和产生电路。 三个与之相关的特殊功能寄存器: 1 配置寄存器SMB0CF、 2 控制寄存器SMB0CN 3 发送和接收的数据寄存器SMB0DAT。 SMBus0 接口的工作电压可以在3.0V 和5.0V 之间,总线上不同器件的工作电压可以不同。SCL(串行时钟)和SDA(串行数据)线是双向的,必须通过一个上拉电阻或类似电路将它们连到电源电压。 连接在总线上的每个器件的SCL和SDA 都必须是漏极开路或集电极开路的,因此当总线空闲时,这两条线都被拉到高电平。 总线上的最大器件数只受所要求的上升和下降时间的限制,上升和下降时间分别不能超过300ns和1000ns。 5.2 SMBus 协议 有两种可能的数据传输类型: 1 从主发送器到所寻址的从接收器(写) 2 从被寻址的从发送器到主接收器(读) 这两种数据传输都由主器件启动,主器件还提供串行时钟。 总线上可以有多个主器件。如果两个或多个主器件同时启动数据传输,仲裁机制将保证有一个主器件会赢得总线。 注意:可以不指定主器件;任何一个发送起始条件(START)和从器件地址的就是该次数据传输的主器件。 典型的SMBus数据传输包括 1) 一个起始条件(START) 2) 一个地址字节(位7-1:7位从地址;位0:R/W 方向位) 3) 一个或多个字节的数据 4) 一个停止条件(STOP)。 典型的SMBus数据传输包括 1)每次接收都必须用SCL高电平期间的SDA低电平来确认(ACK)。 2)如果接收器件不确认,则发送器件将读到一个“非确认”(NACK),用SCL高电平期间的SDA高电平表示。 方向位占据地址字节的最低位。 设置为1表示读(READ)操作 设置为0表示是写(WRITE)操作。 数据传输都由主器件启动,可以寻址一个或多个目标从器件。 主器件产生一个起始条件,然后发送地址和方向位。 1)若写操作,则主器件发送一个数据字节后等待来自从器件的确认。 2)若读操作,则由从器件发送数据并等待主器件的确认。 在数据传输结束时,主器件产生一个停止条件,结束数据交换并释放总线。 5.2.1 总线仲裁 主器件只能在总线空闲时启动一次传输。在一个停止条件之后或SCL和SDA保持高电平已经超过了指定时间,则总线是空闲的。 当两个或多个器件在同一时刻启动数据传输时,仲裁机制迫使一个主器件放弃总线。 5.2.2 时钟低电平扩展 SMBus允许不同速度的器件共存于一个总线上。为了使低速从器件能与高速主器件通信,在传输期间采取低电平扩展。从器件可以保持SCL为低电平以扩展时钟低电平时间,这实际上相当于降低了串行时钟频率。 5.2.3 SCL 低电平超时 如果SCL 线被总线上的从器件保持为低电平,则不能再进行通信,并且主器件也不能强制SCL 为高电平来纠正这种错误情况。为了解决这一问题,SMBus 协议规定:参加一次数据传输的器件必须检查时钟低电平时间,若超过25ms 则认为是“超时”。检测到超时条件的器件必须在10ms 以内复位通信电路。 5.2.4 SCL高电平超时 SMBus 标准规定: 如果一个器件保持SCL 和SDA 线为高电平的时间超过50 微秒,则认为总线处于空闲状态。 5.3 SMBus 数据传输方式 SMBus0 接口可以被配置为工作在主方式和/或从方式。 可以工作在以下4种方式之一: 主发送器、主接收器 从发送器、从接收器。 5.3.1 主发送器方式 在SDA上发送串行数据,在SCL上输出串行时钟。首先产生一个起始条件,然后发送含有目标从器件地址和数据方向位的第一个字节。 数据方向位(R/W)应为逻辑0,表示这是一个“写”操作。 5.3.1 主发送器方式 SMBus0接口发送一个或多个字节的串行数据,并在每发送完一个字节后等待由从器件产生的确认信号(ACK)。 最后,为了指示串行传输的结束,S

文档评论(0)

1亿VIP精品文档

相关文档