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

发布于:2021-10-14 10:48:03

基于 SPI 总线的 51 单片机多机互连编程技术 摘要:串行扩展和串行通信方式已经成为当前单片机系统扩展的主流方式。 目前单片机市场上不但有传统的 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 基本通信协议构造的目的就是要满足通信双方双向数据传递、 数据随机收发的要求。tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

相关推荐

最新更新

猜你喜欢