浅谈SPI总线

发布者:camuspyc最新更新时间:2015-01-06 来源: 51hei关键字:SPI总线  Master  Slave 手机看文章 扫描二维码
随时随地手机看文章

SPI总线概述

SPI全称是串行外设接口(Serial Peripheral Interface),是由Motorola提出的一种全双工同步串行通信接口,通信波特率可以高达5Mbps,但具体速度大小取决于SPI硬件。SPI接口具有全双工操作,操作简单,数据传输速率较高的优点,但也存在没有指定的流控制,没有应答机制确认是否接收到数据的缺点。

SPI总线的构成及信号类型

SPI总线只需四条线(如图1所示)就可以完成MCU与各种外围器件的通讯:

1)MOSI – Master数据输出,Slave数据输入

2)MISO – Master数据输入,Slave数据输出

3)SCK  – 时钟信号,由Master产生

4)/CS  – Slave使能信号,由Master控制。


                                                                           图1

SPI通信采用主从模式(Master-Slave)架构,一般为一个Master和多个Slave的应用模式。SPI总线构成如图2所示。


                                                                            图2

SPI总线操作时序

SPI接口在Master控制下产生的从器件使能信号和时钟信号,两个双向移位寄存器按位传输进行数据交换,传输数据高位在前,低位在后(MSB first)。如图3所示,在SCK的下降沿上数据改变,上升沿一位数据被存入移位寄存器。

 

图3

在一个SPI时钟周期内,会完成如下操作:

1) Master通过MOSI线发送1位数据,同时Slave通过MOSI线读取这1位数据

2) Slave通过MISO线发送1位数据,同时Master通过MISO线读取这1位数据

Master和Slave各有一个移位寄存器,如图4所示,而且这两个移位寄存器连接成环状。依照SCK的变化,数据以MSB first的方式依次移出Master寄存器和Slave寄存器,并且依次移入Slave寄存器和Master寄存器。当寄存器中的内容全部移出时,相当于完成了两个寄存器内容的交换。



                                                                               图4

另外,SPI有四种工作模式,通过设置时钟空闲时为高或者低的状态,以及数据是在时钟的上升沿或下降沿锁存可将SPI配置成相应的工作模式。

SPI总线注意点

1) Master配置SPI接口时钟的时候一定要考虑从设备的操作时序要求,因为Master这边的时钟极性和相位都是以Slave为基准的。因此在时钟极性的配置上一定要确定Slave是在SCK的下降沿还是上升沿输出数据,是在SCK的上升沿还是下降沿接收数据。

2) 当Slave时钟频率小于Master时钟频率时,如果Master的SCK的速率太快,会出现Slave接收到的数据不正确,而SPI接口又没有应答机制确认Slave是否接收到数据从而导致通信传输数据错误。

关键字:SPI总线  Master  Slave 引用地址:浅谈SPI总线

上一篇:uTenux的移植方法(cortex M)
下一篇:你了解你手中的usb线和杜邦线吗?

推荐阅读最新更新时间:2024-03-16 13:50

SPI总线在51系列单片机系统中的实现
摘要:MCS51系列、MCS96系列等单片机由于都不带SPI串行总线接口而限制了其在SPI总线接口器件的使用。文中介绍了SPI串行总线的特征和时序,并以串行E2PROM为例,给出了在51系列单片机上利用I/O口线实现SPI串行总线接口的方法和软件设计程序。 关键词:单片机 SPI串行总线 总线接口 1 引言 SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一
[应用]
STM32F103 Slave I2C配置
才接触STM32开发,由于项目需求需要,需要linux系统与STM32通过I2C进行通讯,网上合适资料有限,花了不少时间,所以记录在此。 描述:Linux发送数据后,每隔10ms轮询stm32(应该做中断触发的,但由于硬件接口限制),只读一个字节判断是否有数据,如果有则读相应长度的内容。 自定义缓冲区格式:首字节为长度信息,后面是内容信息,如 uint8_t I2C_Buffer_Rx ;//0:len 1...= data (1)I2C Slave初始化 void IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; I2C_InitTypeDef I2C_I
[单片机]
激活S7-300 Master CPU的系统诊断并在HMI上调用
激活 CPU 的系统诊断 这里将激活“S7-300 Master”CPU 的系统诊断。 如果激活了系统诊断,则在下一次编译硬件时将自动生成诊断所需的所有报警和块。 在设备组态中选择 CPU 并在巡视窗口中打开“属性”选项卡。 在“系统诊断” “常规”下,激活对该 CPU 的系统诊断。 3. 检查在激活系统诊断(默认设置)期间是否启用了“发送报警”和“装载硬件组态时,将装载系统诊断块”功能。 必要时,需启用这两个功能。 4. 打开诊断支持。 通过激活系统诊断,已自动激活了用于获取诊断数据的数据块“RSE_DIAGNOSTIC_STATUS_DB” 。 5. 要生成所需的系统诊断块,需切换到设备视图的工作区
[嵌入式]
激活S7-300 <font color='red'>Master</font> CPU的系统诊断并在HMI上调用
基于SPI总线技术的同步422接口设计
摘 要: 以SPI总线技术为基础,用微控制器S3C2450X和电平转换芯片MAX3088设计了一个RS-422接口电路,将SPI单端非平衡传输信号转换为RS-422差分信号。在保证SPI同步传输的高效性和高速性的同时,还增强了信号的抗干扰能力。 同步传输(Synchronous Transmission)是一种发送方与接收方都采用相同时钟频率的传输方式。具体来说,就是把要传输的一组数据组合成一帧,每一帧的开头部分是一组同步字符,用于通知接收方一个帧已经到达,但它同时还能确保接收方的采样速度和比特的到达速度一致,使收发双方进入同步。帧的结尾部分是一个帧结束标记,用于表示在下一帧开始之前没有其他即将到达的数据了。接收方不必对每
[单片机]
SPI总线在51单片机系统中的实现
  一个完整的单片机系统,通常包括键盘输入、显示输出、打印输出、数据采集等许多功能模块。这些功能模块一般是通过I/O端口实现与单片机的数据交换,但是单片机的I/O端口有限,且一般用来处理数字信号,从而产生了总线式传输模式。   现在大多数单片机都是传统的三总线结构,即地址,数据,控制三总线。由于方便控制,三总线得到广泛的应用。但是作为并行总线,它也有一定的局限性。不适合远距离的传输。与I/O口的数目存在矛盾。随着电子技术的进步,发展出很多新的总线接口,如USB、I2C、CAN、SPI、1-Wire等。这些总线的特点都是串行接口,只需要几根甚至一根线就可以实现数据的传输。本文通过对支持SPI总线的AD器件MAX189性能分析,简要介
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved