首页/文章/ 详情

SPI通信笔记:基础+动图+时序图+总结,一文吃透!

8月前浏览466
大家好,今天咱们来详细聊聊SPI接口,文章内容有点多,建议先收藏起来再慢慢看。

SPI现在已经成为MCU和外围设备之间最常用的通信方式了。它是一种同步、全双工、主从式的通信接口。工作原理其实很直接:主机产生时钟信号,从机跟着这个时钟同步收发数据。允许双向传输,可以在同一时钟周期内进行主从设备的数据交换。

这种设计让SPI既简单又高效,特别适合需要快速传输数据的场合。不过要注意的是,SPI没有标准的通信协议,不同厂家的设备可能会有差异,所以用的时候一定要仔细看芯片手册。


011

典型应用场景  

SPI接口的核心优势在于它的简单性灵活性,典型应用场景包括:

1、传感器数据采集(如温度传感器、IMU),例如:TMP124芯片,它是由TI推出的工业级数字温度传感器,主打高精度+SPI接口组合,适合对测温有严苛要求的场景。


2、存储器读写(Flash、EEPROM),比如小容量的AT25040,常用来存储配置参数和校准数据。


3、数字信号转换(ADC/DAC)。比如通用ADC芯片MCP4921,它是Microchip推出的低成本12位数字模拟转换器(DAC),主打简单易用+SPI接口组合,适合需要数字控制模拟输出的场景。


4、显示驱动(OLED、TFT屏幕),例如咱们常用的0.96寸OLED屏,一般有I2C和SPI两种接口,虽然SPI多占用两个IO口,但速度比I2C快很多。


021

SPI的连接方式和工作速度  

连接方式

SPI接口可以是3线式或4线式,这里主要介绍常用的4线SPI接口,4线SPI器件有四个信号:

  • 片选(CS):片选信号,低电平有效

  • 时钟(SPI CLK, SCLK):时钟信号由主机产生
  • MOSI:主机输出,从机输入
  • MISO主机输入,从机输出
主机和从机之间的SPI连接
这里要注意一下,主机和从机的MOSI和MISO的接线,这个跟串口TX,RX不一样,很多人容易搞错,主机的MISO接从机的MISO,主机的MOSI接从机的MOSI,直连不交叉。
那怎么判断哪个是主机呢?咱们产生时钟信号的器件称为主机。主机和从机之间传输的数据与主机产生的时钟同步。另外SPI接口只能有一个主机,但可以有一个或多个从机。
来自主机的片选信号用于选择从机。这通常是一个低电平有效信号,拉高时从机与SPI总线断开连接。当使用多个从机时,主机需要为每个从机提供单独的片选信号。


工作速度

SPI速度的典型范围:1 MHz至100 MHz(4 Mbps至400 Mbps),具体速率取决于器件等级:

消费级IC:1-10 MHz(4-40 Mbps)
工业级器件:10-25 MHz(40-100 Mbps)
但咱们在实际应用中,会受限于外设支持(如Flash芯片可达80 MHz,传感器通常8 MHz)

这里再插一句,对比I2C来说,I2C速度就低太多了:标准模式100Kbps,高速模式5Mbps(理论值),但是I2C会少占用两个IO口,所以I2C速度胜在省引脚,SPI赢在速度快。

031

数据传输  

SPI的数据传输,整个过程是这样的:

首先,作为主控的设备要产生时钟信号(SCLK),这个信号就像通信的节拍器。同时,主机要通过拉低片选信号(CS)来选中要通信的从设备,这个CS信号通常是低电平有效,所以主机要给它一个逻辑0。

SPI最厉害的地方在于它是全双工的,这意味着主机可以通过MOSI线往外发送数据的同时,从设备也能通过MISO线往主机发送数据,两边是同时进行的。具体来说,主机把数据一位一位地放到MOSI线上移出去,同时又在MISO线上一位一位地收数据。

所有这些数据的发送和接收都是严格跟着时钟信号的边沿走的,你可以选择在时钟的上升沿或者下降沿来采样数据。至于每次通信要传多少位数据,这个得看具体器件的规格书,不同芯片的要求可能不一样。

咱们来看两张动图

图片

图片

这个过程中要注意三点:

1、是时钟必须由主机产生;

2、CS信号要提前拉低选中从机;

3、数据的收发是同步进行的,不是先发后收或者先收后发。这种设计让SPI既简单又高效,特别适合需要快速传输数据的场合。


041

工作模式  

SPI有4种工作模式,主要通过CPOL和CPHA两个参数来配置:


如下是SPI模式0的时序图。

