SPI接口基础上的各种串行通信工作方式配置及驱动编程

发布者:CyborgDreamer最新更新时间:2012-10-10 来源: 21ic 关键字:SPI接口  串行通信  工作方式 手机看文章 扫描二维码
随时随地手机看文章

  引言

  51系列单片机资源有限,当开发者面对比较复杂的控制任务时,51单片机就力不从心了。在这种情况下,用户可以选用比较高档的单片机机型,比如ARM系列32位单片机等来完成目标控制的任务。还有一种选择方案,就是采用51单片机多机系统方案,用分散控制的方法来实现最终的复杂目标控制任务。

  在多机系统的实现过程中,首先要解决的就是多机之间的相互通信连接问题,以保证数据在单片机之间的高效、可靠的传递。MCU之间的通信功能是多机系统实现的基础,也是多机系统可靠运行的关键。

  1 SPI接口的特点

  SPI接口最大可以提供1 Mb的串行数据传输能力。理论上,比传统的串行通信接口RS232通信速率高得多,因此它非常适合多CPU系统中的CPU之间的数据交换,绝大多数情况下,能够满足通信需求。

  与RS232不同的是,SPI采用的是移位寄存器方式实现串行通信的,SPI 工作方式如图1所示。

    图1中,MOSI(Master Out and Slaver In)和MISO(Master In and Slaver Out)为SPI接口的通信引脚。从引脚定义可以看出,无论是数据发送,还是数据接收,SPI通信过程始终应当是由主机Master控制。主从机之间的物理连接是同名端直接连接。

  其工作过程是:主机对SPI接口的写数据操作完成后,SPI启动数据发送,数据就从主机的MOSI引脚移位输出,按位移位到从机中;一个字节传输完毕后,SPI接口传输标志置位,供软件开发者测试控制编程。由于每位数据传输最快只需要一个机器周期,故其通信速率很快。

  这种通信方式,决定了SPI只能够实现近距通信,通常通信距离为数十公分,不超过1 m,而且 SPI的通信双方对通信过程的控制能力比较弱,在系统设计时要保证通信可靠性,必须采用固定主从、连续收发的工作模式。

  而UART方式对通信过程的控制能力较强,可以是互为主从、随机收发的工作模式。由于这个区别,决定了SPI的通信编程与传统的RS232有本质的区别。在编程中,应当明确地定义系统中谁是主机,谁是从机,在系统工作过程中,不得变更。并且,所有的通信过程,都是由主机发动。否则,很难保证通信的可靠性。

  2 基本协议的设计与实现

  采用的单片机是NXP公司的P89V51RD2,其内部集成有大容量的存储器(64 KB Flash、1 KB RAM),除此之外,还集成有3个定时计数器、UART、PCA、WDT等丰富的接口。它是一款性价比较高的51单片机,为复杂的目标控制提供了物理支持。

  其内部也集成了SPI通信接口,由于SPI每位数据传输最快只需要一个机器周期,如果单片机系统采用12 MHz晶振,则传输1位数据,最短只需要1μs。而采用支持RS232标准的UART接口,若以最高9 600 bps波特率通信,传输1位数据需要104μs。SPI快速的数据传输能力,为用户编制复杂的通信协议提供了支持。

  SPI通信虽然传输速率高,但由于其有主机、从机角色固定,连续传输的特点,无法满足大多数用户的通信要求。比如,SPI通信只能由主机单向发动,用户怎么能够实现主从双方的数据双向传输呢?再如,SPI通信工作过程是连续的,通信双方又怎样实现数据的随机收发呢?SPI接口仅提供了一种基本的通信机制,用户无法直接使用。用户要使用SPI接口实现两机数据的随机双向交换,就必须编制通信协议。SPI双机电气连接图如图2所示。

   
    综上所述,SPI基本通信协议构造的目的就是要满足通信双方双向数据传递、数据随机收发的要求。[page]

  图2中,笔者设计的基本协议如下:SPI的工作模式是主机用PCA定时器进行数据连续发、收,从机用串行中断进行数据连续收、发。建立收发数据包,每个数据包8个字节,主从机均建立一个8个字节的发送数据缓冲区(spi send buf[8])和一个8个字节的接收数据缓冲区(spi_re cv_buf[8]),并建立一个完整数据包接收完毕标志(spi_recv_flag)。当用户需要发送数据时,随时可以将发送数据包填入发送缓冲区,当需要接收数据时,随时测试接收标志是否置传,这样从接收数据缓冲区中得到对方发来的数据包。按照上述协议,SPI接口设置好以后,用户的数据收发只要面对本协议设置的通信缓冲区,而无需关注SPI接口如何工作。从而满足数据双向传输、随机收发的要求。基本协议构造示意图如图3所示。

   注意:笔者主机显示设备为LCD12864,从机显示设备为8个数码管,为缩短篇幅,其显示驱动程序未列出。从程序中可以看出,SPI接口在发送一个字节的同时,接收一个字节,这是SPI与其他串行通信方式本质的不同。此外,笔者在接近1 MHz的极限速率下作了测试,数据传输稳定。

  3 高级协议的设计和实现

  基本协议较简单,可以保证通信双方能够可靠地进行数据传输,但上述协议的实现依赖于从机中断方式。而SPI中断与UART串行中断共用,当从机串行口用于其他通信时,就要避免通信中断的相互干扰。复杂电子系统通信配置图如图4所示。

 

   图4中的单片机串口只是数据发送,而无需接收数据,串行通信也只需单向数据传输。采用查询方式,不占用中断,串行4号中断用于SPI通信。因此,可以用SPI基本协议完成单片机双机通信功能。若电子系统与上位机之间有信息交互的要求,并且收发数据皆为随机,此时系统通信的配置模式如图4所示。

