一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于仲裁线的全双工SPI通信方法与流程

2022-02-21 03:50:28 来源:中国专利 TAG:

一种基于仲裁线的全双工spi通信方法
技术领域
1.本发明涉及汽车通信技术领域,尤其涉及一种基于仲裁线的全双工spi通信方法。


背景技术:

2.随着电子系统功能的不断强大,集成化程度不断提高,多芯片系统方案已经成为常见的电子产品设计方案。在多芯片系统方案中,芯片间通讯方式主要为板上总线(uart、iic、spi等)。而在汽车电子控制器领域,由于spi(串行外设接口,serial peripheral interface)通讯具有硬件结构简单,原理简明,具备全双工能力等特点,成为常用的一种总线通讯方式;四线spi方案能实现有限制的全双工通讯,在这种通讯方案中,只有主设备能主动发起通讯,而从设备不能主动发起通讯,只能等待主设备发起通讯后向主设备发送数据。这种方案在传输方向、通讯的灵活性和载荷能力上都存在较大的限制。


技术实现要素:

3.本发明所要解决的技术问题在于,提供一种基于仲裁线的全双工spi通信方法,用于解决现有spi通信在传输方向、通讯的灵活性和载荷能力上都存在较大的限制的问题。
4.本发明提供的一种基于仲裁线的全双工spi通信方法,所述方法包括:
5.步骤s11、通讯请求方检测与所述通讯请求方对应的第一仲裁线和与通讯应答方对应的第二仲裁线,当所述第一仲裁线和所述第二仲裁线均处于低电位时,拉高所述通讯请求方对应的第一仲裁线的电位;
6.步骤s12、所述通讯应答方检测到所述第一仲裁线处于高电位时,拉高所述第二仲裁线的电位;
7.步骤s13、所述通讯请求方检测到所述第二仲裁线处于高电位时,确认所述通讯应答方处于可通信状态;
8.步骤s14、所述通讯请求方与所述通讯应答方互相发送报文头部数据;
9.步骤s15、所述通讯请求方与所述通讯应答方互相发送报文正文数据。
10.进一步地,在所述步骤s12中,拉高与所述第二仲裁线的电位之前还包括:
11.所述通讯应答方检测自身状态正常,所述自身状态包括内存空间和通讯状态。
12.进一步地,所述步骤s14还包括:
13.所述通讯请求方与所述通讯应答方分别从对方发送的所述报文头部数据中获取对方的报文数据的传输数据长度,并对自身的传输数据长度较短的所述报文数据补齐,使得双方的报文数据的传输数据长度一致。
14.进一步地,所述步骤s13包括:
15.当所述通讯请求方为主机时,所述通讯请求方拉低片选信号的电位并向所述通讯应答方发送时钟信号。
16.进一步地,所述通讯请求方与通讯应答方获取对方的报文数据的传输数据长度,并对自身的数据报文的传输数据长度较短的所述报文数据补齐,使得双方的报文数据长度
一致之后还包括:
17.所述通讯请求方向所述通讯应答方发送与补齐后的报文数据的传输数据长度对应的片选信号和时钟信号,并拉低所述第一仲裁线的电位。
18.进一步地,所述步骤s15之后还包括:
19.所述通讯请求方拉高片选信号的电位,并停止向所述通讯应答方发送时钟信号;
20.所述通讯应答方拉低所述第二仲裁线的电位。
21.进一步地,所述步骤s13还包括:
22.当所述通讯请求方为从机时,所述通讯应答方拉低片选信号的电位并向所述通讯请求方发送时钟信号。
23.进一步地,所述通讯请求方与所述通讯应答方获取对方的报文数据的传输数据长度,并对自身的传输数据长度较短的所述报文数据补齐,使得双方的报文数据长度一致之后还包括:
24.所述通讯应答方向所述通讯请求方发送与补齐后的报文数据的传输数据长度对应的片选信号和时钟信号,并拉低所述第二仲裁线的电位。
25.进一步地,所述步骤s15之后还包括:
26.所述通讯应答方拉高片选信号的电位,并停止向所述通讯请求方发送时钟信号;
27.所述通讯请求方拉低所述第二仲裁线的电位。
28.进一步地,所述通讯请求方与所述通讯应答方分别从对方发送的所述报文头部数据中获取对方的报文数据的传输数据长度,并对自身的传输数据长度较短的所述报文数据补齐,使得双方的报文数据的传输数据长度一致具体包括:
29.所述通讯请求方与所述通讯应答方分别获取对方的报文头部数据,所述报文头部数据携带报文数据的传输数据长度;
30.所述通讯请求方与所述通讯应答方分别将自身的报文数据的传输数据长度和对方的报文数据的传输数据长度进行比较;
31.任意一方确定自身的报文数据的传输数据长度较短,将自身的传输数据长度较短的所述报文数据以预设字符进行补充,使得双方的报文数据的传输数据长度一致。
32.进一步地,所述报文头部数据包括协议类型字段,所述协议类型字段设置为事件消息类型或者周期消息类型;
33.当通讯请求方或者通讯应答方发送的报文头部数据包括周期消息类型,发送报文数据的一方完成所述报文数据发送后,确认报文数据发送成功,所述报文数据包括报文头部数据和报文正文数据;
34.当通讯请求方或者通讯应答方发送的报文头部数据包括事件消息类型,发送所述报文数据的一方启动所述报文数据对应的计时器,在预设计时时间内收到接收报文数据的一方回复确认消息ack,发送所述报文数据的一方判定报文数据发送成功且将所述报文数据从发送队列中移除。
35.进一步地,所述方法还包括:
36.当发送所述报文数据的一方在所述预设时间内未收到所述接收报文数据的一方回复所述确认消息ack,所述发送报文数据的一方重新发送所述报文数据并再次启动所述计时器;
37.当重发次数到达预设失败次数,发送所述报文数据的一方判定报文数据发送失败,并通过回调函数将失败信息返回给所述发送报文数据的一方的应用层。
38.实施本发明,具有如下有益效果:
39.通过本发明,提供了第一仲裁线和第二仲裁线用于判定主机和从机的工作状态、通讯请求和通讯应答,实现了主机可以向从机发送报文数据,以及从机可以向主机发送报文数据,在主机和从机同时发送数据时,通过调整数据报文长度来解决时钟同步的问题,达到了主机与从机同时发送数据报文;且无论是主机向从机发送数据报文,还是从机向主机发送数据报文,或者双向发送数据报文,都将数据报文分成了报文头部数据和报文正文数据,不需要接收方每接收一位字符都进行确认,提升了数据报文传输效率,另外对于周期性报文不需要ack答复来确认报文数据发送成功,对于重要报文采用ack来确认报文数据发送成功,提升了数据报文发送效率,解决现有spi通信在传输方向、通讯的灵活性受到限制的问题。
附图说明
40.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
41.图1是本发明实施例提供的基于仲裁线的全双工spi通信方法的流程图。
42.图2是本发明实施例提供的spi通信方法的层级划分和各组件的整体构架关系图。
43.图3是本发明实施例提供的有ack的通用报文协议通信流程图。
44.图4是本发明实施例提供的无ack的通用报文协议通信流程图。
45.图5是本发明实施例提供的基于仲裁线的全双工spi通信方法的流程图。
46.图6是本发明实施例提供的基于仲裁线的全双工spi通信方法的流程图。
具体实施方式
47.本专利中,以下结合附图和实施例对该具体实施方式做进一步说明。
48.如图1所示,本发明实施例提供了基于仲裁线的全双工spi通信方法,所述方法包括:
49.步骤s11、通讯请求方检测与所述通讯请求方对应的第一仲裁线和与通讯应答方对应的第二仲裁线,当所述第一仲裁线和所述第二仲裁线均处于低电位时,拉高所述第一仲裁线的电位。
50.需要说明的是,现有四线spi包括主机、一个或者多个从机以及四条通讯信号线,分别为时钟线(clk)、片选(cs)、主机输出信号线(mosi)、主机输入信号线(miso)。
51.在本实施例中,增加了两条spi通讯信号线,分别为与通讯请求方对应的第一仲裁线和与通讯应答方对应的第二仲裁线,当第一仲裁线位于低电位时,表示通讯请求方处于空闲状态,无数据报文正在发送,当第二仲裁线位于低电位时,表示通讯应答方处于空闲状态,无数据报文正在发送;拉高所述第一仲裁线的电位实际上是通讯请求方发起通讯请求。
52.还进一步要说明的是,通讯请求方可以是主机也可以是从机,当通讯请求方是主
机时,那么通讯应答方必然是从机;同理通讯请求方是从机时,那么通讯请求方必然是主机。
53.步骤s12、所述通讯应答方检测到所述第一仲裁线处于高电位时,拉高所述第二仲裁线的电位。
54.需要说明的是,在拉高所述第二仲裁线的电位之前,通讯应答方可以确认自身状态,所述自身状态包括内存空间和通讯状态,当通讯应答方确认自身状态正常时,拉高所述第二仲裁线的电位,本步骤相当于通讯应答方准备应答通讯请求方的通讯请求。
55.步骤s13、所述通讯请求方检测到所述第二仲裁线处于高电位时,确认所述通讯应答方处于可通信状态。
56.需要说明的是,步骤s13中还包括:
57.当所述通讯请求方为主机时,所述通讯请求方拉低片选信号的电位并向所述通讯应答方发送时钟信号;
58.当所述通讯请求方为从机时,所述通讯应答方拉低片选信号的电位并向所述通讯请求方发送时钟信号。
59.拉低片选信号的电位是表明主机选择该从机作为通讯对象,主机向从机发送时钟信号是进行时钟同步。
60.步骤s14、所述通讯请求方与所述通讯应答方互相发送报文头部数据。
61.在本实施例中,主机与从机双向发送报文数据,将报文数据分成报文头部数据和报文正文数据分开进行发送,主机通过报文头部数据可以获知该帧报文数据的具体传输长度,并发出对应所述传输长度的时钟信号,不需要从机对每个字节发送都进行响应,节省时间并能够提高效率。
62.参考表1的报文结构和表2的头部结构,在表2协议类型中包括事件消息类型、大数据传输类型和周期消息类型。
63.头部信息(4b)payloadcrc32(4b)
64.表1
65.起始符(1b)协议类型(1b)pdu长度(2b)
66.表2
67.需要说明的是,报文数据包括报文头部数据和报文正文数据,报文头部数据包括协议类型字段,协议类型字段设置为事件消息类型或者周期消息类型,当所述通讯请求方或者所述通讯应答方发送的报文数据包含周期消息类型,发送数据报文的一方在完成报文数据发送后,确认报文数据发送成功;
68.当所述通讯请求方或者所述通讯应答方发送的报文数据包含事件消息类型,发送数据报文的一方启动所述数据报文对应的计时器,在预设计时时间内收到接收数据报文的一方回复确认消息ack,判定所述报文数据发送成功且将所述报文数据从发送队列中移除。
69.根据实际需要,应用层来进行选择,重要的报文数据选择设置为事件消息类型,非重要的或者周期性的报文数据选择设置为周期消息类型,对于周期消息类型不需要确认消息ack进行确认,节省了非重要报文ack所使用的时间。
70.所述步骤s14还包括:
71.所述通讯请求方与所述通讯应答方分别从对方的所述报文头部数据中获取对方
的报文数据的传输数据长度,对自身的传输数据长度较短的所述报文数据补齐,使得双方的报文数据的传输数据长度一致。
72.具体地,所述通讯请求方与所述通讯应答方分别获取对方的报文头部数据,所述报文头部数据携带报文数据的传输数据长度;
73.所述通讯请求方与所述通讯应答方分别将自身的报文数据的传输数据长度和对方的报文数据的传输数据长度进行比较;
74.任意一方确定自身的报文数据的传输数据长度较短,将自身的传输数据长度较短的所述报文数据以预设字符进行补充,使得双方的报文数据的传输数据长度一致。
75.需要说明的是,通讯请求方的对方是指通讯应答方,通讯应答方的对方是指通讯请求方;任意一方确定自身的报文数据的传输数据长度较短,用0x00字符对报文正文数据补齐,使得双方的报文数据的传输数据长度一致。
76.所述通讯请求方与所述通讯应答方分别从对方的所述报文头部数据中获取对方的报文数据的传输数据长度,对自身的传输数据长度较短的所述报文数据补齐,使得双方的报文数据的传输数据长度一致之后还包括:
77.当所述通讯请求方为主机时,所述通讯请求方向所述通讯应答方发送与补齐后的报文数据的传输数据长度对应的片选信号和时钟信号,并拉低所述第一仲裁线的电位。
78.当所述通讯请求方为从机时,所述通讯应答方向所述通讯请求方发送与补齐后的报文数据的传输数据长度较长对应的片选信号和时钟信号,并拉低所述第二仲裁线的电位。
79.步骤s15、所述通讯请求方与所述通讯应答方互相发送报文正文数据。
80.所述步骤s15之后还包括:
81.当所述通讯请求方为主机时,所述通讯请求方拉高片选信号的电位,并停止向所述通讯应答方发送时钟信号;
82.所述通讯应答方拉低所述第二仲裁线的电位。
83.当所述通讯请求方为从机时,所述通讯应答方拉高片选信号的电位,并停止向所述通讯请求方发送时钟信号;
84.所述通讯请求方拉低所述第二仲裁线的电位。
85.通过上述步骤,通讯请求方和通讯应答方完成数据报文发送后,分别将对应的仲裁线的电位拉低,都恢复到空闲状态,可以进行下一次发送。
86.进一步地,所述报文头部数据包括协议类型字段,所述协议类型字段设置为事件消息类型或者周期消息类型;
87.当通讯请求方或者通讯应答方发送的报文头部数据包括周期消息类型,发送报文数据的一方完成所述报文数据发送后,确认报文数据发送成功,所述报文数据包括报文头部数据和报文正文数据;
88.当通讯请求方或者通讯应答方发送的报文头部数据包括事件消息类型,发送所述报文数据的一方启动所述报文数据对应的计时器,在预设计时时间内收到接收报文数据的一方回复确认消息ack,发送所述报文数据的一方判定报文数据发送成功且将所述报文数据从发送队列中移除。
89.进一步地,所述方法还包括:
90.当发送所述报文数据的一方在所述预设时间内未收到所述接收报文数据的一方回复所述确认消息ack,所述发送报文数据的一方重新发送所述报文数据并再次启动所述计时器;
91.当重发次数到达预设失败次数,发送所述报文数据的一方判定报文数据发送失败,并通过回调函数将失败信息返回给所述发送报文数据的一方的应用层。
92.需要说明的是,通过多次重试的方式来提高成功的概率,同时通过限制失败次数来避免资源被过度浪费。
93.参考图2,上述通信方法是基于通信方法的层级划分和各组件的整体结构为基础的,在图2中全局控制和适配层包括:m11、应用交互接口;m12、应用报文管理;m13、sourceid管理;m14、应用回调和反馈管理;m15、ack&重传;m16、通讯管理协议。
94.m11、应用交互接口,对外提供统一的调用接口,应用通过提供的接口实现:发送报文,设置报文的处理方式,配置报文优先级,注册和管理报文接收回调函数,查询通讯状态等操作。
95.m12、应用报文管理,应用通过m11,将需要发送报文的id和类型传进m12,然后m12根据报文中相关的参数设置信息控制协议层的模块执行报文传输。
96.m13、sourceid管理,为了区分每一条报文,本模块会对每一条报文提供一个唯一(至少一段时间内)序列号作为凭证。当应用层发送报文时,在组装报文的过程中会调用本模块申请序列号,本模块按照指定程序产生唯一的序列号,再将序列号返回给报文组装函数。
97.如前所述,序列号的取值范围应该足够大,以确保整个系统在一定时间能根据序列号区分每一条不同的报文,避免对不同时间发出但是内容一样的报文进行误操作。
98.m14、应用的回调和反馈管理,应用通过m11提供的接口,将id号和回调函数成对绑定传进m14,m14的主要功能是根据id号找到对应的回调函数,将该id报文在传输过程中产生的信息(包括发送失败、接收报文等)返回给应用。同时应用可使用m11提供的接口对m14中保存的信息进行操作。
99.m15、ack&重传,本方法报文协议提供两种类型报文,分别为周期型报文和事件型报文,其格式见表3和表4。
100.发送
101.序列号(2b)命令(2b)数据长度(2b)数据(0-64kb)
102.回复
103.序列号(2b)长度(2b)数据(0-64kb)
104.表3
105.字段说明:
106.序列号(2bytes)0-65535循环命令(2bytes)8bits(命令组id) 8bits(命令子id)长度(2bytes)协议内数据长度数据(0-64kb less protocol overhead)数据
107.表4
108.周期型报文是指发送方周期性发送的报文,其特点是不需要接收方回复确认信息(ack);而事件型报文在被发送出去后,需要接收方回复确认信息并且发送方接收到确认信息后才算发送成功,否则发送方会进行重发或者发送失败处理,其具体过程如下:
109.当发送出一帧事件型报文后,本模块启动一个对于该报文的计时器,然后在一段时间内等待接收方回复的接收确认ack信息。如果及时收到了ack则判定该报文已发送成功,该条报文会被移出发送队列;如果超时未收到ack则判定该报文本次发送失败,重新发送该条报文并计时;当重发到达一定次数后,则判定该条报文发送失败并通过回调函数将失败信息返回给应用。当收到一帧事件型报文后,接收方生成ack报文,并发送出去。
110.一条事件型报文和它的ack配对是依靠报文的报文序列号字段实现。接收方在收到事件型报文后,将报文的报文序列号字段的值取出,并装填进回复ack的报文序列号字段。发送方接收到ack后会对序列号进行对照,当其序列号与发送队列中某一条事件型报文一致时,认为该条报文已经发送成功,将其移出发送队列。
111.m16、通信管理协议,这个模块负责心跳报文的接收和发送,以及管理通信状态。通信管理协议专门定义心跳报文的格式,具体参见下面表5,查询对端控制器连接状态,以及通信状态转换的逻辑。通信管理协议规定,在一个多核通信的嵌入式产品中,承担“通信中枢”角色的控制器设定为通信状态管理的主机,其它的都设定为从机。协议还规定了在整个通讯网络中,有且只有一个主机,一个或多个从机。
112.发送心跳
113.序列号(2b)命令(1b)协议版本(1b)
114.回复
115.宁列号(2b)命令(1b)协议版本(1b)
116.字段说明:
117.序列号(2bytes)0-65535循环命令(1bytes)心跳协议版本(1bytes)标准协议版本符号
118.表5
119.通信管理协议主要包含以下子模块:1、通信状态管理;2、周期心跳管理。
120.1、通信状态管理。
121.首先,主机按照固定周期发出一条心跳报文,从机在接收到心跳报文后按照协议约定,回复一条心跳报文。在通讯状态管理模块中,主机将维护与从机通讯质量相关的评分表,作为通讯状态管理的主要依据。
122.主机在发出心跳报文后,会同时启动计时器,若在指定时间内未收到从机的心跳报文,将在通讯质量评分表上扣除指定分值;反之,当在约定时间内收到从机回复的心跳报文后,就在评分表上增加一定的分值。此外,当一条需要确认的报文没有及时和正确地得到接收方的回复,则发生一次扣分;反之,当成功收到确认后,分值表加分。当发生多次扣分而分值低于一个阈值2后,判定与该从机的“降级为”连通且阻塞通信模式,即没有收到确认之前不会发送下一条报文;而分值低于一个阈值1后,判定通信断开,此时只有心跳报文发送,其余报文一律不发送。反之,在分值高于一个阈值1后,判定与该从机的通信连通且阻塞通
信模式,在分数高于一个阈值2后,判定与该从机的通信连通且连续通信模式。从机也在其通信管理协议模块中维护同样的评分表,其过程与上述一致。
123.2、周期心跳管理。
124.如果是主机,不论当前通信状态如何,都按照固定周期,封装心跳报文并发送给协议层。心跳报文包含本控制器运行的本通信方法的软件的版本信息。
125.如果是从机,不论当前通信状态如何,在收到主机发来的心跳报文后,都要封装一条用于回应的心跳报文,将回应的心跳报文发送到协议层。
126.协议层的主要功能是提供发送报文优先级队列管理,收发报文时的报文头封装和解析、crc生成校验和报文接收回调管理。
127.m21报文优先级管理,该模块管理着3个报文优先级队列,分别为高、中、低,发送顺序为高-》中-》低,即高优先级队列中报文会优先发送,直到队列中没有报文了在发送中优先级队列中的报文。应用层通过m11配置报文优先级,由m12传递优先级参数,本模块通过报文的优先级配置参数,将该条报文压入对应优先级队列。发送周期任务执行时,按照优先级顺序将报文压入底层的发送队列。本模块的作用是优化报文发送顺序,提供紧急报文优先发送功能,减少报文堆积对应用处理时效性的影响。
128.m22报文头封装和解析,协议层拿到应用层的报文数据后,在推向底层驱动前会给报文数据增加报文头字段,用于区每一条报文和补充相关信息。协议层从协议适配层收到报文数据后,会根据报文的头字段解析报文正文内容,并把去除了头字段的数据通过回调传给应用层。
129.本模块还具有关键字转义的功能。因为协议中定义报文头字段以某一个特定值作为一条报文开始的标志,所以在整条报文中不允许再包含该特定值。为了避免报文其他位置出现特定值,需要定义转义算法,将出现特定值转换成其它值。以0x7e为例,其转义过程为:
130.假设使用0x7e作为报文起始标志,若其他位置出现0x7e,则要进行转义处理,转义规则定义如下:
131.0x7e《———》0x7d后紧跟一个0x02;
132.0x7d《———》0x7d后紧跟一个0x01。
133.协议层根据实际报文情况进行转义处理,确保报文头的唯一性,并保证正确解读接收报文。
134.m23 crc生成和校验。本模块使用标准的crc32算法,对报文头和协议层报文数据计算出crc32值,并与该条报文一起被发送至对端;校验收到报文的crc32值是否正确。若接收报文的crc32字段值,与计算的相等,则收到的报文正确无误。如果不相等,则说明接收到的报文有错误,丢弃该报文。本模块的主要作用是防止因总线干扰等意外造成的错误数据被上传至上层。
135.m23报文接收回调。本模块主要功能是将基于m22和m23对报文进行解析和校验后的报文通过回调方式返回给全局控制和适配层。
136.接口适配层的主要功能是隔绝底层硬件接口的多变性,向协议层提供统一的硬件调用接口。该层也是保证本方法能适配各种硬件平台的关键。
137.在硬件接口层中,m41通讯握手管理是实现通讯双方按需互发送数据的关键,其主
要功能是通过对通讯状态仲裁线(第一仲裁线,第二仲裁线)的状态进行判断,得知当前芯片和对端芯片的通讯状态(空闲、正在通讯以及请求通讯状态),迅速达成通讯发送状态,发送数据。
138.进一步地,所述接收报文数据的一方回复所述确认消息ack具体包括:
139.所述接收数据报文的一方接收到所述报文数据包含所述事件消息类型,将所述报文数据的报文序列号字段的值取出;
140.所述接收报文数据的一方将所述报文数据的报文序列号字段的值装填进所述确认消息ack的报文序列号字段,向所述发送报文数据的一方发送所述确认消息ack。
141.进一步地,所述方法还包括:
142.所述发送数据报文的一方接收到所述确认消息ack,将所述确认消息ack的报文序列号字段取出,将所述确认消息ack的报文序列号字段与发送队列中所有报文数据的报文序列号字段进行比较;
143.当所述确认消息ack的报文序列号字段与发送队列中任一报文数据的所述报文序列号字段相同,所述发送数据报文的一方判定所述任一报文数据发送成功,将所述任一报文数据移出发送队列。
144.借助图3和图4,可以看到有ack的通用报文协议通讯流程远比无ack的通用报文协议通信流程要复杂,时间长,系统资源消耗多,对非重要消息采用无ack方式,时间短且效率高。
145.如图5所示,本发明实施例提供了基于仲裁线的全双工spi通信方法,所述方法包括:
146.s21、当从机检测到与主机对应的仲裁线和与从机对应的仲裁线均处于低电位时,拉高所述与从机对应的仲裁线的电位。
147.s22、所述主机检测到所述与从机对应的仲裁线位于高电位,拉高所述与主机对应的仲裁线的电位。
148.s23、所述从机检测到所述与主机对应的仲裁线位于高电位,确认所述主机处于可通信状态。
149.需要说明的是,步骤s23中从机确认主机处于可通信状态,所述从机处于等待片选信号和时钟信号状态。
150.s24、所述主机拉低所述片选信号的电位和所述与主机对应的仲裁线的电位,向所述从机发送所述时钟信号。
151.s25、所述从机向所述主机发送报文头部数据。
152.s26、所述主机接收到所述报文头部数据,确认所述报文传输长度,向所述从机发送与所述报文传输长度对应的片选信号和时钟信号。
153.需要说明的是,本实施例中是从机单向向主机发送报文数据,根据从机的报文头部数据中存储的报文传输长度,发送对应时钟信号。
154.s27、所述从机向所述主机发送报头正文数据。
155.在本实施例中,从机向主机发送报文数据,也是分为报文头部数据和报文正文数据先后发送,主机在接收报文的时候不需要对报文的每一个字节进行响应,只需要发送对应长度的时钟信号。同时在接收过程中,当接收完指定长度的报文信号后才会进行响应,节
省时间并能够提高效率。
156.s28、所述主机接收报文正文数据后,停止发送时钟信号并拉高片选信号的电位,同时所述从机确认本次报文数据发送成功,拉低所述第二仲裁线的电位。
157.如图6所示,本发明实施例提供了基于仲裁线的全双工spi通信方法,所述方法包括:
158.s31、主机检测到与主机对应的仲裁线和与从机对应的仲裁线均处于低电位时,拉高与所述主机对应的仲裁线的电位。
159.s32、从机检测到与主机对应的仲裁线处于高电位时,拉高与所述丛机对应的仲裁线的电位。
160.s33、主机确认从机处于可通讯状态,拉低片选信号的电位并发送向从机发送时钟信号。
161.s34、所述主机向所述从机发送头报文头部数据。
162.s35、所述主机向所述从机发送报文正文数据。
163.s36、所述主机在报文数据发送成功后,停止发送所述时钟信号并拉高片选信号的电位。
164.s37、所述从机在确定报文数据发送成功,拉低所述第二仲裁线的电位。
165.通过本发明,提供了第一仲裁线和第二仲裁线用于判定主机和从机的工作状态、通讯请求和通讯应答,实现了主机可以向从机发送报文数据,以及从机可以向主机发送报文数据,在主机和从机同时发送数据时,通过调整数据报文长度来解决时钟同步的问题,达到了主机与从机同时发送数据报文;且无论是主机向从机发送数据报文,还是从机向主机发送数据报文,或者双向发送数据报文,都将数据报文分成了报文头部数据和报文正文数据,不需要接收方每次都进行确认,提升了数据报文传输效率,另外对于周期性报文不需要ack答复来确认报文数据发送成功,对于重要报文采用ack来确认报文数据发送成功,提升了数据报文发送效率,解决现有spi通信在传输方向、通讯的灵活性受到限制的问题。
166.以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献