SPI的通信原理以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,有4根线,单向传输时只要3根线。
(1)MOSI(SDO) – 主设备数据输出,从设备数据输入(Master Out Slave In)
(2)MISO(SDI)  – 主设备数据输入,从设备数据输出(Master In Slave Out)
(3)SCLK – 时钟信号,由主设备产生(Serial Clock)
(4)CS – 从设备使能信号,由主设备控制,拉低有效。(Chip Select)
 
 
四种SPI模式:
  
第一种模式CPOL = 0, CPHA = 0 (Format A:第一个边沿发送数据,第二个边沿接收数据):
  不工作时CLOCK为低,CLOCK上升沿锁存数据(采样),下降沿移出数据(设置)。
第二种模式CPOL = 0, CPHA = 1 (Format B:第二个边沿发送数据,第一个边沿接收数据):
  不工作时CLOCK为低,CLOCK下降沿锁存数据(采样),上升沿移出数据(设置)。
第三种模式CPOL = 1, CPHA = 0 (Format A:第一个边沿发送数据,第二个边沿接收数据):
  不工作时CLOCK为高,CLOCK下降沿锁存数据(采样),上升沿移出数据(设置)。
第四种模式CPOL = 1, CPHA = 1 (Format B:第二个边沿发送数据,第一个边沿接收数据):
  不工作时CLOCK为高,CLOCK上升沿锁存数据(采样),下降沿移出数据(设置)。
 
这四种模式的选择主要看从设备的支持。CS为高的时候非片选,此时根据CPOL模式设置SPI端口初始化状态。CS为低的时候片选,此时根据CPHA看是否要对SPI相位作偏移和设置数据采样时的时钟状态。
 
1、SPI的IO状态初始化[CPOL=1]
  {
    CS_H
    CLK_H
    DATA_H
    CS_L
  }
2、SPI数据传输[CPHA=1]
  {
    CS_L
 
    {//[器件特殊要求先发送一个1]      
      DATA_L
      CLK_L
      CLK_H
    }
    
    DATA_ToBeSent
 
    CLK_L
    CLKH
    
    CS_H
  }
 
 
 

SPI的更多相关文章

  1. SPI基础知识

    Serial Peripheral Interface 是摩托罗拉公司提出的一种总线协议,主要应用在EEPROM,FLASH,实时时钟,A/D转换,以及数字信号处理和数字信号解码器中 是一种高速,全双 ...

  2. spi子系统之驱动SSD1306 OLED

    spi子系统之驱动SSD1306 OLED 接触Linux之前,曾以为读源码可以更快的学习软件,于是前几个博客都是一边读源码一边添加注释,甚至精读到每一行代码,实际上效果并不理想,看过之后就忘记了.主 ...

  3. java中的SPI机制

    1 SPI机制简介 SPI的全名为Service Provider Interface.大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的.在java.util.ServiceLoader的文档里 ...

  4. 基于TQ2440的SPI驱动学习(OLED)

    平台简介 开发板:TQ2440 (NandFlash:256M  内存:64M) u-boot版本:u-boot-2015.04 内核版本:Linux-3.14 作者:彭东林 邮箱:pengdongl ...

  5. SPI协议及IO模拟

    SPI协议 SPI协议网上资料比较多,但是也比较乱,当初在网上搜集的错误资料导致现在比较混乱. SPI协议资料比较正规的是: 1.SPI的规约协议英文文档,例如<摩托罗拉spi协议规范> ...

  6. STM32F412应用开发笔记之三:SPI总线通讯与AD采集

    本次我们在NUCLEO-F412ZG试验模拟量输入采集.我们的模拟量输入采用ADI公司的AD7705,是一片16位两路差分输入的AD采集芯片.具有SPI接口,我们将采用SPI接口与AD7705通讯.两 ...

  7. spi 10方式编写

    //第一个CS变低的时候要sclk为高电平,第一个跳变沿进行赋值 module spi(input clk,input rst_n,output reg sclk,output reg cs,outp ...

  8. 挣值管理(PV、EV、AC、SV、CV、SPI、CPI) 记忆

    挣值管理法中的PV.EV.AC.SV.CV.SPI.CPI这些英文简写相信把大家都搞得晕头转向的.在挣值管理法中,需要记忆理解的有三个参数:PV.AC.EV.     PV:计划值,在即定时间点前计划 ...

  9. SPI总线

    一.概述. SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控 ...

  10. I2S/PCM/IOM-2、I2C/SPI/UART/GPIO/slimbus

    概述 I2S,PCM,IOM-2都是数字音频接口,传数据的. I2C,SPI,UART,GPIO是控制接口,传控制信令的. I2S I2S(Inter-IC Sound Bus)是飞利浦公司为数字音频 ...

随机推荐

  1. Jacoco入门

    Jacoco介绍 转自:wangmuming 的博客 Jacoco是一个开源的覆盖率工具.Jacoco可以嵌入到Ant .Maven中,并提供了EclEmma Eclipse插件,也可以使用JavaA ...

  2. c++ 基础一

    // my first program in C++ #include <iostream.h> using namespace std; int main() { cout <&l ...

  3. asp.net初识

    请求=========处理=============响应 不是服务器读网页.表单,而是我们向服务器提交数据 1.asp.net 服务器端控件是ASP.NET对HTML的封装,ASP.NET会将服务器端 ...

  4. 运行html代码

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  5. pb自动注册ole控件

    方法一:  1.手工注册OCX控件 将该控件随程序一起发布,然后,将此文件拷到windows\system,或者直接放在本运行目录,然后执行dos命令,run( "regsvr32   *. ...

  6. 总结-css编码规范

    一.注释 统一采用 :/* 注释内容 */ 二.命名 1.常用命名(多查单词) 参考命名规范.doc 2.选择器 1> [建议] 选择器的嵌套层级应不大于 3 级,位置靠后的限定条件应尽可能精确 ...

  7. 对象序列化到本地文件 ObjectOutputstream ObjcetInputstream

    package com.main.test; import java.io.FileInputStream; import java.io.FileNotFoundException; import ...

  8. Python学习路程day15

    Python之路[第十五篇]:Web框架 Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/en ...

  9. 理解python的with语句

    Python’s with statement provides a very convenient way of dealing with the situation where you have ...

  10. 2016 - 1 - 27 javaScrip初步(一)

    <head> </head> <body> <!-- The onclick attribute is the code that happens when ...