C8051 SMBus 原理
一、SMBus总线
SMBus串行I/O接口完全符合系统管理总线规范 1.1 版。它是一个双线的双向串行总线,与I2C串行总线兼容。系统控制器对总线的读写操作都是以字节为单位的,由SMBus接口自动控制数据的串行传输。其接口工作电压3.0V~5.0V之间,总线上不同器件的丁作电压可以不同。时钟线SCL和数据线SDA都是双向的,按照SMBus的标准,两条线上都需要上拉电阻将他们接到电源电压。在没有数据传输时,两条线都处于高电平.使得器件能够检测到总线的空闲状态。
二、工作过程
一次典型的 SMBus 数据交换包括一个起始条件(START)、一个地址字节、一个或多个字节数据和一个停止(STOP)条件。每个地址字节和每个数据字节后面都跟随一个来自接收器的确认(ACKNOWLEDGE)位。地址字节包含一个 7 位的地址和一个方向位(R/W)。方向位占据地址字节的最低位。方向位被设置为逻辑‘1’时表示这是一个“读”(READ)操作,方向位为逻辑‘0’表示这是一个“写”(WRITE)操作。所有从器件都能识别一个通用呼叫地址(0x00 + R/W),这就允许一个主器件同时访问多个从器件。
所有的数据交换都由主器件启动,可以寻址一个或多个目标从器件。主器件产生一个起始条件,然后发送地址和方向位。如果本次数据交换是一个从主器件到从器件的写操作,则主器件每发送一个数据字节后等待来自从器件的确认。如果是一个读操作,则由从器件发送数据并等待主器件的确认。在数据传输结束时,主器件产生一个停止条件,结束数据交换并释放总线
写操作:首先发送该器件的7位地址码和写方向位(0)。被选中的存储器器件在确认是自己的地址后,在SDA线上产生一个应答信号作为响应,单片机收到应答后就可以传送数据了。传送数据时,单片机首先发送被写入器件的存储区的首地址。收到存储器器件的应答后,单片机就逐个发送各数据字节,每发送一个字节后都要等待应答。当要写入的数据传送完后,单片机应发出终止信号以结束写入操作。具体过程如下图所示:
读操作:首先发送该器件的7位地址码和写方向位(0:伪写)。被选中的存储器器件在确认是自己的地址后,在SDA线上产生一个应答信号作为响应。然后,单片机再发送要读出器件的存储区的首地址。收到存储器器件的应答后,单片机要重复一次起始信号并发出器件地址和读方向位(1)收到器件应答后就可以读出数据字节。每读出一个字节,单片机都要回复应答信号。当最后一个字节数据读完后,单片机应返回以“非应答”(高电平),并发出终止信号以结束读出操作。
C8051 SMBus 原理的更多相关文章
- SMBus总线概述
1.概述: 系统管理总线是一种两线制接口.它基于I2C 总线原理演变而来,可以认为是简化版的I2C总线. SMBus最初是应用到智能电池,如电池充电器和一个微控制器.其提供一个系统和电源管理相关的任务 ...
- I2C(smbus pmbus)和SPI分析
2C和SPI作为两种非常常用的低速外部总线 I2C I2C是以前的飞利浦半导体制定的标准,也就是如今的NXP. I2C总线由一条数据线(SDA)和一条时钟线(SCL)组成.设备分主从,主设备提供时钟, ...
- 奇异值分解(SVD)原理与在降维中的应用
奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域.是 ...
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- 线性判别分析LDA原理总结
在主成分分析(PCA)原理总结中,我们对降维算法PCA做了总结.这里我们就对另外一种经典的降维方法线性判别分析(Linear Discriminant Analysis, 以下简称LDA)做一个总结. ...
- [原] KVM 虚拟化原理探究(1)— overview
KVM 虚拟化原理探究- overview 标签(空格分隔): KVM 写在前面的话 本文不介绍kvm和qemu的基本安装操作,希望读者具有一定的KVM实践经验.同时希望借此系列博客,能够对KVM底层 ...
- H5单页面手势滑屏切换原理
H5单页面手势滑屏切换是采用HTML5 触摸事件(Touch) 和 CSS3动画(Transform,Transition)来实现的,效果图如下所示,本文简单说一下其实现原理和主要思路. 1.实现原理 ...
- .NET Core中间件的注册和管道的构建(1)---- 注册和构建原理
.NET Core中间件的注册和管道的构建(1)---- 注册和构建原理 0x00 问题的产生 管道是.NET Core中非常关键的一个概念,很多重要的组件都以中间件的形式存在,包括权限管理.会话管理 ...
- python自动化测试(2)-自动化基本技术原理
python自动化测试(2) 自动化基本技术原理 1 概述 在之前的文章里面提到过:做自动化的首要本领就是要会 透过现象看本质 ,落实到实际的IT工作中就是 透过界面看数据. 掌握上面的这样的本领 ...
随机推荐
- DigitalOcean上使用Tornado+MongoDB+Nginx+Supervisor+DnsPod快速搭建个人博客
DigitalOcean 之前买了个便宜的VPS并且在上面搭建了我自己写的博客程序,后来VPS里运行MongoDB经常自己挂掉就索性没理了.直到现在VPS已经过期,服务器被强制关掉了.周末在家索性想着 ...
- [读书笔记]C#学习笔记八:StringBuilder与String详解及参数传递问题剖析
前言 上次在公司开会时有同事分享windebug的知识, 拿的是string字符串Concat拼接 然后用while(true){}死循环的Demo来讲解.其中有提及string操作大量字符串效率低下 ...
- linux学习笔记1
2016年09月25日 unix与linux发展史 unix是linux之父,学习linux后能容易上手unix. linux是源码开放的unix,由一位芬兰大学生李纳斯在网络上发起,和后来众多爱好者 ...
- paip.自适应网页设计 跟 响应式 设计的区别跟原理and实践总结
paip.自适应网页设计 跟 响应式 设计的区别跟原理and实践总结 响应式Web设计(Responsive Web design)的理念是: 1 #-----------自适应布局VS响应式布局 2 ...
- Linux中ctrl-c, ctrl-z, ctrl-d 区别
在Linux中: ctrl-c: ( kill foreground process ) 发送 SIGINT 信号给前台进程组中的所有进程,强制终止程序的执行: ctrl-z: ( suspend ...
- VS 2008 创建MFC程序对话框的步骤
用过不少编程语言,可是刚开始学的时候最容易忘记一些简单的流程或者生疏了.那么这里就说说VS 2008 创建MFC程序对话框的步骤.我主要是android开发方面的.平时使用jni调用不少c++代码.所 ...
- 这样leetcode简单题都更完了
这样leetcode简单题都更完了,作为水题王的我开始要更新leetcode中等题和难题了,有些挖了很久的坑也将在在这个阶段一一揭晓,接下来的算法性更强,我就要开始分专题更新题目,而不是再以我的A题顺 ...
- Leetcode 165 Compare Version Numbers
题意:比较版本号的大小 有点变态,容易犯错 本质是字符串的比较,请注意他的版本号的小数点不知1个,有的会出现01.0.01这样的变态版本号 class Solution { public: int c ...
- C++类的底层机理
我们首先从一个问题来阐明类的底层机理: 假如有一个类A,里面有一个成员函数get(),例如: class A { public: void get(); } A a; 那么a.get()表示什 ...
- Android视觉规范-间距规范与文字规范单位换算(dip、sp与px)
http://blog.csdn.net/shimiso/article/details/29826073 1.dip与px Android工程师在写页面时,margin值的单位是dip,而视觉设计师 ...