当前位置:首页 > 单片机 > 单片机
[导读]摘要:串行扩展和串行通信方式已经成为当前单片机系统扩展的主流方式。目前单片机市场上不但有传统的UART串行接口,而且还有SPI、I2C总线等串行接口。SPI接口是一种高速串行通信接口,特别适合于单片机之间的高速通信

摘要:串行扩展和串行通信方式已经成为当前单片机系统扩展的主流方式。目前单片机市场上不但有传统的UART串行接口,而且还有SPI、I2C总线等串行接口。SPI接口是一种高速串行通信接口,特别适合于单片机之间的高速通信,但其工作方式较之传统的UART串行通信方式有很大的不同。本文给出SPI接口基础上的各种串行通信工作方式配置及驱动编程,并进行完整的测试。
关键词:单片机;UART;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基本通信协议构造的目的就是要满足通信双方双向数据传递、数据随机收发的要求。
    图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所示。
    图4中2号机SPI通信和UART通信皆为Slaver方式,由于SPI、UART共用一个中断,会导致通信工作过程不正常,严重时SPI和UART通信皆无法正常进行。上述协议无法满足需要。为此,在基本协议的基础上,构造高级的协议。
    高级协议:主机和从机皆用定时器进行SPI数据帧的收发,定时器是SPI通信的发动机,通信是由主机定时器发动。从机仅被动收发,为了保证SPI收发双方数据包的字节相位匹配,必须设置数据包收发缓冲区,收发缓冲区字节个数应当是数据包的N倍。同时,数据包中设置若干包标示字节,通常为头字节、尾字节,以便主从机在接收数据时可以动态的进行字节相位的校准,保证数据接收的可靠性。高级协议构造示意图如图5所示。


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

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

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

凭借深度学习技术和SmartBid产品,百度国际MediaGo获得美国商业奖认可 旧金山2024年5月6日 /美通社/ -- 第22届美国商业奖(American Business Award®)近日发布获奖名...

关键字: MEDIA GO SMART BSP

上海2024年4月17日 /美通社/ -- 在2024 F1中国站即将拉开帷幕之际,高端全合成润滑油品牌美孚1号今日举办了品牌50周年庆祝活动。三届F1年度车手总冠军马克斯•维斯塔潘也亲临现场,共同庆祝这一里程...

关键字: BSP 汽车制造 行业标准 产品系列

北京2024年4月17日 /美通社/ -- 2024年4月13日,由北京康盟慈善基金会主办的"县域诊疗,规范同行"——肿瘤诊疗学术巡讲项目首站在广州隆重召开。本次会议邀请全国多位肺癌领域专家和县域同道...

关键字: AI技术 医疗服务 BSP 互联网

海口2024年4月16日 /美通社/ -- 4月14日,在中法建交60周年之际,科学护肤先锋品牌Galenic法国科兰黎受邀入驻第四届中国国际消费品博览会(以下简称"消博会")法国馆。Galenic法...

关键字: NI IC BSP ACTIVE

上海2024年4月17日 /美通社/ -- 每年4月17日是世界血友病日。今年,世界血友病日以"认识出血性疾病,积极预防和治疗"为主题,呼吁关注所有出血性疾病,提升科学认知,提高规范化诊疗水平,让每一位出血性疾病患者享有...

关键字: VII 动力学 软件 BSP

伦敦2024年4月16日 /美通社/ -- ATFX宣布任命Siju Daniel为首席商务官。Siju在金融服务行业拥有丰富的经验和专业知识,曾在全球各地的高管职位上工作了19年以上。Siju之前担任FXCM首席商务官...

关键字: NI AN SI BSP

全球领先的科技公司默克推出了同类产品中首个经验证的全新一体化遗传稳定性分析。 Aptegra™ CHO遗传稳定性检测利用全基因组测序和生物信息学,显著加快了客户的生物医药安全性测试,从而帮助加快了客户进入商业生产的步伐。...

关键字: 稳定性分析 BSP 人工智能

STM32与51单片机之间有什么差异呢?两者可以说是一场科技与性能的较量了。在科技飞速发展的今天,微控制器(MCU)已广泛应用于各类电子设备和系统中,发挥着举足轻重的作用。其中,STM32和51单片机作为两种常见的微控制...

关键字: STM32 51单片机 MCU

51单片机将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对51单片机的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 单片机 51单片机
关闭
关闭