没有合适的资源?快使用搜索试试~ 我知道了~
基于C8051F的SMBus串行通信的原理和实现
5星 · 超过95%的资源 需积分: 14 25 下载量 43 浏览量
2011-07-14
12:05:42
上传
评论
收藏 78KB DOC 举报
温馨提示
试读
6页
在介绍C8051F串行通信总线SMBus的特点及功能的基础上,重点介绍了其协议、总线仲裁、寄存器以及C8051F02x与多个EEPROM串行通信的实现,并给出了部分应用程序。
资源推荐
资源详情
资源评论
基于 C8051F 的 SMBus 串行通信的原理和实现
摘 要: 在介绍 C8051F 串行通信总线 SMBus 的特点及功能的基础上,重点介绍了其协议、总线仲裁、寄存器以
及 C8051F02x 与多个 EEPROM 串行通信的实现,并给出了部分应用程序。
由于 MCU 具有小巧灵活、价格低廉的特点,所以在控制系统、嵌入式系统等领域中得到广泛应用。这些应用
中,数据传输总线的选择是重要的环节。并口传输速度虽快,但是实现时需要较多的 I/O 口,而许多应用系统的设
计又必须兼顾低成本、高可靠性、高效率三方面,所以经常要求在一个或几个单片机和若干外围器件之间传送短的
数据。目前,大部分 C8051F 单片机中都集成了 SMBus(System Management Bus)总线,主要是希望通过一条
廉价并且功能强大的总线(由二条线组成)控制主板上的设备并收集相应的信息。使用 SMBus 的系统中,设备之
间发送和接收消息都是通过 SMBus,而不是使用单独的控制线,这样可以节省设备的管脚数。SMBus 的数据传输
率比较低,可允许单一主机与多个从设备同时收发数据。
1 系统管理总线 SMBus
SMBus 是 1995 年由 Intel 提出的一种双线通信专利技术,它完全符合系统管理总线规范 1.1 版,与 I2C 串行
总线兼容。系统控制器对总线的读写操作都是以字节为单位,由 SMBus 接口自动控制数据的串行传输。SMBus 可
以工作在主方式和(或)从方式,一个总线上可以有多个主器件。SMBus 提供 SDA(串行数据)控制、SCL(串行时钟)
产生和同步、仲裁逻辑以及起始/停止的控制和产生电路。有三个与之相关的特殊功能寄存器:配置寄存器
SMB0CF、控制寄存器 SMB0CN 及用于发送和接收数据的数据寄存器 SMB0DAT。
1.1 SMBus 协议
SMBus 有二种可能的数据传输类型:从主发送器到所寻址的从接收器(写)和从被寻址的从发送器到主接收器
(读)。这二种数据传输都由主器件启动,主器件还提供串行时钟。SMBus 接口可以工作在主方式或从方式。总线上
可以有多个主器件,如果二个或多个主器件同时启动数据传输,则仲裁机制保证有一个主器件会赢得总线。
一次典型的 SMBus 数据传输包括一个起始条件(Start)、一个地址字节(位 7~1:7 位从地址;位 0:R/W 方
向位)、一个或多个字节的数据和一个停止条件(Stop)。方向位占据地址字节的最低位,当被设置为逻辑 1 时表示
这是一个“读”(READ)操作,为逻辑 0 时表示这是一个“写”(WRITE)操作。
所有的数据传输都由主器件启动,可以寻址一个或多个目标从器件。主器件产生一个起始条件,然后发送地址
和方向位。如果本次数据传输是一个从主器件到从器件的写操作,则主器件每发送一个数据字节后等待来自从器件
的确认。如果是一个读操作,则由从器件发送数据并等待主器件的确认。在数据传输结束时,主器件产生一个停止
条件,结束数据交换并释放总线。
1.2 总线仲裁
一个主器件只能在总线空闲时启动一次传输。在一个停止条件之后或 SCL 和 SDA 保持高电平已经超过了指定
时间时,总线是空闲的。二个或多个主器件可能在同一时刻产生起始条件。由于产生起始条件的器件并不知道其他
器件也正想占用总线,所以使用仲裁机制迫使一个主器件放弃总线。这些主器件继续发送起始条件,直到其中一个
主器件发送高电平,而其他主器件在 SDA 上发送低电平。赢得总线的器件继续其数据传输过程,而未赢得总线的
器件成为从器件。该仲裁机制是非破坏性的,因为总会有一个器件赢得总线,不会发生数据丢失。
1.3 SMBus 数据传输方式
SMBus 接口可以被配置为工作在主方式和(或)从方式。在某一时刻,它将工作在下述四种方式之一:主发送器、
主接收器、从发送器或从接收器。在本文的应用举例中,SMBus 工作在主发送器和主接收器模式下。下面以中断
驱动的 SMBus0 应用为例来重点说明这二种工作方式。当然 SMBus0 也可以工作在查询方式。
(1)主发送器方式
在 SDA 上发送串行数据,在 SCL 上输出串行时钟。SMBus0 接口首先产生一个起始条件,然后发送含有目标
从器件地址和数据方向位的第一个字节。在这种情况下数据方向位(R/W)为逻辑 0,表示这是一个“写”操作。
SMBus0 接口发送一个或多个字节的串行数据,并在每发送完一个字节后等待由从器件产生的确认信号(ACK)。最
tcj88
- 粉丝: 1
- 资源: 26
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页