SPI串行接口/总线

发布者:黑白之间最新更新时间:2015-09-17 来源: eefocus关键字:SPI  串行接口  总线 手机看文章 扫描二维码
随时随地手机看文章
SPI是由美国摩托罗拉公司推出的一种同步串行传输规范,常作为单片机外设芯片串行扩展接口。SPI有4个引脚:SS(从器件选择线)、SDO(串行数据输出线)、SDI(串行数据输入线)和SCK(同步串行时钟线)。SPI可以用全双工通信方式同时发送和接收8(16)位数据,过程如下:主机启动发送过程,送出时钟脉冲信号,主移位寄存器的数据通过SDO移入到从移位寄存器,同时从移位寄存器中的数据通过SDI移人到主移位寄存器中。8(16)个时钟脉冲过后,时钟停顿,主移位寄存器中的8(16)位数据全部移人到从移位寄存器中,随即又被自动装入从接收缓冲器中,从机接收缓冲器满标志位(BF)和中断标志位(SSPIF)置“1”。同理,从移位寄存器中的8位数据全部移入到主寄存器中,随即又被自动装入到主接收缓冲器中.主接收缓冲器满标志位(BF)和中断标志位(SSPIF)置“1”。主CPU检测到主接收缓冲器的满标志位或者中断标志位置1后,就可以读取接收缓冲器中的数据。同样,从CPU检测到从接收缓冲器满标志位或中断标志位置1后,就可以读取接收缓冲器中的数据,这样就完成了一次相互通信过程。这里设置dsPIC30F6014为主控制器,ISD4002为从器件,通过SPI口完成通信控制的过程。

SPI总线协议

SPI是一个环形总线结构由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。
       假设下面的8位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、高位先发送。
       那么第一个上升沿来的时候数据将会是sdo=1;寄存器=0101010x。下降沿到来的时候,sdi上的电平将所存到寄存器中去,那么这时寄存器=0101010sdi,这样在 8个时钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成里一个spi时序。
       例子:
       假设主机和从机初始化就绪:并且主机的sbuff=0xaa,从机的sbuff=0x55,下面将分步对spi的8个时钟周期的数据情况演示一遍:假设上升沿发送数据

 

脉冲 主机sbuff 从机sbuff sdi sdo
0 10101010 01010101 0 0
1上 0101010x 1010101x 0 1
1下 01010100 10101011 0 1
2上 1010100x 0101011x 1 0
2下 10101001 01010110 1 0
3上 0101001x 1010110x 0 1
3下 01010010 10101101 0 1
4上 1010010x 0101101x 1 0
4下 10100101 01011010 1 0
5上 0100101x 1011010x 0 1
5下 01001010 10110101 0 1
6上 1001010x 0110101x 1 0
6下 10010101 01101010 1 0
7上 0010101x 1101010x 0 1
7下 00101010 11010101 0 1
8上 0101010x 1010101x 1 0
8下 01010101 10101010 1 0

这样就完成了两个寄存器8位的交换,上面的上表示上升沿、下表示下降沿,sdi、sdo相对于主机而言的。其中ss引脚作为主机的时候,从机可以把它拉底被动选为从机,作为从机的是时候,可以作为片选脚用。根据以上分析,一个完整的传送周期是16位,即两个字节,因为,首先主机要发送命令过去,然后从机根据主机的名准备数据,主机在下一个8位时钟周期才把数据读回来

SPI 总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于 CPU与各种外围器件进行全双工、同步串行通讯。SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。图3示出SPI总线工作的四种方式,其中使用的最为广泛的是SPI0和SPI3方式(实线表示):

图2   SPI总线四种工作方式


SPI总线接口及时序
    SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果 CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。SPI总线接口时序如图所示。
 
 
SPI功能模块的设计

根据功能定义及SPI的工作原理,将整个IP Core分为8个子模块:uC接口模块、时钟分频模块、发送数据FIFO模块、接收数据FIFO模块、状态机模块、发送数据逻辑模块、接收数据逻辑模块以及中断形式模块。

