微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于SPI总线的51单片机多机互连编程技术

基于SPI总线的51单片机多机互连编程技术

时间:08-21 来源:互联网 点击:

注意:笔者主机显示设备为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通信方式的快速数据传输能力,为用户灵活的编制通信协议,为保证通信的可靠性提供了保障。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top