[page]

  图4中2号机SPI通信和UART通信皆为Slaver方式,由于SPI、UART共用一个中断,会导致通信工作过程不正常,严重时SPI和UART通信皆无法正常进行。上述协议无法满足需要。为此,在基本协议的基础上,构造高级的协议。

  高级协议:主机和从机皆用定时器进行SPI数据帧的收发,定时器是SPI通信的发动机,通信是由主机定时器发动。从机仅被动收发,为了保证SPI收发双方数据包的字节相位匹配,必须设置数据包收发缓冲区,收发缓冲区字节个数应当是数据包的N倍。同时,数据包中设置若干包标示字节,通常为头字节、尾字节,以便主从机在接收数据时可以动态的进行字节相位的校准,保证数据接收的可靠性。高级协议构造示意图如图5所示。

   
    图5中,SPI通信数据包为8个字节,包标识字节为0x0d、0x0c。SPI通信发动采用PCA定时器模式,读者也可以采用定时器T1和T2实现SPI通信发动。参考程序如下:
   

[page]

  结语

  随着单片机技术的发展,串行扩展和串行通信成为单片机应用技术的主流,用户应当掌握各种串行通信方式的开发技术。其中,SPI通信方式的快速数据传输能力,为用户灵活的编制通信协议,为保证通信的可靠性提供了保障。

关键字:SPI接口  串行通信  工作方式 引用地址:SPI接口基础上的各种串行通信工作方式配置及驱动编程

上一篇:51单片机在PWM程序控制LED灯中的应用
下一篇:基于单片机的红外遥控信号解码的新方法

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

单片机的异步串行通信功能和基本使用方法
  单片机的数据通信有两种方式:并行通信和串行通信。并行通信指数据字节的各位同时发送或接收;而串行通信是数据字长距离传输数据节一位一位按顺序发送或接收。并行通信传输线多,适用于短距离、快速度的通信;面串行通信仅需单线传输信息,适用于长距离传输数据,由于每次传送一位,所以传输速度比较慢。串行通信又分异步和同步两种方式,其中异步串行通信是最常用的方式。本文主要通过两个实例介绍单片机的异步串行通信功能和基本使用方法。   一、串行通信基本知识   ATmega8单片机带有一个全双工的同步/异步串行收发模块USART,模块由时钟发生器、数据发送器和接收器、控制寄存器等部分组成。异步串行通信的接线方式见下图,其中RXD为接收
