SPI串行总线协议

发布者:科技飞翔最新更新时间:2022-05-18 来源: eefocus关键字:SPI  串行总线协议 手机看文章 扫描二维码
随时随地手机看文章

一、SPI接口简介


SPI(Serial Peripheral interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。该接口一般使用4条线:串行时钟线(SCLK)、主机输入/从机输出线(MISO)、主机输出/从机输入线(MOSI)和从机选择线SS。


SPI是一个环形总线结构,由SS(CS)、SCK、SDI、SDO构成,其时序比较简单,主要是在SCK的控制下,两个双向移位寄存器进行数据交换。


主要概括为:


上升沿发送、下降沿接受,高位在前、低位在后;


上升沿到来时,SDO电平将被送到从设备的寄存器中;下降沿到来时,SDI电平将被接收到主设备的寄存器中。


下面是主从机准备就绪,主机sbuff=0xaa(1010101010),从机sbuff=0x55(01010101),数据根据SPI协议传输过程:


---------------------------------------------------

脉冲           主机sbuff    从机sbuff     sdi    sdo

---------------------------------------------------

0    00-0     10101010     01010101      0      0

---------------------------------------------------

1    0--1     0101010x     10101011      0      1

1    1--0     01010100     10101011      0      1

---------------------------------------------------

2    0--1     1010100x     01010110      1      0

2    1--0     10101001     01010110      1      0

---------------------------------------------------

3    0--1     0101001x     10101101      0      1

3    1--0     01010010     10101101      0      1

---------------------------------------------------

4    0--1     1010010x     01011010      1      0

4    1--0     10100101     01011010      1      0

---------------------------------------------------

5    0--1     0100101x     10110101      0      1

5    1--0     01001010     10110101      0      1

---------------------------------------------------

6    0--1     1001010x     01101010      1      0

6    1--0     10010101     01101010      1      0

---------------------------------------------------

7    0--1     0010101x     11010101      0      1

7    1--0     00101010     11010101      0      1

---------------------------------------------------

8    0--1     0101010x     10101010      1      0

8    1--0     01010101     10101010      1      0

---------------------------------------------------


其中:0-1表示上升沿、1-0表示下降沿;SDI、SDO是相对于主机来说的。


主机发送、从机接收过程:0脉冲时,主机sbuff=10101010,从机sbuff=01010101,SDI=0,SDO=0,在第一个上升沿到来时,主机发送(从机接收),将最高位“1”传到SDO;接着是第一个下降沿,此时,主机接收(从机发送),从机将SDO的“1”移入从机sbuff的最低位,从机sbuff为10101011,主机sbuff为01010100,接着是第二个上升沿到来时,主机发送(从机接收),将最高位“0”传到SDO;接着是第二个下降沿,此时,主机接收(从机发送),从机将SDO的“0”移入从机sbuff的最低位,从机sbuff为01010110,主机sbuff为10101001;经过8个时钟周期后就可将数据接收完毕。


二、8051与74HC595应用


为了验证SPI总线,将8051与串行外设74HC595(8位串行输入/输出或者并行输出移位寄存器)相连进行并用595驱动流水灯。


电路图如下所示:

74HC595引脚功能:


74595的数据端:


Q0—Q7: 八位并行输出端


Q7’: 级联输出端。我将它接下一个595的SI端。


DS: 串行数据输入端。


74595的控制端说明:


SCLR(10脚): 低点平时将移位寄存器的数据清零。通常将它接Vcc。


SCK(11脚):上升沿时数据寄存器的数据移位。Q0-->Q1-->Q2-->...-->Q7;下降沿移位寄存器数据不变。(脉冲宽度:5V时,大于几十纳秒就行了。我通常都选微秒级)


RCK(12脚):上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。通常我将RCK置为低电平,当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了。我通常都选微秒级),更新显示数据。


OE(13脚): 高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果。比通过数据端移位控制要省时省力。


三、程序设计


