打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
smbus协议(I2c touchpanel 中用到)
userphoto

2015.01.27

关注

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的比较           

             最大传输速度 100kHz 最大传输速度400kHz   最小传输速度 10kHz 无最小传输速度   

                      35ms时钟低超时无时钟超时   

                固定的逻辑电平                 逻辑电平由VDD决定   

              不同的地址类型(保留、动态等) 7位、10位和广播呼叫从地址类型  

      不同的总线协议(快速命令、处理呼叫等)                      无总线协议   

 

4、SMBus应用用途  利用系统管理总线,设备可提供制造商信息,告诉系统它的型号/部件号,保存暂停事件的状态,报告不同类型的错误,接收控制参数,和返回它的状态。SMBus为系统和电源管理相关的任务提供控制总线。  

 

5、设备标识  在系统管理总线上,任何一个作为从模式的设备都有一个唯一的地址,叫做从地址。保留的从地址表请参考2.0版的SMBus规范(http://smbus.org/specs/)。  

6、总线协议  SMBus技术规范支持9个总线协议。有关这些协议的详细资料和SMBus地址类型,请参考2.0版的SMBus规范(http://smbus.org/specs/)。这些协议由用户的软件来执行。  

7、地址解析协议(ARP)   SMBus从地址冲突可以通过给每个从设备动态分配一个新的唯一地址来解决。ARP有以下的属性:  地址分配利用标准SMBus物理层仲裁机制  当设备维持供电期间,分配的地址仍保持不变,允许设备在断电时保留其地址。  在地址分配后,没有额外的SMBus的打包开销(也就是说访问分配地址的设备与访问固定地址的设备所用时间是一样的)。  任何一个SMBus主设备可以遍历总线。  

8、唯一的设备标识符(UDID)   为了提供一种为进行地址分配目的而区分每个设备的机制,每个设备必须拥有一个唯一的设备标识符。  关于在ARP上128位的UDID细节的信息,参考2.0版的SMBus规范(http://smbus.org/specs/)。  

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规范(http://smbus.org/specs/)。  

10、超时错误  在定时规范上I2C和SMBus之间有很多差别。SMBus定义一个时钟低超时,35ms的超时。SMBus规定TLOW:SEXT为从设备的累积时钟低扩展时间。SMBus规定TLOW:MEXT为主设备的累积时钟低扩展时间。更多超时细节请参考2.0版的SMBus规范(http://smbus.org/specs/)。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提醒响应地址。

 

 

 

实际开发中用到的i2c_smbus类似于I2c接口协议,它可以不通过具体的某个设备的I2c的接口,在设备与设备之间、设备与系统之间传输数据,比如I2C接口的multitouch,作为一个input设备,直接通过i2c_smbus_read_word_data()读取multitouch中数据,然后上报给input设备,以前的Elastos OS设备驱动不太一样(通过notify主动上报),一定要搞清楚这个,否则很难理解i2c_algorithm中两个XXX_xfer之间区别,相对而言linux驱动结构更加严谨,就是新老驱动之间改动较大,现有的书籍对初学者作用不大,还是需要自己跟踪源代码,了解其架构这样才比较容易理解透彻

 

一般来说,如果适配器支持了master_xfer那么它也可以模拟支持smbus的传输。但如果只实现smbus_xfer,则不支持一些i2c的传输!(这就是为什么touch中用smbus传输数据给input的原因所在)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
I2C
I2C很简单,但很多人却不了解其通信原理和协议
关于I2C和SPI总线协议
DS1337 时钟芯片在 C8051F 上的实现
IIC通信协议
一文了解I3C 解析(三)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服