传输的开始和结束绿色虚线表示;采样边沿橙色虚线表示;移位边沿蓝色虚线表示。当然,这些图形仅供参考。要成功进行SPI通信,必须参阅器件的数据手册并确保满足器件的时序规格。


如下是SPI模式1的时序图。此时:

时钟极性为0,表示时钟信号的空闲状态为低电平

时钟相位为1,表示数据在下降沿采样(由橙色虚线显示),并且数据在时钟信号的上升沿移出(由蓝色虚线显示)。

   


如下是SPI模式2的时序图。此时:

时钟极性为1,表示时钟信号的空闲状态为高电平。

时钟相位为1,表示数据在下降沿采样(由橙色虚线显示),并且数据在时钟信号的上升沿移出(由蓝色虚线显示)。


如下是SPI模式3的时序图。此时:

时钟极性为1,表示时钟信号的空闲状态为高电平。

时钟相位为0,表示数据在上升沿采样(由橙色虚线显示),并且数据在时钟信号的下降沿移出(由蓝色虚线显示)。


051

多从机配置  

咱们的多个从机可与单个SPI主机一起使用。从机可以采用常规模式连接,或采用菊花链模式连接

常规SPI模式:

在咱们SPI常规连接模式下,咱们主机必须为每个从设备单独配备一个片选信号线(CS)。当主机将某个从机的CS信号拉低时,这个从机就被选中,此时MOSI和MISO线上的时钟和数据信号就可以和这个特定的从机进行通信。

这里有个重要限制:同一时间只能有一个从机的CS信号被拉低,如果同时拉低多个CS信号,会导致多个从机同时在MISO线上返回数据,造成数据冲突,主机就无法分辨这些数据到底来自哪个从机。

随着系统连接的从机数量增多,主机需要提供的片选线数量也会相应增加。比如连接8个从机就需要8根独立的CS线,这会快速占用主机的IO口资源,从而限制了系统能够支持的从机数量。为了解决这个问题,可以采用一些扩展技术,比如使用多路复用器(MUX)来产生片选信号。不过这种方案会增加一些硬件复杂度,需要额外添加多路复用器芯片。


菊花链模式:

在SPI菊花链连接方式下,所有从设备共享同一个片选信号(CS),从一个从机传播到下一个从机。具体工作过程是:主机发出时钟信号(SCLK)后,数据首先传输到第一个从机,第一个从机将数据提供给第二个从机,这样依次传递下去。所有从机都使用同一个时钟信号进行同步。

这种连接方式的特点是数据传输需要更多的时钟周期。如下图,如在一个8位数据宽度的系统中,如果要让第三个从机收到数据,就需要24个时钟脉冲(3个从机×8位),而在常规SPI模式下只需要8个时钟脉冲。这是因为数据需要依次通过每个从机,每个从机都会对数据进行处理和转发。

菊花链配置:数据传播

需要注意的是,不是所有SPI设备都支持菊花链模式。在使用这种连接方式前,必须仔细查看所用芯片的技术手册,确认其是否支持菊花链功能。有些芯片可能只支持常规的独立片选模式。此外,菊花链模式虽然节省了片选信号线,但会降低通信效率,因此要根据实际应用需求权衡选择。


061

总结  

SPI接口虽然简单,但在实际应用中需要注意很多细节:

1、接线要正确(直连不交叉);

2、模式要匹配(看器件手册);

3、多从机时要合理选择连接方式。

记住这些要点,就能用好SPI接口啦!如果遇到问题,最靠谱的办法就是查阅器件的数据手册。

声明:


 
声明:参考内容:ADI官网。原创文,转载请注明出处本号对所有原创、转载文章的陈述与观点均保持中立,推送文章仅供读者学习和交流。文章、图片等版权归原作者享有,如有侵权,联系删除。  


来源:硬件笔记本
通用芯片通信理论控制SCL
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-12-03
最近编辑:8月前
硬件笔记本
本科 一点一滴,厚积薄发。
获赞 158粉丝 51文章 1108课程 0
点赞
收藏
作者推荐

TI电路设计指导手册:数据转换器

