一种can总线数据传送方法

文档序号:7892980阅读:371来源:国知局
专利名称:一种can总线数据传送方法
技术领域
本发明属于星上总线通信领域,涉及ー种基于流水线形式的CAN总线数据传送方法。
背景技术
CAN总线是Bosch公司于上世纪80年代推出的ー种多主网络协议,90年代被国际标准化组织采用,成为唯一具有国际标准的现场总线。CAN总线具有以下特点可靠性高,其剰余错误概率为10_n量级;多主局部网络结构,任何节点都可以主动发送,省去了主从结构需要的查询工作,提高了总线的利用效率,满足系统的实时性要求,同时某节点的故障不会影响其余节点,且采用无损结构的逐位仲裁,提高了系统的可靠性;传输速率最高可达 IMb/s,理论上网上节点个数不受限制,实际上由于总线驱动电路的能力限制,可达110个;CAN协议废除了传统的站地址编码,采用对通信数据块进行编码的方式,最多可定义211或229个不同数据块,借助接收滤波可使不同节点同时接收到相同数据,能够使星载计算机不被自身无关的数据干扰;CAN总线采用CRC检验方式,提供错误处理功能,保证数据通信的可靠性;价格相对便宜,开发简単。目前CAN总线逐步走进世界航天技术领域,并得到了很大的发展。在星载电子领域,CAN总线主要作为ー种控制总线被广泛应用,主要用于星内指令分发和各设备信息的采集,以及在轨软件注入、时间发布等。目前世界范围内使用的CAN总线技术规范主要是CAN 2. OA和CAN 2. 0B,其中星上普遍使用CAN 2. OA规范,并基于CAN2. OA定义应用层协议。为了保证数据传输的实时性需求,CAN 2. O技术规范规定CAN总线数据帧数据域长度不超过8个字节。由于各星载设备之间的数据交互需求经常存在一次性传输的数据量远远超过8字节的情況,因此,有效数据的分割和多帧传输是ー种必然的选择。在CAN总线通信软件设计领域,通常采用两种方法进行数据发送的设计,一种是采用轮询发送方式,首先将从有效数据中拆分出一部分数据组成ー帧CAN数据帧,然后判断CAN控制器发送缓冲区是否为空,当发送缓冲区为空吋,将数据帧填入发送缓冲区,并启动发送,再继续后续数据的拆分与发送。轮询发送的不足在于在发送过程中,处理器需要不断查看是否能够发送下ー帧数据。由于CAN总线最高码速率为1Mbps,而实际应用时往往设为几百kbps,属于低速总线,采用轮询发送时处理器大量的机时都浪费在等待数据帧传输的过程中,处理器时间利用率低。另ー种常用的方式是中断发送,即通过使能CAN总线控制器的发送中断进行数据的发送。当ー帧数据发送完毕后,CAN总线控制器向处理器发出ー个中断信号,计算机软件进入中断服务程序,发送下一帧数据,直到全部数据发送完毕。中断方式下不需要轮询查看CAN总线控制器的发送状态,处理器利用率高,但数据组帧及CAN总线寄存器设置和CAN总线控制器发送过程是串行过程,一帧数据发送时间较长,对于星上常用的51系列单片机等低性能处理器可能存在响应时间过长,系统不满足实时性要求等问题。中断发送常用的软件流程包括两种,一种为发送前组完所有的数据帧,发送时将数据帧依次写入CAN总线控制器发送缓冲区,另ー种为每次发送前组当前发送的数据帧。前ー种方式存在数据发送前的预备时间较长的问题,后ー种方式存在数据帧间隔时间较长的问题,当实时性要求很高和处理器性能较低时,可能难以满足应用需求。

