最新SMBus与I2C总线的区别.doc

最新SMBus与I2C总线的区别.doc

ID:60216871

大小:118.00 KB

页数:5页

时间:2020-12-04

最新SMBus与I2C总线的区别.doc_第1页
最新SMBus与I2C总线的区别.doc_第2页
最新SMBus与I2C总线的区别.doc_第3页
最新SMBus与I2C总线的区别.doc_第4页
最新SMBus与I2C总线的区别.doc_第5页
资源描述:

《最新SMBus与I2C总线的区别.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、__________________________________________________SMBus与I2C总线的区别TheI²CbusandtheSMBusarepopular2-wirebusesthatareessentiallycompatiblewitheachother.Below,significantdifferencesbetweenthetwobuses.  I²CSMBusTimeoutNoYesMinimumClockSpeedDC10kHzMaximumClockSpeed100kHz(400kHzand2MHzalsoav

2、ailable)100kHzVHIGH0.7×VDD,3.0VFixed2.1VVLOW0.3×VDD,1.5VFixed0.8VMaxI3mA350µAClockNomenclatureSCLSMBCLKDataNomenclatureSDASMBDATGeneralCallYesYesAlert#NoYes SMBus与I2C的差别    SMBus与I2C总线之间在时序特性上存在一些差别。首先,SMBus需要一定数据保持时间,而I2C总线则是从内部延长数据保持时间。SMBus具有超时功能,因此当SCL太低而超过35ms时,从器件将复位正在进行的通信。相反

3、,I2C采用硬件复位。SMBus具有一种警报响应地址(ARA),因此当从器件产生一个中断时,它不会马上清除中断,而是一直保持到其收到一个由主器件发送的含有其地址的ARA为止。SMBus只工作在从10kHz到最高100kHz。最低工作频率10kHz是由SMBus超时功能决定的(1)SMBus是一种二线制串行总线,1996年第一版规范开始商用。它大部分基于I2C总线规范。和I2C一样,SMBus不需增加额外引脚,创建该总线主要是为了增加新的功能特性,但只工作在100KHZ且专门面向智能电池管理应用。它工作在主/从模式:主器件提供时钟,在其发起一次传输时提供一个起始

4、位,在其终止一次传输时提供一个停止位;从器件拥有一个唯一的7或10位从器件地址。     SMBus与I2C总线之间在时序特性上存在一些差别。首先,SMBus需要一定数据保持时间,而I2C总线则是从内部延长数据保持时间。SMBus具有超时功能,因此当SCL太低而超过35ms时,从器件将复位正在进行的通信。相反,I2C采用硬件复位。SMBus具有一种警报响应地址(ARA),因此当从器件产生一个中断时,它不会马上清除中断,而是一直保持到其收到一个由主器件发送的含有其地址的ARA为止。SMBus只工作在从10kHz到最高100KHZ。最低工作频率10kHz是由SMB

5、us超时功能决定的。收集于网络,如有侵权请联系管理员删除__________________________________________________(2)参照i2c时序图,才用smbus总线完成对应读写函数。A,mma7660 staticintmma7660_write_register(constu8subAddress,u8*bufP) {      intret;      unsignedlongflags;      spinlock_t*lock=get_i2c_lock();      if(g_client==NULL

6、

7、lock==

8、NULL) /* Noglobalclientpointer? */             return-1;     spin_lock_irqsave(lock,flags);      ret= i2c_smbus_write_byte_data(g_client,subAddress,*bufP); //写一个字节的数据      spin_unlock_irqrestore(lock,flags);     returnret; }staticintmma7660_read_register(constu8subAddress,u8*bufP) {

9、       intret=0;       unsignedlongflags;         spinlock_t*lock=get_i2c_lock();       if(g_client==NULL

10、

11、lock==NULL) /* Noglobalclientpointer? */             return-1;        spin_lock_irqsave(lock,flags);       g_client->flags

12、=I2C_M_NOSTOP; //注意写两个器件地址之间的SR,中间没有STOP,相当于重发。所以要置标志

13、       ret=i2c_smbu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。