8051系列单片机一般是没用SPI接口的,后面的89系列有些是带有SPI接口的,所以,这里我们用8051来模拟SPI接口跟595进行通信,单片机每隔50MS向595输出一个数据,形成流水灯现象:


#include


#include


sbit  sclk=P2^0;    //串行移位时钟


sbit  sda=P2^1;            //MOSI


sbit  clk=P2^2;            //595的数据更新脉冲,上升沿有效


void Delay(int n)                  //延时1ms子程序


{


   int x,y;


   for(x=0;x<110;x++)


      for(y=0;y

}


void send(char byte)


{


   char i;


   sclk=0;


   clk=0;


   for(i=0;i<8;i++)


   {


      sclk=0;


         if(byte&0x80)sda=1;


         else  sda=0;


         byte<<=1;


         _nop_();            //延时,用来控制SPI时钟频率


         _nop_();


         sclk=1;


         _nop_();


         _nop_();


         _nop_();


   }


   clk=1;


}


 


void main ()


{   


   char i=0;


   while(1)


   {


          for(i=0;i<8;i++)          //去


          {


              send(~(1<

                Delay(50);


          }


          for(i=6;i>0;i--)     //回


          {


              send(~(1<

                Delay(50);


          } 


   }


}


关键字:SPI  串行总线协议 引用地址:SPI串行总线协议

上一篇:点亮一个发光二极管LED--51的第一个程序
下一篇:C8051F单片机端口配置

推荐阅读最新更新时间:2024-11-13 13:10

STC89C52之中断系统 ---- 51单片机的核心 自学笔记
一、中断系统 1.1、概念 cpu在处理某一事件A时,发生了另外一事件B请求cpu迅速去处理(中断发生); cup暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待cup将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回); 这一过程称为中断。 引起CPU中断的根源,称为中断源。中断源向CPU提出的中断请求。cup暂时中断原来的事务A,转去处理事件B。对事件B 处理完毕后,再回到原来被中断的地方(即:断点)称为中断返回,实现上述中断功能的部件称为中断系统。 1.2、中断系统的功能与优点 解决了快速主机与慢速i/o设备的数据传送问题。 分时操作:cpu可以为多个io设备服务,
[单片机]
STC89C52之中断系统 ---- <font color='red'>51</font>单片机的核心 自学笔记
艾迈斯半导体推出适用于高速电机的新型位置传感器,助力汽车行业的电气化发展
全球领先的高性能传感器解决方案供应商、移动市场3D脸部识别领域领导者艾迈斯半导体(ams AG)近日宣布,推出两款新型位置传感器 — AS5147U和AS5247U,可降低系统成本,同时提高安全关键型汽车功能(如动力转向、主动减振器控制和制动)的电气化水平,有助于实现更安全、更智能、更环保的汽车。 这两款新型位置传感器能够为汽车行业带来多种性能优势,并可降低系统成本。艾迈斯半导体AS5147U是一款智能旋转磁性位置传感器芯片,可用于转速高达28,000rpm的电机。新型AS5247U是一款双堆叠式裸片,可提供要求最苛刻的ASIL D级功能性安全应用所需的冗余。 ● 新型AS5147U和AS5247U旋转位置传感器可提高测量
[汽车电子]
艾迈斯半导体推出适用于高速电机的新型位置传感器,助力汽车行业的电气化发展
51单片机外围模块——DS1302时钟模块
一.DS1302的主要性能指标 DS1302实时时钟具有能计算2100年之前的秒、分、时、日、日期、星期、月、年的能力,还有闰年调整的能力。 内部含有31个字节静态RAM,可提供用户访问。 采用串行数据传送方式,使得管脚数量最少,简单SPI 3线接口。 工作电压范围宽:2.0~5.5V。 工作电流:2.0V时,小于300nA 时钟或RAM数据的读/写有两种传送方式:单字节传送和多字节传送方式。 采用8脚DIP封装或SOIC封装。 与TTL兼容,Vcc=5V。 可选工业级温度范围:-40C~+85C。 具有涓流充电能力。 采用主电源和备份电源双电源供应。 备份电源可由电池或大容量电容实现。 DS1302采用SPI总线与外结通信
[单片机]
<font color='red'>51</font>单片机外围模块——DS1302时钟模块
51单片机-蜂鸣器原理
1.单片机IO端口电流 在讲解蜂鸣器之前我们还需拿LED硬件连接做另一个知识讲解,假如我们的LED这样接 此时即使单片机IO端口输出高电平5V,灯的亮度是很低的,因为单片机IO端口流出来的电流太少,无法驱动LED正常发光,大家不要停留在中学的物理常识中认为电压电阻都一样电流就一样了,这个是关联到单片机内部的集成电路原因的,这里请大家今后积累一些关于驱动负载的一些知识,也可参考《手把手教你学51单片机》文档3.3.3节和9.2节。 但是如果这样接 这时单片机IO端口输出低电平时灯却很亮,原因这是电源供给的5V,电流比较大,所以可以使LED发光较亮。拿我们所熟悉的充电宝来说,虽然它的接口输出电压也是5V,但是它流出的电流
[单片机]
<font color='red'>51</font>单片机-蜂鸣器原理
玩转STM32CubeMX | SPI总线
1.SPI总线及W25QXX芯片 1.1 SPI总线简介 SPI全称Serial Peripheral Interface,即串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的、全双工、同步通讯总线,在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局节省空间提供了方便,正是这种简单易用的特性,如今越来越多的芯片集成了这种通讯协议。下图是SPI内部结构简易图 从上图可以看出,主设备和从设备都有一个串行移位寄存器,主设备通过向它的SPI串行寄存器写入一个字节来发起
[单片机]
玩转STM32CubeMX | <font color='red'>SPI</font>总线
MSP430程序库<五>SPI同步串行通信
SPI总线系统是一种同步串行外设接口;是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。 许多的芯片都用这种协议通信:EEPROM、Flash、实时时钟、AD转换器、数字信号处理器等:MSP430的USART模块不仅能够实现异步模式(见:MSP430程序库 二 UART异步串口),而且支持同步串行通信(即SPI模式);其SPI支持3线、4线操作,支持主机模式和从机模式,字符长度可以7位或8位等。由于要用AD7708芯片完成AD采样,AD7708是通过SPI与其它设备通信的;本程序比较简化,
[单片机]
MSP430程序库<五><font color='red'>SPI</font>同步<font color='red'>串行</font>通信
51单片机做的电子时钟
程序如下: #include reg52.h unsigned char code table1 ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x76};//字码表0-9,最后一个是一横 - unsigned int i,a,b,c,d,flag,flag1; unsigned int sec,min,h,nm,nh,nz; unsigned int w,day,mon,year; int miao1,miao2,miao3; sbit keyled=P1^0; sbit key2=P1^1; sbit keyinc=P1^2; sbit keymood
[单片机]
SPI的风格:汽车中的新兴协议
SPI接口正在成为汽车应用中的热门选择,包括传感器、显示控制台、导航系统、通过SPI闪存启动等等。SPI低引脚数和可配置时钟速率可满足新兴汽车应用的要求。 同步串行外设总线 (SPI) 允许控制器和外设之间进行同步串行通信。它通过主站(控制器)和从站(外围设备)之间的连续数据流实现全双工或半双工通信。它可以在多种架构中进行配置,从单主-单从到多主-多从系统。主站将始终是连接组件之间接口上的总线活动的控制器。串行协议支持低引脚数接口,该接口包括从控制器到外围设备的片选、时钟和数据输出以及从外围设备到控制器引脚的数据。基于所选配置的低引脚数接口支持下面提到的各种供应商特定模式。 SPI的风格 摩托罗拉串行外设接口 (SPI)
[嵌入式]
<font color='red'>SPI</font>的风格:汽车中的新兴协议
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
更多往期活动
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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