<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > K線診斷協(xié)議驅(qū)動器設(shè)計

          K線診斷協(xié)議驅(qū)動器設(shè)計

          作者: 時間:2014-03-19 來源:網(wǎng)絡(luò) 收藏

          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 初始化

          在開始診斷服務(wù)之前,診斷儀必須對ECU進行初始化,通過ECU的響應(yīng)獲取ECU支持的報文頭格式和定時參數(shù),建立診斷通訊4。初始化過程如圖1所示,診斷儀發(fā)送一個25ms ’0’、25ms’1’的WuP(WakeUp Pattern),然后發(fā)送STC(StartCommunication) Request,ECU檢測出WuP并接收到正確的STC Request后返回STC Response,該報文的Data字段為由兩個字節(jié)構(gòu)成的“關(guān)鍵字(Key Word)”,指定了ECU所支持的報文頭和定時參數(shù)信息,如Key Word指定為0x8fea即表示在報文頭中采用附加長度信息Len表示數(shù)據(jù)字段長度,同時采用默認的定時參數(shù)。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();