CN102664779B - 一种can总线数据传送方法 - Google Patents

一种can总线数据传送方法 Download PDF

Info

Publication number
CN102664779B
CN102664779B CN201210096007.9A CN201210096007A CN102664779B CN 102664779 B CN102664779 B CN 102664779B CN 201210096007 A CN201210096007 A CN 201210096007A CN 102664779 B CN102664779 B CN 102664779B
Authority
CN
China
Prior art keywords
data
frame
controller
processor
buffering area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210096007.9A
Other languages
English (en)
Other versions
CN102664779A (zh
Inventor
谢松
刘思远
杨志
杨芳
刘胜利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Aerospace Dongfanghong Satellite Co Ltd
Original Assignee
Aerospace Dongfanghong Satellite Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Aerospace Dongfanghong Satellite Co Ltd filed Critical Aerospace Dongfanghong Satellite Co Ltd
Priority to CN201210096007.9A priority Critical patent/CN102664779B/zh
Publication of CN102664779A publication Critical patent/CN102664779A/zh
Application granted granted Critical
Publication of CN102664779B publication Critical patent/CN102664779B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Multi Processors (AREA)
  • Small-Scale Networks (AREA)

Abstract

本发明公开了一种CAN总线数据传送方法,用于在数据传送过程中协调处理器和CAN总线控制器。在所述数据传送过程中,处理器在数据传送的一次中断中,首先将第N个数据帧填入CAN总线控制器的缓冲区;然后启动控制器数据传送流程;最后完成第N+1个数据帧的组帧;在处理器进行第N+1个数据帧的组帧时,CAN总线控制器在数据传送流程中将所述缓冲区中的当前数据帧发送到CAN总线;当CAN总线控制器将所述缓冲区内的数据帧发送完成后,处理器进入下一次中断。采用本发明实现了处理器和CAN总线控制器的流水线式工作,满足了对当前星上处理器的实时性要求。

Description

一种CAN总线数据传送方法
技术领域
本发明属于星上总线通信领域,涉及一种基于流水线形式的CAN总线数据传送方法。
背景技术
CAN总线是Bosch公司于上世纪80年代推出的一种多主网络协议,90年代被国际标准化组织采用,成为唯一具有国际标准的现场总线。CAN总线具有以下特点:可靠性高,其剩余错误概率为10-11量级;多主局部网络结构,任何节点都可以主动发送,省去了主从结构需要的查询工作,提高了总线的利用效率,满足系统的实时性要求,同时某节点的故障不会影响其余节点,且采用无损结构的逐位仲裁,提高了系统的可靠性;传输速率最高可达1Mb/s,理论上网上节点个数不受限制,实际上由于总线驱动电路的能力限制,可达110个;CAN协议废除了传统的站地址编码,采用对通信数据块进行编码的方式,最多可定义211或229个不同数据块,借助接收滤波可使不同节点同时接收到相同数据,能够使星载计算机不被自身无关的数据干扰;CAN总线采用CRC检验方式,提供错误处理功能,保证数据通信的可靠性;价格相对便宜,开发简单。目前CAN总线逐步走进世界航天技术领域,并得到了很大的发展。
在星载电子领域,CAN总线主要作为一种控制总线被广泛应用,主要用于星内指令分发和各设备信息的采集,以及在轨软件注入、时间发布等。目前世界范围内使用的CAN总线技术规范主要是CAN 2.0A和CAN 2.0B,其中星上普遍使用CAN 2.0A规范,并基于CAN 2.0A定义应用层协议。
为了保证数据传输的实时性需求,CAN 2.0技术规范规定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总线处理器对待传输数据块的长度进行判断:
若待传输数据块的长度大于一个数据帧的最大长度,则组成第1个数据帧并将第1个数据帧填入CAN总线控制器缓冲区;启动CAN总线控制器数据传送流程;在CAN总线控制器传送第1个数据帧的同时,处理器并行完成对第2个数据帧的组帧,并进入数据传送过程;
若待传输数据块的长度小于数据帧长度,则将待传输数据块组成单个数据帧后填入CAN总线控制器缓冲区;启动控制器数据传送流程;完成对待传输数据块的处理。
本发明与现有技术相比具有如下优点:
本发明所述方法针对星上CAN总线数据发送,解决了数据发送的实时性要求与处理器时间利用率之间的矛盾。现有技术在查询方式下,数据传送过程能够具备较好的实时性,响应时间和数据帧间隔均比较小,但处理器时间浪费比较严重;中断方式不存在浪费处理器时间的问题,但存在响应时间或帧间隔较长的问题。而在本发明中采用处理器与处理器和CAN总线控制器的流水线的方式,既能够达到不浪费处理器时间的目的,响应时间和传送时间性能也能够接近查询模式,能够满足星上信息传送的实时性要求。
本发明方法针对星上低性能处理器与CAN总线控制器的典型硬件配置,将处理器作为第一级流水的硬件载体,CAN总线控制器作为第二级流水的硬件载体,不需要额外的硬件电路,具有通用性好的优点,能够广泛适用于各类星上计算机。
附图说明
图1为串行时序示意图;
图2为流水时序示意图;
图3为流水线填充流程图;
图4为数据传送过程流程图。
具体实施方式
下面就结合附图对本发明做进一步介绍。
本发明的CAN总线数据传送方法对CAN总线现有的中断发送(发送过程中组数据帧)方法进行改进,将图1所示的串行时序改进为图2所示的流水线时序,利用处理器和CAN总线控制器构成两级流水线对待传送的数据进行传送。从硬件电路原理上,数据组帧、数据写入缓冲区和启动发送只能由处理器完成,从CAN总线控制器发送缓冲区取数据并发到总线上的过程只能由CAN总线控制器完成。因此将处理器作为第一级流水,CAN总线控制器作为第二级流水。
处理器为流水线第一级,用于实现对流水线的构建和填充工作,按发生的时间先后顺序可分为三部分工作(1)前一个中断周期中的数据帧写入到CAN总线控制器发送缓冲区;(2)设置CAN总线控制器的相关寄存器,启动CAN总线控制器的数据传送流程;(3)按照协议继续对后续数据进行组帧,并进行校验等其它相关的计算。CAN总线控制器为流水线第二级,用于在数据传送流程完成对缓冲区中数据帧的发送工作。
如图3为本发明所述方法流程图,所示,具体过程如下:
在一个数据的传送过程中,针对待传输的数据,处理器首先按图3所示过程进行流水线的填充。
1、判断数据块长度,当数据块能够装入一个CAN数据帧时,转第2步;当数据块长度超出一个CAN总线数据帧的数据段长度时,转第6步;
2、按照CAN总线应用层通信协议,将数据块组成CAN数据帧单帧;
3、将第2步组成的数据帧写入CAN总线控制器发送缓冲区;
4、设置CAN总线控制器寄存器,启动数据发送;
5、设置发送完成标志为发送完成,结束;
6、组数据块第一帧;
7、将长数据块第一帧写入CAN总线控制器发送缓冲区;
8、设置CAN总线控制器寄存器,启动数据发送;
9、组数据块第二帧。
在上述步骤中,针对1→2→3→4→5的过程只需要处理器的一次中断即可完成对待传送数据的传送。针对1→2→6→7→8→9的过程则需要处理器首先利用第1个数据帧和第2个数据帧的组帧和传送完成对流水线的填充。在完成第2个数据帧的组帧后,处理器将发送指针移到剩余数据首地址即可以开启所述的数据传送过程。
如图4所示,在数据传送过程中,当第一帧数据发送完毕后,CAN总线控制器触发处理器的发送中断并且剩余数据量超过一帧数据帧时,进入流水线循环阶段;当剩余数据量不超过一帧数据帧时,进入流水线排空阶段。流水线循环和排空在发送中断服务程序中完成,步骤如下:
1、判断是否发送完成。如果是,直接返回;否则转第2步;
2、将第N帧数据写入CAN总线控制器发送缓冲区;
3、设置CAN总线控制器寄存器,启动数据发送;
4、判断发送指针是否为空。如果是,置发送完成标志,返回,否则转第5步;
5、判断剩余数据的数据量是否超过一帧。如果是,转第6步;否则转第8步;
6、组第N+1帧;
7、将发送指针移到剩余数据首地址,结束;
8、组数据帧最后一帧;
9、将发送指针设为空指针,结束。
上述,步骤1→2→3→4→5→6→7→结束,为流水线的循环阶段流程,步骤1→结束、步骤1→2→3→4→结束、步骤1→2→3→4→5→8→9→结束为流水线的排空过程。本发明在流水线的循环阶段即可通过分别位于流水线第一级的处理器和第二级的CAN总线控制器完成对待传输数据的传送过程。
本发明未详细说明部分属本领域技术人员公知常识。

Claims (2)

1.一种CAN总线数据传送方法,用于在数据传送过程中协调CAN总线处理器和CAN总线控制器,其特征在于:在所述数据传送过程中,CAN总线处理器在数据传送的一次中断中,首先将第N个数据帧填入CAN总线控制器的缓冲区;然后启动控制器数据传送流程;最后完成第N+1个数据帧的组帧;在CAN总线处理器进行第N+1个数据帧的组帧时,CAN总线控制器在数据传送流程中将所述缓冲区中的当前数据帧发送到CAN总线;当CAN总线控制器将所述缓冲区内的数据帧发送完成后,处理器进入下一次中断。
2.如权利要求1所述的一种CAN总线数据传送方法,其特征在于:在启动所述数据传送过程前,CAN总线处理器对待传输数据块的长度进行判断:
若待传输数据块的长度大于一个数据帧的最大长度,则组成第1个数据帧并将第1个数据帧填入CAN总线控制器缓冲区;启动CAN总线控制器数据传送流程;在CAN总线控制器传送第1个数据帧的同时,处理器并行完成对第2个数据帧的组帧,并进入数据传送过程;
若待传输数据块的长度小于数据帧长度,则将待传输数据块组成单个数据帧后填入CAN总线控制器缓冲区;启动控制器数据传送流程;完成对待传输数据块的处理。
CN201210096007.9A 2012-03-31 2012-03-31 一种can总线数据传送方法 Active CN102664779B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210096007.9A CN102664779B (zh) 2012-03-31 2012-03-31 一种can总线数据传送方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210096007.9A CN102664779B (zh) 2012-03-31 2012-03-31 一种can总线数据传送方法

Publications (2)

Publication Number Publication Date
CN102664779A CN102664779A (zh) 2012-09-12
CN102664779B true CN102664779B (zh) 2015-07-08

Family

ID=46774198

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210096007.9A Active CN102664779B (zh) 2012-03-31 2012-03-31 一种can总线数据传送方法

Country Status (1)

Country Link
CN (1) CN102664779B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103281214B (zh) * 2013-04-25 2016-03-30 航天东方红卫星有限公司 一种基于单片机的星上can总线监视系统
EP2800316A1 (en) * 2013-05-01 2014-11-05 Renesas Electronics Europe GmbH Can fd
CN105045224B (zh) * 2015-05-29 2017-10-03 珠海格力电器股份有限公司 数据传输的方法和装置
KR102335649B1 (ko) * 2015-06-09 2021-12-03 한화테크윈 주식회사 데이터 처리 장치 및 방법
CN106533976B (zh) * 2016-11-07 2019-12-06 深圳怡化电脑股份有限公司 一种数据包处理方法及装置
CN106649184B (zh) * 2016-11-28 2019-06-18 北京遥测技术研究所 适用于星载电子设备的异步通信串口指令快速应答方法
CN112596492A (zh) * 2020-11-30 2021-04-02 北京东土军悦科技有限公司 一种can帧传输方法、装置、设备及介质
CN114448744B (zh) * 2022-01-28 2024-05-03 航天科工火箭技术有限公司 复用标识号的can数据解析方法、装置、设备及介质
CN115225422B (zh) * 2022-06-30 2023-10-03 际络科技(上海)有限公司 车辆can总线数据采集方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101282301B (zh) * 2008-05-12 2011-01-12 北京邮电大学 双冗余can总线控制器及其报文处理方法
CN101599004B (zh) * 2009-07-10 2010-12-08 中国科学院光电技术研究所 基于fpga的sata控制器
CN102355394B (zh) * 2011-07-21 2014-12-10 大唐移动通信设备有限公司 针对多路can总线进行数据传输控制的方法及装置

Also Published As

Publication number Publication date
CN102664779A (zh) 2012-09-12

Similar Documents

Publication Publication Date Title
CN102664779B (zh) 一种can总线数据传送方法
CN107276711B (zh) EtherCAT主站装置
CN202870808U (zh) 一种spi串口模块的fpga实现装置
CN105959288A (zh) 一种电力电网系统中的网络协议转换及其相互通讯方法
CN102811152B (zh) 一种多主总线网络通讯实时交易数据交换实现方法
CN103595598A (zh) 一种基于光纤的远程透明传输串口服务器及其控制模式
CN102291337B (zh) EtherCAT协议与Profibus-DP协议通信转换的网关及其通信方法
CN106873541A (zh) 一种基于DSP的EtherCAT分布式伺服运动控制系统
CN103036878A (zh) 一种用于网络协议转换的设备及方法
CN103067201B (zh) 一种多协议通讯管理机
US20220114132A1 (en) Data Switch Chip and Server
CN107436851A (zh) 串行外设接口四线隔离系统及其控制方法
CN105791025A (zh) 一种汽车网络通讯系统正向设计方法
CN105718396B (zh) 一种大数据主设备传输的i2c总线装置及其通讯方法
CN115114202A (zh) 基于光纤通信接口扩展的嵌入式web服务器
CN111666238A (zh) 数据传输装置及方法
CN106649184A (zh) 适用于星载电子设备的异步通信串口指令快速应答方法
CN204597988U (zh) 基于pci接口的afdx终端测试设备
CN103149909A (zh) 基于fpga的can仿真节点系统
CN103049409B (zh) 一种单向高速数据传输的控制方法
CN103106174A (zh) 一种复杂soc的片上通信方法
CN206629078U (zh) 一种EtherCAT总线耦合器
CN101464844A (zh) 一种ram使用权的控制方法及总线接口
CN106781392A (zh) 一种基于双向http服务的数据采集及其采集系统与采集方法
CN202353595U (zh) 一种EtherCAT与RS485通信转换的网关

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant