一种ttcan总线对时及发送数据的方法

文档序号:6550543阅读:320来源:国知局
一种ttcan总线对时及发送数据的方法
【专利摘要】本发明属于信息通讯【技术领域】,具体涉及一种TTCAN总线对时及发送数据的方法。本发明技术方案所提供的方法应用于TTCAN总线时间从节点接收时间主节点定时消息,并在矩阵周期内定时发送消息的过程中,可合理分配系统工作时间,实现总线节点准确对时和在规定时间片内周期发送总线数据,在空闲时间片内完成系统其它功能。本发明采用单片机或DSP内部中断优先级较高的定时器T0中断,因此在该中断执行时不会被其它低优先级的中断打断而使总线定时时间产生误差,并且仅在T0中断过程中完成总线对时和按照矩阵周期发送总线数据功能,同时实现在空闲时间片内完成系统的其它功能。减少中断个数,避免中断嵌套较多而产生的系统逻辑混乱。
【专利说明】—种TTCAN总线对时及发送数据的方法
【技术领域】
[0001]本发明属于信息通讯【技术领域】,具体涉及一种TTCAN总线对时及发送数据的方法。
【背景技术】
[0002]自20世纪80年代德国BOSCH公司发明CAN总线技术以来,CAN总线作为一种网络通讯控制方式,广泛应用在汽车、航空、工业控制、自动控制等领域。随着分布在通信网络中的节点逐渐增多,总线的优先级仲裁机制导致的通信延迟时间增大,为解决总线通信的实时性要求,国际标准ISO 11898-4在CAN协议栈的会话层中提出了一种利用时间触发的通信协议TTCAN。在TTCAN通信网络中,时间主节点周期性的发送定时消息,其它时间从节点接收定时消息作为时钟同步信号,使本地时钟与时间主节点的时钟同步,每个节点都有一个消息调度表称为矩阵周期,该表指明了此节点发送或接收某个特定消息的时刻,矩阵周期又可分为多个基本周期,基本周期再由一系列最小固定时间片组成,总线上的消息交换就在这个时间片内完成。因此相对传统的CAN协议,TTCAN具有实时性高、可靠性好,数据量大,避免总线拥塞,大大提高网络利用率等特点。
[0003]在工业领域,尤其是汽车行业,TTCAN总线节点的硬件实现一般以单片机或DSP为核心,配合CAN总线控制器,设计双冗余通道(A通道和B通道)完成。单片机和DSP都具有外部时钟信号,内部有定时器可产生精确的定时中断,并且中断优先级较高。目前普遍采用的定时方式是在接收到主节点定时消息后,设置一个专用定时器时钟产生定时中断对时,而单片机或DSP除了处理对时和周期发送数据,内部还要处理接收数据,准备发送数据,以及其它计算,外部还会有其它接口的信号采集和发送等。若CAN总线的双冗余通道A通道和B通道对时分别需要占用一个专用定时中断,接收CAN总线数据也会产生中断,加之程序中实现其他功能需要定时,则程序中产生的中断较多,程序会在未知的情况被打断,在多重中断嵌套下会导致定时不准,严重会使程序逻辑混乱。

【发明内容】

[0004](一 )要解决的技术问题
[0005]本发明要解决的技术问题是:如何避免TTCAN总线中断嵌套较多而产生的系统逻辑混乱。
[0006]( 二 )技术方案
[0007]为解决上述技术问题,本发明提供一种TTCAN总线对时及发送数据的方法,该方法基于TTCAN总线对时及发送数据系统来实施,该系统以单片机或DSP为核心,配合CAN总线通信模块的嵌入式系统,有外部时钟信号,内部可产生精确的定时中断;该系统具体包括:中断控制器、CAN总线收发器、定时器;
[0008]具体而言,上述方法具体包括如下步骤:
[0009]步骤S1:预设定CAN总线网络的总线波特率,确定最小时间间隔,即一个时间片时间,由多个分别定义有序号的时间片构成一个基本周期,再由基本周期确定矩阵周期;同时,确定各个时间从节点各自发送时间所在的时间片序号或时间片序号组;
[0010]步骤S2:关闭所有中断,配置时间从节点的中断控制器、初始化时间从节点的CAN总线收发器;
[0011]步骤S3:定时器选用中断优先级最高的TO定时器,对TO定时器初始化,将TO定时周期T设定为TTCAN总线的一个时间片时间,根据外部时钟频率及内部分频方式计算第一中断计数值,将该第一中断计数值装载到TO定时器的计数寄存器;
[0012]步骤S4:启动CAN总线收发器,根据CAN总线的总线波特率和接收到的时间主节点定时数据帧长度来计算接收定时数据时间Tl,获得接收定时数据时间Tl与TO定时器定时周期T之间的时间差T-T1,根据外部时钟频率及内部分频方式计算第二中断计数值;
[0013]步骤S5:计算完成一个矩阵周期内,需要进入TO定时器定时中断的次数N ;其中,N=一个矩阵周期/一个时间片;
[0014]步骤S6:定义当前进入TO定时器的中断累计次数为Ns,将其初始化为O ;定义成功接收时间主节点的定时消息的状态值Rct,将其值定义为:成功接收信息时,其值设为1,未接收信息时,其值设为O ;将该状态值Rct初始化为O ;
[0015]步骤S7:开启中断,中断控制器启动TO定时器;
[0016]步骤S8:判断是否进入TO定时器中断;若是,则转入步骤S9 ;若否,则判断是否接收到定时消息;当判断为接收到定时消息时,将步骤S4的第二中断计数值装载到TO定时器的计数寄存器;设置Ns = O ;设置Rct = 1,表示接收到定时消息,然后重新执行步骤S8 ;当判断为没有接收到定时消息时,则重新执行步骤S8 ;
[0017]步骤S9:每进入一次定时器TO中断,中断累计次数Ns数值加I ;
[0018]步骤SlO:根据中断累计次数Ns的当前数值,判断当前时间从节点发送数据的时间片序号是否与步骤Si中确定的该时间从节点发送时间所在的时间片序号相一致,或属于步骤Si中确定的该时间从节点发送时间所在的时间片序号组;若判断结果为相一致或属于,则进入步骤Sll ;若判断结果为不一致或不属于,则进入步骤S12 ;
[0019]步骤Sll:判断Rct是否为1,若为1,则发送总线数据;不为1,则不处理,转至步骤S13 ;
[0020]步骤S12:判断当前时间片为空闲时间片,转为执行其它数据计算或处理其它接口数据,然后转至步骤S13;
[0021]步骤S13:判断Ns值是否达到N,若是,则重置Ns = O, Rct = 0,一个矩阵周期结束,回到步骤S8 ;若否,则直接回到步骤S8。
[0022](三)有益效果
[0023]本发明技术方案所提供的方法应用于TTCAN总线时间从节点接收时间主节点定时消息,并在矩阵周期内定时发送消息的过程中,可合理分配系统工作时间,实现总线节点准确对时和在规定时间片内周期发送总线数据,在空闲时间片内完成系统其它功能。
[0024]本发明采用单片机或DSP内部中断优先级较高的定时器TO中断,因此在该中断执行时不会被其它低优先级的中断打断而使总线定时时间产生误差,并且仅在TO中断过程中完成总线对时和按照矩阵周期发送总线数据功能,同时实现在空闲时间片内完成系统的其它功能。减少中断个数,避免中断嵌套较多而产生的系统逻辑混乱。【专利附图】

