发明名称 一种TTCAN总线对时及发送数据的方法
摘要 本发明属于信息通讯技术领域,具体涉及一种TTCAN总线对时及发送数据的方法。本发明技术方案所提供的方法应用于TTCAN总线时间从节点接收时间主节点定时消息,并在矩阵周期内定时发送消息的过程中,可合理分配系统工作时间,实现总线节点准确对时和在规定时间片内周期发送总线数据,在空闲时间片内完成系统其它功能。本发明采用单片机或DSP内部中断优先级较高的定时器T0中断,因此在该中断执行时不会被其它低优先级的中断打断而使总线定时时间产生误差,并且仅在T0中断过程中完成总线对时和按照矩阵周期发送总线数据功能,同时实现在空闲时间片内完成系统的其它功能。减少中断个数,避免中断嵌套较多而产生的系统逻辑混乱。
申请公布号 CN104035901B 申请公布日期 2016.09.14
申请号 CN201410283192.1 申请日期 2014.06.23
申请人 中国北方车辆研究所 发明人 刘娇娜;门义双;刘树林;蒋明军;侯毅;王雪涛;刘斌;高云琨;苗秋实;周婧;郭亮;王光辉;徐静
分类号 G06F13/38(2006.01)I;H04L29/06(2006.01)I 主分类号 G06F13/38(2006.01)I
代理机构 中国兵器工业集团公司专利中心 11011 代理人 刘东升
主权项 一种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定时器的中断累计次数为N<sub>S</sub>,将其初始化为0;定义成功接收时间主节点的定时消息的状态值R<sub>CT</sub>,将其值定义为:成功接收信息时,其值设为1,未接收信息时,其值设为0;将该状态值R<sub>CT</sub>初始化为0;步骤S7:开启中断,中断控制器启动T0定时器;步骤S8:判断是否进入T0定时器中断;若是,则转入步骤S9;若否,则判断是否接收到定时消息;当判断为接收到定时消息时,将步骤S4的第二中断计数值装载到T0定时器的计数寄存器;设置N<sub>S</sub>=0;设置R<sub>CT</sub>=1,表示接收到定时消息,然后重新执行步骤S8;当判断为没有接收到定时消息时,则重新执行步骤S8;步骤S9:每进入一次T0定时器中断,中断累计次数N<sub>S</sub>数值加1;步骤S10:根据中断累计次数N<sub>S</sub>的当前数值,判断当前时间从节点发送数据的时间片序号是否与步骤S1中确定的该时间从节点发送时间所在的时间片序号相一致,或属于步骤S1中确定的该时间从节点发送时间所在的时间片序号组;若判断结果为相一致或属于,则进入步骤S11;若判断结果为不一致或不属于,则进入步骤S12;步骤S11:判断R<sub>CT</sub>是否为1,若为1,则发送从节点总线数据;不为1,则不处理,转至步骤S13;步骤S12:判断当前时间片为空闲时间片,转为执行其它数据计算或处理其它接口数据,然后转至步骤S13;步骤S13:判断N<sub>S</sub>值是否达到N,若是,则重置N<sub>S</sub>=0,R<sub>CT</sub>=0,一个矩阵周期结束,回到步骤S8;若否,则直接回到步骤S8。
地址 100072 北京市丰台区槐树岭4号院