深入分析SPI的四种传输协议可以发现,根据一种协议,只要对串行同步时钟进行转换,就能得到其余的三种协议。为了简化设计规定,如果要连续传输多个数据,在两个数据传输之间插入一个串行时钟的空闲等待,这样状态机只需两种状态(空闲和工作)就能正确工作。


关键字:SPI  串行接口  总线 引用地址:SPI串行接口/总线

上一篇:总线与接口的区别
下一篇:SPI总线CPOL CPHA

推荐阅读最新更新时间:2024-05-02 23:57

基于ADSP-TS201S的图像采集处理系统
   引言 随着人们对实时信号处理要求的不断提高和大规模集成电路的迅速发展,作为数字信号处理核心和标志的数字信号处理器DSP芯片得到了快速的发展和应用。它不但可以广泛应用于通信系统、图形/图像处理、雷达声纳、医学信号处理等实时信号处理领域。就ADI公司而言,继16-bit定点ADSP21xx和32-bit浮点ADSP21xxx系列之后,日前又推出了TigerSHARC系列的新型器件。本文介绍使用该系列中的ADSP-TS201S芯片实现一个图像采集处理系统的设计方案。 系统总体方案 该系统可以完成图像的采集、处理和显示,从而实现目标识别与跟踪的智能信号处理。该系统是对摄像机数字,模拟两路视频数据进行采集,处理后
