SPI总线协议的通信原理及应用举例

最新更新时间:2013-12-04来源: 互联网关键字:SPI  总线协议  通信原理 手机看文章 扫描二维码
随时随地手机看文章

SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。

  (1)SDO – 主设备数据输出,从设备数据输入

  (2)SDI – 主设备数据输入,从设备数据输出

  (3)SCLK – 时钟信号,由主设备产生

  (4)CS – 从设备使能信号,由主设备控制

  其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备成为可能。

  接下来就负责通讯的3根线了。通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。这就是SCK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。

  要注意的是,SCK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCK时钟线的控制可以完成对通讯的控制。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。

  在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。

  最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。

  AT91RM9200的SPI接口主要由4个引脚构成:SPICLK、MOSI、MISO及 /SS,其中SPICLK是整个SPI总线的公用时钟,MOSI、MISO作为主机,从机的输入输出的标志,MOSI是主机的输出,从机的输入,MISO 是主机的输入,从机的输出。/SS是从机的标志管脚,在互相通信的两个SPI总线的器件,/SS管脚的电平低的是从机,相反/SS管脚的电平高的是主机。在一个SPI通信系统中,必须有主机。SPI总线可以配置成单主单从,单主多从,互为主从。

  SPI的片选可以扩充选择16个外设,这时PCS输出=NPCS,说NPCS0~3接4-16译码器,这个译码器是需要外接4-16译码器,译码器的输入为NPCS0~3,输出用于16个外设的选择。

    SPI协议举例

  SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。

  假设下面的8位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、高位先发送。

  那么第一个上升沿来的时候 数据将会是sdo=1;寄存器=0101010x。下降沿到来的时候,sdi上的电平将所存到寄存器中去,那么这时寄存器=0101010sdi,这样在 8个时钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成里一个spi时序。

关键字:SPI  总线协议  通信原理 编辑:神话 引用地址:SPI总线协议的通信原理及应用举例

上一篇:MAX16835高压、350mA、可调节、高亮度LED线性驱动器
下一篇:USB 3.0接口卡增加数据吞吐量

推荐阅读最新更新时间:2023-10-12 20:54

【C51入门笔记】单总线协议+DS18B20
DS18B20芯片: 简介: DS18B20是DALLAS公司生产的一种“单总线”温度传感器,它采用独特的单线接口方式,仅需要一个端口引脚来发送或接收信息,在MCU和DS18B20之间仅需一条数据线。 每个DS18B20都有一个唯一的ROM序列号,所以可以将多只DS18B20同时连在一根单总线上,进行简单的多点分布应用。 DS18B20极为小巧,大小和一个普通的三极管相当,所以在温度测量方面有着比较广泛的应用,包括温度控制,工业系统,消费电子,温度计已经其他的一下热感测系统。 DS18B20内部有三个主要数字部件:64位激光ROM,温度传感器,非易失性温度报警触发器TH和TL。 DS18B20可以采用寄生电源方式工
[单片机]
【C51入门笔记】单<font color='red'>总线协议</font>+DS18B20
基于FPGA的SPI Flash控制器的设计方案
本文提出一个基于FPGA的SPI Flash读写硬件实现方案,该方案利用硬件对SPI Flash进行控制,能够非常方便地完成Flash的读写、擦除、刷新及预充电等操作,同时编写的SPI Flash控制器IP核能够进行移植和复用,作为SOC芯片的功能模块。SPI Flash控制器采用VHDL语言进行编写,在Modelsim 6.5g上通过功能仿真,并且在XUPV5-LX110TFPGA开发板上通过硬件测试,实现结果表明方案的可行性。   1.引言   Flash是一种具有电可擦除的可编程ROM,按接口可以分为两大类:并行Flash和串行 Flash.并行Flash存储量大,速度快;而串行Flash存储量相对较小,但体积小
[模拟电子]
基于FPGA的<font color='red'>SPI</font> Flash控制器的设计方案
CPLD的PLC背板总线协议接口芯片的设计方案
    设计了一组基于CPLD的PLC背板总线协议接口芯片,协议芯片可以区分PLC的背板总线的周期性数据和非周期性数据。详细介绍了通过Verilog HDL语言设计状态机、协议帧控制器、FIFO控制器的过程,25MHz下背板总线工作稳定的试验结果验证了协议芯片设计的可行性。 可编程逻辑控制器(PLC)主机是通过背板总线支持扩展模块的连接, 背板总线是PLC 主机同I/O扩展模块之间的高速数据通路,支持主机和扩展模块之间的I/O 数据刷新。背板总线的技术水平决定了PLC 产品的I/O 扩展能力,是PLC 设计制造的核心技术。目前,PLC 大多采用串行通信技术实现背板总线,串行总线引线少、硬件成本低,跟并行总线相比不容易受干扰
[嵌入式]
单片机用Mssp_spi模块三点通信
效果如下:右边作为从机单片机进行AD采样,然后将数据发送到左主单片机,它将数据送往74LS164,再送到显示终端 程序如下 : /**host.c/ #include htc.h #include 7seg.h #ifndef _XTAL_FREQ #define _XTAL_FREQ 4000000 #endif /* SPI自动按全双工形式运行, 也就发送一个信息时必接收一个信号, 这是否是从机发来的信号不得而知。 因此我定义了一个协议:/主机发送0X00作为控制命令, 以控制从机何时采集信号; 主机接收从机信号时,伴随 发送0X0FF
[单片机]
单片机用Mssp_<font color='red'>spi</font>模块三点通信
51 软件模拟SPI驱动OLED
1.OLED简介 OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesence Display, OELD)。OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。 OLED显示技术具有自发光的特性,采用非常薄的有机材料涂层和玻璃基板,当有电流通过时,这些有机材料就会发光,而且OLED显示屏幕可视角度大,并且能够节省电能。 2.OLED模块简介 本文采用中景园的 0.96 寸的OLED显示
[单片机]
51 软件模拟<font color='red'>SPI</font>驱动OLED
STM32 基础系列教程 15 - SPI
前言 学习stm32 SPI通信接口使用,学会用SPI接口收发数据。 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。 本示例所用的最小系统板原理图: 从本节开始,关于CUBEMX工具及KEIL工具的操作将不再细讲,如果还有不熟悉的可以查看之前的教程文档。下面直接介绍工程配置: 系统时钟树 SPI器配置 引脚配置 中断配置(保持默认即可) 工程代码 在main.c 中加入如下图所示代码: 到此,我们就通过STM32的SPI接实发送
[单片机]
STM32 基础系列教程 15 - <font color='red'>SPI</font>
ATmega128(SPI通信)
//atmega128的SPI应用示例程序,采用SPI接口的DAC芯片TLC5615,连续进行电压转换 //DAC为TI公司的10位串行电压型输出的DAC芯片TLC5615,SPI接口连接方式 //驱通过SPI接口,动DAC芯片,使其完成000-FFC(TLC5615后两位的值一直为0)输出的转换 //LED指示灯DS3对应从暗到亮,表示电压逐渐增大 //编译环境 AVR Studio 4.17/AVR GCC //系统时钟7.3728MHZ,设置熔丝位为外部高频石英晶体振荡,启动时间4.1ms //*******************************************************
[单片机]
基于增强型SPI接口的大容量Flash扩展实现
1 引言 随着信息时代的到来,各种信息的集成和交互越来越频繁。运动控制系统中需要处理和存储的信息量也与日俱增,大部分运动控制系统的核心器件MCU自身已经集成了较大容量的存储器(与以前MCU相比),但仅仅依靠MCU自身的存储器一般很难满足系统对大容量存储的要求,因此必须找到高效的方法实现对系统存储容量的扩展。 SPI是一个高效、数据位数可编程设置的高速输入/输出串行接口,几乎所有MCU生产厂商都提供对SPI接口的支持,目前高速SPI接口的时钟频率已达到60MHz甚至更高,SPI接口一般只用4根连接线即可完成所有的数据通讯和控制操作,因此不占用MCU的数据总线和地址总线,极大的节约了系统的硬件资源,是一种经
[应用]
小广播
最新模拟电子文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved