⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jinit.c

📁 在Freescale16位单片机MC9s12dp256上移植了J1939源码和操作系统(ucOSII)。
💻 C
📖 第 1 页 / 共 3 页
字号:
  /*gRxPGTable[RX_PGN_COMMAND_ADDRESS].mSource*/       /* DeviceAddress */
  gRxPGTable[RX_PGN_COMMAND_ADDRESS].mPriority = 0x06; /* 3Bit Priority */
  gRxPGTable[RX_PGN_COMMAND_ADDRESS].mTransType = TT_ASYNC; /* TT_CYCLIC, TT_ASYNC */
  gRxPGTable[RX_PGN_COMMAND_ADDRESS].mTransRate = 0;   /* Trans. rate in ms, only for cyclic */
  gRxPGTable[RX_PGN_COMMAND_ADDRESS].mData = &gPGN_DATA_FED8; /* Pointer to specific data struct */
#ifdef _TSK_C166_
  gRxPGTable[RX_PGN_COMMAND_ADDRESS].mDataLength = 9;  /* number of databytes */
#else
  gRxPGTable[RX_PGN_COMMAND_ADDRESS].mDataLength = sizeof(struct VJ1939PGN_DATA_FED8); /* number of databytes */
#endif /* _TSK_C166_ */

  gTxPGTable[TX_PGN_ADDRESS_CLAIMED].mEnable = TRUE;        /* Enable PG */
  gTxPGTable[TX_PGN_ADDRESS_CLAIMED].mPGState = PG_TX_FREE; /* Object used */
  gTxPGTable[TX_PGN_ADDRESS_CLAIMED].mTimer = 0;       /* Timer in ms */
  gTxPGTable[TX_PGN_ADDRESS_CLAIMED].mPDUS = 0x00;     /* PG Number */
  gTxPGTable[TX_PGN_ADDRESS_CLAIMED].mPDUF = 0xEE;     /* PDU Format */
  /*gTxPGTable[TX_PGN_ADDRESS_CLAIMED].mPage*/         /* Page, always 0 */
  /*gTxPGTable[TX_PGN_ADDRESS_CLAIMED].mSource*/       /* DeviceAddress */
  gTxPGTable[TX_PGN_ADDRESS_CLAIMED].mPriority = 0x06; /* 3Bit Priority */
  gTxPGTable[TX_PGN_ADDRESS_CLAIMED].mTransType = TT_ASYNC; /* TT_CYCLIC, TT_ASYNC */
  gTxPGTable[TX_PGN_ADDRESS_CLAIMED].mTransRate = 0;   /* Trans. rate in ms, only for cyclic */
  gTxPGTable[TX_PGN_ADDRESS_CLAIMED].mData = &gPGN_DATA_EE00[1]; /* Pointer to specific data struct */
#ifdef _TSK_C166_
  gTxPGTable[TX_PGN_ADDRESS_CLAIMED].mDataLength = 8;  /* number of databytes */
#else
  gTxPGTable[TX_PGN_ADDRESS_CLAIMED].mDataLength = sizeof(struct VJ1939PGN_DATA_EE00); /* number of databytes */
#endif /* _TSK_C166_ */
  
  gTxPGTable[TX_PGN_ACK].mEnable = TRUE;        /* Enable PG */
  gTxPGTable[TX_PGN_ACK].mPGState = PG_TX_FREE; /* Object used */
  gTxPGTable[TX_PGN_ACK].mTimer = 0;       /* Timer in ms */
  gTxPGTable[TX_PGN_ACK].mPDUS = 0xFF;     /* PG Number */
  gTxPGTable[TX_PGN_ACK].mPDUF = 0xE8;     /* PDU Format */
  /*gTxPGTable[TX_PGN_ACK].mPage*/         /* Page, always 0 */
  /*gTxPGTable[TX_PGN_ACK].mSource*/       /* DeviceAddress */
  gTxPGTable[TX_PGN_ACK].mPriority = 0x06; /* 3Bit Priority */
  gTxPGTable[TX_PGN_ACK].mTransType = TT_ASYNC; /* TT_CYCLIC, TT_ASYNC */
  gTxPGTable[TX_PGN_ACK].mTransRate = 0;   /* Trans. rate in ms, only for cyclic */
  gTxPGTable[TX_PGN_ACK].mData = &gPGN_DATA_E800; /* Pointer to specific data struct */
#ifdef _TSK_C166_
  gTxPGTable[TX_PGN_ACK].mDataLength = 8; /* number of databytes */
#else
  gTxPGTable[TX_PGN_ACK].mDataLength = sizeof(struct VJ1939PGN_DATA_E800); /* number of databytes */
