首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

两单片机透过 SPI 通信的软件协议设计概述

2013-10-08 
两单片机通过 SPI 通信的软件协议设计概述1.介绍SPI 通信最常用的地方时 单片机访问 Flash 或 Ram,很少用

两单片机通过 SPI 通信的软件协议设计概述
1.介绍

SPI 通信最常用的地方时 单片机访问 Flash 或 Ram,很少用在两个单片机通信上。但是鉴于spi通信的优势,用在两个单片机之间通信时,合理的程序设计,会更好的体现它的优势。在这里提出几种设计方式,同时列举了各自的缺点和优点,需要根据具体情况采用相应的模式并克服缺点。

2.全局分析

采用spi在物理层上已经是采用 Master - Slave 方式,在协议的设计上有了较大的限制,表面上也就是 slave 不能向 Master 自由的发送数据。因为spi总线协议规定,由Master来控制 SCLK 信号,Slave要发送多少个字节以及什么时候发送,Master并不知道,这就是问题所在。

对于有些单片机在Slave状态时,并不知道 Master 何时发送完成,这样也会困扰开发者。

3.全局设计3.1 采用Ask-Answer 模式

在其他的总线协议中,很常用的一种方式,Master 发送Ask,Slave接收处理,并准备好处理结果,Master 发送无效数据,目的是取回Slave的数据。

优点:协议健壮性比较好,逻辑简单

缺点:没有体现SPI 全双工的优势

3.2 采用Peer-Peer 模式可以在对实时性没有严格要求的情况下使用,这种模式下,程序上并不区分Master和Slave。暂且将spi的Master称为P1,将Slave称为P2,P1发送数据的同时P2也将数据发送到P1,两者的数据没有必然联系,双方可以根据数据包中包含的不同信息做相应的处理。。适合用于数据交换的场合。

优点:采用全双工方式,协议健壮性比较好,逻辑简单

缺点:适用场合比较少,实时性不高


3.3 采用Master-Master 模式在默认状态下都是Salve,当一方有数据需要发送时,切换到Master状态,发送完数据立马切换到Slave状态,前提是需要避免双方同时切换到 Master 的情况。

优点:实时性比较好,协议健壮性比较好,逻辑简单

缺点:适用场合比较少,单工通信

3.4 带预知和状态的Master-Slave 模式

带预知和状态,意思是Master发送数据包时,包含下一次数据交换时Master要请求的数据内容,这样Slave在处理Master传来的数据之后,就开始准备数据下次交换的数据;同时,Slave准备数据时,同时包含了Slave的状态、错误等,供Master判断下一步进行哪一种数据交换。整体上来说,Master 根据Slave的状态,发起通信,并通知Slave下一次通信类型,而Slave在回答Master时,同时也把状态信息发送到 Master。

数据结构也比较简单,可以参考如下:

两单片机透过 SPI 通信的软件协议设计概述

HEADER 作为固定的开头

PACKET TYPE   为当前的数据包类型

NEXT PACKET TYPE 为下一次通信的数据包类型

DATA LEN  为后面的数据长度

DATA  表示数据

Slave 的数据包可以设计如下:

两单片机透过 SPI 通信的软件协议设计概述

STATUS                 为Slave当前的状态


优点:充分利用全双工特性缺点:逻辑复杂,对于想要获得的数据会有一个周期的延时
 4.后续设计采用模式4,通信效率是最高的,开发过程相对比较复杂,不过,一劳永逸。

热点排行