历史上的今天
今天是:2025年04月22日(星期二)
2019年04月22日 | 关于I2C和SPI总线协议的优缺点
2019-04-22 来源:eefocus
IICvs SPI
现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是这两种通信协议非常适合近距离低速芯片间通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市场需求制定了这两种标准通信协议。
IIC 开发于1982年,当时是为了给电视机内的CPU和外围芯片提供更简易的互联方式。电视机是最早的嵌入式系统之一,而最初的嵌入系统是使用内存映射(memory-mapped I/O)的方式来互联微控制器和外围设备的。要实现内存映射,设备必须并联入微控制器的数据线和地址线,这种方式在连接多个外设时需大量线路和额外地址解码芯片,很不方便并且成本高。
为了节省微控制器的引脚和和额外的逻辑芯片,使印刷电路板更简单,成本更低,位于荷兰的Philips实验室开发了 ‘Inter-Integrated Circuit’,IIC 或 IIC ,一种只使用二根线接连所有外围芯片的总线协议。最初的标准定义总线速度为100kbps。经历几次修订,主要是1995年的400kbps,1998的3.4Mbps。
有迹象表明,SPI总线首次推出是在1979年,Motorola公司将SPI总线集成在他们第一支改自68000微处理器的微控制器芯片上。SPI总线是微控制器四线的外部总线(相对于内部总线)。与IIC不同,SPI没有明文标准,只是一种事实标准,对通信操作的实现只作一般的抽象描述,芯片厂商与驱动开发者通过data sheets和application notes沟通实现上的细节。
架构实现了多主设备仲裁和设备路由。但是对使用的工程师来讲,理解总线结构更费劲,而且总线的性能不高。
SPI的优点在于它的结构相当的直观简单,容易实现,并且有很好扩展性。SPI的简单性不足称其优雅,因为要用SPI搭建一个有用的通信平台,还需要在SPI之上构建特定的通信协议软件。也就是说要想获得SPI特有而IIC没有的特性——高速性能,工程师们需要付出更多的劳动。另外,这种自定的工作是完全自由的,这也说明为什么SPI没有官方标准。IIC和SPI都对低速设备通信提供了很好的支持,不过,SPI适合数据流应用,而IIC更适合“字节设备”的多主设备应用。
小结
在数字通信协议簇中,IIC和SPI常称为“小”协议,相对Ethernet, USB, SATA, PCI-Express等传输速度达数百上千兆字节每秒的总线。但是,我们不能忘记的是各种总线的用途是什么。“大”协议是用于系统外的整个系统之间通信的,“小”协议是用于系统内各芯片间的通信,没有迹象表明“大”协议有必要取代“小”协议。IIC和SPI的存在和流行体现了“够用就好”的哲学。回应文首,IIC和SPI如此的流行,它是任何一位嵌入式工程师必备的工具。
下一篇:I2C接口总结
史海拾趣
|
硅谷动力 手机频道 编辑 3000+500奖金 IT168 硬件频道 编辑 2500 无奖金 硅谷动力 数字家庭频道 主编 5500 新浪 试用期 4000+车马费 TOM 回归社区 无经验的应届毕业生2000起 sohu it频道 编辑 6000+车马费3000 硅谷动 ...… 查看全部问答> |
|
新批准的 ZigBee Health Care 标准现可供公众下载 面向能源管理、住宅、商业和消费电子应用产品创造无线解决方案的全球企业联盟 ZigBee(R) 联盟 (ZigBee(R) Alliance) 今天宣布,董事会已经批准 ZigBee Health Care(ZigBee 医疗保健标准),并向公众发布标准。ZigBee Health Care 带来了新方法,帮 ...… 查看全部问答> |
|
我在使用Yc公司ARM开发板的时候,使用7寸触摸屏,winCE操作系统,使用易录4.0输入软件(手写软件)的时候,发现快速的移动情况下,线条比较稳定,慢速情况下线条非常杂乱,根本不能使用。但是Linux操作系统时,用系统自带的手写输入 ...… 查看全部问答> |
|
比如: #include main() { sbit p11=P1^1; p11=0; } 编译时出现错误; 有些用80X51.h; 头文件 ...… 查看全部问答> |
|
一个键盘过滤驱动支持动态卸载: // 原作者 : sinister VOID KeyDriverUnload( PDRIVER_OBJECT KeyDriver ) { PDEVICE_OBJECT KeyFilterDevice ; PDEVICE_OBJECT KeyDevice ; PDEVICE_EXTENSION KeyExtension; P ...… 查看全部问答> |
|
急,重开一帖,讨论wince是否能支持512M内存问题????? 重开一帖方便大家讨论,我用的是s3c6410,arm11的核,可以支持2Gbit即512M内存,以前是128M的,完全可以使用,现在改成512M(没办法,要做移动pc之类的东西。。。),使用两个bank: bank0: 0x50000000 - 0x60000000 bank1: 0x60000000 - 0x7000000 ...… 查看全部问答> |
|
我按照网上写的 采用cygwin 交叉编译的方法 编译ffmpeg 但是 在。/configure 后 就出现 arm-wince-mingw32ce-gcc is unable to create an executable file. C compiler test failed. 这个错误,高手请指点一下。 … 查看全部问答> |
|
总的感觉是为了兼容GCC,RVDS等环境而推出的。实际上ILINK功能比XLINK弱很多。IAR应该迷途知返啊,不要中了ARM的奸计,支持什么所谓的标准,一点也不好用。支持这些垃圾标准,只会丧失自己的长处。IAR for ARM v4版继续发展下 ...… 查看全部问答> |




