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

双芯片的串行通信方法和具有双芯片的系统与流程

2022-03-02 01:38:18 来源:中国专利 TAG:


1.本技术涉及串行通信的领域,尤其是涉及一种双芯片的串行通信方法和具有双芯片的系统。


背景技术:

2.随着变频器电气设计的完善和用户功能的增加,越来越多的变频器采用双芯片方案,以通过不同的芯片分别负责变频器的逻辑控制和驱动控制。
3.双芯片方案必然涉及到芯片之间的通信问题,尤其在变频器中一些数据需要从其中一个芯片实时地反馈给另一个芯片,这就对数据交互的速度提出了高的要求。相关技术中提出了一种变频器双控制芯片系统的数据传输方法,在该方案中,主cpu和从cpu之间每包数据传输8个字节,其中6个字节为固定的数据内容,因此,该方案仅能够实现固定数个字节的数据内容的高速传输。然而,在变频器场景或者类似的场景下,双芯片之间需要在短时间内完成交互的数据可能有上百字节,采用上述的方案无法实现上百字节的数据的实时通信。对于双芯片之间如何实现大量数据的高速通信尚未提出有效的解决方案。


技术实现要素:

4.本技术提供一种双芯片的串行通信方法和具有双芯片的系统,以解决双芯片之间无法实现大量数据的高速通信的问题。
5.第一方面,本技术实施例提供了一种双芯片的串行通信方法,包括:步骤1,第一芯片获取第一数据、第二数据中在当前周期内未被成功发送给第二芯片的至少一组子数据以及所述子数据的组号,其中,所述第一芯片的内存区域包括第一内存区域和第二内存区域,第一内存区域用于存放所述第一数据,所述第二内存区域用于存放所述第二数据,所述第二数据包括多组子数据,每一组子数据具有一个组号;步骤2,所述第一芯片将所述第一数据、所述子数据以及所述子数据的组号携带在一帧串行数据帧中发送给所述第二芯片;步骤3,在当前周期内还有未被成功发送给所述第二芯片的所述子数据的情况下,跳转至步骤1,否则结束当前周期的串行数据帧的发送。
6.在其中的一些实施例中,在所述步骤2之后,所述方法还包括:所述第一芯片接收所述第二芯片的响应信息,并根据所述响应信息判断所述子数据是否成功发送给所述第二芯片。
7.在其中的一些实施例中,所述第二芯片的响应信息中携带有所述第二芯片成功接收到的最后至少一组子数据的组号。
8.在其中的一些实施例中,所述第一数据和所述第二数据均具有固定的变量名,在所述第一芯片发送给所述第二芯片的串行数据帧中不携带所述第一数据和所述第二数据的内存地址。
9.在其中的一些实施例中,所述方法还包括:
所述第一芯片判断所述第二内存区域内存放的目标子数据是否存在变更,其中,所述目标子数据包括所述组号满足预设条件的一组或者多组子数据;在所述目标子数据存在变更的情况下,所述第一芯片中断将要发送的下一个串行数据帧,并将所述第一数据、所述目标子数据以及所述目标子数据的组号携带在下一个串行数据帧中发送给所述第二芯片。
10.在其中的一些实施例中,在所述目标子数据存在变更的情况下,所述第一芯片中断将要发送的下一个串行数据帧,并将所述第一数据、所述目标子数据以及所述目标子数据的组号携带在下一个串行数据帧中发送给所述第二芯片包括:在所述目标子数据存在变更且当前周期的持续时长未超出预设时长的情况下,所述第一芯片中断将要发送的下一个串行数据帧,并将所述第一数据、所述目标子数据以及所述目标子数据的组号携带在下一个串行数据帧中发送给所述第二芯片。
11.在其中的一些实施例中,在所述目标子数据未存在变更,或者当前周期的持续时长超出预设时长的情况下,所述第一芯片继续进行将要发送的下一个串行数据帧的发送。
12.在其中的一些实施例中,每个串行数据帧的帧长相等且留有裕量,所述裕量基于允许打断所述第一芯片与所述第二芯片之间的通信的事件的最长打断时间确定。
13.在其中的一些实施例中,串行通信采用115200波特率,每个串行数据帧包括14个16位数据,每个串行数据帧的长度为3.3ms至4ms,其中,所述裕量为0.5ms至1.2ms。
14.第二方面,本技术实施例提供了一种具有双芯片的系统,包括两个芯片和连接两个所述芯片的串行通信电路,其中,两个所述芯片的非易失性存储器中存储有计算机程序,所述计算机程序被芯片的处理器运行时执行上述第一方面所述的双芯片的串行通信方法的步骤。
15.综上所述,本技术实施例提供的双芯片的串行通信方法和具有双芯片的系统,采用第一芯片获取第一数据、第二数据中在当前周期内未被成功发送给第二芯片的至少一组子数据以及子数据的组号;第一芯片将第一数据、子数据以及子数据的组号携带在一帧串行数据帧中发送给第二芯片;在当前周期内还有未被成功发送给第二芯片的子数据的情况下,进行下一个串行数据帧的发送,直至当前周期内所有子数据都发送完毕的方式,实现了双芯片之间大量数据的高速通信。
附图说明
16.图1是本实施例提供的具有双芯片的系统的结构示意图。
17.图2是本技术实施例提供的双芯片的串行通信方法的流程图。
具体实施方式
18.为更清楚地理解本技术的目的、技术方案和优点,下面结合附图和实施例,对本技术进行了描述和说明。
19.为更清楚地理解本技术的目的、技术方案和优点,下面结合附图和实施例,对本技术进行了描述和说明。然而,本领域的普通技术人员应该明白,可以在没有这些细节的情况下实施本技术。在一些情形下,为了避免不必要的描述使本技术的各方面变得晦涩难懂,对已经在较高的层次上描述了众所周知的方法、过程、系统、组件和/或电路将不作过多赘述。
对于本领域的普通技术人员来说,显然可以对本技术所公开的实施例作出各种改变,并且在不偏离本技术的原则和范围的情况下,本技术中所定义的普遍原则可以适用于其他实施例和应用场景。因此,本技术不限于所示的实施例,而是符合与本技术所要求保护的范围一致的最广泛范围。
20.除另作定义外,本技术所涉及的技术术语或者科学术语应具有本技术所属技术领域具备一般技能的人所理解的一般含义。本技术所使用的术语仅出于描述特定实施例的目的,而不旨在于对本技术的限制。如本技术所使用的“一”、“一个”、“一种”、“该”、“这些”等类似的词并不表示数量上的限制,它们可以是单数或者复数。在本技术中所涉及的术语“包括”、“包含”、“具有”及其任何变体,其目的是涵盖不排他的包含;例如,包含一系列步骤或模块(单元)的过程、方法和系统、产品或设备并未限定于列出的步骤或模块(单元),而可包括未列出的步骤或模块(单元),或者可包括这些过程、方法、产品或设备固有的其他步骤或模块(单元)。
21.在本技术中所涉及的“多个”是指两个或两个以上。通常情况下,字符“/”表示前后关联的对象是一种“或”的关系。在本技术中所涉及的术语“第一”、“第二”、“第三”等,只是对相似对象进行区分,并不代表针对对象的特定排序。
22.本技术所涉及的术语“系统”、“引擎”、“单元”、“模块”和/或“块”是一种用于按级别区分不同级别的不同组件、元件、零件、部件、装配件、或功能的一种方法。这些术语可以被其他能够达到相同目的的表达替换。通常,本技术涉及的“模块”、“单元”或“块”是指硬件或者固件中体现的逻辑或软件指令的集合。本技术描述的“模块”、“单元”或“块”可以作为软件和/或硬件实现,并且在作为软件实现的情形下,他们可以被存储在任何类型的非易失性计算机可读存储介质或存储设备中。
23.在一些实施例中,软件模块/单元/块可以被编译并被链接到可执行程序中。将意识到,软件模块可以是可从其他模块/单元/块或从其自身调用的,和/或可以响应于检测到的事件或中断而被调用。配置为在计算设备上执行的软件模块/单元/块可以设置在计算机可读存储介质上,例如光盘、数字视频盘、闪存驱动器、磁盘、或任何其他有形媒体,或作为数字下载(并且可以最初以压缩或可安装的格式存储,该格式需要在执行之前进行安装、解压或解密)。这样的软件代码可以部分地或全部地存储在正在执行的计算设备的存储设备上,并应用在计算设备的操作之中。软件指令可以被嵌入到固件,例如eprom中。还将意识到,硬件模块/单元/块可以被包括在连接的逻辑组件中,例如门和触发器,和/或可以被包括在可编程单元中,例如可编程门阵列或处理器。本文描述的模块/单元/块或计算设备功能可以被实现为软件模块/单元/块,还可以以硬件或固件来表示。通常,本文描述的模块/单元/块,它们可以与其他模块/单元/块组合,或者尽管它们是物理组织或存储的,但也可以被划分为子模块/子单元/子块。该描述可以适用于系统、引擎或其一部分。
24.将理解的是,当单元、引擎、模块或块被称为在另一单元、引擎、模块或块“上”、“连接”或“耦合至”另一单元、引擎、模块或块时,其可以直接在其它单元、引擎、模块或块上,与其连接或耦合或与之通信,或者可以存在中间单元、引擎、模块或块,除非上下文另有明确说明。在本技术中,术语“和/或”可包括任何一个或以上相关所列条目或其组合。
25.本实施例提供了一种具有双芯片的系统,图1是本实施例提供的具有双芯片的系统的结构示意图,如图1所示,该系统包括两个芯片(分别称为第一芯片10和第二芯片20)和
连接两个芯片的串行通信电路30。串行通信电路又称为串口通信电路。串行通信电路相对于控制器域网(controller area network,简称为can)通信电路降低了成本;相对串行外设接口(serial peripheral interface,简称为spi)通信电路而言,实现方式简单,抗干扰能力强,能够适应芯片附近复杂的电磁环境。
26.参见图1,上述的芯片是指包括非易失性存储器、内存和处理器的控制器,该控制器包括但不限于微控制单元(microcontroller unit,简称为mcu)、arm、数字信号处理器(digital signal processor,简称为dsp)或可编程逻辑器件。其中,第一芯片10包括第一非易失性存储器11、第一处理器12和第一内存13,第二芯片20包括第二非易失性存储器21、第二处理器22和第二内存23。
27.其中,非易失性存储器可以包括用于数据或指令的大容量存储器。举例来说而非限制,非易失性存储器可包括硬盘驱动器(hard disk drive,简称为hdd)、软盘驱动器、固态驱动器(solid state drive,简称为ssd)、闪存、光盘、磁光盘、磁带或通用串行总线(universal serial bus,简称为usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,非易失性存储器可包括可移除或不可移除(或固定)的介质。在特定实施例中,非易失性存储器包括只读存储器(read-only memory,简称为rom)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(programmable read-only memory,简称为prom)、可擦除prom(erasable programmable read-only memory,简称为eprom)、电可擦除prom(electrically erasable programmable read-only memory,简称为eeprom)、电可改写rom(electrically alterable read-only memory,简称为earom)或闪存(flash)或者两个或更多个以上这些的组合。非易失性存储器可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器所执行的可能的程序指令。
28.上述的内存可以是随机存储器(random access memory,简称为ram)或高速缓冲存储器(cache)。
29.上述的处理器可以由一个或多个处理器组成,可以包括中央处理器(cpu),或者特定集成电路(application specific integrated circuit,简称为asic),或者可以被配置成实施本技术实施例的一个或多个集成电路。
30.本实施例提供的系统中,第一芯片10和第二芯片20的非易失性存储器中存储有计算机程序,该计算机程序被芯片的处理器运行时执行本实施例提供的双芯片的串行通信方法。
31.以第一芯片10的非易失性存储器中存储有上述的计算机程序为例而非限制,继续参考图1,该计算机程序111可以包括执行指令和数据库,其中,数据库中可以存储有配置信息。
32.本实施例中,待传输的数据被分为两类,这两类数据的相关信息被写入到上述的数据库中。作为示例地,表1示出了一种配置信息的示例。在该配置信息中,待传输的数据被分为高优先级的第一数据和低优先级的第二数据,第一数据和第二数据均具有固定的变量名,配置信息中存储有各个数据的变量名。另外,对于低优先级的第二数据,被划分为数个组别,每个组别具有组号,每组数据在本实施例中被称为第二数据的一个子数据。
33.表1 配置信息的示例
在系统执行上述的双芯片的串行通信方法时,系统将根据上述的配置信息进行初始化,包括在内存中申请用于存放上述变量的内存区域。一旦初始化完成,每个变量对应的内存地址即被确定。其中,初始化过程中将会确定第一内存区域和第二内存区域,其中,第一内存区域用于存放第一数据,第二内存区域用于存放第二数据。每当第一数据和第二数据存在任何更新,将会更新对应的内存地址所存放的数据内容。
34.通过为每个第一数据和第二数据都设置固定的变量名并配置在配置信息中,在进行数据传输时按照变量顺序传输。对于第一数据而言,可以根据该第一数据的传输顺序确定该第一数据对应的变量名。对于第二数据而言,每个子数据中的各个数据也按照变量顺序传输,在已知组号时,也可以根据第二数据的组号及其传输顺序确定该第二数据对应的变量名。由此可见,在传输第一数据和第二数据时,均不需要传输各变量的内存地址,从而节约传输资源,提高数据传输效率。
35.需要说明的是,第二芯片20的非易失性存储器中也存储有与第一芯片10中相同的配置信息,以使得第二芯片20在接收到第一芯片10发送的串行数据帧时,能够正确解析出每个数据的变量名。
36.执行指令被第一芯片10的处理器12运行时执行本实施例提供的双芯片的串行通信方法。图2是本技术实施例提供的双芯片的串行通信方法的流程图,如图2所示,该流程包括如下步骤:步骤s201,第一芯片获取第一数据、第二数据中在当前周期内未被成功发送给第二芯片的至少一组子数据以及子数据的组号。
37.其中,第一芯片的内存区域包括第一内存区域和第二内存区域,第一内存区域用于存放第一数据,第二内存区域用于存放第二数据,第二数据包括多组子数据,每一组子数
据具有一个组号。
38.步骤s202,第一芯片将第一数据、子数据以及子数据的组号携带在一帧串行数据帧中发送给第二芯片。
39.步骤s203,在当前周期内还有未被成功发送给第二芯片的子数据的情况下,跳转至步骤s201,否则跳转至步骤s204。
40.步骤s204,结束当前周期的串行数据帧的发送。
41.通过上述的步骤,在每个周期中进行多个串行数据帧的发送,每个串行数据帧中携带有第一数据和部分的第二数据(即至少一组子数据),并且携带有子数据的组号,因此,在每个串行数据帧中都会将所有的第一数据发送给第二芯片,从而保障第一数据可以以最高的优先级被发送给第二芯片;而采用多个串行数据帧发送第二数据,从而可以以相对第一数据较低的优先级将大量的第二数据发送给第二芯片,在保障高优先级数据传输的情况下,实现了双芯片之间大量数据的高速通信。
42.在其中的一些实施例中,第一数据和第二数据在多个连续的发送周期持续由第一芯片发送给第二芯片。在步骤s204之后,当结束当前周期的串行数据帧的发送之后,则可以进入下一个发送周期的串行数据帧的发送。通过这种方式,实现第一数据和第二数据的持续的传输。
43.其中,在本实施例中的发送周期是指能够完整发送一次全部的第二数据的时间,每个发送周期的时长可以相同也可以不同。
44.对于第一数据而言,无论第一内存区域内存储的第一数据是否发生变化,在每个串行数据帧中都会发送一次第一数据。因此可以不需要检测该第一数据是否被第二芯片成功接收或解析。即使第二芯片没有成功接收或者成功解析出前一个串行数据帧中的第一数据,那么在此后接收到的串行数据帧中也同样能够解析出第一数据。
45.在本实施例中,第二数据是分组传输的。如果第二数据中某组子数据未被第二芯片成功接收或解析且不再重传这组子数据,那么只有等待下一个发送周期才能再次发送这组子数据,导致第二芯片不能够及时接收到这组数据。为此,在一些实施例中,第二芯片将会在接收到每个串行数据帧之后向第一芯片回复响应信息,响应信息用于指示是否成功接收到某个串行数据帧。这样,第一芯片可以根据响应信息来判断某组子数据是否成功发送给第二芯片。若某组子数据未成功发送给第二芯片,则第一芯片将在下一个(或者下几个)串行数据帧内携带未成功发送给第二芯片的子数据,实现传输失败的子数据的重传,保证第二芯片在一个发送周期内能够及时收到所有的第二数据。其中,在分组传输第二数据时,可以按照组号的顺序,每组子数据依次传输,也可以每组子数据乱序传输,在本实施例中不做限定。
46.在其中的一些实施例中,第二芯片的响应信息中携带有第二芯片成功接收到的最后至少一组子数据的组号。则第一芯片可以通过比较响应信息中携带的组号是否与上一个串行数据帧中携带的子数据的组号是否一致的方式来判断上一个串行数据帧中的子数据是否成功发送给了第二芯片。
47.在一些实施例中,第一芯片向第二芯片传输数据,第二芯片也向第一芯片传输数据,第二芯片向第一芯片传输数据时,也采用与步骤s201至步骤s204相同的传输方式。在这种情况下,第一芯片同样也可以向第二芯片发送响应信息,以表示第一芯片是否接收到第
二芯片发送的某组子数据。
48.在本实施例中提供了一种串行数据帧的数据格式,每个串行数据帧包括14个字节,其中n个字节用来传输第一数据,1个字节用来传输协议状态数据,12-n个字节用来传输第二数据,以及1个字节用来传输crc校验值。
49.以n=5为例,发送第a组子数据的串行数据帧的数据格式可以表示为:1:变量1的数据;2:变量2的数据;3:变量3的数据;4:变量4的数据;5:变量5的数据;6:协议状态数据;7:变量a1的数据;8:变量a2的数据;9:变量a3的数据;10:变量a4的数据;11:变量a5的数据;12:变量a6的数据;13:变量a7的数据;14:crc校验值。
50.其中,协议状态数据包括:协议状态、当前串行数据帧中传输的子数据的组号以及在上一串行数据帧中成功接收到的子数据的组号。协议状态包括握手、正常通讯、故障等。
51.第二数据中各组子数据还可以具有传输优先级,具有高优先级的子数据在当前周期内如果发生变更,则可以中断下一个串行数据帧中将要发送的子数据,而在下一个串行数据帧中再次发送该发生变更的高优先级的子数据。这样可以保证第二数据中高优先级的子数据一旦发生变更则实时发送给对端的芯片。为此,在其中的一些实施例中,第一芯片判断第二内存区域内存放的目标子数据是否存在变更,其中,目标子数据包括组号满足预设条件的一组或者多组子数据;在目标子数据存在变更的情况下,第一芯片中断将要发送的下一个串行数据帧,并将第一数据、目标子数据以及目标子数据的组号携带在下一个串行数据帧中发送给第二芯片。
52.其中,上述的预设条件即预先设置的一个或者多个组号。一般选取第二数据中前n组子数据的组号作为该预设条件。
53.考虑到极端情况下,若这前n组子数据频繁发生变更,可能导致在当前周期内重复发送这前n组子数据。为了避免该极端情况的发生,一方面可以将高优先级的子数据的组号设置得较少,例如1至3个组号。另一方面,则可以通过定时的方式来确定是否继续发送这前n组子数据。例如,在目标子数据存在变更且当前周期的持续时长未超出预设时长的情况下,第一芯片中断将要发送的下一个串行数据帧,并将第一数据、目标子数据以及目标子数据的组号携带在下一个串行数据帧中发送给第二芯片。而在目标子数据未存在变更,或者当前周期的持续时长超出预设时长的情况下,第一芯片继续进行将要发送的下一个串行数据帧的发送。
54.以每个串行数据帧发送耗时4ms为例,若第二数据总共分为100组子数据,则将第二数据全部发送完需要400ms时间。如果限定要在800ms内发送完所有的第二数据,那么可以将上述的预设时长设置为400ms,即在当前周期的前400ms内,若这前n组子数据中的一组或者多组子数据发生了变更,则再次发送发生变更的这一组或者多组子数据;而在当前周期的400ms之后,则不再重新发送发生变更的这一组或者多组子数据,而是正常发送其他组的子数据,直至将所有的第二数据都发送完毕,保证所有的第二数据都发送完毕所需要的时间不超过800ms。
55.通信中断的优先级通常低于系统内的一些高优先级的系统中断,因此,因芯片内的高优先级事件会打断串行数据帧的传输,因此,在每个串行数据帧中需要留有裕量。在本实施例中,每个串行数据帧的帧长相等且留有裕量,该裕量基于允许打断芯片之间的通信的事件的最长打断时间确定,该最长打断时间是在芯片及其应用场景下基于统计的方式确定的。
56.在本实施中以串行通信采用115200波特率,每个串行数据帧包括14个16位数据为例,这14个16位数据在考虑时间误差和启停位等的情况下,可以保证在2.8ms内传输完毕。在本实施例中,将每个串行数据帧的长度设置为3.3ms至4ms,则可以保证有0.5ms至1.2ms的裕量,以保证在通信被打断的情况下,这14个16位数据也能够完整的传输给对端的芯片。
57.虽然上述实施例是采用115200波特率以及每个串行数据帧传输14个16位数据为例进行说明的,但是显然本方案并不限制串行通信采用的波特率及每个串行数据帧中传输的数据的个数或者位数,即波特率、串行数据帧中传输的数据的个数或者位数可以根据实际需要进行选取。
58.应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
59.以上所述仅是本技术的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
再多了解一些

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

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

相关文献