赞
踩
SPI相对I2C而言,比较简单。本文来总结一下SPI总线比较重要的一些技术要点。
SPI(Serial Peripheral Interface) 是一种嵌入式系统中应用广泛的同步串行通信、主从架构式总线接口。80年代由摩托罗拉开发,已成为事实标准。
这句话里有几个关键要点:
要理解这些要点,先上图,一图胜千言:
常见的SPI接口有这样几个引脚:
要理解上面这几个信号引脚的内涵,结合时序图,就比较容易理解了:
数字电路中,同步电路是一种通过时钟信号同步存储元件状态变化的数字电路。
主端>从端:
从端>主端:
采样沿:SPI采用边沿触发采样,对MOSI/MISO上的位序列进行采样,实际芯片有下面两种方式勘误见置顶留言,字数限制改不了,抱歉:
经过这些描述,解释了串行、同步、主从的概念。
众所周知,计算机是一个二进制系统,所有的信息都是基于0/1进行编码、进行运行管理的。由0/1编码进而表示字符、文本、文件。那么SPI实现了底层的0/1码流的传递机制,能传递0/1,通过应用控制、很自然就能交换信息。
这是否有种一生二、二生三、三生万物的意思呢?
所以在研究各种通信总线的物理层时,就其本质而言都是界定如何对信息流的基本单元0/1进行编码、解码、收发的。
对于SPI总线而言,有两种拓扑:
如上图:
有的芯片支持菊花链拓扑连接,这是何意呢?啥是菊花链呢?在电气和电子工程中,雏菊链是一种布线方案,其中多个设备按顺序或按环连接在一起,类似于雏菊的花环。其信息传递在链中流转。
那么对于SPI总线而言,具体是如何连接的呢?
其本质就是主从级联:
其实熟悉数据结构的同学可能会想,这个拓扑咋很像首尾相连的环形链表呢?确实很像,虽然没啥直接关系。
对于SPI的引脚,不同的芯片厂商在DATASHEET上定义的引脚名字可能不同,这里将常见的别名整理一下:
很多功能芯片可能没有MISO引脚,也即无法支持读操作,仅仅支持写入操作。
或许有人会说I2C比SPI更好更为优越,SPI则相对简单粗暴。事实上做这样的对比,个人认为是没什么意义。
这两种协议在鲁棒性方面都比较好。I²C之所以优雅,是因为它在极简的基础架构(两线SDA/SCL)上提供了非常先进的功能,例如自动多主机冲突处理和内置地址管理。但是它相对却非常复杂,在性能上或许有所欠缺。
另一方面,SPI非常易于理解和实施,并且为扩展提供了很大的灵活性。SPI的优雅之处在于简单性。SPI应该被视为构建用于IC之间通信的自定义协议栈的良好接口。因此,尽管使用SPI可能需要做更多的工作,但可以提供更高的数据传输性能和灵活的自由度。
如果一定要比较,则SPI和I2C都为低速设备的通信提供了良好的接口支持,但是SPI更适合点对点传输数据流的应用,而I²C则更适合于多主机“寄存器访问”应用。
正确使用这两种协议可提供相同级别的鲁棒性,芯片厂商对两种接口都广泛支持。市面上提供了大量的外围芯片,比如 EEPROM,ADC,DAC,RTC,微控制器,传感器,LCD控制器,这些芯片主要提供I²C,SPI或同时支持这2个接口。
参考:https://mp.weixin.qq.com/s?__biz=MzAwNjQ4OTE4Mw==&mid=2247485196&idx=1&sn=d846da3b13f9a66f3c34a732835b21b0&chksm=9b0dd23cac7a5b2afe73e7aa9da24bdbd61f920250407a7779d766774d70e51c882e9298107c&mpshare=1&scene=23&srcid=0712z4tZ89kOprDeyF8NbFGD&sharer_sharetime=1597104685748&sharer_shareid=5c7f1d2ab137d67891de961c82dbbb87#rd
其他阅读:https://mp.weixin.qq.com/s?__biz=MzU5MzcyMjI4MA==&mid=2247488551&idx=1&sn=8304b0f892ff41d6d68189e6adbb4169&chksm=fe0d7ae0c97af3f6655265e85eb11cd8a95e6701427030f14bbdf9bcc8163859c4a576bdb670&mpshare=1&scene=23&srcid=0811fdoFEW6agYV8hCH92pAe&sharer_sharetime=1597104857891&sharer_shareid=5c7f1d2ab137d67891de961c82dbbb87#rd
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。