一种实用的K线诊断协议驱动器设计

2012-03-21 21:54:37来源: 互联网 关键字:实用  诊断  协议  驱动器

ISO14230-1

OSI

K

ISO14230-3

N/A

N/A

N/A

N/A

ISO14230-2

ISO14230-1

K2.1 报文收发及解析

K

Fmt

Tgt

Src

Len

Sid

Data

CS

1             

K

typedef struct

{

  k_state state;

  uchar fmt;

  uchar tgt_addr;

  uchar src_addr;

  uchar datalen;

  uchar sid;

  uchar *data; 

  uchar checksum;

  uchar msgdatalen;

  uchar done;   

}k_msg;

typedef enum{

  k_FMT=0,

  k_TGTADDR,

  k_SRCADDR,

  k_DATALEN,

  k_SID,

  k_DATA,

  k_CS

}k_state;

void k_ifc_rx(void)

{

  k_u8 ch,SciSr1;  

  SciSr1=Kline_periph[SCISR1];

  ch=Kline_periph[SCIDRL];

  TimerStop(k_TP4);

  switch(k_curmsg.state){

  case k_FMT:

    if(k_REP==k_drvhandle.mode){

      if(ch==k_curmsg.fmt){

        k_curmsg.state=k_TGTADDR;

        k_SendChar(k_curmsg.tgt_addr); 

      }

    }else{

      k_curmsg.state=k_TGTADDR;

      k_curmsg.fmt=ch;

    }

    break;

  case k_TGTADDR:

    ...

    break;

  case k_SRCADDR:

    ...

    break;

  case k_DATALEN:

    if(k_REP==k_drvhandle.mode){

      if(ch==k_curmsg.datalen){

        k_curmsg.msgdatalen=0;

        k_curmsg.state=k_SID;

        k_SendChar(k_curmsg.sid);

      }

    }else{

      k_curmsg.msgdatalen=0;

      k_curmsg.datalen=ch;

      free(k_curmsg.data);

k_curmsg.data=malloc(k_curmsg.datalen);

      k_curmsg.state=k_SID;  

    }

    break;

  case k_SID: 

    if(k_REP==k_drvhandle.mode){

      if(ch==k_curmsg.sid){

        k_curmsg.msgdatalen++;  

if(k_curmsg.msgdatalen==k_curmsg.datalen){

          k_curmsg.state=k_CS;   

k_SendChar(k_curmsg.checksu); 

        }else{

          k_curmsg.state=k_DATA; 

        k_SendChar(k_curmsg.data[0]);

        }

      }

    }else{

      k_curmsg.sid=ch;

      k_curmsg.msgdatalen++; 

if(k_curmsg.datalen==k_curmsg.msgdatalen){

        k_curmsg.state=k_CS; 

      }else{

        k_curmsg.state=k_DATA;

      }       

    }

    break;

  case k_DATA:

    ...

    break;

  case k_CS: 

    k_curmsg.state=k_FMT;

    if(k_REP==k_drvhandle.mode){

      if(ch==k_curmsg.checksum){

        k_curmsg.done=1;  

      }

    }else{

      k_curmsg.checksum=ch;

      k_curmsg.done=1;  

    }

      break;

  }   if((k_REQ==k_drvhandle.mode)&&(k_FMT!=k_curmsg.state)){

    TimerStart(k_REP_P4MS,k_TP4,0,1); 

  }  

} 

2.2 初始化

2.3 定时管理

ISO14230

P1

ECU

0

20

P2

25

50

P3

ECU

55

5000

P4

0

20

P1 

 

线诊断,性能和稳定性达到预期设计要求。驱动器独立于处理器和操作系统,具有良好的通用性和灵活性,可以方便得集成到应用程序中,具有很高的实用价值和借鉴意义。

关键字:实用  诊断  协议  驱动器

编辑:鲁迪 引用地址:http://www.eeworld.com.cn/qcdz/2012/0321/article_5238.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于柔性测试技术的汽车传感器测试系统
下一篇:汽车电子电路故障的检修思路

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利
推荐阅读
全部
实用
诊断
协议
驱动器

小广播

独家专题更多

2017东芝PCIM在线展会
2017东芝PCIM在线展会
TI车载信息娱乐系统的音视频解决方案
TI车载信息娱乐系统的音视频解决方案
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
迎接创新的黄金时代 无创想,不奇迹
迎接创新的黄金时代 无创想,不奇迹
​TE工程师帮助将不可能变成可能,通过技术突破,使世界更加清洁、安全和美好。
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2017 EEWORLD.com.cn, Inc. All rights reserved