发明内容
有鉴于此,本发明提供一种编码器内数据采样和存储方法、单片机及存储介质,至少部分解决现有技术中存在的问题。
根据本申请的一个方面,提供一种编码器内数据采样和存储方法,应用于单片机,所述单片机包括:中央处理器、DMA模块;单片机与目标传感器和上位机通信连接;
所述方法包括:
步骤S100,中央处理器循环执行第一指令集集合;所述第一指令集集合包括第一子集合和第二子集合,所述第一子集合和所述第二子集合顺序执行;所述第一子集合被执行时,所述中央处理器逐次对目标传感器的输出端输出的第一数据进行采样,并将采样得到的所述第一数据存储至第一寄存器;所述第二子集合被执行时,根据所述第一指令集集合的当前执行次数,确定第一目标寄存器,以及将所述第一寄存器内的第一数据发送至第一目标寄存器并清空所述第一寄存器;所述第一目标寄存器为第二寄存器和第三寄存器其中之一;
步骤S200,响应于接收到所述上位机发送的数据获取请求,根据所述第一指令集集合的当前执行次数,确定第二目标寄存器;所述第二目标寄存器为第二寄存器和第三寄存器其中之一,且区别于所述第一目标寄存器;
步骤S300,将所述第二目标寄存器的地址指针发送至DMA模块,以使所述DMA模块对所述第二目标寄存器中的第一数据进行读取,并将读取的第一数据发送至所述上位机。
在本申请的一种示例性实施例中,所述上位机根据设定帧间隔向所述单片机发送数据获取请求;所述目标传感器以设定周期对所述第一数据进行输出;所述设定帧间隔对应的时长<所述设定周期对应的时长<所述第一指令集集合对应的执行时长。
在本申请的一种示例性实施例中,所述设定周期大于100微秒。
在本申请的一种示例性实施例中,所述设定帧间隔为60微秒。
在本申请的一种示例性实施例中,所述第一子集合的执行时长根据所述设定周期进行设置。
在本申请的一种示例性实施例中,所述将所述第一寄存器内的第一数据发送至第一目标寄存器,包括:
对所述第一寄存器内的第一数据进行处理,并将处理后的所述第一数据发送至第一目标寄存器;
所述对所述第一寄存器内的第一数据进行处理,包括:
对所述第一数据进行CRC校验以及对所述第一数据进行倒序处理。
在本申请的一种示例性实施例中,所述单片机还包括CRC硬件模块;
所述对所述第一数据进行CRC校验,包括:
将所述第一数据发送至所述CRC硬件模块,以使所述CRC硬件模块对所述第一数据进行CRC校验;
接收所述CRC硬件模块发送的校验结果。
在本申请的一种示例性实施例中,所述对所述第一数据进行倒序处理,包括:
将所述第一数据和校验参数发送至CRC硬件模块;
接收所述CRC硬件模块发送的处理后数据;
其中,所述CRC硬件模块以所述校验参数执行CRC校验时,所述CRC校验使用的生成多项式为1、校验初始值为0、结果异或值为0、数据输出顺序为倒序。
根据本申请的一个方面,提供一种单片机,包括:中央处理器、定时器、CRC硬件模块、DMA模块和存储器;
所述存储器与所述中央处理器连接,所述存储器存储有可被所述中央处理器执行的指令,所述指令被设置为用于执行前述任一项所述的方法。
根据本申请的一个方面,提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行前述任一项所述的方法。
中央处理器在每次对目标传感器进行采样后,会先将采样得到的第一数据储存至第一寄存器(即第一子集合的执行)。在对目标传感器完成一个周期的采样后(即第一子集合执行完成),会分次对第一寄存器中的第一数据进行读取,并将第一数据存储至第一目标寄存器(第二寄存器和第三寄存器其中之一)。本申请中,在每轮次第一指令集集合的执行过程中,对应的第一目标寄存器是随着轮次的增加而在第一寄存器和第二寄存器之间进行切换的。故而,第二目标寄存器,实际为第一指令集集合在上一轮次执行时最终储存第一数据的寄存器,其内存储的也是上一轮次采样得到的完整的第一数据,故而,DMA模块向上位机上传的始终为完整的第一数据。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合;并且,基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本公开,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
请参考图1所示,根据本申请的一个方面,提供一种编码器内数据采样和存储方法,应用于单片机,所述单片机包括:中央处理器、定时器、DMA模块;单片机与目标传感器和上位机通信连接;其中,定时器被配置为,每隔第一设定时长向中央处理发送一次触发信号,触发信号可以为中断指令。目标传感器可以为位置传感器。
所述方法包括以下步骤:
步骤S100,中央处理器循环执行第一指令集集合。
所述第一指令集集合包括第一子集合和第二子集合,所述第一子集合和所述第二子集合顺序执行;所述第一子集合被执行时,所述中央处理器逐次对目标传感器的输出端输出的第一数据进行采样,并将采样得到的所述第一数据存储至第一寄存器;所述第二子集合被执行时,根据所述第一指令集集合的当前执行次数,确定第一目标寄存器,以及将所述第一寄存器内的第一数据发送至第一目标寄存器并清空所述第一寄存器;所述第一目标寄存器为第二寄存器和第三寄存器其中之一。第一子集合和第二子集合中均包含若干第一指令集,且每一第一指令集中,均包含若干条汇编指令。即第一指令集集合整体由若干第一指令集组成。具体的,若第一指令集集合的当前执行次数为单数,则第一目标寄存器为第二寄存器,若为双数,则第一目标寄存器为第三寄存器。进一步的,第二子集合被执行时,将所述第一寄存器内的第一数据发送至第一目标寄存器并清空所述第一寄存器,可以包括:中央处理器将所述第一寄存器内的第一数据进行处理后并发送至第一目标寄存器,以及在完成所有第一数据的发送后清空所述第一寄存器。
步骤S200,响应于接收到所述上位机发送的数据获取请求,根据所述第一指令集集合的当前执行次数,确定第二目标寄存器。
其中,所述第二目标寄存器为第二寄存器和第三寄存器其中之一,且区别于所述第一目标寄存器。即,若当前第一指令集集合的执行轮次中,第二子集合应将每次采样得到的第一数据存储至第二寄存机,则第一目标寄存器为第二寄存器,第二目标寄存器为第三寄存器。
步骤S300,将所述第二目标寄存器的地址指针发送至DMA模块,以使所述DMA模块对所述第二目标寄存器中的第一数据进行读取,并将读取的第一数据发送至所述上位机。DMA模块能够与中央处理器并行工作。
本实施例中,中央处理器在每次对目标传感器进行采样后,会先将采样得到的第一数据储存至第一寄存器(即第一子集合的执行)。在对目标传感器完成一个周期的采样后(即第一子集合执行完成),会分次对第一寄存器中的第一数据进行读取和处理,并将处理后的第一数据存储至第一目标寄存器(第二寄存器和第三寄存器其中之一)。不论在第一子集合还是第二子集合的执行过程中,若直接对第一寄存器或第一目标寄存器进行读取,读取的第一数据都是不完整的,故而,在接收到数据获取请求时,会将区别于第一目标寄存器的第二目标寄存器的地址指针发送至DMA模块,以使DMA模块将第二目标寄存器中的第一数据上传至上位机。由前述内容可知,在每轮次第一指令集集合的执行过程中,对应的第一目标寄存器是随着轮次的增加而在第一寄存器和第二寄存器之间进行切换的。故而,第二目标寄存器,实际为第一指令集集合在上一轮次执行时最终储存处理后的第一数据的寄存器,其内存储的也是上一轮次采样得到的完整的处理后的第一数据,故而,DMA模块向上位机上传的始终为完整的处理后的第一数据。
在本申请的一种示例性实施例中,所述上位机根据设定帧间隔向所述单片机发送数据获取请求,设定帧间隔根据上位机和单片机之间的通信协议(即第一通信协议)进行设定。所述目标传感器以设定周期对所述第一数据进行输出。
所述设定帧间隔对应的时长<所述设定周期对应的时长<所述第一指令集集合对应的执行时长。本实施例中,设定周期大于100微秒。设定帧间隔为60微秒。所述第一子集合的执行时长根据所述设定周期进行设置,以保证能够对目标传感器器进行完整周期的逐次采样。
由于第一指令集集合的执行既包括了采样任务也包括了处理任务,故而其对应的执行时长会大于设定周期对应的时长。而由于所述第一指令集集合对应的执行时长大于设定帧间隔对应的时长,故而,在第一指令集集合执行的整个周期内,可能会接收到多余一次的数据获取请求,此时在同一个周期内,第二次或跟多次获取到数据获取请求时,依然将第一次获取到数据获取请求时对应的第二目标寄存器的地址指针发送至DMA模块。此时,上位机会接收到两次相同的第一数据,以防止上位机由于未接收到单片机的反馈数据而进行报错。故而上位机会被配置成,若接收到相同的第一数据,则忽略后接收到的第一数据。需要说明的是,第一指令集集合执行过程中采样得到的第一数据都有对应的时间戳,故而,在上位机获取到和上次相同的第一数据并忽略时,只要后期还能获取到具有正确时间戳的第一数据,即可保证上位机接收到的第一数据是完整且符合实时性和时序性要求的。
在本申请的一种示例性实施例中,当所述第一指令集集合被执行时,所述中央处理器还会对采样得到的所述第一数据进行处理。即第二子集合被执行时,中央处理器将所述第一寄存器内的第一数据进行处理后并发送至第一目标寄存器,以及在完成所有第一数据的发送后清空所述第一寄存器。
相应的,所述对第一寄存器内的所述第一数据进行处理,包括:
对所述第一数据进行CRC校验以及对所述第一数据进行倒序处理。
编码器在对目标传感器输出的数据进行采样后,会对数据进行相应的处理,以保证采样得到的数据的正确性,以及方便进行对数据后续处理等。本实施例中,在获得第一数据后,会对第一数据进行CRC校验以保证数据的正确定,并在CRC校验结果为正确后,对第一数据进行倒序处理,以方便后续进行数据传输等工作。
具体的,所述单片机还包括CRC硬件模块;
所述对所述第一数据进行CRC校验,包括:
将所述第一数据发送至所述CRC硬件模块,以使所述CRC硬件模块对所述第一数据进行CRC校验;
接收所述CRC硬件模块发送的校验结果。
CRC校验若采用函数或程序指示中央处理器进行计算的话,会占用中央处理器的大量资源。但从前文中可知,由于本实施例中使用的单片机,其只有一个中央处理器且算力有限,若通过函数或程序指示中央处理器实现CRC校验,会导致其对目标传感器的采样工作受到影响,且处理耗时也更长。本实施例中,单片机内自带CRC硬件模块而需要对第一数据进行CRC校验时,只需将第一数据发送至CRC硬件模块,即可快速得到校验结果,避免了对中央处理器资源的过分占用,且由于CRC硬件模块中具有专用的处理电路使得处理效率更高。
在本申请的一种示例性实施例中,所述对所述第一数据进行倒序处理,包括:
将所述第一数据和校验参数发送至CRC硬件模块;
接收所述CRC硬件模块发送的处理后数据;
其中,所述CRC硬件模块以所述校验参数执行CRC校验时,所述CRC校验使用的生成多项式为1、校验初始值为0、结果异或值为0、数据输出顺序为倒序。
其中,倒序处理指对数据的排列方式由高位优先改为低位优先,或反之。例如,对字符串“123456”进行倒序处理后的结果为“654321”。
在一般单片机内,大多采用函数或程序的方式指示中央处理器对相关数据进行倒序处理。但这样会占用中央处理器的大量算力。本实施例中提供了一种通过CRC硬件模块实现数据倒序的方法,一方面实现了对CRC硬件模块的应用扩展,另一方面也避免了对中央处理器资源的大量占用。
具体的,本实施例通过向CRC硬件模块发送校验参数,使得CRC硬件模块根据校验参数进行CRC校验时,输入数据和得到的计算结果相同,并调整CRC硬件模块向外输出数据时采用倒序输出。使得中央处理器将第一数据和校验参数发送至CRC硬件模块后,得到的处理后数据为倒序处理后的第一数据。如此,实现了倒序处理的硬件化高速处理,且不用在单片机内设置单独的倒序处理硬件模块。
在本申请的一种示例性实施例中,所述单片机的型号为stm32L431,其自带的CRC硬件模块支持自定义参数模型。参数模型指CRC硬件模块在进行CRC校验时采用的相关参数。其可以包括数据宽度、生成多项式、校验初始值和结果异或值等。CRC硬件模块中大多自带多种标准参数模型供使用者选择,而自定义参数模型指,使用者可以自行设置参数模型中的各个参数,以得到一个个性化的参数模型。在参数模型中,若各参数为生成多项式为1、校验初始值为0、结果异或值为0,则CRC校验的输入数据和校验结果相同。
在步骤S100之前,所述方法还包括:
向所述CRC硬件模块发送配置指令,以使所述CRC硬件模块能够根据所述配置指令将所述自定义参数模型配置为目标模型,并为所述目标模型分配执行标识。
所述校验参数包含所述执行标识。
相应的,所述CRC硬件模块根据所述校验参数对所述待处理信息进行CRC校验,包括:
根据所述执行标识确定目标模型;
根据所述目标模型对所述待处理信息进行CRC校验。
本实施例中,在第一指令集集合运行之前可以先对CRC硬件模块进行配置,使得其中配置出目标模型,并在需要使用时,只需将对应的执行标识一起发送至CRC硬件模块,CRC硬件模块就会使用目标模型对第一数据进行计算。如此,使得每次需要对数据进行倒序处理时,向CRC硬件模块发送的数据总体量减小,而不需要每次倒序处理时都临时对CRC硬件模块进行配置。
具体的,由于第一指令集集合是被拆分成多个第一指令集逐个进行执行的,故而本实施例中,在对第一数据进行倒序处理时,也会对第一数据进行拆分,从而得到多个8位二进制数。每次倒序处理即可是作为对一个8位二进制数进行倒序处理。
编码器在运行过程中,需要对位置传感器、温度传感器等传感器的输出数据进行采样。单片机由于只有单个中央处理故而并不具备并行处理的能力。若采用串行的方式对多个传感器进行采样,还会存在每一传感器由于执行优先级不同和数据采样周期长短不一,导致高优先级且采样周期长的采样任务对低优先级的采样任务造成采样任务执行间隔过长的问题。
故而,在本申请的一种示例性实施例中,所述步骤S100具体可以包括以下步骤:
步骤S110,央处理器响应于触发信号的接收,确定已接收触发信号的数量。其中,所述触发信号为所述定时器每隔第一设定时长发送一次。其中,中央处理器可以设置一个寄存器用于记录本次工作中已接收到的触发信号的数量,并在每接收到一次新的触发信号后,对该寄存器内的数量进行+1。所述第一设定时长为1微秒-3微秒,优选的,第一设定时长为2微秒。
步骤S120,中央处理器执行第一指令集集合中,与已接收触发信号的数量对应的第一指令集。
所述第一指令集集合包括多个第一指令集,每一第一指令集中均包含若干条汇编指令,每一第一指令集的执行时长小于所述第一设定时长;当所述第一指令集集合被执行时,所述中央处理器对目标传感器的输出端输出的第一数据进行采样。优选的,每一所述第一指令集的执行时长均小于第三设定时长,所述第三设定时长小于所述第一设定时长。其中第三设定时长为0.1-0.3微秒,优选的,第三设定时长为0.3微秒。
其中,第一指令集集合中的每一第一指令集在被执行时,中央处理器对目标传感器进行一次采样工作,第一指令集集合完成一次完整的执行为对目标传感器进行一个周期的采样,第一指令集集合中,第一指令集的数量可以根据目标传感器的输出周期(设定周期)进行设置。每一第一指令集的执行时长受第一指令集内汇编指令的数量影响,汇编指令的数量越多,执行时间越长。
步骤S130,中央处理器在当前的第一指令集执行完成,且未接收到下一个触发信号的情况下,执行第二指令集。
其中,所述第二指令集的执行优先级低于所述第一指令集,所述第二指令集中包含若干条汇编指令。
由于每一第一指令集对应的执行时长小于第一时长,所以会出现中央处理器在第一指令集执行完成时未接收到下一个触发信号的情况,此时,若没有其他的执行任务,中央处理器会处于空闲状态。本实施例中,在上述情况下,中央处理器会对执行优先级耕地的第二指令集进行执行,以实现在高执行优先级的任务的执行过程中,利用空闲时间对低执行优先级的任务进行执行,从而实现不同执行优先级的任务的并行执行。
其中,第二指令集可以为多个,多个第二指令集具有自身的执行优先级,且第一指令集集合和多个第二指令集各自的执行优先级可以通过执行优先级列表进行保存,中央处理器在当前第一指令集执行完成且未收到下一个触发信号的情况下,通过查询执行优先级列表确定对应的第二指令集。第二指令集的可以对应不同的任务,例如对温度传感器的采样或进行数据处理等。本实施例中,第一指令集集合为循环执行,且在中央处理器的任务中执行优先级最高。如此,能够适应在编码器运行过程中,始终保持对位置传感器周期性的进行采样。
本实施例提供的编码器内数据采样和存储方法,在执行时,中央处理器能够响应于触发信号的接收开始执行第一指令集集合中对应的第一指令集。并在执行完当前第一指令集后,且未接收到下一个触发信号的情况下,对第二指令集进行执行。本实施例中,第一指令集集合完整执行一次是完成一次对目标传感器的采样,而第一指令集集合被拆分成了多个第一指令集,并每接收到一个触发信号会执行其中一个第一指令集,使得对目标传感器的采样任务拆分成了多段。同时,每次在接收到下一个触发信号前,会对执行优先级更低的第二指令集进行执行。如此,实现了低执行优先级的任务穿插在了高执行优先级任务的执行过程中,从而实现通过单片机对不同执行优先级的任务的并行运行,避免了由于高优先级任务执行周期较长导致低优先级任务无法及时执行的问题。
在本申请的一种示例性实施例中,所述方法还包括:
若中央处理器在所述第二指令集的执行过程中接收到所述触发信号,暂停所述第二指令集的执行,并返回执行步骤S110。
相应的所述中央处理器在当前的第一指令集执行完成,且未接收到下一个触发信号的情况下,执行第二指令集,具体可以包括以下步骤:
中央处理器在当前的第一指令集执行完成,且未接收到下一个触发信号的情况下,确定是否存在被暂停执行第二指令集;
若存在,则对暂停执行第二指令集恢复执行。
否则,执行第三指令集;所述第三指令集的执行优先级低于所述第一指令集,所述第三指令集中包含若干条汇编指令。其中,第三指令集的命名是为了在表述中区别于第二指令集,以方便理解。故而,第三指令集也可以理解为其他的第二指令集。故而,执行第三指令集也可以理解为,在当前不存在被暂停执行的第二指令集的情况下,执行第二指令集。
以及,若中央处理器在第二指令集的执行过程中接收到所述上位机发送的数据获取请求,则暂停所述数据获取请求,并对所述数据获取请求进行响应;在对所述数据获取请求进行响应完成后,恢复执行第二指令集。
中央处理器在当前第二指令集执行完成且未接收到下一个触发信号的情况下,会继续确定新的第二指令集进行执行。由于每一第二指令集对应的采样任务不同,故而,不同第二指令集之间的执行时长也会存在差异。故而会发生在某一第二指令集还未执行完成时(即执行过程中),就接收到下一个触发信号。由于编码器在对位置传感器的采样需要按照设定好的周期(设定周期)和时间点进行采样,且实时性和时序性均要求较高,此时若不停止对当前的第二指令集的执行,则会导致本该执行的第一指令集延后执行,这就会导致至少本次的第一指令集的采样任务执行延后,从而影响对位置传感器的采样任务出现误差。本实施例中为尽可能避免这一问题,若中央处理器在所述第二指令集的执行过程中接收到所述触发信号,暂停所述第二指令集的执行,并返回执行步骤S100,即立刻对对应的第一指令集进行执行,以保证对位置传感器的采样任务的实时性和时序性。
相应的,中央处理器在每次当前第一指令集执行完成后,会优先查询当前是否存在被暂停执行的第二指令集,若存在,则恢复执行,否则可以根据执行优先级列表确定对应的第二指令集进行执行。如此,能够避免第二指令集被打断执行后无法顺利恢复执行的情况发生。
编码器在工作过程中,不仅需要对位置传感器的输出数据进行采样,也需要以固定的帧间隔将采样得到的数据上传至上位机,以使上位机能够对编码器所对应的电机的工作情况进行显示。如此,就需要保证采样任务和数据上传任务的实时性。但是,由于采样任务需要一定的执行时间,且在高速采样和通信的场景下,通常这个执行时间会大于数据上传的帧间隔。通常的编码器采用FPGA芯片对采样任务和通信进行并行处理。但FPGA芯片的成本较高,而若使用单片机的话,由于单片机只用一个中央处理器,故而采样任务和通信需要串行处理,但由于两个任务对实时性和时序性均要求较高,若在采样任务的执行过程中接收到上位机的数据获取请求,则需要等到采样任务执行完成后再执行或打断采样任务,这样就会使得采样任务或通信产生较大的延时,导致两个任务中至少有一个任务无法正常执行,故而串行处理无法适用于高速采样和通信的场景。
在本申请的一种示例性实施例中,所述方法还包括:
若中央处理器在当前的第一指令集的执行过程中接收到所述上位机发送的数据获取请求,则挂起所述数据获取请求,并在所述第一指令集执行完成后,对所述数据获取请求进行响应;所述数据获取请求的执行优先级与所述第一指令集的执行优先级相同,执行优先级相同的任务相互之间不会打断。
以及,若中央处理器在第二指令集的执行过程中接收到所述上位机发送的数据获取请求,则暂停所述数据获取请求,并对所述数据获取请求进行响应;在对所述数据获取请求进行响应完成后,恢复执行第二指令集。
其中,所述对所述数据获取请求进行响应,具体包括:
确定目标寄存器;
将所述目标寄存器的地址指针发送至DMA模块,以使所述DMA模块对所述目标寄存器中的第一数据进行读取,并将读取的第一数据发送至所述上位机。
其中,DMA模块能够与中央处理器并行工作,目标寄存器用于存储中央处理器从目标传感器采样到的第一数据(或处理后的第一数据)。即中央处理器会将采样得到的第一数据储存至目标寄存器。
本实施例中,第一指令集集合被拆分成了多个第一指令集,且多个第一指令集逐个间隔进行执行。若在相邻的第一指令集的执行间隔中接收到数据获取请求,即可立刻对数据获取请求进行响应;若在第一指令集的执行过程中接收到数据获取请求,则在第一指令集执行完成后对数据获取请求进行响应。如此,无论是在什么情况下接收到数据获取请求,都能实现快速的响应,既不用打断采样任务的执行,也不用等到采样任务(即第一指令集集合)整体执行完成后才进行响应。
同时,响应数据获取请求的方法为控制DMA模块对目标寄存器进行读取并发送至上位机。由于DMA模块能够与中央处理器并行工作,故而,中央处理器在对数据获取请求进行响应时,只需要将目标寄存器的地址指针发送至DMA模块即可控制DMA模块独立进行第一数据的发送工作,这个响应过程的耗时很短,且第一数据的发送不过不会占用中央处理器的资源,使得中央处理器在响应数据获取请求后可以快速回到对后续的第一指令集的处理。
如此,本实施例提供的方法,可以实现采样任务和通信的并行运行,且均可以实现高速运行和及时响应,同时保证两个任务的实时性和时序性。
为了保证若在第一指令集的执行过程中接收到数据获取请求的情况下,能够更为快速及时的对数据获取请求进行响应。
在本实施例的一种示例性实施例中,所述单片机与所述上位机之间通过第一通信协议进行通信,所述第一通信协议的通信延时误差为第二设定时长t2;所述第一指令集集合中的每一第一指令集对应的执行时长均小于第三设定时长t3;所述对所述数据获取请求进行响应对应的执行时长为第四设定时长t4;其中,t3=f(t2,t4)。本实施例中,串口的波特率为2.5MHz。
其中,通信延时误差指,若t2=0.5-1.5微秒,则表示上位机在发出数据获取请求后,需要再0.5微秒-1.5微秒内接收到返回的第一数据。故而本实施例中,由于t2是根据第一通信协议规定的,且t4的处理过程固定,故而t2和t4的具体数值相对固定,本实施例中为了保证单片机能够在允许的通信延时误差内完成对数据获取请求的响应,故而需要根据t2和t4确定出t3的最大允许值,故而本实施例中,t3=f(t2,t4)可以为,t3=t2-t4或t3≤t2-t4,如此能够使得即使在第一指令集的执行过程中接收到数据获取请求的情况下,也能够在通信延时误差允许的时间范围内对数据获取请求完成响应。本实施例中,t3=0.3微秒。
相应的,为了保证每一第一指令集的执行时间均小于等于第三设定时长,在本申请的一种示例性实施例中,所述第一指令集中汇编指令的最大数量n根据t3确定。进一步的,由于本实施例中,t3=0.3微秒,故而本实施例中,n=3。即每一第一指令集中可以存放1-3条汇编指令。
本实施例中,目标传感器的输出周期为一个设定周期,具体为100微秒,故而本实施例中,第一指令集集合的执行时长大于等于100微秒,其中,执行时长指第一指令集的第一个第一指令集开始执行的时间到最后一个第一指令集执行完成的时间之间的时间差,即该执行时长中包含了在第一指令集集合执行过程中,第二指令集及其他指令的执行时间,为一个完整的时间段。
根据本申请的一个方面,提供一种单片机,包括:中央处理器、定时器、CRC硬件模块、DMA模块和存储器;
所述存储器与所述中央处理器连接,所述存储器存储有可被所述中央处理器执行的指令,所述指令被设置为用于执行前述任一项所述的方法。
根据本申请的一个方面,提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行前述任一项所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。