#endif /* _TSK_C166_ */
#if 0
  gTxPGTable[TX_PGN_REQ].mEnable = TRUE;        /* Enable PG */
  gTxPGTable[TX_PGN_REQ].mPGState = PG_TX_FREE; /* Object used */
  gTxPGTable[TX_PGN_REQ].mTimer = 0;       /* Timer in ms */
  gTxPGTable[TX_PGN_REQ].mPDUS = 0x00;     /* PG Number */
  gTxPGTable[TX_PGN_REQ].mPDUF = 0xEA;     /* PDU Format */
  /*gTxPGTable[TX_PGN_REQ].mPage*/         /* Page, always 0 */
  /*gTxPGTable[TX_PGN_REQ].mSource*/       /* DeviceAddress */
  gTxPGTable[TX_PGN_REQ].mPriority = 0x06; /* 3Bit Priority */
  gTxPGTable[TX_PGN_REQ].mTransType = TT_ASYNC; /* TT_CYCLIC, TT_ASYNC */
  gTxPGTable[TX_PGN_REQ].mTransRate = 0;  /* Trans. rate in ms, only for cyclic */
  gTxPGTable[TX_PGN_REQ].mData = &gPGN_DATA_EA00[1]; /* Pointer to specific data struct */
#ifdef _TSK_C166_
  gTxPGTable[TX_PGN_REQ].mDataLength = 3; /* number of databytes */
#else
  gTxPGTable[TX_PGN_REQ].mDataLength = sizeof(struct VJ1939PGN_DATA_EA00); /* number of databytes */
#endif /* _TSK_C166_ */
#endif /* if 0 */
  gTxPGTable[TX_PGN_TPCM].mEnable = TRUE;        /* Enable PG */
  gTxPGTable[TX_PGN_TPCM].mPGState = PG_TX_FREE; /* Object used */
  gTxPGTable[TX_PGN_TPCM].mTimer = 0;       /* Timer in ms */
  gTxPGTable[TX_PGN_TPCM].mPDUS = 0x00;     /* PG Number */
  gTxPGTable[TX_PGN_TPCM].mPDUF = 0xEC;     /* PDU Format */
  /*gTxPGTable[TX_PGN_TPCM].mPage*/         /* Page, always 0 */
  /*gTxPGTable[TX_PGN_TPCM].mSource*/       /* DeviceAddress */
  gTxPGTable[TX_PGN_TPCM].mPriority = 0x06; /* 3Bit Priority */
  gTxPGTable[TX_PGN_TPCM].mTransType = TT_ASYNC; /* TT_CYCLIC, TT_ASYNC */
  gTxPGTable[TX_PGN_TPCM].mTransRate = 0;   /* Trans. rate in ms, only for cyclic */
  gTxPGTable[TX_PGN_TPCM].mData = &gPGN_DATA_EC00[1]; /* Pointer to specific data struct */
#ifdef _TSK_C166_
  gTxPGTable[TX_PGN_TPCM].mDataLength = 8; /* number of databytes */
#else
  gTxPGTable[TX_PGN_TPCM].mDataLength = sizeof(struct VJ1939PGN_DATA_EC00); /* number of databytes */
#endif /* _TSK_C166_ */
  
  gTxPGTable[TX_PGN_TPDT].mEnable = TRUE;        /* Enable PG */
  gTxPGTable[TX_PGN_TPDT].mPGState = PG_TX_FREE; /* Object used */
  gTxPGTable[TX_PGN_TPDT].mTimer = 0;       /* Timer in ms */
  gTxPGTable[TX_PGN_TPDT].mPDUS = 0x00;     /* PG Number */
  gTxPGTable[TX_PGN_TPDT].mPDUF = 0xEB;     /* PDU Format */
  /*gTxPGTable[TX_PGN_TPDT].mPage*/         /* Page, always 0 */
  /*gTxPGTable[TX_PGN_TPDT].mSource*/       /* DeviceAddress */
  gTxPGTable[TX_PGN_TPDT].mPriority = 0x06; /* 3Bit Priority */
  gTxPGTable[TX_PGN_TPDT].mTransType = TT_ASYNC; /* TT_CYCLIC, TT_ASYNC */
  gTxPGTable[TX_PGN_TPDT].mTransRate = 0;   /* Trans. rate in ms, only for cyclic */
  gTxPGTable[TX_PGN_TPDT].mData = &gPGN_DATA_EB00[1]; /* Pointer to specific data struct */
#ifdef _TSK_C166_
  gTxPGTable[TX_PGN_TPDT].mDataLength = 8; /* number of databytes */
#else
  gTxPGTable[TX_PGN_TPDT].mDataLength = sizeof(struct VJ1939PGN_DATA_EB00); /* number of databytes */
#endif /* _TSK_C166_ */
}

void J1939Reset(void)
{
  unsigned char i;
  
  /* Clear Rx transport protocol structures */
  for (i=0; i<NR_OF_TP_CH; i++)
  {
    gTPRxCnxn[i].mState = BAM_STATE_CLOSE;
  }
  /* Clear Tx transport protocol structure */
  gTPTxCnxn.mState = BAM_STATE_CLOSE;

  /* reset the online marker to sign a online state */
  gOnlineMarker = 0;
  
  InitSystemPGs(); /* Initialize the PG used by the protocol stack */
}

/******************************************************************************/
/* Function: J1939Startup                                                     */
/* Input: -                                                                   */
/* Output: -                                                                  */
/* Description:                                                               */
/* Has to be called only at boot up of the node                               */
/******************************************************************************/
void J1939StartupInit(void)
{
  gAddressClaimed = FALSE; /* Device has no valid address claimed */
  gDeviceAddress = J1939GLOBALADDRESS; /* Global address */

  /* Initialize the DeviceName */
  gDeviceName.Name[0] = 0x05;/*IDENTITY_NUMBER_LSB & 0xFF;*/
  gDeviceName.Name[1] = 0x00;/*IDENTITY_NUMBER_2SB & 0xFF;*/
  gDeviceName.Name[2] = 0xA0;/*(IDENTITY_NUMBER_MSB & 0x1F)*/
                        /*| ((MANUFACT_CODE_LSB & 0x07) << 5);*/
  gDeviceName.Name[3] = 0x00;/*MANUFACT_CODE_MSB & 0xFF;*/
  gDeviceName.Name[4] = 0x2E;/*(ECU_INSTANCE & 0x07)        */
                        /*| ((FUNCTION_INSTANCE & 0x1F) << 3);*/
  gDeviceName.Name[5] = 0x04;/*FUNCTION & 0xFF;*/
  gDeviceName.Name[6] = 0x00;/*(VEHICLE_SYSTEM & 0x7F) << 1;*/
  gDeviceName.Name[7] = 0x03;/*(BYTE)(VEHICLE_SYSTEM_INSTANCE & 0x0F)
                        | ((BYTE)(INDUSTRY_GROUP & 0x07) << 4)
                        | ((BYTE)(ARBITRARY_ADDRESS_CAPABLE & 0x01) << 7);*/

  J1939Reset();
}  

/******************************************************************************/
/* Functions for MyCAn                                                    */
/*                               */
/******************************************************************************/
void InitMyCANPGs(void)
{
   /* Initialize the user PGs  PG_FF09*/
  gTxMyPG.mEnable = TRUE;          /*!< Enable/Disable PG */
  gTxMyPG.mPGState = PG_TX_FREE;   /*!< Object used */
  gTxMyPG.mTimer = 100;            /*!< Timer in ms */
  gTxMyPG.mPDUF = 0xFF;            /*!< PDU Format */
  gTxMyPG.mPDUS =0x09;  /*!< PG Number */
  /*gTxMyPG.mPage*/                /*!< Page, always 0 */
  gTxMyPG.mSource = 0x31;          /* DeviceAddress */
  gTxMyPG.mPriority = 0x06;        /*!< 3Bit Priority */
  gTxMyPG.mTransType = TT_CYCLIC;  /*!< TT_CYCLIC, TT_ASYNC */
  gTxMyPG.mTransRate = 100;        /*!< Trans. rate in ms, only for cyclic */
  gTxMyPG.mData = &gPGN_DATA_FF09; /*!< Pointer to specific data struct */
  gTxMyPG.mDataLength = PG_FF09_DATALEN; /*!< number of databytes */
  
               /* Initialize the user PGs  PG_FF08*/
  gRxMyPG.mEnable = TRUE;          /*!< Enable/Disable PG */
  gRxMyPG.mPGState = PG_RX_FREE;   /*!< Object used */
  gRxMyPG.mTimer = 1000;            /*!< Timer in ms */
  gRxMyPG.mPDUF = 0xFF;            /*!< PDU Format */
  gRxMyPG.mPDUS =0x08;  /*!< PG Number */
  /*gRxMyPG.mPage*/                /*!< Page, always 0 */
  gRxMyPG.mSource = 0x20;          /* DeviceAddress */
  gRxMyPG.mPriority = 0x06;        /*!< 3Bit Priority */
  gRxMyPG.mTransType = TT_CYCLIC;  /*!< TT_CYCLIC, TT_ASYNC */
  gRxMyPG.mTransRate = 1000;        /*!< Trans. rate in ms, only for cyclic */
  gRxMyPG.mData = &gPGN_DATA_FF08; /*!< Pointer to specific data struct */
  gRxMyPG.mDataLength = PG_FF08_DATALEN; /*!< number of databytes */
}
/*!
  \file
  \brief This module contains the init routines of the J1939 dependent structures
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -