一种基于spi总线通信协议的双缓冲数据传输方法

文档序号:9432511阅读:1384来源:国知局
一种基于spi总线通信协议的双缓冲数据传输方法
【技术领域】
[0001] 本发明设及一种双缓冲数据传输方法,尤其设及一种基于SPI总线通信协议的双 缓冲数据传输方法,属于数据传输技术,可用于使用SPI总线通信协议进行数据传输的场 合。
【背景技术】
[0002] SPI(Serial化ri地eralInte;rface,串行外围设备接口)是Motorola公司推出 的一种高速的、全双工的、同步的通信总线。它W主从方式工作,主要应用于微处理器与外 设的高速通信,具有速度快、通信协议简单、占用引脚少的特点。它是一种常用的标准接口, 使用简单方便且节省系统资源。SPI总线通信协议通常有一个主设备和一个或多个从设备, 需要4根线,它们是MIS0 (主设备数据输入,从设备数据输出)、M0SI(主设备数据输出,从 设备数据输入)、SCK(时钟信号,由主设备产生)、SS(片选,从设备使能信号,由主设备控 制)。SPI允许数据可W-位一位的传送,甚至能够暂停,运是由于SCK时钟线由主控设备 控制,在没有时钟沿跳变时,从设备不接收或传送数据。
[0003] 现有的基于SPI总线通信协议的数据传输方法是主设备控制SCK的时钟线将从设 备发送缓冲区中的数据取出。从设备由定时中断方式进行数据采集,数据更新后,需要等待 主设备的数据输出请求。主设备的数据输出请求随时可能发出,若直接对从设备的发送缓 冲区进行操作则有输出帖校验和错误的风险。因此需要研究出一种数据的可靠稳定输出的 方法。

【发明内容】

[0004] 本发明解决的技术问题是:克服现有技术的不足,提供一种基于SPI总线通信协 议的双缓冲数据传输方法,在从设备中为数据的发送分配两个缓冲区,分别用于数据的传 输和数据的更新,且利用不同的标志位来控制缓冲区之间的切换,实现了主设备和从设备 之间输出帖的稳定可靠传输,杜绝了输出错误帖的可能。 阳0化]本发明的技术解决方案分为步骤如下:一种基于SPI总线通信协议的双缓冲数据 传输方法,所述SPI总线通信协议包括一个主设备和至少一个从设备,步骤如下:
[0006] (1)在从设备中为数据的发送分配两个缓冲区,分别命名为缓冲区A,即缓冲区标 志位Flag_up= 0和缓冲区B,即缓冲区标志位Flag_up= 1,设置从设备的当前发送缓冲区 为缓冲区A,标志位设置为初值;所述标志位包括定时中断标志有效标志位Flag_Timing、 发送接收过程标志位Flag_BeginSend和转换缓冲区标志位Flag_Chg;
[0007] (2)主设备发出一个字节数据请求,从设备进行响应,进入SPI中断,从设备输出 当前发送缓冲区中数据帖的一个字节,若主设备再次发出一个字节数据请求,则从设备传 输当前发送缓冲区中数据帖的下一个字节;若从设备传输当前发送缓冲区中数据帖未全部 传输完成,则将标志位Flag_BeginSend的值置1 ;否则,将标志位Flag_BeginSend的值置 0 ;
[0008] (3)判断转换缓冲区标志位Flag_Chg的值是否为1,若为1,则进入步骤(4);否 贝1J,进入步骤巧);
[0009] (4)判断发送接收过程标志位Flag_BeginSend的值是否为1,若为0,则将从设备 的当前发送缓冲区切换至另一个缓冲区,并将转换缓冲区标志位Flag_Chg置0,进入步骤 巧);若发送接收过程标志位Flag_BeginSend的值为1,则进入步骤巧); 阳010] 妨判断定时中断标志有效标志位Flag_Timing的值是否为1,若为1,则进入步骤 (6);否则,返回步骤(3);
[0011] (6)将定时中断标志有效标志位Flag_Timing置0,产生新的数据帖,并利用新的 数据帖更新缓冲区;设置转换缓冲区标志位Flag_Chg值为1,返回步骤(3),等待下一次数 据传输。
[0012] 所述定时中断标志有效标志位Flag_Timing的取值为1时表示定时中断标志有 效;取值为0时表示定时中断标志无效,定时中断标志有效标志位Flag_Timing的初值为 0 ;
[0013] 所述发送接收过程标志位Flag_BeginSend的取值为1时表示发送缓冲区处于发 送接收过程;取值为0时表示发送缓冲区未处于发送接收过程,发送接收过程标志位Flag_ BeginSend的初值为0 ;
[0014] 所述转换缓冲区标志位Flag_Chg的取值为1时表示非当前发送缓冲区中的数据 帖已进行更新;取值为0时表示非当前发送缓冲区中的数据帖未进行更新,转换缓冲区标 志位Flag_Chg的初值为0。
[001引所述步骤(6)中更新缓冲区的方法具体如下:
[0016]若当前发送缓冲区为缓冲区A,则利用新的数据帖更新缓冲区B;若当前发送缓冲 区为缓冲区B,则利用新的数据帖更新缓冲区A。
[0017] 所述数据帖包括帖头标志、数据域和校验码;所述帖头标志长度为1~2个字节, 校验码长度为1~2个字节。
[0018] 所述校验码为8~16位校验和。
[0019] 本发明与现有技术相比的优点如下:
[0020] (1)现有的SPI传输直接对发送缓冲区进行操作,从设备可能发出错误帖,本发明 有一个缓冲区的数据随时等待主设备的数据请求,对另外的一个缓冲区进行更新,杜绝了 输出错误帖的可能;
[0021] (2)本发明的缓冲区切换条件设定为发送缓冲区未进行发送接收过程,且非当前 发送缓冲区中的数据为最新的数据,最大限度的保证了缓冲区切换的可靠性与传输数据的 实时性;
[0022] (3)由于数据的传输是通过主设备控制SCK的时钟进行的,因此本发明的传输方 法方便灵活,适应性好。
【附图说明】
[0023] 图1为本发明方法的双缓冲数据传输方法的流程图;
[0024] 图2为SPI总线通信协议主从设备连接示意图;
[00巧]图3为本发明方法的初始化过程流程图;
[00%] 图4为本发明方法的定时中断及置定时中断有效标志位过程流程图。
【具体实施方式】
[0027] 如图1所示为本发明中方法的流程图,从图1可知,本发明提出的一种基于SPI总 线通信协议的双缓冲数据传输方法,具体步骤如下:
[0028] (1)从设备为数据的发送分配两个缓冲区,分别命名为缓冲区A(Flag_up= 0)和 缓冲区B(Flag_up= 1),如图2所示。进行系统初始化,设置当前发送缓冲区为缓冲区A, 标志位设置初值,如图3所示。所述数据帖包括帖头标志、数据域和校验码;所述帖头标志 长度为1~2个字节,校验码长度为1~2个字节,校验码为8~16位校验和。发送数据 帖的一种格式如表1所示: W29]表 1
[0030]
阳031 ]此时缓冲区A中的数据内容为"OxAA,0x2A,0x01,0x02,0x03,0x04,0x05,0x00, 0址3 ",缓冲区B中的数据内容为%xAA,0x2A,0x05,0x04,0x03,0x02,0x01,0x00,0址3 "。由 表1可知两个缓冲区各含有2个字节的帖头,5个字节的数据和2个字节的校验码。
[0032] 标志位共分为: 阳033] a).定时中断
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1