SPI总线简介

>SPI总线介绍

    SPI接口是Motorola首先提出的全双工三线同步串行外围接口,采用主从模式(Master Slave)架构;支持多slave模式应用,一般仅支持单Master. 时钟由Master控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB first); SPI接口有2根单向数据线,为全双工通信,目前应用中的 数据速率可达几Mbps的水平。

    SPI总线被广泛地使用在FLASH,  ADC,  LCD等设备与MCU间,要求通讯速率较高的场合。

  

SPI总线物理—拓扑结构

  >SPI接口共有4根信号线,分别是:设备选择线,时钟线,串行输出数据线,串行输入数据线。

  1.MOSI : 主器件数据输出,从器件数据输入

  2.MISO :主器件数据输入,从 器件数据输出

  3.SCLK :时钟信号 ,由主器件产生

  4./SS   :从器件使能信号,由主器件控制(片选)

SPI总线协议

>起始信号 :NSS信号线由高变低,是SPI通讯的起始信号

>结束信号 :NSS信号 由 低变高,是SPI通讯的停止信号

>数据传输 :SPI使用MOSI及MISO信号线来传输数据,使用SCK信号线进行数据同步。 MOSI及MISO数据线在SCK的每个时钟周期传输一位数据,且数据输入输出

      是同时     SPI每次数据传输可以8位或16位单位,每次传输的单位数不受限制。

SPI的四种通信模式

  在SPI操作中,最重要的两项设置就是时钟极性(CPOL)和 时钟相位 (CPHA)这两项即是主从设备数据采样的约定方式。

  >时钟极性CPOL :设置时钟空闲时 的电平。

    当CPOL = 0,SCK引脚在空闲状态保持低电平;

    当CPOL = 1,SCK引脚在空闲状态保持高电平。

  >时钟相位CPHA :设置数据采样时的时钟沿

    当CPHA = 0时,MOSI或MISO数据线上的信号将会在SCK时钟线的奇数边沿被采样

    当CPHA = 1时,MOSI或MISO数据线上的信号将会在SCK时钟线的偶数边沿被采样

>通信模式的设置:

    由CPOL及CPHA的不同状态,SPI分成了四种模式,主机与从机需要工作在相同模式下才可以正常通讯,因此主机要按照从机支持的模式去设置。

STM32之SPI通信的更多相关文章

  1. STM32的串口通信

    本篇文章主要讲解一个在开发过程中经常使用到的一个外设---串口. 串口是绝大多数 MCU 中不可或缺的一个外设,同时也是我们开发中经常使用的一种调试手段,所以在STM32的学习中,串口的配置使用也是必 ...

  2. OLED的波形曲线、进度条、图片显示(STM32 HAL库 模拟SPI通信 5线OLED屏幕)详细篇

    少废话,先上效果图 屏幕显示效果         全家福 一.基础认识及引脚介绍 屏幕参数: 尺寸:0.96英寸 分辨率:128*64 驱动芯片:SSD1306 驱动接口协议:SPI 引脚说明: 二. ...

  3. SPI通信

    SPI是由Motorola公司提出的一种同步串行外围接口:它在速度要求不高,低功耗,需要保存少量参数的智能化传感系统中得到了广泛应用: SPI是一个全双工的同步串行接口,在数据传输过程中,总线上只能是 ...

  4. SPI通信的基础知识

    1 SPI物理层 SPI通信设备之间常用物理连接方式如下图  SPI通讯使用3条总线及片选线,3条总线分别为SCK.MOSI.MISO,片选线为CS.  CS:从设备选择信号线,常称为片选信号线,也称 ...

  5. stm32之SPI通信协议

    SPI (Serial Peripheral interface),顾名思义就是串行外围设备接口.SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为P ...

  6. STM32的SPI口的DMA读写[原创www.cnblogs.com/helesheng]

    SPI是我最常用的接口之一,连接管脚仅为4根:在常见的芯片间通信方式中,速度远优于UART.I2C等其他接口.STM32的SPI口的同步时钟最快可到PCLK的二分之一,单个字节或字的通信时间都在us以 ...

  7. 理解一下单片机的I2C和SPI通信

    应某位网友要求,今天说一下单片机的I2C SPI通信,可能说不清楚,因为这毕竟要做实验才可完全理解. I2C和SPI是两种不同的通信协议. 听到协议,似乎高不可攀,其实协议就是人们定义的一个标准而已, ...

  8. SPI通信实验---verilog(FPGA作为从机,使用可读可写)

    本实验讲究实用性,故设计思想为:主机先向从机发送地址,若是向从机写入数据,则向从机发送数据,若是读取从机数据,则向从机发送时钟,然后在时钟下降沿读取数据即可.cs信号上升沿作为SPI通信的结束信号.r ...

  9. 关于SPI通信原理与程序实现

    第一次接触SPI是因为当时用到NRF24L01,需要用SPI进行通信.因为2401上面写着MOSI.MISO.SS.RST,当时以为只要用到SPI就肯定有这几个引脚,以至于限制了自己的思维.只认识MI ...

