[发明专利]一种汽车CAN报文发送方法有效
申请号: | 201911417672.1 | 申请日: | 2019-12-31 |
公开(公告)号: | CN111010352B | 公开(公告)日: | 2023-04-07 |
发明(设计)人: | 吴焜昌;曾令厚;杨福清;卢涛;黄玲;李志强 | 申请(专利权)人: | 厦门金龙联合汽车工业有限公司 |
主分类号: | H04L47/72 | 分类号: | H04L47/72;H04L47/10;H04L67/5681;H04L12/40 |
代理公司: | 泉州市博一专利事务所(普通合伙) 35213 | 代理人: | 方传榜 |
地址: | 361000 *** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 汽车 can 报文 发送 方法 | ||
本发明提供了一种汽车CAN报文发送方法,包括以下步骤:(1)当应用层需要发送报文时,首先将报文填入一个过渡区,然后开启CAN发送缓冲器空中断;(2)当有空闲的CAN发送缓冲器时,控制器进入CAN发送缓冲器中断,将报文发送出去。本发明采用二级缓存机制,使报文填入过渡区,开启发送缓冲器空中断后,只要CAN控制器有空闲的发送缓冲器,便会进入CAN发送缓冲器空中断,CAN控制器会以帧为单位将报文从过渡区传送到发送缓冲器中进行发送,解决了因CAN发送缓存器不够而导致报文发送不出去的问题。
技术领域
本发明涉及汽车电子技术领域,更为具体地说是指一种汽车CAN报文发送方法。
背景技术
CAN(Controller Area Network,控制器局域网)是德国BOSCH公司在20世纪80年代初,为了解决现代汽车中众多的控制器之间的数据交换而开发的一种串行数据通信协议,目前广泛用于各种车辆上。随着车辆功能的日益增多,控制器所需发送的报文也随之增多,而很多低成本的微控制器内部CAN控制器的发送报文缓冲器很少,当在一个周期循环内要发送较多的报文时,会出现报文缓冲器不够的情况,从而导致某些报文发送不出去。
选用CAN报文发送缓冲器较多的微控制器可以解决这个问题,但此种微控制器的价格较高,而切换一种新的微控制器,在软硬件上都需要做很大的改动,这将增加很多成本。
公开号为CN106534368A的发明专利公开了一种汽车CAN总线网关的报文收发方法及系统,定义软件接收缓冲区和软件发送缓冲区,软件接收缓冲区由报文接收中断服务程序和软件接收缓冲区管理子模块管理;软件发送缓冲区由报文发送函数、报文发送中断服务程序和软件发送缓冲区管理子模块管理;软件发送缓冲区管理子模块和软件接收缓冲区管理子模块组成软件缓冲区管理模块;在软件缓冲区管理模块中,若接收到信号,判断信号是否是接收到新报文,若是则进入软件接收缓冲区管理子模块;如果否则判断接收到的信号是否是硬件发送缓冲区未满,若是就进入软件发送缓冲区管理子模块。该发明以软件缓冲区配合CAN控制器的硬件缓冲区,能够实时地接收报文,保证报文不丢失。在该专利中,CAN控制器硬件发送缓冲器已满后,便退出软件发送缓冲区管理子任务,这会导致缓冲区里面的报文不能及时发送出去。
公开号为CN105721268A的发明专利提供了一种控制器局域网络CAN总线报文的发送方法及装置,其中,发送方法包括:根据CAN总线上所有节点的报文发送周期,确定CAN总线上所有节点发送报文的公共时钟周期,公共时钟周期为CAN总线上所有节点的报文发送周期的最小公倍数的整数倍;根据所有节点的报文发送周期和公共时钟周期,配置每一节点在各自报文发送周期内的报文发送时段,其中,任意两个节点的报文发送时段均没有重叠部分;将公共时钟周期发送至CAN总线上报文发送优先级最高的第一节点;将每一节点在各自报文发送周期内的报文发送时段发送至CAN总线上的对应节点,以使对应节点根据报文发送时段和报文发送周期发送报文。本发明解决了现有技术中报文发送延迟的问题。该专利主要是采用错时发送的方法,如果要发送的报文数较多,仍然可能发生报文发送不出去的情况。
发明内容
本发明提供一种汽车CAN报文发送方法,以解决现有的CAN报文发送存在不能及时发送出去等缺点。
本发明采用如下技术方案:
一种汽车CAN报文发送方法,包括以下步骤:(1)当应用层需要发送报文时,首先将报文填入一个过渡区,然后开启CAN发送缓冲器空中断;(2)当有空闲的CAN发送缓冲器时,控制器进入CAN发送缓冲器空中断,将报文发送出去。
进一步地,本发明的汽车CAN报文发送方法,还包括定义一个变量Buffer_Number,该变量用于对过渡区中未发送报文进行计数,往过渡区填入一帧报文,Buffer_Number加1,从过渡区发送出去一帧报文,Buffer_Number减1。
进一步地,每发送完一帧报文后,对Buffer_Number数值大小进行判断,如果Buffer_Number等于0,便关闭发送发送缓冲器空中断。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于厦门金龙联合汽车工业有限公司,未经厦门金龙联合汽车工业有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911417672.1/2.html,转载请声明来源钻瓜专利网。