一种SPI数据传输方法技术

技术编号:34108266 阅读:15 留言:0更新日期:2022-07-12 00:52
本发明专利技术公开一种SPI数据传输方法,用于主设备与从设备通过SPI通讯,包括以下步骤:a、发送数据;b、生成从设备端校验和;c、生成主设备端校验和;d、比较主设备端校验和与设备端校验和并依据比较结果判断传输的正确性。本发明专利技术能够有效的侦测到数据传输出现错误,解决现有SPI通讯中数据丢包的问题,提高通讯的正确性和稳定性。和稳定性。和稳定性。

【技术实现步骤摘要】
一种SPI数据传输方法


[0001]本专利技术涉及通讯技术,尤其涉及一种SPI数据传输校验方法。

技术介绍

[0002]SPI(Serial Peripheral Interfacer 串行外设接口)是摩托罗拉公司推出的一种同步串行通讯接口,用于微处理器与控制器和外围扩展芯片之间的串行连接。
[0003]SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,如今越来越多的芯片集成了这种通信协议。
[0004]SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。
[0005]现有的方式是处理器和处理器之间直接通过数字隔离芯片进行SPI通讯,存在下述缺陷:在数据发送过快的情况下或有其他干扰的情况下,数据会丢包,造成通讯数据错误,导致软件BUG。

技术实现思路

[0006]为克服上述缺陷,本专利技术旨在提供SPI数据传输方法,用于主设备与从设备通过SPI通讯,能够解决现有SPI通讯中数据丢包的问题,提高通讯的正确性和稳定性。
[0007]为达到上述目的,本专利技术是采用以下技术方案实现的:本专利技术公开的SPI数据传输方法,用于主设备与从设备通过SPI通讯,包括以下步骤:a、发送数据:主设备向从设备发送第一数据,并在主设备本地存储所述第一数据;b、生成从设备端校验和:从设备接收到第一数据的接收值后,向主设备发送主设备与所述第一数据的接收值关联的第二数据;再通过第一数据的接收值和第二数据按照预定运算规则计算生成第三数据,并且将第三数据发送至主设备;c、生成主设备端校验和:主设备接收到第二数据的接收值、第三数据的接收值后,将第一数据和第二数据的接收值按照所述预定运算规则计算生成第四数据;d、比较主设备端校验和与设备端校验和:比较第三数据的接收值与第四数据,当第三数据的接收值与第四数据相同时,判断为传输的数据正确。
[0008]其中,第三数据为从设备端校验和,第四数据为主设备端校验和,本专利技术通过在主设备和从设备两端分别按照相同规则生成校验和,然后在主设备进行两个校验和的比对,当其中任何一次数据的传输出错时,均会造成两个校验和的不一致,从而能够有效的识别传输中的错误,大大提高通讯的正确性。
[0009]进一步的,在步骤d中还包括:当第三数据的接收值与第四数据不相同时,判定为传输的数据不正确,并重新执
行步骤a。
[0010]当然,在侦测到数据传输出错以后,可以重发数据,直至侦测到数据正确后,再进行下一组数据的传输。
[0011]优选的,所述第一数据、第一数据的接收值均为8bit数据,所述第二数据、第二数据的接收值均为16bit数据。
[0012]对于16位的微处理器,传输的数据通常以字节或者字为单位。
[0013]进一步优选的,所述第一数据的接收值为寄存器的地址信息,所述第二数据为所述寄存器的数据信息。用于完成主设备读取从设备中的寄存器数据,通常数据是通过寄存器进行传输的缓冲。
[0014]作为一种优选的,所述预定运算规则如下:将所述8bit数据异或所述16bit数据的高8位再异或所述16bit数据的低8位。采用该种运算规则,当第一数据的接收值和/或第二数据接收值和/或第三数据的接收值不正确时,均会造成第三数据的接收值与第四数据的不一致,能够有效的侦测到数据传输出现错误。
[0015]进一步优选的,对预定运算规则进行增强后如下:将所述8bit数据异或所述16bit数据的高8位再异或所述16bit数据的低8位后生成的结果再和0x400进行与运算。
[0016]上述的与运算能够有效的避免在主设备和从设备两端的数据同时错位时导致校验通过的情形,进一步保证通讯的正确性。
[0017]优选的,所述主设备、从设备的时钟同步。
[0018]进一步优选的,所述主设备、从设备采用同一时钟。
[0019]本专利技术能够有效的侦测到数据传输出现错误,解决现有SPI通讯中数据丢包的问题,提高通讯的正确性和稳定性;并且能够避免软件BUG。
附图说明
[0020]图1为本专利技术的流程图。
[0021]图2为实施例3的数据格式示意图。
具体实施方式
[0022]为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图,对本专利技术进行进一步详细说明。
[0023]实施例1如图1所示,本实施例公开一种SPI数据传输方法,用于主设备与从设备通过SPI通讯,包括以下步骤:a、主设备向从设备发送第一数据,并在主设备本地存储所述第一数据;b、从设备接收到第一数据的接收值后,向主设备发送主设备与所述第一数据的接收值关联的第二数据;再通过第一数据的接收值和第二数据按照预定运算规则计算生成第三数据,并且将第三数据发送至主设备;c、主设备接收到第二数据的接收值、第三数据的接收值后,将第一数据和第二数
据的接收值按照所述预定运算规则计算生成第四数据;d、比较第三数据的接收值与第四数据,当第三数据的接收值与第四数据相同时,判断为传输的数据正确。
[0024]当第三数据的接收值与第四数据不相同时,判定为传输的数据不正确,并重新执行步骤a。
[0025]其中,主设备、从设备的时钟同步,最好是主设备、从设备采用同一时钟。第一数据、第一数据的接收值均为8bit数据,所述第二数据、第二数据的接收值均为16bit数据。
[0026]预定运算规则如下:将所述8bit数据分别和16bit数据的高8位和低8位进行异或运算。
[0027]实施例2本实施例与实施例1的区别之处在于,采用的预定运算规则如下:将所述8bit数据分别和16bit数据的高8位和低8位进行异或运算后生成的结果再和0x400进行与运算。
[0028]实施例3如图2所示,在实施例2的基础上,本实施例公开了一个SPI数据传输的实例,具体如下:主机A和从机B通过SPI通讯,使用同一时钟进行,主机A发送8bit需要的寄存器信息reg_num给从机B,同时主机A保存该发送信息在本地,从机B收到8bit信息reg_num~后,将主机A需要的寄存器信息发送给主机16bit