随机推荐

  1. python2.7.5 +eric4.4.2+PyQt4-4.10.3

    1.安装python  双击运行就可以了 当安装好了Pyhon,记得要配置环境变量,把C:\Python27添加到PATH中 2.安装pyqt默认安装就可以 3.把eric4.4.2拷贝到C:\目录下 ...

  2. 802.1X

    1.简介 IEEE802 LAN/WAN委员会为解决无线局域网网络安全问题,提出了802.1X协议.后来,802.1X协议作为局域网端口的一个普通接入控制机制在以太网中被广泛应用,主要解决以太网内认证 ...

  3. 如何为Kafka集群确定合适的分区数以及分区数过多带来的弊端

    通过之前的文章<Kafka分区分配策略>和<Kafka高性能揭秘>,我们了解到:Kafka高吞吐量的原因之一就是通过partition将topic中的消息保存到Kafka集群中 ...

  4. shell脚本的使用该熟练起来了,你说呢?(篇二)

    继续前一篇的文章: shell脚本的使用该熟练起来了,你说呢?(篇一) 作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:羽林君 shell传递参数 shell传递参数 我们可以在执行 Shell ...

  5. Python基础随笔①(MOOC)

    @ 目录 前言 概述 主体 1.基本语法元素 ①实例:温度转换 要求 分析 代码部分 运行结果 ②作业:Hello World的条件输出 要求 分析 代码 运行结果 ③作业:数值运算 要求 分析 代码 ...

  6. Educational Codeforces Round 30

    Educational Codeforces Round 30  A. Chores 把最大的换掉 view code #pragma GCC optimize("O3") #pr ...

  7. HDU6703 array (线段树)

    题意:长为1e5的全排列 有两个操作 把一个数删掉 询问1,r这个区间内 找到一个数大于等于x 且这个数不等于区间内的所有数 题解:建一颗权值线段树 线段树里存值为i的数在原数组中的坐标 维护坐标的最 ...

  8. Codeforces Round #650 (Div. 3) E. Necklace Assembly (暴力)

    题意:有一个字符串,要求使用其中字符构造一个环(不必全部都用),定义一个环是k美的,如果它转\(k\)次仍是原样,现在给你\(k\),要求最长的k美环的长度. 题解:我们首先看\(k\),如果一个环转 ...

  9. WPF 主动触发依赖属性的 PropertyChanged

    需求背景 需要显示 ViewModel 中的 Message/DpMessage,显示内容根据其某些属性来确定.代码结构抽象如下: // Model public class Message : IN ...

  10. 力扣992.K个不同整数的子数组-C语言实现

    题目 原题链接 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续.不一定独立的子数组为好子数组. (例如,[1,2,3,1,2] 中有 3 个不同的整数: ...