发明内容
本发明的技术解决问题是针对现有技术的不足,提供了ー种CAN总线数据传送方法。采用本发明实现了处理器和CAN总线控制器的流水线式工作,满足了对当前星上处理器的实时性要求。本发明的技术解决方案是ー种CAN总线数据传送方法,用于在数据传送过程中协调处理器和CAN总线控制器。在所述数据传送过程中,处理器在数据传送的一次中断中,首先将第N个数据帧填入CAN总线控制器的缓冲区;然后启动控制器数据传送流程;最后完成第N+1个数据帧的组帧;在处理器进行第N+1个数据帧的组帧时,CAN总线控制器在数、据传送流程中将所述缓冲区中的当前数据帧发送到CAN总线;当CAN总线控制器将所述缓冲区内的数据帧发送完成后,处理器进入下一次中断。在启动所述数据传送过程前,CAN总线处理器对待传输数据块的长度进行判断若待传输数据块的长度大于ー个数据帧的最大长度,则组成第I个数据帧并将第I个数据帧填入CAN总线控制器缓冲区;启动CAN总线控制器数据传送流程;在CAN总线控制器传送第I个数据帧的同吋,处理器并行完成对第2个数据帧的组帧,并进入数据传送过程;若待传输数据块的长度小于数据帧长度,则将待传输数据块组成单个数据帧后填入CAN总线控制器缓冲区;启动控制器数据传送流程;完成对待传输数据块的处理。本发明与现有技术相比具有如下优点本发明所述方法针对星上CAN总线数据发送,解决了数据发送的实时性要求与处理器时间利用率之间的矛盾。现有技术在查询方式下,数据传送过程能够具备较好的实时性,响应时间和数据帧间隔均比较小,但处理器时间浪费比较严重冲断方式不存在浪费处理器时间的问题,但存在响应时间或帧间隔较长的问题。而在本发明中采用处理器与处理器和CAN总线控制器的流水线的方式,既能够达到不浪费处理器时间的目的,响应时间和传送时间性能也能够接近查询模式,能够满足星上信息传送的实时性要求。本发明方法针对星上低性能处理器与CAN总线控制器的典型硬件配置,将处理器作为第一级流水的硬件载体,CAN总线控制器作为第二级流水的硬件载体,不需要额外的硬件电路,具有通用性好的优点,能够广泛适用于各类星上计算机。


