一种CAN多邮箱复用处理方法及系统与流程

文档序号:31363501发布日期:2022-08-31 15:03阅读:810来源:国知局
一种CAN多邮箱复用处理方法及系统与流程
一种can多邮箱复用处理方法及系统
技术领域
1.本发明涉及汽车零部件技术领域,具体涉及一种can多邮箱复用处理方法及系统。


背景技术:

2.随着汽车can(controller area network,控制器域网)通信的广泛应用,以及传统的硬线信号转换后需要以can信号的方式发送,汽车各模块之间处理的can信号也越来越多。汽车电子发展以及芯片性能的持续进步,对处理越来越多的can信号而言虽然具有积极作用,但是随着各种需求的增加、软件架构对can信号的统一处理等一系列要求,需要对can信号处理有一种通用的方式。
3.在当前汽车的can芯片中,一般都会存在多路通道,每一路通道会有数量相同或不同的邮箱,每一个邮箱均会存在一个可配置的信号过滤id(identity document,身份标识号)以及掩码,用于配置每一个邮箱对信号的感知。当can总线上某一id的报文通过了某一邮箱的过滤id和掩码的校验时,便会触发该邮箱的接收中断,从而被处理器接收到,获取到总线上关于该id信号的内容。
4.在软件开发过程中一般会设置好当前模块所有接收的报文,并分类,从而便于设计足够巧妙的过滤id和掩码,满足该模块的接收需求。同时若设计不当,或模块处理繁忙时,一个邮箱同时接收多个id数据并短时间之内相继触发时,则会存在漏掉信号的可能,这在处理信号时是绝对不允许的。对于can信号处理没多大实时性要求的处理器,可以通过polling(查询)模式来进行查询can信号的接收和处理。但对于需要接收大量can消息,以及对处理和响应时间均存在一定要求的处理器来说,采用何种处理方法以规避处理过程中可能存在的问题和隐患,则是当前亟需解决的问题。


技术实现要素:

