1. 简介

SPI, Serial Peripheral Interface, 串行外设接口, 是一种高速的、全双工、同步的通信总线
SPI在芯片的管脚上只占用四根线

SPI接口主要用于MCU与各种外围设备以串行方式进行通信以交换信息
外围设备包括EEPROM、FLASH、实时时钟、AD转换器、数字信号处理器和数字信号解码器中

它以主从方式工作, 通常有一个主设备和一个或多个从设备
下图是SPI常用的两种场景

2. 引脚

SPI通常有四组信号线

- SCLK      : Serial Clock(自master输出)
- MOSI/SIMO : Master Output, Slave Input(自master输出)
- MISO/SOMI : Master Input, Slave Output(自slave输出)
- SS : Slave Select(低电平有效;自master输出)

另一种称呼亦广泛被使用

- SCK            : Serial Clock(自master输出)
- SDI/DI/SI : Serial Data In
- SDO/DO/SO : Serial Data Out
- nCS/CS/nSS/STE : Chip Select, Slave Transmit Enable(低电平有效;自master输出)

3. 原理

在SPI中,数据是同步进行发送和接收的, 数据传输的时钟基于来自Master的时钟脉冲
最常用的时钟设置基于时钟极性(CPOL)和时钟相位(CPHA), 它们决定了数据取样的时钟沿

- 时钟极性(CPOL): 定义SPI串行时钟的活动状态; CPOL=0表示时钟开始值是低电平, 所以第一阶段(前沿)的时候会处在上升沿,第二阶段(后沿)是下降沿; CPOL=1表示时钟开始是高电平, 所以第一阶段(前沿)就是下降沿;
- 时钟相位(CPHA): 定义相对于数据位的时钟相位, 用于采样数据; CPHA=0表明在前沿期间进行采样; CPHA=1表明在后沿进行采样

tip: 关于CPOL和CPHA, 请参考<详解SPI中的极性CPOL和相位CPHA>

基于CPOL和CPHA的组合SPI有四种工作模式

参考:
<存储器介绍>
<SPI子系统分析>

最新文章

  1. Spark集群部署
  2. (l老陈-小石头)典型用户、用户故事、用例图
  3. 左偏树(DP)问题
  4. ACE - 代码层次及Socket封装
  5. 基于socket的客户端和服务端聊天机器人
  6. 怎么样putty打开图形化管理工具,在终端上
  7. 用Eclipse Maven 创建 Web 3.0 项目问题 正确的处理步骤
  8. Twisted 介绍 及TCP广播系统实例
  9. jQuery - 链(Chaining)
  10. ASP.NET 发送邮件 SMTP
  11. 一条命令关掉centos所有不必要的服务和端口号
  12. ionic3 启动白屏处理
  13. vue.js 传参 href传参 与router-link传参
  14. 155. Min Stack (stack)
  15. Luogu 2467[SDOI2010]地精部落 - DP
  16. read(10, &amp;quot;NTP0 13690\n&amp;quot;, 64) 数据库登录缓慢
  17. MP3帧时长为26ms的来历
  18. python-kafka之理论篇
  19. linux processes identifiers
  20. UNION会自动删除重复项,union与union all的差异

热门文章

  1. SVD在推荐系统中的应用详解以及算法推导
  2. html_outputer.py
  3. Android Studio卡在refreshing gradle project的原因和快速解决办法
  4. Android stadio 工具使用
  5. Dragger 2遇到的坑 Dragger2详解 Dragger2学习最好的资料
  6. git命令行操作详解
  7. Win Server 8中的利器:微软在线备份服务
  8. 【HTML&amp;CSS】 第二章:标准模式下的页面与怪异模式下的页面区别
  9. css3实现圆角边框渐变
  10. 1、shader简介、渲染管线