CN104035901B - 一种ttcan总线对时及发送数据的方法 - Google Patents
一种ttcan总线对时及发送数据的方法 Download PDFInfo
- Publication number
- CN104035901B CN104035901B CN201410283192.1A CN201410283192A CN104035901B CN 104035901 B CN104035901 B CN 104035901B CN 201410283192 A CN201410283192 A CN 201410283192A CN 104035901 B CN104035901 B CN 104035901B
- Authority
- CN
- China
- Prior art keywords
- time
- intervalometer
- bus
- node
- cycle
- 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
Links
Landscapes
- Small-Scale Networks (AREA)
Abstract
本发明属于信息通讯技术领域,具体涉及一种TTCAN总线对时及发送数据的方法。本发明技术方案所提供的方法应用于TTCAN总线时间从节点接收时间主节点定时消息,并在矩阵周期内定时发送消息的过程中,可合理分配系统工作时间,实现总线节点准确对时和在规定时间片内周期发送总线数据,在空闲时间片内完成系统其它功能。本发明采用单片机或DSP内部中断优先级较高的定时器T0中断,因此在该中断执行时不会被其它低优先级的中断打断而使总线定时时间产生误差,并且仅在T0中断过程中完成总线对时和按照矩阵周期发送总线数据功能,同时实现在空闲时间片内完成系统的其它功能。减少中断个数,避免中断嵌套较多而产生的系统逻辑混乱。
Description
技术领域
本发明属于信息通讯技术领域,具体涉及一种TTCAN总线对时及发送数据的方法。
背景技术
自20世纪80年代德国BOSCH公司发明CAN总线技术以来,CAN总线作为一种网络通讯控制方式,广泛应用在汽车、航空、工业控制、自动控制等领域。随着分布在通信网络中的节点逐渐增多,总线的优先级仲裁机制导致的通信延迟时间增大,为解决总线通信的实时性要求,国际标准ISO 11898-4在CAN协议栈的会话层中提出了一种利用时间触发的通信协议TTCAN。在TTCAN通信网络中,时间主节点周期性的发送定时消息,其它时间从节点接收定时消息作为时钟同步信号,使本地时钟与时间主节点的时钟同步,每个节点都有一个消息调度表称为矩阵周期,该表指明了此节点发送或接收某个特定消息的时刻,矩阵周期又可分为多个基本周期,基本周期再由一系列最小固定时间片组成,总线上的消息交换就在这个时间片内完成。因此相对传统的CAN协议,TTCAN具有实时性高、可靠性好,数据量大,避免总线拥塞,大大提高网络利用率等特点。
在工业领域,尤其是汽车行业,TTCAN总线节点的硬件实现一般以单片机或DSP为核心,配合CAN总线控制器,设计双冗余通道(A通道和B通道)完成。单片机和DSP都具有外部时钟信号,内部有定时器可产生精确的定时中断,并且中断优先级较高。目前普遍采用的定时方式是在接收到主节点定时消息后,设置一个专用定时器时钟产生定时中断对时,而单片机或DSP除了处理对时和周期发送数据,内部还要处理接收数据,准备发送数据,以及其它计算,外部还会有其它接口的信号采集和发送等。若CAN总线的双冗余通道A通道和B通道对时分别需要占用一个专用定时中断,接收CAN总线数据也会产生中断,加之程序中实现其他功能需要定时,则程序中产生的中断较多,程序会在未知的情况被打断,在多重中断嵌套下会导致定时不准,严重会使程序逻辑混乱。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何避免TTCAN总线中断嵌套较多而产生的系统逻辑混乱。
(二)技术方案
为解决上述技术问题,本发明提供一种TTCAN总线对时及发送数据的方法,该方法基于TTCAN总线对时及发送数据系统来实施,该系统以单片机或DSP为核心,配合CAN总线通信模块的嵌入式系统,有外部时钟信号,内部可产生精确的定时中断;该系统具体包括:中断控制器、CAN总线收发器、定时器;
具体而言,上述方法具体包括如下步骤:
步骤S1:预设定CAN总线网络的总线波特率,确定最小时间间隔,即一个时间片时间,由多个分别定义有序号的时间片构成一个基本周期,再由基本周期确定矩阵周期;同时,确定各个时间从节点各自发送时间所在的时间片序号或时间片序号组;
步骤S2:关闭所有中断,配置时间从节点的中断控制器、初始化时间从节点的CAN总线收发器;
步骤S3:定时器选用中断优先级最高的T0定时器,对T0定时器初始化,将T0定时周期T设定为TTCAN总线的一个时间片时间,根据外部时钟频率及内部分频方式计算第一中断计数值,将该第一中断计数值装载到T0定时器的计数寄存器;
步骤S4:启动CAN总线收发器,根据CAN总线的总线波特率和接收到的时间主节点定时数据帧长度来计算接收定时数据时间T1,获得接收定时数据时间T1与T0定时器定时周期T之间的时间差T-T1,根据外部时钟频率及内部分频方式计算第二中断计数值;
步骤S5:计算完成一个矩阵周期内,需要进入T0定时器定时中断的次数N;其中,N=一个矩阵周期/一个时间片;
步骤S6:定义当前进入T0定时器的中断累计次数为NS,将其初始化为0;定义成功接收时间主节点的定时消息的状态值RCT,将其值定义为:成功接收信息时,其值设为1,未接收信息时,其值设为0;将该状态值RCT初始化为0;
步骤S7:开启中断,中断控制器启动T0定时器;
步骤S8:判断是否进入T0定时器中断;若是,则转入步骤S9;若否,则判断是否接收到定时消息;当判断为接收到定时消息时,将步骤S4的第二中断计数值装载到T0定时器的计数寄存器;设置NS=0;设置RCT=1,表示接收到定时消息,然后重新执行步骤S8;当判断为没有接收到定时消息时,则重新执行步骤S8;
步骤S9:每进入一次定时器T0中断,中断累计次数NS数值加1;
步骤S10:根据中断累计次数NS的当前数值,判断当前时间从节点发送数据的时间片序号是否与步骤S1中确定的该时间从节点发送时间所在的时间片序号相一致,或属于步骤S1中确定的该时间从节点发送时间所在的时间片序号组;若判断结果为相一致或属于,则进入步骤S11;若判断结果为不一致或不属于,则进入步骤S12;
步骤S11:判断RCT是否为1,若为1,则发送总线数据;不为1,则不处理,转至步骤S13;
步骤S12:判断当前时间片为空闲时间片,转为执行其它数据计算或处理其它接口数据,然后转至步骤S13;
步骤S13:判断NS值是否达到N,若是,则重置NS=0,RCT=0,一个矩阵周期结束,回到步骤S8;若否,则直接回到步骤S8。
(三)有益效果
本发明技术方案所提供的方法应用于TTCAN总线时间从节点接收时间主节点定时消息,并在矩阵周期内定时发送消息的过程中,可合理分配系统工作时间,实现总线节点准确对时和在规定时间片内周期发送总线数据,在空闲时间片内完成系统其它功能。
本发明采用单片机或DSP内部中断优先级较高的定时器T0中断,因此在该中断执行时不会被其它低优先级的中断打断而使总线定时时间产生误差,并且仅在T0中断过程中完成总线对时和按照矩阵周期发送总线数据功能,同时实现在空闲时间片内完成系统的其它功能。减少中断个数,避免中断嵌套较多而产生的系统逻辑混乱。
附图说明
图1为本发明实施例的对时和发送数据方法流程图。
图2为某车辆TTCAN总线的矩阵周期图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
本发明使用DSP或单片机中断优先级最高的定时器T0,根据TTCAN总线协议基本周期上的最小时间间隔,即一个时间片为定时器T0的初始定时周期T,在接收到总线时间主节点发送的定时消息后,根据波特率和数据帧长度计算接收主节点发送的对时数据帧产生的时间T1,T-T1为当前一次定时器T0产生中断的时间,之后的T0定时器时间,恢复初始定时周期T。一个矩阵周期发送数据完成,只需要T0产生中断次数N,N=(一个矩阵周期时间)/(一个时间片时间)。这样,循环T0产生的中断N次,即可完成对时和一个矩阵周期内数据的发送。同时在空闲时间片,还可以处理系统需要实现的其它功能。
具体而言,为解决现有技术的问题,本发明提供一种TTCAN总线对时及发送数据的方法,参照图1,该方法基于TTCAN总线对时及发送数据系统来实施,该系统以单片机或DSP为核心,配合CAN总线通信模块的嵌入式系统,有外部时钟信号,内部可产生精确的定时中断;该系统具体包括:中断控制器、CAN总线收发器、定时器;
具体而言,上述方法具体包括如下步骤:
步骤S1:预设定CAN总线网络的总线波特率,确定最小时间间隔,即一个时间片时间,由多个分别定义有序号的时间片构成一个基本周期,再由基本周期确定矩阵周期;同时,确定各个时间从节点各自发送时间所在的时间片序号或时间片序号组;
步骤S2:关闭所有中断,配置时间从节点的中断控制器、初始化时间从节点的CAN总线收发器;
步骤S3:定时器选用中断优先级最高的T0定时器,对T0定时器初始化,将T0定时周期T设定为TTCAN总线的一个时间片时间,根据外部时钟频率及内部分频方式计算第一中断计数值,将该第一中断计数值装载到T0定时器的计数寄存器;
步骤S4:启动CAN总线收发器,根据CAN总线的总线波特率和接收到的时间主节点定时数据帧长度来计算接收定时数据时间T1,获得接收定时数据时间T1与T0定时器定时周期T之间的时间差T-T1,根据外部时钟频率及内部分频方式计算第二中断计数值;
步骤S5:计算完成一个矩阵周期内,需要进入T0定时器定时中断的次数N;其中,N=一个矩阵周期/一个时间片;
步骤S6:定义当前进入T0定时器的中断累计次数为NS,将其初始化为0;定义成功接收时间主节点的定时消息的状态值RCT,将其值定义为:成功接收信息时,其值设为1,未接收信息时,其值设为0;将该状态值RCT初始化为0;
步骤S7:开启中断,中断控制器启动T0定时器;
步骤S8:判断是否进入T0定时器中断;若是,则转入步骤S9;若否,则判断是否接收到定时消息;当判断为接收到定时消息时,将步骤S4的第二中断计数值装载到T0定时器的计数寄存器;设置NS=0;设置RCT=1,表示接收到定时消息,然后重新执行步骤S8;当判断为没有接收到定时消息时,则重新执行步骤S8;
步骤S9:每进入一次定时器T0中断,中断累计次数NS数值加1;
步骤S10:根据中断累计次数NS的当前数值,判断当前时间从节点发送数据的时间片序号是否与步骤S1中确定的该时间从节点发送时间所在的时间片序号相一致,或属于步骤S1中确定的该时间从节点发送时间所在的时间片序号组;若判断结果为相一致或属于,则进入步骤S11;若判断结果为不一致或不属于,则进入步骤S12;
步骤S11:判断RCT是否为1,若为1,则发送总线数据;不为1,则不处理,转至步骤S13;
步骤S12:判断当前时间片为空闲时间片,转为执行其它数据计算或处理其它接口数据,然后转至步骤S13;
步骤S13:判断NS值是否达到N,若是,则重置NS=0,RCT=0,一个矩阵周期结束,回到步骤S8;若否,则直接回到步骤S8。
下面结合具体实施例来详细描述。
实施例
本实施例提供一种应用在某车辆上的TTCAN总线的矩阵周期如图2所示,CAN总线的波特率为1M,6字节的标准帧数据格式。一个时间片占用175us,一个基本周期由8个时间片组成,一个矩阵周期由5个基本周期组成,则一个矩阵周期占用的时间为7ms。时间主节点为ECU1,当前时间从节点为ECU2。该节点的控制核心为DSPTMS320LF28335,内部时钟150M。T0寄存器初始化定时周期为T=175us。计算接收时间主节点ECU1的对时消息需要占用T1=110us的时间。则T-T1=65us,N=7ms/175us=40。
如图1所示,本实施例的工作过程如下:
1、初始化DSP系统控制;
2、关闭所有中断;
3、配置DSP中断T0和Receive_can;按照TTCAN总线协议初始化CAN控制器;
4、初始化T0定时器,将175us设定为T0定时器的初始定时周期;
5、初始化程序变量,其中进入T0中断次数NS=0,成功接收定时消息变量Receive_Can_Timer=0;
6、打开中断;
7、若接收到ECU1的定时消息,将65us设定为当前一次定时器T0的定时周期,其它次定时器T0的定时周期仍为初始定时周期;设置NS=0;设置Receive_Can_Timer=1,表示接收到定时消息;
8、每次进入定时器T0中断,NS加1;
9、ECU2发送数据的时刻分别为NS=2,10,18,26,34时。
10、若为发送数据时刻,判断Receive_Can_Timer是否为1,若为1,则发送ECU2数据;不为1,则不处理;
11、若不是发送数据时刻,在其它的剩余时间片内,处理程序需要完成的其它功能。
12、判断当NS等于40时,则NS=0,Receive_Can_Timer=0,一个矩阵周期结束。
其中,系统中如果需要其它定时时间TT,可计算NT=TT/T,再由每次进入T0中断后NT加1来计算。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (1)
1.一种TTCAN总线对时及发送数据的方法,其特征在于,该方法基于TTCAN总线对时及发送数据系统来实施,该系统以单片机或DSP为核心,配合CAN总线通信模块的嵌入式系统,有外部时钟信号,内部可产生精确的定时中断;该系统具体包括:中断控制器、CAN总线收发器、定时器;
具体而言,上述方法具体包括如下步骤:
步骤S1:预设定CAN总线网络的总线波特率,确定最小时间间隔,即一个时间片时间,由多个分别定义有序号的时间片构成一个基本周期,再由基本周期确定矩阵周期;同时,确定各个时间从节点各自发送时间所在的时间片序号或时间片序号组;
步骤S2:关闭所有中断,配置时间从节点的中断控制器、初始化时间从节点的CAN总线收发器;
步骤S3:定时器选用中断优先级最高的T0定时器,对T0定时器初始化,将T0实时器定时周期T设定为TTCAN总线的一个时间片时间,根据外部时钟频率及内部分频方式计算第一中断计数值,将该第一中断计数值装载到T0定时器的计数寄存器;
步骤S4:启动CAN总线收发器,根据CAN总线网络的总线波特率和接收到的时间主节点定时数据帧长度来计算接收定时数据时间T1,获得接收定时数据时间T1与T0定时器定时周期T之间的时间差T-T1,根据外部时钟频率及内部分频方式计算第二中断计数值;
步骤S5:计算完成一个矩阵周期内,需要进入T0定时器定时中断的次数N;其中,N=一个矩阵周期/一个时间片;
步骤S6:定义当前进入T0定时器的中断累计次数为NS,将其初始化为0;定义成功接收时间主节点的定时消息的状态值RCT,将其值定义为:成功接收信息时,其值设为1,未接收信息时,其值设为0;将该状态值RCT初始化为0;
步骤S7:开启中断,中断控制器启动T0定时器;
步骤S8:判断是否进入T0定时器中断;若是,则转入步骤S9;若否,则判断是否接收到定时消息;当判断为接收到定时消息时,将步骤S4的第二中断计数值装载到T0定时器的计数寄存器;设置NS=0;设置RCT=1,表示接收到定时消息,然后重新执行步骤S8;当判断为没有接收到定时消息时,则重新执行步骤S8;
步骤S9:每进入一次T0定时器中断,中断累计次数NS数值加1;
步骤S10:根据中断累计次数NS的当前数值,判断当前时间从节点发送数据的时间片序号是否与步骤S1中确定的该时间从节点发送时间所在的时间片序号相一致,或属于步骤S1中确定的该时间从节点发送时间所在的时间片序号组;若判断结果为相一致或属于,则进入步骤S11;若判断结果为不一致或不属于,则进入步骤S12;
步骤S11:判断RCT是否为1,若为1,则发送从节点总线数据;不为1,则不处理,转至步骤S13;
步骤S12:判断当前时间片为空闲时间片,转为执行其它数据计算或处理其它接口数据,然后转至步骤S13;
步骤S13:判断NS值是否达到N,若是,则重置NS=0,RCT=0,一个矩阵周期结束,回到步骤S8;若否,则直接回到步骤S8。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410283192.1A CN104035901B (zh) | 2014-06-23 | 2014-06-23 | 一种ttcan总线对时及发送数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410283192.1A CN104035901B (zh) | 2014-06-23 | 2014-06-23 | 一种ttcan总线对时及发送数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104035901A CN104035901A (zh) | 2014-09-10 |
CN104035901B true CN104035901B (zh) | 2016-09-14 |
Family
ID=51466672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410283192.1A Active CN104035901B (zh) | 2014-06-23 | 2014-06-23 | 一种ttcan总线对时及发送数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104035901B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107258076B (zh) * | 2015-02-26 | 2020-12-25 | 西门子公司 | 通信网络中的数据传输 |
CN107786402B (zh) * | 2016-08-31 | 2024-01-19 | 北京昱连科技有限公司 | Ttcan控制通讯模块和车辆的ttcan控制通讯系统 |
CN109522001A (zh) * | 2018-10-20 | 2019-03-26 | 中国航空工业集团公司洛阳电光设备研究所 | 一种gjb289a数据总线的总线控制器bc事件消息可靠发送的方法 |
CN109470244A (zh) * | 2018-12-21 | 2019-03-15 | 中国船舶重工集团公司第七0七研究所 | 基于fpga的光纤捷联惯导多信息同步采集系统及方法 |
CN110519140A (zh) * | 2019-08-21 | 2019-11-29 | 延锋伟世通电子科技(南京)有限公司 | 基于时间片分配的can信号发送算法 |
CN112367634B (zh) * | 2020-11-10 | 2022-12-13 | 上海汽车集团股份有限公司 | 报文发送方法及装置 |
CN114185267B (zh) * | 2021-12-07 | 2024-02-02 | 中国兵器工业集团第二一四研究所苏州研发中心 | 一种延时电路参数配置方法及系统 |
CN114363107B (zh) * | 2021-12-29 | 2024-05-07 | 上海联影医疗科技股份有限公司 | 一种控制器局域网总线的分时调度方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101056242A (zh) * | 2007-06-01 | 2007-10-17 | 清华大学 | 一种车用ttcan通讯网络的仿真方法 |
CN101420350A (zh) * | 2009-01-14 | 2009-04-29 | 中国科学院电工研究所 | Ttcan总线网络时间主节点故障容错方法 |
CN202652274U (zh) * | 2012-06-29 | 2013-01-02 | 山东鲁能智能技术有限公司 | 基于ttcan总线的车载监控终端 |
CN103109478A (zh) * | 2010-09-24 | 2013-05-15 | 罗伯特·博世有限公司 | 用于在事件控制的总线通信中提供全局时间信息的装置和方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7761719B2 (en) * | 2005-03-28 | 2010-07-20 | Akros Silicon Inc. | Ethernet module |
WO2008053277A1 (en) * | 2006-10-31 | 2008-05-08 | Freescale Semiconductor, Inc. | Network and method for setting a time-base of a node in the network |
-
2014
- 2014-06-23 CN CN201410283192.1A patent/CN104035901B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101056242A (zh) * | 2007-06-01 | 2007-10-17 | 清华大学 | 一种车用ttcan通讯网络的仿真方法 |
CN101420350A (zh) * | 2009-01-14 | 2009-04-29 | 中国科学院电工研究所 | Ttcan总线网络时间主节点故障容错方法 |
CN103109478A (zh) * | 2010-09-24 | 2013-05-15 | 罗伯特·博世有限公司 | 用于在事件控制的总线通信中提供全局时间信息的装置和方法 |
CN202652274U (zh) * | 2012-06-29 | 2013-01-02 | 山东鲁能智能技术有限公司 | 基于ttcan总线的车载监控终端 |
Also Published As
Publication number | Publication date |
---|---|
CN104035901A (zh) | 2014-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104035901B (zh) | 一种ttcan总线对时及发送数据的方法 | |
CN102546843B (zh) | 一种通过软件模拟实现多个uart通信接口的方法 | |
CN100496048C (zh) | 多主通信系统 | |
CN103197966B (zh) | 半导体数据处理设备,时间触发通信系统以及通信系统 | |
WO2014056323A1 (zh) | 一种采用串行通信接口的同步时分多路复用总线通信方法 | |
CN102032927B (zh) | 一种检测can总线汽车仪表灵敏度的测试系统及方法 | |
KR20140140509A (ko) | 제네릭 인터페이스를 제공하기 위한 방법 및 제네릭 인터페이스를 구비한 마이크로컨트롤러 | |
CN102811152B (zh) | 一种多主总线网络通讯实时交易数据交换实现方法 | |
CN102033141A (zh) | 一种基于can总线汽车仪表的测试系统及方法 | |
CN106027510A (zh) | 工业以太网的通信网络的动态重构方法及系统 | |
CN102722462A (zh) | 一种同步通信装置及其控制方法 | |
CN104461972A (zh) | 一种数据信号采样的方法和设备 | |
CN107748509A (zh) | 基于单片机收发控制的asi通信从机实施方法 | |
CN107402534A (zh) | 调节方法、EtherCAT主站及计算机可读存储介质 | |
CN102033541B (zh) | 一种can总线汽车仪表的测试系统及其测试方法 | |
CN109543811B (zh) | 一种计数电路、计数方法及芯片 | |
CN106352911B (zh) | 实现多路低频变送信号采集的单中断cpu检定系统及检定采集方法 | |
CN103577378A (zh) | 一种全双工异步串行通信方法 | |
CN103077144A (zh) | 一种确保数据完整的spi通讯接口及其通讯方法 | |
CN104348468B (zh) | 一种脉宽自适应单总线接收器 | |
CN104243189B (zh) | 一种基于同一信道的多设备通信方法及其通信系统 | |
US20150193292A1 (en) | Microcontroller device and controlling method performed therein | |
CN109617801A (zh) | 一种大力矩飞轮双路冗余can总线可靠通信方法和装置 | |
CN104615573A (zh) | 一种通信方法及装置 | |
CN210780847U (zh) | 一种EtherCAT总线时钟分布系统 |
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 |