value,再自行运算出一个校验和check_sum发送给主机A,具体计算方法如下:从机B收到的8bit信息reg_num~异或上value的高8位,再异或上value的低8位,最后与上0x400作为标签位,如下式:check_sum=(reg_num~

valueH8

valueL8)&0x400上式中:valueH8为value的高8位,valueL8为value的低8位。
[0029]主机收到16bit_value后,通过同样的算法,计算出本地的reg_sum和收到val本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种SPI数据传输方法,用于主设备与从设备通过SPI通讯,其特征在于,包括以下步骤:a、发送数据:主设备向从设备发送第一数据,并在主设备本地存储所述第一数据;b、生成从设备端校验和:从设备接收到第一数据的接收值后,向主设备发送主设备与所述第一数据的接收值关联的第二数据;再通过第一数据的接收值和第二数据按照预定运算规则计算生成第三数据,并且将第三数据发送至主设备;c、生成主设备端校验和:主设备接收到第二数据的接收值、第三数据的接收值后,将第一数据和第二数据的接收值按照所述预定运算规则计算生成第四数据;d、比较主设备端校验和与设备端校验和:比较第三数据的接收值与第四数据,当第三数据的接收值与第四数据相同时,判断为传输的数据正确。2.根据权利要求1所述的SPI数据传输方法,其特征在于:在步骤d中还包括:当第三数据的接收值与第四数据不相同时,判定为传输的数据不正确,并重新执行步骤a。3.根据权利要求2所述的...

【专利技术属性】
技术研发人员:古秋翔徐飞飞何丹邱玺
申请(专利权)人:成都创科升电子科技有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1