图I为串打时序不意图;图2为流水时序不意图;图3为流水线填充流程图;图4为数据传送过程流程图。
具体实施例方式下面就结合附图对本发明做进ー步介绍。本发明的CAN总线数据传送方法对CAN总线现有的中断发送(发送过程中组数据帧)方法进行改进,将图I所示的串行时序改进为图2所示的流水线时序,利用处理器和CAN总线控制器构成两级流水线对待传送的数据进行传送。从硬件电路原理上,数据组帧、数据写入缓冲区和启动发送只能由处理器完成,从CAN总线控制器发送缓冲区取数据并发到总线上的过程只能由CAN总线控制器完成。因此将处理器作为第一级流水,CAN总线控制器作为第二级流水。处理器为流水线第一级,用于实现对流水线的构建和填充工作,按发生的时间先后顺序可分为三部分工作(I)前ー个中断周期中的数据帧写入到CAN总线控制器发送缓冲区;(2)设置CAN总线控制器的相关寄存器,启动CAN总线控制器的数据传送流程;(3)按照协议继续对后续数据进行组帧,并进行校验等其它相关的计算。CAN总线控制器为流水线第ニ级,用于在数据传送流程完成对缓冲区中数据帧的发送工作。 如图3为本发明所述方法流程图,所示,具体过程如下在一个数据的传送过程中,针对待传输的数据,处理器首先按图3所示过程进行流水线的填充。I、判断数据块长度,当数据块能够装入ー个CAN数据帧时,转第2步;当数据块长度超出ー个CAN总线数据帧的数据段长度时,转第6步;2、按照CAN总线应用层通信协议,将数据块组成CAN数据帧单帧;3、将第2步组成的数据帧写入CAN总线控制器发送缓冲区;4、设置CAN总线控制器寄存器,启动数据发送;5、设置发送完成标志为发送完成,结束;6、组数据块第一帧;7、将长数据块第一帧写入CAN总线控制器发送缓冲区;8、设置CAN总线控制器寄存器,启动数据发送;9、组数据块第二帧。在上述步骤中,针对I — 2 — 3 — 4 — 5的过程只需要处理器的一次中断即可完成对待传送数据的传送。针对I — 2 — 6 — 7 — 8 — 9的过程则需要处理器首先利用第I个数据帧和第2个数据帧的组帧和传送完成对流水线的填充。在完成第2个数据帧的组帧后,处理器将发送指针移到剰余数据首地址即可以开启所述的数据传送过程。如图4所示,在数据传送过程中,当第一帧数据发送完毕后,CAN总线控制器触发处理器的发送中断并且剩余数据量超过ー帧数据帧时,进入流水线循环阶段;当剰余数据量不超过ー帧数据帧时,进入流水线排空阶段。流水线循环和排空在发送中断服务程序中完成,步骤如下I、判断是否发送完成。如果是,直接返回;否则转第2步;2、将第N帧数据写入CAN总线控制器发送缓冲区;3、设置CAN总线控制器寄存器,启动数据发送;4、判断发送指针是否为空。如果是,置发送完成标志,返回,否则转第5步;5、判断剰余数据的数据量是否超过ー帧。如果是,转第6步;否则转第8步;
6、组第 N+1 帧;7、将发送指针移到剰余数据首地址,结束;8、组数据帧最后ー帧;9、将发送指针设为空指针,结束。上述,步骤I — 2 — 3 — 4 — 5 — 6 — 7 —结束,为流水线的循环阶段流程,步骤I —结束、步骤I — 2 — 3 — 4 —结束、步骤I — 2 — 3 — 4 — 5 — 8 — 9 —结束为流水线的排空过程。本发明在流水线的循环阶段即可通过分别位于流水线第一级的处理器和第二 级的CAN总线控制器完成对待传输数据的传送过程。本发明未详细说明部分属本领域技术人员公知常识。
权利要求
1.一种CAN总线数据传送方法,用于在数据传送过程中协调处理器和CAN总线控制器,其特征在于在所述数据传送过程中,处理器在数据传送的一次中断中,首先将第N个数据帧填入CAN总线控制器的缓冲区;然后启动控制器数据传送流程;最后完成第N+1个数据帧的组帧;在处理器进行第N+1个数据帧的组帧时,CAN总线控制器在数据传送流程中将所述缓冲区中的当前数据帧发送到CAN总线;当CAN总线控制器将所述缓冲区内的数据帧发送完成后,处理器进入下一次中断。
2.如权利要求I所述的一种CAN总线数据传送方法,其特征在于在启动所述数据传送过程前,CAN总线处理器对待传输数据块的长度进行判断 若待传输数据块的长度大于一个数据帧的最大长度,则组成第I个数据帧并将第I个数据帧填入CAN总线控制器缓冲区;启动CAN总线控制器数据传送流程;在CAN总线控制器传送第I个数据帧的同时,处理器并行完成对第2个数据帧的组帧,并进入数据传送过程; 若待传输数据块的长度小于数据帧长度,则将待传输数据块组成单个数据帧后填入CAN总线控制器缓冲区;启动控制器数据传送流程;完成对待传输数据块的处理。
全文摘要
本发明公开了一种CAN总线数据传送方法,用于在数据传送过程中协调处理器和CAN总线控制器。在所述数据传送过程中,处理器在数据传送的一次中断中,首先将第N个数据帧填入CAN总线控制器的缓冲区;然后启动控制器数据传送流程;最后完成第N+1个数据帧的组帧;在处理器进行第N+1个数据帧的组帧时,CAN总线控制器在数据传送流程中将所述缓冲区中的当前数据帧发送到CAN总线;当CAN总线控制器将所述缓冲区内的数据帧发送完成后,处理器进入下一次中断。采用本发明实现了处理器和CAN总线控制器的流水线式工作,满足了对当前星上处理器的实时性要求。
文档编号H04L12/40GK102664779SQ20121009600
公开日2012年9月12日 申请日期2012年3月31日 优先权日2012年3月31日
发明者刘思远, 刘胜利, 杨志, 杨芳, 谢松 申请人:航天东方红卫星有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1