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

文档序号:9432511阅读:来源:国知局
标志有效标志位Flag_Timing,其值为1时表示定时中断标志有效; 其值为0时表示定时中断标志无效。其初值设为0 ;
[0034] b).发送接收过程标志位Flag_BeginSend,其值为1时表示发送缓冲区处于发送 接收过程;其值为0时表示发送缓冲区未处于发送接收过程。其初值设为0 ;
[0035] C).转换缓冲区标志位Flag_Chg,其值为1时表示非当前发送缓冲区中的数据帖 已进行更新;其值为0时表示非当前发送缓冲区中的数据帖未进行更新。其初值设为0。
[0036] 似从设备定期进入定时中断,将定时中断标志有效标志位Flag_Timing值置1, 如图4所示。当主设备发出一个字节数据请求时,从设备进入SPI中断,输出发送缓冲区中 数据帖的一个字节。当主设备再次发出一个字节数据请求时,从设备传输数据帖中的下一 个字节。若数据帖未全部传输完成,标志位Flag_BeginSend的值置1 ;传输完成后,将标志 位Flag_BeginSend的值清零;
[0037] (3)判断转换缓冲区标志位Flag_Chg的值是否为1。若其为1,进入步骤(4);若 其为0,则直接进入步骤巧);
[0038] (4)判断发送接收过程标志位Flag_BeginSend的值是否为1。若其为0,且当前发 送缓冲区为缓冲区A,则将发送缓冲区转换为缓冲区B,若当前发送缓冲区为缓冲区B,则将 发送缓冲区转换为缓冲区A。指令为Flag_up=~Flag_up。将转换缓冲区标志位Flag_ 化g清零,之后进入步骤巧);若其为1,进入步骤巧);
[0039] (5)判断定时中断标志有效标志位Flag_Timing的值是否为1。若其为1,进入步 骤(6)诺其为0,返回步骤(3);
[0040] (6)将定时中断标志有效标志位Flag_Timing清零,产生一帖新的数据,不妨设新 产生的数据帖为%xAA,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0址4"。若当前发送缓冲区 为缓冲区A(Flag_up = 0),则向缓冲区B(Flag_up=1)中更新帖数据;若当前发送缓冲区 为缓冲区B,则向缓冲区A中更新帖数据。设置转换缓冲区标志位Flag_Chg值为1。返回 步骤(3),进行下一次数据传输。
[0041] 下面举一个直接对发送缓冲区进行更新操作导致输出帖校验和错误的例子。假设 当前发送缓冲区为缓冲区A,已发送了"OxAA,0x2A,0x01,0x02,0x03",此时若直接使用新产 生的数据更新缓冲区A,则本次输出的帖内容为"OxAA,0x2A,0x01,0x02,0x03,0x00,0x00, 0x00,0址4"。即缓冲区A中原有的五个字节及新产生的数据帖中的后四个字节。可W看出 此帖内容错误。本发明在缓冲区数据没有完全发送完时不对当前发送缓冲区进行更新操 作,而是将新产生的数据帖存入非当前发送缓冲区中,等待当前发送缓冲区中数据发送完 毕时再对缓冲区进行切换,由此杜绝了输出错误帖的可能。
[0042] W上对本发明所提供的一种基于SPI总线通信协议的双缓冲数据传输方法进行 了详细介绍,对于本领域的一般技术人员,依据本发明的具体实施过程及应用范围上均会 有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。本发明未详细描述内容 为本领域技术人员公知技术。
【主权项】
1. 一种基于SPI总线通信协议的双缓冲数据传输方法,所述SPI总线通信协议包括一 个主设备和至少一个从设备,其特征在于步骤如下: (1) 在从设备中为数据的发送分配两个缓冲区,分别命名为缓冲区A,即缓冲区标志位 Flag_up=O和缓冲区B,即缓冲区标志位Flag_up= 1,设置从设备的当前发送缓冲区为缓 冲区A,标志位设置为初值;所述标志位包括定时中断标志有效标志位Flag_Timing、发送 接收过程标志位Flag_BeginSend和转换缓冲区标志位Flag_Chg; (2) 主设备发出一个字节数据请求,从设备进行响应,进入SPI中断,从设备输出当前 发送缓冲区中数据帧的一个字节,若主设备再次发出一个字节数据请求,则从设备传输当 前发送缓冲区中数据帧的下一个字节;若从设备传输当前发送缓冲区中数据帧未全部传输 完成,则将标志位Flag_BeginSend的值置1 ;否则,将标志位Flag_BeginSend的值置O; (3) 判断转换缓冲区标志位Flag_Chg的值是否为1,若为1,则进入步骤(4);否则,进 入步骤(5); (4) 判断发送接收过程标志位Flag_BeginSend的值是否为1,若为0,则将从设备的当 前发送缓冲区切换至另一个缓冲区,并将转换缓冲区标志位Flag_Chg置0,进入步骤(5); 若发送接收过程标志位Flag_BeginSend的值为1,则进入步骤(5); (5) 判断定时中断标志有效标志位Flag_Timing的值是否为1,若为1,则进入步骤 (6);否则,返回步骤(3); (6) 将定时中断标志有效标志位Flagjiming置0,产生新的数据帧,并利用新的数据 帧更新缓冲区;设置转换缓冲区标志位Flag_Chg值为1,返回步骤(3),等待下一次数据传 输。2. 根据权利要求1所述的一种基于SPI总线通信协议的双缓冲数据传输方法,其特征 在于:所述定时中断标志有效标志位Flag_Timing的取值为1时表示定时中断标志有效; 取值为〇时表示定时中断标志无效,定时中断标志有效标志位Flag_Timing的初值为0 ; 所述发送接收过程标志位Flag_BeginSend的取值为1时表示发送缓冲区处于发送 接收过程;取值为〇时表示发送缓冲区未处于发送接收过程,发送接收过程标志位Flag_ BeginSend的初值为0 ; 所述转换缓冲区标志位Flag_Chg的取值为1时表示非当前发送缓冲区中的数据帧已 进行更新;取值为〇时表示非当前发送缓冲区中的数据帧未进行更新,转换缓冲区标志位 Flag_Chg的初值为0。3. 根据权利要求1所述的一种基于SPI总线通信协议的双缓冲数据传输方法,其特征 在于:所述步骤(6)中更新缓冲区的方法具体如下: 若当前发送缓冲区为缓冲区A,则利用新的数据帧更新缓冲区B;若当前发送缓冲区为 缓冲区B,则利用新的数据帧更新缓冲区A。4. 根据权利要求1所述的一种基于SPI总线通信协议的双缓冲数据传输方法,其特征 在于:所述数据帧包括帧头标志、数据域和校验码;所述帧头标志长度为1~2个字节,校 验码长度为1~2个字节。5. 根据权利要求4所述的一种基于SPI总线通信协议的双缓冲数据传输方法,其特征 在于:所述校验码为8~16位校验和。
【专利摘要】一种基于SPI总线通信协议的双缓冲数据传输方法,在从设备中为数据的发送分配两个缓冲区,分别用于数据的传输和数据的更新,且利用不同的标志位来控制缓冲区之间的切换,实现了主设备和从设备之间输出帧的稳定可靠传输,杜绝了输出错误帧的可能。
【IPC分类】G06F13/42
【公开号】CN105183690
【申请号】CN201510557526
【发明人】郭涛, 黄超, 罗强力
【申请人】北京航天控制仪器研究所
【公开日】2015年12月23日
【申请日】2015年9月2日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1