IIC设备驱动程序(六)————SMBus协议
1、介绍
系统管理总线(SMBus)是一个两线接口。通过它,各设备之间以及设备与系统的其他部分之间可以互相通信。它基于I2C操作原理。SMBus为系统和电源管理相关的任务提供一条控制总线。一个系统利用SMBus可以和多个设备互传信息,而不需使用独立的控制线路。
系统管理总线(SMBus)标准涉及三类设备。从设备,接收或响应命令的设备。主设备,用来发布命令,产生时钟和终止发送的设备。主机,是一种专用的主设备,它提供与系统CPU的主接口。主机必须具有主-从机功能,并且必须支持SMBus通报协议。在一个系统里只允许有一个主机。
2、SMBus和I2C之间的相似点
2条线的总线协议(1个时钟,1个数据) + 可选的SMBus提醒线
主-从通信,主设备提供时钟
多主机功能
SMBus数据格式类似于I2C的7位地址格式
3、SMBus和I2C之间的不同点
下表为SMBus和I2C的不同点。
SMBus与I2C的比较SMBus I2C
最大传输速度 100kHz 最大传输速度400kHz
最小传输速度 10kHz 无最小传输速度
35ms时钟低超时 无时钟超时
固定的逻辑电平 逻辑电平由VDD决定
不同的地址类型(保留、动态等) 7位、10位和广播呼叫从地址类型
不同的总线协议(快速命令、处理呼叫等) 无总线协议
4、SMBus应用用途
利用系统管理总线,设备可提供制造商信息,告诉系统它的型号/部件号,保存暂停事件的状态,报告不同类型的错误,接收控制参数,和返回它的状态。SMBus为系统和电源管理相关的任务提供控制总线。
5、设备标识
在系统管理总线上,任何一个作为从模式的设备都有一个唯一的地址,叫做从地址。保留的从地址表请参考2.0版的SMBus规范
6、总线协议
SMBus技术规范支持9个总线协议。有关这些协议的详细资料和SMBus地址类型,请参考2.0版的SMBus规范)。这些协议由用户的软件来执行。
7、地址解析协议(ARP)
SMBus从地址冲突可以通过给每个从设备动态分配一个新的唯一地址来解决。ARP有以下的属性:
地址分配利用标准SMBus物理层仲裁机制
当设备维持供电期间,分配的地址仍保持不变,允许设备在断电时保留其地址。
在地址分配后,没有额外的SMBus的打包开销(也就是说访问分配地址的设备与访问固定地址的设备所用时间是一样的)。
任何一个SMBus主设备可以遍历总线。
8、唯一的设备标识符(UDID)
为了提供一种为进行地址分配目的而区分每个设备的机制,每个设备必须拥有一个唯一的设备标识符。
关于在ARP上128位的UDID细节的信息,参考2.0版的SMBus规范
9、SMBus提醒模式
SMBus提醒是一个带中断线的可选信号,用于那些希望扩展他们的控制能力而牺牲一个引脚的设备。SMBALERT和SCL和SDA信号一样,是一种线与信号。SMBALERT通常和SMBus广播呼叫地址一起使用。与SMBus有关的消息为2字节。单一的从设备可以通过SMBALERT发信号给主机表示它希望进行通信,这可通过设置I2C_CR1寄存器上的ALERT位实现。主机处理该中断并通过提醒响应地址ARA(Alert Response Address,地址值为0001100x)访问所有SMBALERT设备。只有那些将SMBALERT拉低的设备能应答ARA。此状态是由 I2C_SR1寄存器中的SMBALERT状态标记来标识的。主机执行一个修改过的接收字节操作。由从发送设备提供的7位设备地址被放在字节的7个最高位上,第八个位可以是0或1。如果多个设备把SMBALERT拉低,最高优先级设备(最小的地址)将在地址传输期间通过标准仲裁赢得通信权。在确认从地址后,此设备不得再拉低它的SMBALERT,如果当信息传输完成后,主机仍看到SMBALERT低,就知道需要再次读ARA。没有执行SMBALERT信号的主机可以定期访问ARA。有关SMBus提醒模式的更多详细资料,请参考2.0版的SMBus规范
10、超时错误
在定时规范上I2C和SMBus之间有很多差别。SMBus定义一个时钟低超时,35ms的超时。SMBus规定TLOW:SEXT为从设备的累积时钟低扩展时间。SMBus规定TLOW:MEXT为主设备的累积时钟低扩展时间。更多超时细节请参考2.0版的SMBus规范I2C_SR1中的状态标志Timeout或Tlow错误表明了这个特征的状态。
11、如何使用SMBus模式的接口
为了从I2C模式切换到SMBus模式,应该执行下列步骤:
设置I2C_CR1寄存器中的SMBus位
按应用要求配置I2C_CR1寄存器中的SMBTYPE和ENARP位。
如果你想把设备配置成主设备,产生起始条件的步骤见15.4.2 I2C主模式。否则,参见15.4.1I2C从模式。
软件程序必须处理多种SMBus协议。
如果ENARP=1且SMBTYPE=0,使用SMB设备默认地址。
如果ENARP=1且SMBTYPE=1,使用SMB主设备头字段。
如果SMBALERT=1,使用SMB提醒响应地址。
12、I2C与SMBUS区别,及smbus实例
**13、总结
I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线;
SMBus 为系统和电源管理这样的任务提供了一条控制总线,使用 SMBus 的系统,设备之间发送和接收消息都是通过 SMBus,而不是使用单独的控制线,这样可以节省设备的管脚数。
所以它们的区别很明显了,一个是该总线上连接设备自身可以控制总线(I2C,速率较高),想干嘛就干嘛,另一个是设备之间可以通过它来传送信息,但是速率比较慢,比如用在检测各元件状态并更新硬件设置引脚等,同时廉价是它的优点。**
IIC设备驱动程序(六)————SMBus协议相关推荐
- 经典 【操作系统实验】 实验六 设备驱动程序 RH5 2.6.18 + 2.6.32 内核
经典 [操作系统实验] 实验六 设备驱动程序 设备驱动程序 简单介绍一下2.6版本内核添加模块的方法: 虚拟块设备驱动程序内容 设备驱动程序 前言: 本文是基于Linux的设备驱动实验流程记录,涵盖了 ...
- SMBus协议与IIC协议区别
1.介绍 系统管理总线(SMBus)是一个两线接口.通过它,各设备之间以及设备与系统的其他部分之间可以互相通信.它基于I2C操作原理.SMBus为系统和电源管理相关的任务提供一条控制总线.一个系统利用 ...
- 实验六 实现一个基于内存映射的设备驱动程序
实验六 实现一个基于内存映射的设备驱动程序 目录 实验六 实现一个基于内存映射的设备驱动程序 实验环境 一.实验目的 二.实验内容 三.实验步骤 四.实验总结 实验环境 操作系统版本:ubuntu-1 ...
- 《Linux Device Drivers》第十六章 块设备驱动程序——note
基本介绍 块设备驱动程序通过主传动固定大小数据的随机访问设备 Linux核心Visual块设备作为基本设备和不同的字符设备类型 Linux块设备驱动程序接口,使块设备最大限度地发挥其效用.一个问题 一 ...
- USB协议与Windows USB设备驱动程序笔记
USB概述 USB主控制器负责数据处理,USB根集线器(ROOT HUB)提供一个连接USB主控制器与USB设备之间的接口和通路.USB集线器(USB HUB)可以对原有的USB端口在数量上进行扩展. ...
- 【嵌入式Linux】嵌入式Linux应用开发基础知识之I2C应用编程和SMBus协议及AP3216C应用编程
文章目录 前言 1.IIC协议和SMBUS协议 1.1.IIC协议 1.1.1.硬件框架 1.1.2.软件框架 1.1.3.读写数据格式 1.1.4.硬件结构--在硬件上是如何实现双向传输 1.2.S ...
- 嵌入式Linux设备驱动程序:用户空间中的设备驱动程序
嵌入式Linux设备驱动程序:用户空间中的设备驱动程序 Embedded Linux device drivers: Device drivers in user space Interfacing ...
- 目前最全面深入的Linux设备驱动程序著作
<精通Linux驱动程序开发(英文版)> 在Linux内核源代码树提供的各个子系统中,drivers/目录是其中最大的一个分支,它比其他子系统大数倍.随着各种新技术的广泛应用,内核中新的设 ...
- 《linux设备驱动程序》——Linux设备模型
一.概论 1.2.6版内核对系统结构的一般性抽象描述.现在内核使用了该抽象支持了多种不同的任务,其中包括: 1).电源管理和系统关机. 2).与用户控件通信. 3).热插拔设备. 4).设备类型. 5 ...
最新文章
- QIIME 2用户文档. 1简介和安装(2019.7)
- JAVA并发编程学习笔记------FutureTask
- 隐藏滚动条,保留鼠标滚动效果
- Hibernate框架整合DM数据库
- hbase启动报错Permission denied: user=xxx, access=WRITE, inode=“/HBase/MasterProcWALs“:root:supergroup:d
- SAP ABAP实用技巧介绍系列之 ABAP XSLT 定义变量
- mysql查询显示柱形图_Grafana配置mysql展示自定义分组柱状图(Mac)
- 数据库:分享四个实用的SQLServer脚本函数,欢迎收藏
- SpringCloud微服务(03):Hystrix组件,实现服务熔断
- Go中的三种排序方法
- 剑指_复杂链表的复制(Python)
- 基于BP神经网络PID控制+Simulink仿真
- 使用PS将图片自然从清晰到模糊过渡
- Python 决策树
- 趣味小游戏——扫雷(优化版)
- qml 文本框获取焦点
- python3.5.5does not support a f profix
- python中namedtuple的用法
- 编写C语言程序 输出一个菱形
- 长链剖分 总结 【知识点】
热门文章
- 字节跳动秋招面试经验分享
- 哪些平台属于典型O2O模式 O2O平台为什么要接入分账系统?
- 【vue】增删查改练习
- zephyr的GPIOTE驱动开发记录——基于nordic的NCS
- 推荐豌豆荚手机精灵——好的东西要一起分享
- VUE表单校验,金额
- 科大讯飞语音合成,pcm转wav
- 打造健康肌肤 PS之古铜色效果制作方法
- Java基础练习题5--[给定一段字符串,将里面的信息进行提取,(注意:需要考虑信息是可变的)String s=“张三:上机成绩=90,笔试成绩=78“+“李四:上机成绩=68,笔试成绩......]
- Snmp学习总结——SNMP4J介绍