今天给大家分享一份TI官方公开的实用资料——《电路设计指导手册:数据转换器》。这份307页的手册不仅包含丰富的电路设计干货,每个章节还会提供配套仿真电路,这绝对是咱们工程师的实战宝典。说到数据转换器,其实就是咱们经常打交道的ADC(模数转换器)和DAC(数模转换器)。这俩可是嵌入式软硬件设计里的"老熟人"了,从传感器测量到工业控制,再到音频处理,几乎所有的电子系统都离不开它们。这本手册最大的价值在于,它把复杂的电路设计拆解成了像"烹饪食谱"一样的步骤——每个电路都有明确的设计说明、详细的实现步骤,甚至连仿真波形都给你准备好了。手册里的所有电路都经过了SPICE仿真验证,还贴心地附上了TINA-TI™ SPICE电路的链接。更实用的是,每个电路都会推荐至少一款TI的数据转换器芯片,当然你也可以根据实际需求灵活替换其他型号。整本手册分为ADC和DAC两大板块,下面我具体说说里面的干货内容。 ADC部分包含五大实战章节:1、低功耗/成本优化型电路:特别适合对功耗有要求的产品,应用场景包括PIR传感器,气体传感器,和血糖监测仪以及其它场景。 2、电平转换输入驱动电路:解决不同电压域信号对接的经典问题。比如文章举例高电压电池监控器电路,将±20V的双极性输入信号转换为 ±4.8V的全差分 ADC 差分输入量程,该量程值在放大器的输出线性运行范围内。咱们可以调整组件选择部分的值以允许不同的输入电压电平。 3、低电平传感器输入电路:针对mV级小信号采集的优化方案。4、输入保护、滤波和隔离电路:工业环境必备的一些保护电路。 5、常用的辅助电路:那些不起眼但关键时刻能救场的实用技巧。 DAC部分则聚焦四大应用场景:1、音频输出:应用场景包括汽车音响主机、家庭影院条形音箱和 AV 接收器等等。2、辅助和偏置电路:系统稳定运行的"幕后功臣",确保实现硬件级静音,提供一个低噪声,低压降的电源,让供电电源更加干净。3、电流源:精准控制的秘密武器4、电压源:系统供电的优化方案每个章节又细分成几十个具体电路,比如SAR ADC的前端设计、ΔΣ调制器的抗混叠滤波、高精度DAC的输出缓冲等等。手册的呈现方式对咱们工程师特别友好:先给你个数据表格快速把握关键参数,接着是设计说明和规格要求,然后手把手教你怎么选型计算,最后还配上仿真波形图——直流特性、交流特性、瞬态响应、噪声分析一个都不少。文中举例,比如说输入一个信号在-8mv到+22mv的信号。 设计说明讲了仪表放大器针对低噪声、低失调电压、低漂移、高 CMRR 和高精度进行了优化,但这些仪表放大器可能无法驱动精密 ADC,以在 ADC 采集期间正确地使信号趋稳。然后提出了解决方案参考电路。 使用仪表放大器的共模输入范围计算器 确定 INA826 是否超出共模范围。下图中的共模计算器指示对于0V 共模输入,输出摆幅为 ±14.9V。 直流输出特性 交流传输特性 瞬态 ADC 输入趋稳仿真 (510kSPS) 噪声仿真 最后对增益误差和失调电压进行了估算,对器件特性进行了总结。并给出来电路的源文件地址。再举个例子,当你需要设计一个热电偶采集电路时,可以直接翻到"具有内部温度传感器 CJC 的双通道 K 型热电偶测量电路"章节找到对应的电路模板手册会告诉你:1、确定热电偶的工作范围2、确定ADC的增益范围3、设置电阻器偏置以建立输入直流电平和烧毁检测。这里对各参数以及计算,讲的特别详细。还有其它计算以及流程图,测量转换寄存器设置,伪代码示例,选用器件的介绍,链接详情都备注好了,非常非常详细。这种"开箱即用"的设计参考,能帮我们省下大量调试时间。当然,实际设计中我们还需要灵活变通。手册里推荐的器件可能已经更新换代,或者你的项目有特殊需求(比如需要更低的功耗或更高的ESD防护)。这时候就可以基于手册提供的设计方法论,结合最新的器件选型指南进行优化。TI这份手册最大的价值,就是帮我们在这些矛盾中快速找到最优解。建议大家都保存好这份资料,不一定现在就用,但当遇到"信号采集不准"、"输出波形失真"这类问题时,它很可能就是你的"救命锦囊"。需要说明的是,这本手册的风格和TI之前发布的《运算放大器电路设计指南》一脉相承,都是典型的TI式实用主义——没有太多理论推导,全是能直接落地的解决方案。这种"问题→方案→验证"的编排方式,特别适合需要快速解决问题的工程师。声明: 声明:原创文章,转载请注明出处。本号对所有原创、转载文章的陈述与观点均保持中立,推送文章仅供读者学习和交流。文章、图片等版权归原作者享有,如有侵权,联系删除。 来源:硬件笔记本

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