[单片机]
单片机的异步<font color='red'>串行通信</font>功能和基本使用方法
51单片机-SPI接口
SPI(Serial Peripheral Interface)接口是同步串行接口,利用时钟线对数据位进行同步,时钟的上升沿和下降沿锁存数据。SPI的两种类型: 四线制SPI:CS,SCK(同步时钟),MOSI(master out slaver in),MISO:全双工 三线制SPI:CS,SCK,DIO:半双工,只能分时进行收发 SPI时序图举例:四线制,低电平使能,上升沿锁存,先发送最高位。 DS1302的接口时序:三线制,高电平使能,写上升沿锁存,读下降沿锁存,先发送最低位。 DS1302是典型的三线制SPI接口,DS1302的时间信息以寄存器的形式存储在芯片内部,通过SPI接口,对相应的寄
[单片机]
51单片机-<font color='red'>SPI接口</font>
UM3758-108编/解码器在串行通信中的应用
摘要:介绍一种基于编/解码器的PC机与多单片机之间的串行通信方法,并对智能卡的设计进行了说明。该编/解码器通信方案,软好地解决了多机系统中作为上位机的工控机对各下位机的寻址问题。 关键词:编/解码器 双口RAM PC 串行通信 UM3758-108 在遥测、遥控领域中,常常使用工业PC机与单片机组成的多机系统完成测控任务。PC机因其丰富的软硬件资源和友好的人机界面而被用作上位机,而单片机则因其优越的性价比和灵活的功能配置而被用作下位机。上位 机和下位机之间通过串行数据总线(如CAN总线、RS485总线等)连接,具体结构如图1所示。在进行数据传输时,一般先由上位机发出地址帧对指定的下位机寻址,在得到确认以后向选中的下位机发送命
[工业控制]
基于AT89S51的多功能电子密码锁设计
     当前虽然许多智能锁(如指纹辨别、IC卡识别)已相继问世,但这类产品是针对特定指纹或有效卡,只能适用于保密要求高且仅供个别人使用的箱、柜、房间等。另外,卡片式的IC卡易丢失和损坏,加上其成本较高,在一定程度上限制了这类产品的普及和推广。    电子 密码锁具有安全性能高、成本低、功耗低、操作简单等优点使其作为防盗卫士的角色越来越重要。现有国内市场上的电子密码锁有的是通过购买一些产品模块再开发,不具备自主知识产权;有的是自主研发的,但其功耗与成本都比较高,不具备广泛的应用价值。为了克服这些缺点,从经济实用角度出发,采用 单片机 AT89S5l与低功耗CMOS型E2PROM AT24C02 作为主控器件与数据 存储器 单
[安防电子]
基于AT89S51的多功能电子密码锁设计
基于PIC单片机的智能小区监控系统的设计
1. 引言 随着生活水平的不断提高,人们对居住环境的要求也大大提高,对信息服务和安全防范的要求尤为突出.如何利用计算机和通信技术在智能化小区家庭智能管理系统中,对住户家庭水表、电表、煤气表的自动计量以及火灾、煤气泄漏、入室盗窃等警情的实时监控已经成为信息产业的热点技术.利用CAN总线技术虽然有其开放式、数字化、多点通信等诸多优点,但将其用于智能住宅小区,却因其成本偏高,目前在我国还难以推广.为此,作者开发出一种设备简单,成本低廉,便于维护经济型智能小区家庭管理系统,能有效地实现三表自动采集计费,防盗、防灾、自动报警和远程监控等功能.利用单片机进行实时采集,并将采集的数据通过串行口传给PC机,PC机完成数据的运算、存储、和打印
[单片机]
基于PIC单片机的智能小区监控系统的设计
串行通信在永磁同步电机控制系统中应用
0 引 言 TMS320LF2407是TI公司开发的、适用于电机控制的数字信号处理器(DSP),在原有DSP内核的基础上添加了脉宽调制(PWM)、A/D、D/A模块,从而实现对电机系统的全数字控制。它在电机控制系统中得到了广泛应用,并取得了明显效果。在开发一套以DSP为核心的永磁同步电机控制系统时,需要及时观察驱动系统中的各个变量,同时还要对一些程序进行控制,修改特定参数。DSP在实际运行中不能用外接的端口进行控制,需要用DSP自带的串行通信模块来解决这一问题。通过一台上位计算机和以DSP为核心的电机控制系统构成整个监控系统,Pc机通过串口来改变DSP程序中转矩、磁链给定,以及调节PI参数等,电机控制系统完成对电机的控制,并采
[嵌入式]
STM32模拟SPI接口
做单片机开发的时候经常需要用到模拟spi接口,这种写法不错的,网上很多类似的,我也拿来主义了。 #define MOSI_H GPIO_SetBits(GPIOB, GPIO_Pin_10) #define MOSI_L GPIO_ResetBits(GPIOB, GPIO_Pin_10) #define SCLK_H GPIO_SetBits(GPIOB, GPIO_Pin_13) #define SCLK_L GPIO_ResetBits(GPIOB, GPIO_Pin_13) #define MISO GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) unsigned char SPI_
[单片机]
并行通信与串行通信
  并行通信与串行通信是微处理器与外围设备进行信息交换的基本方法。采用并行通信时,构成一个字符或数据的每一位同时传送。每一位都占用一条通信线,另外还需联络线以保证微处理器能与外围设备协调地工作。并行通信具有较高的传输速度,但由于在长线上驱动和接收信号较困难,驱动和接收电路较复杂,因而并行通信的传输距离受到限制。这种通信方式多用于计算机内部,或者作为计算机与近距离外围设备传输信息之用。   串行通信时,构成一个字符或数据的每一位按时间先后一位一位地传输。与并行通信相比,它占用较少的通信线,因而使成本降低,而且适合于较远距离的传输。串行通信常作为计算机与外设或计算机之间传输信息之用。当传输距离较远时,可采用通信线路(如公众电话网络、无线
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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