5.针对现有技术中存在的缺陷,本发明的目的在于提供一种can多邮箱复用处理方法及系统,能够有效保证can信号收发处理的及时性,且避免数据的丢失。
6.为达到以上目的,本发明提供的一种can多邮箱复用处理方法,具体包括以下步骤:
7.对每一路can通道邮箱均进行分类,形成发送邮箱和接收邮箱;
8.配置相应软件以控制接收邮箱,以使接收邮箱对接收得到总线报文后进行解析,得到can id,并根据can id处理对应的数据;
9.配置所有发送邮箱均能进行发送操作,并在底层邮箱与待发送的总线报文之间,动态匹配can id与发送邮箱之间的关系。
10.在上述技术方案的基础上,所述发送邮箱的个数按照mailboxtxnum进行分配。
11.在上述技术方案的基础上,所述接收邮箱的个数按照mailboxrxnum进行分配。
12.在上述技术方案的基础上,所述接收邮箱不进行硬件id过滤,所述发送邮箱不进行硬件id限制。
13.在上述技术方案的基础上,所述在底层邮箱与待发送的总线报文之间,动态匹配can id与发送邮箱之间的关系,具体步骤包括:
14.当存在待发送总线报文时,基于待发送总线报文的类型,判断当前是否存在空余发送邮箱以发送该类型的总线报文:
15.若存在,则将待发送总线报文与空余的发送邮箱进行绑定,并设置该发送邮箱的状态为待发送状态;
16.若不存在,则反馈总线忙,等待下一次发送。
17.在上述技术方案的基础上,当将发送邮箱的状态设置为待发送状态之后,还包括:
18.can模块在任务中检测到有发送邮箱处于待发送状态时,发送该发送邮箱的数据;
19.当接收到发送中断时,重置该发送邮箱,并触发该发送邮箱绑定的回调函数,然后继续检测是否存在处于待发送状态的发送邮箱。
20.本发明提供的一种can多邮箱复用处理系统,包括:
21.分类单元,其用于对每一路can通道邮箱均进行分类,形成发送邮箱和接收邮箱;
22.第一配置单元,其用于配置相应软件以控制接收邮箱,以使接收邮箱对接收得到总线报文后进行解析,得到can id,并根据can id处理对应的数据;
23.第二配置单元,其用于配置所有发送邮箱均能进行发送操作,并在底层邮箱与待发送的总线报文之间,动态匹配can id与发送邮箱之间的关系。
24.在上述技术方案的基础上,所述发送邮箱的个数按照mailboxtxnum进行分配,所述接收邮箱的个数按照mailboxrxnum进行分配。
25.在上述技术方案的基础上,所述在底层邮箱与待发送的总线报文之间,动态匹配can id与发送邮箱之间的关系,具体过程包括:
26.当存在待发送总线报文时,基于待发送总线报文的类型,判断当前是否存在空余发送邮箱以发送该类型的总线报文:
27.若存在,则将待发送总线报文与空余的发送邮箱进行绑定,并设置该发送邮箱的状态为待发送状态;
28.若不存在,则反馈总线忙,等待下一次发送。
29.在上述技术方案的基础上,当将发送邮箱的状态设置为待发送状态之后,还包括:
30.can模块在任务中检测到有发送邮箱处于待发送状态时,发送该发送邮箱的数据;
31.当接收到发送中断时,重置该发送邮箱,并触发该发送邮箱绑定的回调函数,然后继续检测是否存在处于待发送状态的发送邮箱。
32.与现有技术相比,本发明的优点在于:通过对每一路can通道邮箱均进行分类,形成发送邮箱和接收邮箱,然后配置相应软件以控制接收邮箱,以使接收邮箱对接收得到总线报文后进行解析,得到can id,并根据can id处理对应的数据,然后配置所有发送邮箱均能进行发送操作,并在底层邮箱与待发送的总线报文之间,动态匹配can id与发送邮箱之间的关系,通过多邮箱复用操作,将can信号的接收和发送通过软件处理的方式,进行can信号底层收发统一管理,有效保证can信号收发处理的及时性,且避免数据的丢失。
附图说明
33.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使
用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
34.图1为本发明实施例中一种can多邮箱复用处理方法的流程图。
具体实施方式
35.本发明实施例提供一种can多邮箱复用处理方法,通过对每一路can通道邮箱均进行分类,形成发送邮箱和接收邮箱,然后配置相应软件以控制接收邮箱,以使接收邮箱对接收得到总线报文后进行解析,得到can id,并根据can id处理对应的数据,然后配置所有发送邮箱均能进行发送操作,并在底层邮箱与待发送的总线报文之间,动态匹配can id与发送邮箱之间的关系,通过多邮箱复用操作,将can信号的接收和发送通过软件处理的方式,进行can信号底层收发统一管理,有效保证can信号收发处理的及时性,且避免数据的丢失。本发明实施例相应地还提供了一种can多邮箱复用处理系统。
36.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。
37.参见图1所示,本发明实施例提供一种can多邮箱复用处理方法,用以解决在处理器接收can id较多情况下,处理各种信号收发,并可多项目配置且无需对不同控制器更改底层模块,即本发明通过多邮箱复用操作,将can信号的接收和发送通过软件处理的方式,进行can信号底层收发统一管理。
38.本发明的can多邮箱复用处理方法具体包括以下步骤:
39.s1:对每一路can通道邮箱均进行分类,形成发送邮箱和接收邮箱;
40.本发明中,发送邮箱的个数按照mailboxtxnum(邮箱发送数目)进行分配,接收邮箱的个数按照mailboxrxnum(邮箱接收数目)进行分配,且发送邮箱和接收邮箱还可根据具体的项目进行配置。
41.s2:配置相应软件以控制接收邮箱,以使接收邮箱对接收得到总线报文后进行解析,得到can id,并根据can id处理对应的数据;
42.本发明中,接收邮箱不进行硬件id过滤,有软件进行处理,当接收邮箱接收得到总线报文后,进行解析,得到can id,并根据can id处理对应的数据。
43.s3:配置所有发送邮箱均能进行发送操作,并在底层邮箱与待发送的总线报文之间,动态匹配can id与发送邮箱之间的关系。发送邮箱不进行硬件id限制,所有发送邮箱均能进行发送操作。
44.本发明实施例中,在底层邮箱与待发送的总线报文之间,动态匹配can id与发送邮箱之间的关系,具体步骤包括:
45.当存在待发送总线报文时,基于待发送总线报文的类型,判断当前是否存在空余发送邮箱以发送该类型的总线报文:
46.若存在,则将待发送总线报文与空余的发送邮箱进行绑定,并设置该发送邮箱的状态为待发送状态;
47.若不存在,则反馈总线忙,等待下一次发送。
48.本发明实施例中,当将发送邮箱的状态设置为待发送状态之后,还包括:
49.a:can模块在任务中检测到有发送邮箱处于待发送状态时,发送该发送邮箱的数据;
50.b:当接收到发送中断时,重置该发送邮箱,并触发该发送邮箱绑定的回调函数,然后继续检测是否存在处于待发送状态的发送邮箱。
51.本发明中,对于发送邮箱的配置信息以及与can信号的绑定状态,具体为:
52.通道可配置的发送邮箱个数为mailboxtxnum,其中根据相应模块信息,可选择配置网络管理报文(nmcnt)、诊断报文(udscnt)、常规应用报文(appcnt)等分别占用的邮箱个数以及信息。例如,当发送应用报文时,查询常规应用报文对应的邮箱状态,然后设置该发送报文到空余邮箱中,并等待发送。
53.本发明通过在真实的can邮箱与软件处理中间,虚拟一层can通信接口,对接收数据统一管理,并做好过滤。按照500kb/s的传输速率,每一标准帧大约120bit左右,每一扩展帧大约140bit左右,1s可承载4000多帧左右的数据,1ms大约可处理4帧左右信号。对于满负荷处理而言,当接收邮箱均不设置硬件过滤时,can信号会按照分配好的邮箱从小到大依次存储,直到所有已配置邮箱均标记有can信号触发时,才会有遗漏数据的可能。这样避免了邮箱快速的多次信号触发而导致丢帧的问题,如此设计留下了足够的余量去处理信号。
54.发送数据采用先缓存状态,设置好对应值,然后使能发送。可以避免总线繁忙情况下发送不成功的情况。
55.本发明实施例的can多邮箱复用处理方法,通过对每一路can通道邮箱均进行分类,形成发送邮箱和接收邮箱,然后配置相应软件以控制接收邮箱,以使接收邮箱对接收得到总线报文后进行解析,得到can id,并根据can id处理对应的数据,然后配置所有发送邮箱均能进行发送操作,并在底层邮箱与待发送的总线报文之间,动态匹配can id与发送邮箱之间的关系,通过多邮箱复用操作,将can信号的接收和发送通过软件处理的方式,进行can信号底层收发统一管理,有效保证can信号收发处理的及时性,且避免数据的丢失。
56.在一种可能的实施方式中,本发明实施例还提供一种可读存储介质,可读存储介质位于plc(programmable logic controller,可编程逻辑控制器)控制器中,可读存储介质上存储有计算机程序,该程序被处理器执行时实现以下所述can多邮箱复用处理方法的步骤:
57.对每一路can通道邮箱均进行分类,形成发送邮箱和接收邮箱;
58.配置相应软件以控制接收邮箱,以使接收邮箱对接收得到总线报文后进行解析,得到can id,并根据can id处理对应的数据;
59.配置所有发送邮箱均能进行发送操作,并在底层邮箱与待发送的总线报文之间,动态匹配can id与发送邮箱之间的关系。
60.存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或
者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
61.计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
62.可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
63.本发明实施例提供的一种can多邮箱复用处理系统,包括分类单元、第一配置单元和第二配置单元。
64.分类单元用于对每一路can通道邮箱均进行分类,形成发送邮箱和接收邮箱;第一配置单元用于配置相应软件以控制接收邮箱,以使接收邮箱对接收得到总线报文后进行解析,得到can id,并根据can id处理对应的数据;第二配置单元用于配置所有发送邮箱均能进行发送操作,并在底层邮箱与待发送的总线报文之间,动态匹配can id与发送邮箱之间的关系。
65.本发明实施例中,发送邮箱的个数按照mailboxtxnum进行分配,所述接收邮箱的个数按照mailboxrxnum进行分配。
66.本发明实施例中,在底层邮箱与待发送的总线报文之间,动态匹配can id与发送邮箱之间的关系,具体过程包括:
67.当存在待发送总线报文时,基于待发送总线报文的类型,判断当前是否存在空余发送邮箱以发送该类型的总线报文:
68.若存在,则将待发送总线报文与空余的发送邮箱进行绑定,并设置该发送邮箱的状态为待发送状态;
69.若不存在,则反馈总线忙,等待下一次发送。
70.本发明实施例中,当将发送邮箱的状态设置为待发送状态之后,还包括:
71.can模块在任务中检测到有发送邮箱处于待发送状态时,发送该发送邮箱的数据;
72.当接收到发送中断时,重置该发送邮箱,并触发该发送邮箱绑定的回调函数,然后继续检测是否存在处于待发送状态的发送邮箱。
73.以上所述仅是本技术的具体实施方式,使本领域技术人员能够理解或实现本技术。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的
一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
74.本发明是参照根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1