[嵌入式]
如何一分钟找到CAN总线的问题节点
CAN-bus总线是将所有节点通过CANH和CANL连接在一起,实现信息通道共享的一种总线通讯方式。在带来布线方便与节约成本的同时,也为现场故障排查增加了难度。因为所有节点都挂接在一起,一旦需要检修或者出现通讯故障,难以快速判断故障节点。如图1所示。 图 1 CAN网络连接 CANScope分析仪广州致远电子股份有限公司研发的一款综合性的CAN总线开发与测试的专业工具,集海量存储示波器、网络分析仪、误码率分析仪、协议分析仪及可靠性测试工具于一身,并把各种仪器有机的整合和关联;重新定义CAN总线的开发测试方法,可对CAN网络通信正确性、可靠性、合理性进行多角度全方位的评估;帮助用户快速定位故障节点,解决CAN
[汽车电子]
如何一分钟找到CAN<font color='red'>总线</font>的问题节点
VXI总线专用中频信号源的设计
摘要:介绍了VXI总线C尺寸专用中频信号源的设计,重点描述了VXI总线接口电路和用DDS实现的幅度可控的捷变频信号源电路。该模块已成功应用于实际的VXI总线雷达自动测试系统中。 关键词:VXI 信号发生器 DDS FPGA VXI总线系统将计算机技术、测控技术和接口技术等多种高新技术紧密结合起来,具有结构紧凑、数据吞吐能力强、可靠性强等优点,成为自动测试系统的优秀平台。直接数字合成技术(DDS)提供传统频率合成方法难以实现的高分辨率、高频率转换速度及相位的连续性,这使得DDS具有广泛的应用前景。导弹雷达导引头的研制及生产是一个相当复杂和精密的过程。为实现导引头自动测试系统,研制了VXI专用信号源模块。这里采用VXI总线专用接口
[应用]
单片机软件SPI和硬件SPI读写SD卡,TF卡测试程序
软件SPI和硬件SPI读写SD卡,TF卡测试程序 SD卡模块和SD卡 软件SPI读写SD卡程序 测试平台:STC89C516和STC12C5A60S2 内存卡大小:128MB和2GB 晶振:均为12MHz 硬件SPI读写SD卡程序 测试平台:STC12C5A60S2 内存卡大小:128MB和2GB 晶振:12MHz (89C52没有硬件SPI) 为了尽可能的不给后来者留坑,这些代码我在发出来之前反复测试过,确保无误, 还有就是关于SD卡程序的读写我在程序中写的很清楚,这里不再赘述 单片机源程序如下: #include public.h #include SD.h //测试平台:STC89C516和STC12C
[单片机]
单片机软件<font color='red'>SPI</font>和硬件<font color='red'>SPI</font>读写SD卡,TF卡测试程序
基于CAN总线的一体化步进电机驱动器的设计与实现
0 引言 当前,步进电机已经在工业应用,如自动剥线机、工业机器人、雕刻机、植毛机工作台等涉及到精确定位的场合,得到广泛的应用。常用的步进电机控制系统由驱动模块和控制器模块组成。驱动模块实现功率放大,控制器模块用于产生电机转动的控制信号,上述控制方法将会大量占用控制核心的资源,影响控制系统的实时性及灵活性。本文设计的步进电机驱动器,将控制电路和驱动模电路集成在同一个模块上,减少系统中主控核心的负担,提高系统的实时性、可靠性,可以使系统设计变得更加灵活、方便。 1 CAN中继器硬件的设计 1.1 系统的硬件结构 本文设计的基于CAN总线的一体化两相步进电机驱动器系统框图如图1所示,包括CAN收发器L9616、MCU STM32F103
[单片机]
基于CAN<font color='red'>总线</font>的一体化步进电机驱动器的设计与实现
基于CAN总线的电动车控制系统设计
当前全球汽车工业面临金融危机和能源环境问题的巨大挑战,实现汽车能源动力系统的电气化,已经成为汽车产业的趋势。提高电动汽车上的各个控制单元间通信的可靠性和实现高传输速率,选择CAN总线协议。CAN总线为多主工作方式,网络上任何节点均可在任意时刻向其他节点发送信息。它采用非破坏性的基于优先权的总线仲裁技术,可靠性高。CAN总线通信距离长达10 km,通信速率最高可达1 Mb/s。CAN通信系统抗干扰性好,工作稳定。某个节点出现故障,不会导致整个系统通信的不正常。由于采用短帧的报文结构,数据传输时间短,具有很强的抗干扰性,具有高效的非破坏总线仲裁,出错检测和故障自动关闭等优点。 1 控制系统整体结构     电动车控制系统由电池管理、充
[工业控制]
基于1一Wire总线的嵌入式测温系统设计
  温度作为一种基本的环境因素,直接影响着工业控制、化工、医药、航空航天等生产工艺过程。因此如何安全、可靠、快速地取得温度值就显得尤为重要。随着计算机软件、硬件技术及集成电路工业的迅速发展,各种温度采集技术不断出现。这里介绍一种基于DSl8820的1一Wire总线的嵌入式测温系统设计。   1一Wire总线是美国Dallas公司的一项专有技术——单总线技术(1一Wire Bus Technology),该技术在理论上每条总线连接的1一Wire器件数量可达248。支,适用于单主机、多从设备的系统。它与其他串行通信方式最大的不同在于它采用单根信号线双向传输数据。以其节省I/0口线资源,成本低廉,体积小,便于总线扩展和维护等优点,在串行数
[嵌入式]
STM32F7使用SPI发送完成和接收中断
虽然在平常的使用中,spi使用轮询等待发送完成或者接收完成就行了。 但是在对时间有严格要求的设计中,假设我们需要发送完成后立马做xx事情,此时如果有低优先级的信号需要处理,我们的轮询方式就得不到及时的响应; 或者说比如需要定时从spi设备中采集数据,定时器中断来了我们就要马上调用接收函数,接收完成马上进行其他计算,同样此时应该保证数据的优先级。 此时就需要用到发送完成和接收中断了。 前面我们已经实现了SPI轮询的发送和接收,在前面的基础上进行修改。 接缓冲区满中断 新增发送和接收的回调函数,并在初始化的时候配置,使能SPI接收中断: SPI_HandleTypeDef SPI3_Handler; //SPI2句柄
[单片机]
STM32F7使用<font color='red'>SPI</font>发送完成和接收中断
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved