用户工具

站点工具


标准:bus:spi:start

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
标准:bus:spi:start [2025/03/15 09:51] – [常用标准] hwwiki标准:bus:spi:start [2025/03/23 17:59] (当前版本) – [Transmission Formats] hwwiki
行 25: 行 25:
 |  MISO  |Master in, slave out. A.k.a. main in, subnode out. The selected slave can drive this line to send data to the master.| |  MISO  |Master in, slave out. A.k.a. main in, subnode out. The selected slave can drive this line to send data to the master.|
  
 +{{:标准:bus:spi:basicspi.png?600|}}
  
 +上图为四线的Basic SPI,另有几种变体:
 +  - Master没有nCS片选信号,单个Slave的片选直接拉低为常开状态
 +  - MOSI和MISO共用一个信号线,通过分时的方法实现输入和输出
 +  - Master只用到了nCS SCLK和MOSI/MISO其中一个共三根线,只需接收或发射,单发射如MCU对接SPI的LCD显示屏。
  
- 
-{{:标准:bus:spi:basicspi.png?600|}} 
  
 ==== Dual SPI ==== ==== Dual SPI ====
行 41: 行 44:
  
 {{:标准:bus:spi:qspi.png?600|}} {{:标准:bus:spi:qspi.png?600|}}
 +
 +===== Transmission Formats =====
 +
 +Basic SPI有四种模式,按空闲时时钟电平,以及采样的时钟边缘分。
 +
 +空闲时时钟电平为0对应CPOL = 0,1对应CPOL = 1。
 +
 +第一个时钟边缘采样对应CPHA = 0,第二个则对应CPHA = 1。
 +
 +不是每个芯片都支持这四种模式,一般均支持0和3,Master和Slave设备需要设定成同一个模式。
 +
 +另Master设备可以在一个总线上和不同模式的slave设备通讯,只需要保证通讯时其他slave设备是inactive状态。
 +
 +列表和示意图如下:
 +
 +|  SPI Mode  |  Clock Polarity (CPOL)  |  Clock Phase (CPHA)  |  Which Clock Edge Is Used To Sample/Shift?  |
 +|  0  |  0  |  0  |  Data sampled on rising edge and shifted out on falling edge.  |
 +|  1  |  0  |  1  |  Data sampled on falling edge and shifted out on rising edge.  |
 +|  2  |  1  |  0  |  Data sampled on falling edge and shifted out on rising edge.  |
 +|  3  |  1  |  1  |  Data sampled on rising edge and shifted out on falling edge.  |
 +
 +{{:标准:bus:spi:spi_modes.png?800|}}
 +
 +===== 总线拓扑=====
 +
 +两种拓扑,分别如下。
 +
 +==== Multidrop configuration ====
 +
 +一个Master,一个或多个Slave设备,master有单独的片选信号(或者通过GPIO扩展芯片扩展)对应相应的Slave设备,示意图如下:
 +
 +{{:标准:bus:spi:spi_three_slaves.svg.png?600|}}
 +
 +==== Daisy chain configuration ====
 +
 +即菊花链模式,Master设备只有一个片选信号连接多个Slave设备,而Slave的MISO作为下一个Slave设备的MOSI,数据在多个Slave设备之间传递。如下图所示,注意这个不是所有的Slave都支持此功能。
 +
 +{{:标准:bus:spi:spi_three_slaves_daisy_chained.svg.png?600|}}
 +
 +===== 设计要求 =====
 +
 +  - Master和Slave需要支持同一种版本的SPI(Baisc Dual or Quad SPI),对于Basic SPI还需看支持同一种SPI Mode。
 +  - SPI的时钟频率不同的芯片差异很大,从几十kHz到几百MHz,Master和Slave只能按照两者中较低的频率进行通讯。
 +  - SPI的时钟如果大于50MHz,PCB需要按照高速线要求布线,如做阻抗控制和阻抗匹配,考虑串扰和干扰等。
 +  - SPI为非标准协议, 一定要确认芯片Datasheet中的具体要求。
 +  - SPI的信号电平一般有1.8V和3.3V两种,Master和Slave信号电平需要一致,不一致的需要做电平转换,如果频率高于1M,需要用专用的转换芯片,详见TI文档{{ :元器件:ic:logic:translators_level-shifters:ti_voltage_translation_buying_guide.pdf | ti_voltage_translation_buying_guide}}
 +
  
 ===== 参考文献===== ===== 参考文献=====
  
   - [[https://blog.mbedded.ninja/electronics/communication-protocols/spi-communication-protocol/|mbedded:SPI Communication Protocol]]   - [[https://blog.mbedded.ninja/electronics/communication-protocols/spi-communication-protocol/|mbedded:SPI Communication Protocol]]
 +  - [[https://en.wikipedia.org/wiki/Serial_Peripheral_Interface|wikipedia:Serial Peripheral Interface]]
标准/bus/spi/start.1742003473.txt.gz · 最后更改: 2025/03/15 09:51 由 hwwiki