【附图说明】
[0025]图1为本发明实施例的对时和发送数据方法流程图。
[0026]图2为某车辆TTCAN总线的矩阵周期图。
【具体实施方式】
[0027]为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的【具体实施方式】作进一步详细描述。
[0028]本发明使用DSP或单片机中断优先级最高的定时器T0,根据TTCAN总线协议基本周期上的最小时间间隔,即一个时间片为定时器TO的初始定时周期T,在接收到总线时间主节点发送的定时消息后,根据波特率和数据帧长度计算接收主节点发送的对时数据帧产生的时间TI,T-TI为当前一次定时器TO产生中断的时间,之后的TO定时器时间,恢复初始定时周期T。一个矩阵周期发送数据完成,只需要TO产生中断次数N,N=(—个矩阵周期时间)/( 一个时间片时间)。这样,循环TO产生的中断N次,即可完成对时和一个矩阵周期内数据的发送。同时在空闲时间片,还可以处理系统需要实现的其它功能。
[0029]具体而言,为解决现有技术的问题,本发明提供一种TTCAN总线对时及发送数据的方法,参照图1,该方法基于TTCAN总线对时及发送数据系统来实施,该系统以单片机或DSP为核心,配合CAN总线通信模块的嵌入式系统,有外部时钟信号,内部可产生精确的定时中断;该系统具体包括:中断控制器、CAN总线收发器、定时器;
[0030]具体而言,上述方法具体包括如下步骤:
[0031]步骤S1:预设定CAN总线网络的总线波特率,确定最小时间间隔,即一个时间片时间,由多个分别定义有序号的时间片构成一个基本周期,再由基本周期确定矩阵周期;同时,确定各个时间从节点各自发送时间所在的时间片序号或时间片序号组;
[0032]步骤S2:关闭所有中断,配置时间从节点的中断控制器、初始化时间从节点的CAN总线收发器;
[0033]步骤S3:定时器选用中断优先级最高的TO定时器,对TO定时器初始化,将TO定时周期T设定为TTCAN总线的一个时间片时间,根据外部时钟频率及内部分频方式计算第一中断计数值,将该第一中断计数值装载到TO定时器的计数寄存器;
[0034]步骤S4:启动CAN总线收发器,根据CAN总线的总线波特率和接收到的时间主节点定时数据帧长度来计算接收定时数据时间Tl,获得接收定时数据时间Tl与TO定时器定时周期T之间的时间差T-T1,根据外部时钟频率及内部分频方式计算第二中断计数值;
[0035]步骤S5:计算完成一个矩阵周期内,需要进入TO定时器定时中断的次数N ;其中,N=一个矩阵周期/一个时间片;
[0036]步骤S6:定义当前进入TO定时器的中断累计次数为Ns,将其初始化为O ;定义成功接收时间主节点的定时消息的状态值Rct,将其值定义为:成功接收信息时,其值设为1,未接收信息时,其值设为O ;将该状态值Rct初始化为O ;
[0037]步骤S7:开启中断,中断控制器启动TO定时器;
[0038]步骤S8:判断是否进入TO定时器中断;若是,则转入步骤S9 ;若否,则判断是否接收到定时消息;当判断为接收到定时消息时,将步骤S4的第二中断计数值装载到TO定时器的计数寄存器;设置Ns = O ;设置Rct = 1,表示接收到定时消息,然后重新执行步骤S8 ;当判断为没有接收到定时消息时,则重新执行步骤S8 ;
[0039]步骤S9:每进入一次定时器TO中断,中断累计次数Ns数值加I ;
[0040]步骤SlO:根据中断累计次数Ns的当前数值,判断当前时间从节点发送数据的时间片序号是否与步骤Si中确定的该时间从节点发送时间所在的时间片序号相一致,或属于步骤Si中确定的该时间从节点发送时间所在的时间片序号组;若判断结果为相一致或属于,则进入步骤Sll ;若判断结果为不一致或不属于,则进入步骤S12 ;
[0041]步骤Sll:判断Rct是否为1,若为1,则发送总线数据;不为1,则不处理,转至步骤S13 ;
[0042]步骤S12:判断当前时间片为空闲时间片,转为执行其它数据计算或处理其它接口数据,然后转至步骤S13;
[0043]步骤S13:判断Ns值是否达到N,若是,则重置Ns = O, Rct = 0,一个矩阵周期结束,回到步骤S8 ;若否,则直接回到步骤S8。
[0044]下面结合具体实施例来详细描述。
[0045]实施例
[0046]本实施例提供一种应用在某车辆上的TTCAN总线的矩阵周期如图2所示,CAN总线的波特率为1M,6字节的标准帧数据格式。一个时间片占用175us,一个基本周期由8个时间片组成,一个矩阵周期由5个基本周期组成,则一个矩阵周期占用的时间为7ms。时间主节点为E⑶1,当前时间从节点为E⑶2。该节点的控制核心为DSPTMS320LF28335,内部时钟150M。TO寄存器初始化定时周期为T = 175us。计算接收时间主节点E⑶I的对时消息需要占用 Tl = IlOus 的时间。则 T-T1 = 65us, N = 7ms/175us = 40。
[0047]如图1所示,本实施例的工作过程如下:
[0048]1、初始化DSP系统控制;
[0049]2、关闭所有中断;
[0050]3、配置DSP中断TO和Receive_can ;按照TTCAN总线协议初始化CAN控制器;
[0051]4、初始化TO定时器,将175us设定为TO定时器的初始定时周期;
[0052]5、初始化程序变量,其中进入TO中断次数队=0,成功接收定时消息变量Receive_Can_T imer = O ;
[0053]6、打开中断;
[0054]7、若接收到ECUl的定时消息,将65us设定为当前一次定时器TO的定时周期,其它次定时器TO的定时周期仍为初始定时周期;设置Ns = O ;设置Receive_Can_Timer = 1,表示接收到定时消息;
[0055]8、每次进入定时器TO中断,Ns加I ;
[0056]9、ECU2发送数据的时刻分别为Ns = 2,10,18,26,34时。
[0057]10、若为发送数据时刻,判断Receive_Can_Timer是否为1,若为1,则发送ECU2数据;不为1,则不处理;
[0058]11、若不是发送数据时刻,在其它的剩余时间片内,处理程序需要完成的其它功倉泛。
[0059]12、判断当Ns等于40时,则Ns = O,Receive_Can_Timer = O, 一个矩阵周期结束。[0060]其中,系统中如果需要其它定时时间Tt,可计算Nt = Ττ/Τ,再由每次进入TO中断后Nt加I来计算。
[0061]以上所述仅是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
【权利要求】
1.一种TTCAN总线对时及发送数据的方法,其特征在于,该方法基于TTCAN总线对时及发送数据系统来实施,该系统以单片机或DSP为核心,配合CAN总线通信模块的嵌入式系统,有外部时钟信号,内部可产生精确的定时中断;该系统具体包括:中断控制器、CAN总线收发器、定时器; 具体而言,上述方法具体包括如下步骤: 步骤S1:预设定CAN总线网络的总线波特率,确定最小时间间隔,即一个时间片时间,由多个分别定义有序号的时间片构成一个基本周期,再由基本周期确定矩阵周期;同时,确定各个时间从节点各自发送时间所在的时间片序号或时间片序号组; 步骤S2:关闭所有中断,配置时间从节点的中断控制器、初始化时间从节点的CAN总线收发器; 步骤S3:定时器选用中断优先级最高的TO定时器,对TO定时器初始化,将TO定时周期T设定为TTCAN总线的一个时间片时间,根据外部时钟频率及内部分频方式计算第一中断计数值,将该第一中断计数值装载到TO定时器的计数寄存器; 步骤S4:启动CAN总线收发器,根据CAN总线的总线波特率和接收到的时间主节点定时数据帧长度来计算接收定时数据时间Tl,获得接收定时数据时间Tl与TO定时器定时周期T之间的时间差T-T1,根据外部时钟频率及内部分频方式计算第二中断计数值; 步骤S5:计算完成一个矩阵周期内,需要进入TO定时器定时中断的次数N ;其中,N =一个矩阵周期/一个时间片; 步骤S6:定义当前进入TO定时器的中断累计次数为Ns,将其初始化为O ;定义成功接收时间主节点的定时消息的状态值Rct,将其值定义为:成功接收信息时,其值设为1,未接收信息时,其值设为O ;将该状态值Rct初始化为O ; 步骤S7:开启中断,中断控制器启动TO定时器; 步骤S8:判断是否进入TO定时器中断;若是,则转入步骤S9 ;若否,则判断是否接收到定时消息;当判断为接收到定时消息时,将步骤S4的第二中断计数值装载到TO定时器的计数寄存器;设置Ns = O ;设置Rct = 1,表示接收到定时消息,然后重新执行步骤S8 ;当判断为没有接收到定时消息时,则重新执行步骤S8 ; 步骤S9:每进入一次定时器TO中断,中断累计次数Ns数值加I ; 步骤SlO:根据中断累计次数Ns的当前数值,判断当前时间从节点发送数据的时间片序号是否与步骤SI中确定的该时间从节点发送时间所在的时间片序号相一致,或属于步骤SI中确定的该时间从节点发送时间所在的时间片序号组;若判断结果为相一致或属于,则进入步骤Sll ;若判断结果为不一致或不属于,则进入步骤S12 ; 步骤Sll:判断Rct是否为1,若为I,则发送总线数据;不为1,则不处理,转至步骤S13 ;步骤S12:判断当前时间片为空闲时间片,转为执行其它数据计算或处理其它接口数据,然后转至步骤S13; 步骤S13:判断Ns值是否达到N,若是,则重置Ns = 0,Rct = 0,一个矩阵周期结束,回到步骤S8 ;若否,则直接回到步骤S8。
【文档编号】G06F13/38GK104035901SQ201410283192
【公开日】2014年9月10日 申请日期:2014年6月23日 优先权日:2014年6月23日
【发明者】刘娇娜, 门义双, 刘树林, 蒋明军, 侯毅, 王雪涛, 刘斌, 高云琨, 苗秋实, 周婧, 郭亮, 王光辉, 徐静 申请人:中国北方车辆研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1