DTC OK
This commit is contained in:
parent
e3a1f21c5a
commit
e3abe9e2f8
4105
ECU_APP/OutPut/ECU_APP.S19
Normal file
4105
ECU_APP/OutPut/ECU_APP.S19
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,14 +1,14 @@
|
||||
QualityReport
|
||||
2024年3月18日 10:48:12
|
||||
2024年3月18日 15:07:46
|
||||
|
||||
------ Start build(ECU_APP, DefaultBuild) ------
|
||||
------ Build ended(Error:0, Warning:0)(ECU_APP, DefaultBuild) ------
|
||||
|
||||
|
||||
--- SHA1 hash value of output files ---
|
||||
E:\workspace\CFMOTO\CFMOTOR\ECU_APP\DefaultBuild\ECU_APP.abs: 1364fe9f30dd88b29302dffa4ac466ed522286e5
|
||||
E:\workspace\CFMOTO\CFMOTOR\ECU_APP\DefaultBuild\ECU_APP.mot: 53be40da0c32e3c1fac40260cb2b7b6207510fb7
|
||||
E:\workspace\CFMOTO\CFMOTOR\ECU_APP\output\ECU_APP.S19: afdbd4fc6aa5a1753d5fa06de6727b0247d22ab2
|
||||
E:\workspace\CFMOTO\CFMOTOR\ECU_APP\DefaultBuild\ECU_APP.abs: 70d5881846f9d71244fd72a9362e9cf0501f6302
|
||||
E:\workspace\CFMOTO\CFMOTOR\ECU_APP\DefaultBuild\ECU_APP.mot: ed69b2f26b6e932f737116f24e29a48e04668356
|
||||
E:\workspace\CFMOTO\CFMOTOR\ECU_APP\output\ECU_APP.S19: b18178cb3879494d60417c4e92ef5bd0b44446d2
|
||||
|
||||
|
||||
--- System Information ---
|
||||
@ -36,13 +36,13 @@ E:\workspace\CFMOTO\CFMOTOR\ECU_APP\output\ECU_APP.S19: afdbd4fc6aa5a1753d5fa06d
|
||||
C:\Program Files (x86)\Renesas Electronics\CS+\CC
|
||||
*Memory Usage
|
||||
*Private Working Set
|
||||
210 MB
|
||||
206 MB
|
||||
*Number of GDI Objects
|
||||
2157
|
||||
*Number of USER Objects
|
||||
1213
|
||||
1107
|
||||
*Opened Files
|
||||
5 editors, 5 files, 49 KB
|
||||
5 editors, 5 files, 50 KB
|
||||
|
||||
--- Build Tool Plug-in Information ---
|
||||
RH850 Build tool CC-RH Plug-in
|
||||
|
@ -18,27 +18,27 @@
|
||||
| 2015-9-1 V1.0 LZY
|
||||
*****************************************************************************/
|
||||
/*
|
||||
TP层理论上 可以以 500us 以内的间隔接收连续帧 但是考虑到APP层其他进程的进行
|
||||
CAN中断太过频繁会造成时间片的偏移,所以流控帧 的 STmin定为5ms
|
||||
TP层理论上 可以以 500us 以内的间隔接收连续帧 但是考虑到APP层其他进程的进行
|
||||
CAN中断太过频繁会造成时间片的偏移,所以流控帧 的 STmin定为5ms
|
||||
|
||||
诊断报文接收丢弃策略:
|
||||
单帧 接收中 响应第一个单帧 响应超时前(1000 ms) 丢弃后来的所有帧
|
||||
多帧 接收中 可被 (单帧) (多帧首帧) 打断
|
||||
多帧 接受完毕后 响应超时前(1000 ms) 丢弃后来的所有帧
|
||||
诊断报文接收丢弃策略:
|
||||
单帧 接收中 响应第一个单帧 响应超时前(1000 ms) 丢弃后来的所有帧
|
||||
多帧 接收中 可被 (单帧) (多帧首帧) 打断
|
||||
多帧 接受完毕后 响应超时前(1000 ms) 丢弃后来的所有帧
|
||||
|
||||
|
||||
|
||||
上层响应报文后,TP层开始接收新的一帧
|
||||
上层响应报文后,TP层开始接收新的一帧
|
||||
|
||||
上层通过TP层发送报文,则TP层认为已经响应当前报文。(除 负响应 78外,接收到78负响应 延长1个S3时间的响应时间 5S)
|
||||
上层通过TP层发送报文,则TP层认为已经响应当前报文。(除 负响应 78外,接收到78负响应 延长1个S3时间的响应时间 5S)
|
||||
|
||||
S3 : 接收到报文 至 反馈完毕(以调用发送函数为标志) 读接口为 ACTIVE 否则为 INACTIVE
|
||||
S3 : 接收到报文 至 反馈完毕(以调用发送函数为标志) 读接口为 ACTIVE 否则为 INACTIVE
|
||||
|
||||
反馈响应时间:1S
|
||||
TP层占用10% APP层占用90% 即900ms APP层必须将反馈发送至 TP层 (无反馈发送DL = 0)
|
||||
APP层超时,TP层将中止该帧报文的响应流程 回到空闲状态 准备接受下一帧
|
||||
反馈响应时间:1S
|
||||
TP层占用10% APP层占用90% 即900ms APP层必须将反馈发送至 TP层 (无反馈发送DL = 0)
|
||||
APP层超时,TP层将中止该帧报文的响应流程 回到空闲状态 准备接受下一帧
|
||||
|
||||
78负响应 延长1个S3时间的响应时间 5S
|
||||
78负响应 延长1个S3时间的响应时间 5S
|
||||
*/
|
||||
|
||||
|
||||
@ -63,18 +63,18 @@ APP
|
||||
#define DAMING_FALSE DCM_FALSE
|
||||
#define DAMING_ACTIVE DCM_ACTIVE
|
||||
#define DAMING_INACTIVE DCM_INACTIVE
|
||||
static uint8 SaCanTp_u_RxSFBuffer[8]; /*单帧buffer*/
|
||||
static uint8 SaCanTp_u_RxSFBuffer[8]; /*单帧buffer*/
|
||||
|
||||
static TeCanTp_e_TpSts SeCanTp_e_TpSts;/*TP层工作状态*/
|
||||
static TeCanTp_e_TpSts SeCanTp_e_TpSts;/*TP层工作状态*/
|
||||
|
||||
|
||||
static uint8 SeCanTp_u_BS;
|
||||
static uint8 SeCanTp_u_STmin;
|
||||
|
||||
static uint8 SaCanTp_u_RxMFBuffer[CANTP_MFLEN_MAX];/*多帧接收buffer*/
|
||||
static uint8 SaCanTp_u_RxMFBuffer[CANTP_MFLEN_MAX];/*多帧接收buffer*/
|
||||
|
||||
static uint16 SeCanTp_u_RxLen;
|
||||
static TeCanTp_e_AddrMethod SeCanTp_e_AddrMethod;/*寻址方式*/
|
||||
static TeCanTp_e_AddrMethod SeCanTp_e_AddrMethod;/*寻址方式*/
|
||||
|
||||
static uint16 SeCanTp_u_RxMFDataCnt;
|
||||
static uint8 SeCanTp_u_LastSN;
|
||||
@ -82,7 +82,7 @@ static uint8 SeCanTp_u_LastSN;
|
||||
static uint16 SeCanTp_u_Timer;
|
||||
static TeCanTp_e_MFTimerSwitch SeCanTp_e_TimerSwitch;
|
||||
|
||||
static TeCanTp_e_TxSts SeCanTp_e_TxSts;/*发送状态*/
|
||||
static TeCanTp_e_TxSts SeCanTp_e_TxSts;/*发送状态*/
|
||||
|
||||
static uint8 SaCanTp_u_TxDataBuffer[CANTP_MFLEN_MAX];
|
||||
static uint8 SaCanTp_u_TxBuffer[8];
|
||||
@ -94,7 +94,7 @@ static TeCanTp_e_MFTxSts SeCanTp_e_MFTxSts;
|
||||
static uint8 SeCanTp_u_MFTxSN;
|
||||
static uint8 SeCanTp_u_MFTxSpacing;
|
||||
|
||||
static uint16 SeCanTp_w_RespTimer; /*反馈计时器*/
|
||||
static uint16 SeCanTp_w_RespTimer; /*反馈计时器*/
|
||||
static uint8 SeCanTp_u_RespFlag;
|
||||
/******************************************************************************
|
||||
* Description: : Static Function Prototype Declaration
|
||||
@ -105,19 +105,19 @@ static uint8 SeCanTp_u_RespFlag;
|
||||
*****************************************************************************/
|
||||
|
||||
/******************************************************************************
|
||||
*函数名称 :
|
||||
*函数名称 :
|
||||
|
||||
*参数 : TeCanTp_e_AddrMethod* LeCanTp_p_AddrMethod , Addressing Method
|
||||
*参数 : TeCanTp_e_AddrMethod* LeCanTp_p_AddrMethod , Addressing Method
|
||||
uint16* LeCanTp_p_DL , Data Length
|
||||
uint8* LeCanTp_p_DataAddr array of data pointer
|
||||
|
||||
*返回值 :
|
||||
*返回值 :
|
||||
|
||||
*描述 : get frame data
|
||||
*描述 : get frame data
|
||||
|
||||
*编辑时间 :
|
||||
*编辑时间 :
|
||||
|
||||
*备注 :
|
||||
*备注 :
|
||||
*****************************************************************************/
|
||||
TeCanTp_e_RxBufferSts GetCanTp_e_RxBufferSts(uint8* LeCanTp_p_AddrMethod , uint16* LeCanTp_p_DL , uint8** LeCanTp_p_DataAddr)
|
||||
{
|
||||
@ -147,17 +147,17 @@ TeCanTp_e_RxBufferSts GetCanTp_e_RxBufferSts(uint8* LeCanTp_p_AddrMethod , uint1
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
*函数名称 :
|
||||
*函数名称 :
|
||||
|
||||
*参数 :
|
||||
*参数 :
|
||||
|
||||
*返回值 :
|
||||
*返回值 :
|
||||
|
||||
*描述 : CanIf调用 给TP数据函数 物理寻址
|
||||
*描述 : CanIf调用 给TP数据函数 物理寻址
|
||||
|
||||
*编辑时间 :
|
||||
*编辑时间 :
|
||||
|
||||
*备注 :
|
||||
*备注 :
|
||||
*****************************************************************************/
|
||||
|
||||
void RxIndicationCanTP_AddrPhy_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
@ -175,15 +175,15 @@ void RxIndicationCanTP_AddrPhy_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
{
|
||||
LeCanTp_u_FrameInfo = LeCanTp_e_CanSduPtr[0] >> 4;
|
||||
|
||||
if((SeCanTp_e_TpSts == CeCanTp_e_SF_Get)/*已接收到单帧*/
|
||||
||(SeCanTp_e_TpSts == CeCanTp_e_MF_Get)/*已接收到多帧*/
|
||||
||(SeCanTp_e_TpSts == CeCanTp_e_Answer))/*当前正在响应*/
|
||||
if((SeCanTp_e_TpSts == CeCanTp_e_SF_Get)/*已接收到单帧*/
|
||||
||(SeCanTp_e_TpSts == CeCanTp_e_MF_Get)/*已接收到多帧*/
|
||||
||(SeCanTp_e_TpSts == CeCanTp_e_Answer))/*当前正在响应*/
|
||||
{
|
||||
if((SeCanTp_e_TpSts == CeCanTp_e_Answer) && (SeCanTp_e_MFTxSts == CeCanTp_e_TX_FCWaiting))/*反馈阶段 发送多帧数据*/
|
||||
if((SeCanTp_e_TpSts == CeCanTp_e_Answer) && (SeCanTp_e_MFTxSts == CeCanTp_e_TX_FCWaiting))/*反馈阶段 发送多帧数据*/
|
||||
{
|
||||
if(LeCanTp_u_FrameInfo == 3)/*FC*/
|
||||
{
|
||||
if((LeCanTp_e_CanSduPtr[0]&0x0F) == 0x00)/*FS判断 正常*/
|
||||
if((LeCanTp_e_CanSduPtr[0]&0x0F) == 0x00)/*FS判断 正常*/
|
||||
{
|
||||
SeCanTp_e_MFTxSts = CeCanTp_e_TX_CFGaving;
|
||||
|
||||
@ -205,24 +205,24 @@ void RxIndicationCanTP_AddrPhy_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
SeCanTp_u_STmin = 0;
|
||||
}
|
||||
|
||||
SeCanTp_u_MFTxSpacing = 0;/*开始最小间隔计时*/
|
||||
SeCanTp_u_MFTxSpacing = 0;/*开始最小间隔计时*/
|
||||
SeCanTp_u_Timer = 0;
|
||||
}
|
||||
else if((LeCanTp_e_CanSduPtr[0]&0x0F) == 0x01)/*FS判断 等待*/
|
||||
else if((LeCanTp_e_CanSduPtr[0]&0x0F) == 0x01)/*FS判断 等待*/
|
||||
{
|
||||
/*等待 清空计时器 再等一个 bs*/
|
||||
/*等待 清空计时器 再等一个 bs*/
|
||||
SeCanTp_u_Timer = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*过载丢帧*/
|
||||
/*过载丢帧*/
|
||||
SeCanTp_e_MFTxSts = CeCanTp_e_TX_Idel;
|
||||
SeCanTp_e_TpSts = CeCanTp_e_Idel;
|
||||
SeCanTp_e_TxSts = CeCanTp_e_Tx_Idle;
|
||||
}
|
||||
}
|
||||
}
|
||||
else{/*丢帧*/}
|
||||
else{/*丢帧*/}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -231,7 +231,7 @@ void RxIndicationCanTP_AddrPhy_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
SeCanTp_u_RxLen = LeCanTp_e_CanSduPtr[0]&0x0f;
|
||||
if((SeCanTp_u_RxLen < 8) && (SeCanTp_u_RxLen > 0))
|
||||
{
|
||||
SeCanTp_e_TpSts = CeCanTp_e_SF_Get;/*单帧接收*/
|
||||
SeCanTp_e_TpSts = CeCanTp_e_SF_Get;/*单帧接收*/
|
||||
|
||||
SeCanTp_e_AddrMethod = CeCanTp_e_Physical;
|
||||
for(LeCanTp_u_DataIndex = 0;LeCanTp_u_DataIndex < SeCanTp_u_RxLen;LeCanTp_u_DataIndex++)
|
||||
@ -243,15 +243,15 @@ void RxIndicationCanTP_AddrPhy_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
SeCanTp_w_RespTimer = 1000U;
|
||||
}
|
||||
else
|
||||
{/*丢帧*/}
|
||||
{/*丢帧*/}
|
||||
}
|
||||
else if(LeCanTp_u_FrameInfo == 1)/*FF*/
|
||||
{
|
||||
SeCanTp_u_RxLen =(uint16)(((uint16)(LeCanTp_e_CanSduPtr[0] & 0x0f) << 8) + (uint16)LeCanTp_e_CanSduPtr[1]);
|
||||
if(SeCanTp_u_RxLen > CANTP_MFLEN_MAX) // add for 15765-2-6.5.2.2
|
||||
{
|
||||
/*丢帧*/
|
||||
/*直接回复过载流控帧*/
|
||||
/*丢帧*/
|
||||
/*直接回复过载流控帧*/
|
||||
SaCanTp_u_TxBuffer[0] = 0x30;
|
||||
SaCanTp_u_TxBuffer[1] = 2;
|
||||
SaCanTp_u_TxBuffer[2] = CANTP_RX_STMIN;
|
||||
@ -267,10 +267,10 @@ void RxIndicationCanTP_AddrPhy_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
{
|
||||
SeCanTp_e_AddrMethod = CeCanTp_e_Physical;
|
||||
|
||||
/*获得多帧长度*/
|
||||
/*获得多帧长度*/
|
||||
SeCanTp_u_RxMFDataCnt = 0;
|
||||
|
||||
/*获得前6个数据*/
|
||||
/*获得前6个数据*/
|
||||
for(LeCanTp_u_DataIndex = 2;LeCanTp_u_DataIndex < 8;LeCanTp_u_DataIndex++)
|
||||
{
|
||||
SaCanTp_u_RxMFBuffer[SeCanTp_u_RxMFDataCnt] = LeCanTp_e_CanSduPtr[LeCanTp_u_DataIndex];
|
||||
@ -278,7 +278,7 @@ void RxIndicationCanTP_AddrPhy_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
}
|
||||
SeCanTp_u_LastSN = 1;
|
||||
|
||||
/*直接回复流控帧*/
|
||||
/*直接回复流控帧*/
|
||||
SaCanTp_u_TxBuffer[0] = 0x30;
|
||||
SaCanTp_u_TxBuffer[1] = 0;
|
||||
SaCanTp_u_TxBuffer[2] = CANTP_RX_STMIN;
|
||||
@ -290,28 +290,28 @@ void RxIndicationCanTP_AddrPhy_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
|
||||
TransmitCanIf_Buffer(CANTP_RESP_CANID,8,SaCanTp_u_TxBuffer);
|
||||
|
||||
SeCanTp_e_TpSts = CeCanTp_e_MF_CFTakein;/*等待接收后续帧*/
|
||||
SeCanTp_e_TpSts = CeCanTp_e_MF_CFTakein;/*等待接收后续帧*/
|
||||
|
||||
SeCanTp_e_TimerSwitch = CeCanTp_e_Cr;
|
||||
SeCanTp_u_Timer = 0;
|
||||
}
|
||||
else
|
||||
{/*丢帧*/}
|
||||
{/*丢帧*/}
|
||||
}
|
||||
else if(LeCanTp_u_FrameInfo == 2)/*CF*/
|
||||
{
|
||||
if(SeCanTp_e_TpSts == CeCanTp_e_MF_CFTakein)
|
||||
{
|
||||
/*检验SN*/
|
||||
/*检验SN*/
|
||||
SeCanTp_u_Timer = 0;
|
||||
|
||||
if((LeCanTp_e_CanSduPtr[0]&0x0F) == (SeCanTp_u_LastSN & 0x0F))
|
||||
{
|
||||
/*获得数据*/
|
||||
/*获得数据*/
|
||||
SeCanTp_u_LastSN++;
|
||||
if((LeCanTp_e_CanDlc < 8)&&(LeCanTp_e_CanDlc >0)&&(SeCanTp_u_RxMFDataCnt < (SeCanTp_u_RxLen - LeCanTp_e_CanDlc)))
|
||||
{
|
||||
SeCanTp_e_TpSts = CeCanTp_e_Idel; // 错误的DLC
|
||||
SeCanTp_e_TpSts = CeCanTp_e_Idel; // 错误的DLC
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -324,7 +324,7 @@ void RxIndicationCanTP_AddrPhy_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
}
|
||||
else
|
||||
{
|
||||
/*数据接收完毕*/
|
||||
/*数据接收完毕*/
|
||||
SeCanTp_e_TpSts = CeCanTp_e_MF_Get;
|
||||
|
||||
SeCanTp_u_RespFlag = DAMING_TRUE;
|
||||
@ -334,7 +334,7 @@ void RxIndicationCanTP_AddrPhy_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
|
||||
if(SeCanTp_u_RxMFDataCnt == SeCanTp_u_RxLen)
|
||||
{
|
||||
/*数据接收完毕*/
|
||||
/*数据接收完毕*/
|
||||
SeCanTp_e_TpSts = CeCanTp_e_MF_Get;
|
||||
|
||||
SeCanTp_u_RespFlag = DAMING_TRUE;
|
||||
@ -347,18 +347,18 @@ void RxIndicationCanTP_AddrPhy_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
}
|
||||
else
|
||||
{
|
||||
/*SN错误 丢帧*/
|
||||
/*SN错误 丢帧*/
|
||||
SeCanTp_e_TpSts = CeCanTp_e_Idel;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*当前不是 多帧接受后续帧阶段 丢帧*/
|
||||
/*当前不是 多帧接受后续帧阶段 丢帧*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不接受 流控帧 与 其他状态帧*/
|
||||
/*不接受 流控帧 与 其他状态帧*/
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -369,17 +369,17 @@ void RxIndicationCanTP_AddrPhy_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
*函数名称 :
|
||||
*函数名称 :
|
||||
|
||||
*参数 :
|
||||
*参数 :
|
||||
|
||||
*返回值 :
|
||||
*返回值 :
|
||||
|
||||
*描述 : CanIf调用 给TP数据函数 功能寻址
|
||||
*描述 : CanIf调用 给TP数据函数 功能寻址
|
||||
|
||||
*编辑时间 :
|
||||
*编辑时间 :
|
||||
|
||||
*备注 :
|
||||
*备注 :
|
||||
*****************************************************************************/
|
||||
#if (CANTP_ADDRFUNC_MF_FORBID == DAMING_TRUE)
|
||||
void RxIndicationCanTP_AddrFunc_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
@ -397,15 +397,15 @@ void RxIndicationCanTP_AddrFunc_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
{
|
||||
LeCanTp_u_FrameInfo = LeCanTp_e_CanSduPtr[0] >> 4;
|
||||
|
||||
if((SeCanTp_e_TpSts == CeCanTp_e_SF_Get)/*已接收到单帧*/
|
||||
||(SeCanTp_e_TpSts == CeCanTp_e_MF_Get)/*已接收到多帧*/
|
||||
||(SeCanTp_e_TpSts == CeCanTp_e_Answer))/*当前正在响应*/
|
||||
if((SeCanTp_e_TpSts == CeCanTp_e_SF_Get)/*已接收到单帧*/
|
||||
||(SeCanTp_e_TpSts == CeCanTp_e_MF_Get)/*已接收到多帧*/
|
||||
||(SeCanTp_e_TpSts == CeCanTp_e_Answer))/*当前正在响应*/
|
||||
{
|
||||
if((SeCanTp_e_TpSts == CeCanTp_e_Answer) && (SeCanTp_e_MFTxSts == CeCanTp_e_TX_FCWaiting))/*反馈阶段 发送多帧数据*/
|
||||
if((SeCanTp_e_TpSts == CeCanTp_e_Answer) && (SeCanTp_e_MFTxSts == CeCanTp_e_TX_FCWaiting))/*反馈阶段 发送多帧数据*/
|
||||
{
|
||||
if(LeCanTp_u_FrameInfo == 3)/*FC*/
|
||||
{
|
||||
if((LeCanTp_e_CanSduPtr[0]&0x0F) == 0x00)/*FS判断 正常*/
|
||||
if((LeCanTp_e_CanSduPtr[0]&0x0F) == 0x00)/*FS判断 正常*/
|
||||
{
|
||||
SeCanTp_e_MFTxSts = CeCanTp_e_TX_CFGaving;
|
||||
|
||||
@ -427,16 +427,16 @@ void RxIndicationCanTP_AddrFunc_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
SeCanTp_u_STmin = 0;
|
||||
}
|
||||
|
||||
SeCanTp_u_MFTxSpacing = 0;/*开始最小间隔计时*/
|
||||
SeCanTp_u_MFTxSpacing = 0;/*开始最小间隔计时*/
|
||||
}
|
||||
else if((LeCanTp_e_CanSduPtr[0]&0x0F) == 0x01)/*FS判断 等待*/
|
||||
else if((LeCanTp_e_CanSduPtr[0]&0x0F) == 0x01)/*FS判断 等待*/
|
||||
{
|
||||
/*等待 清空计时器 再等一个 bs*/
|
||||
/*等待 清空计时器 再等一个 bs*/
|
||||
SeCanTp_u_Timer = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*过载丢帧*/
|
||||
/*过载丢帧*/
|
||||
SeCanTp_e_MFTxSts = CeCanTp_e_TX_Idel;
|
||||
SeCanTp_e_TpSts = CeCanTp_e_Idel;
|
||||
SeCanTp_e_TxSts = CeCanTp_e_Tx_Idle;
|
||||
@ -451,7 +451,7 @@ void RxIndicationCanTP_AddrFunc_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
SeCanTp_u_RxLen = LeCanTp_e_CanSduPtr[0]&0x0f;
|
||||
if((SeCanTp_u_RxLen < 8) && (SeCanTp_u_RxLen > 0))
|
||||
{
|
||||
SeCanTp_e_TpSts = CeCanTp_e_SF_Get;/*单帧接收*/
|
||||
SeCanTp_e_TpSts = CeCanTp_e_SF_Get;/*单帧接收*/
|
||||
|
||||
SeCanTp_e_AddrMethod = CeCanTp_e_Functional;
|
||||
for(LeCanTp_u_DataIndex = 0;LeCanTp_u_DataIndex < SeCanTp_u_RxLen;LeCanTp_u_DataIndex++)
|
||||
@ -463,7 +463,7 @@ void RxIndicationCanTP_AddrFunc_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
SeCanTp_w_RespTimer = 1000U;
|
||||
}
|
||||
else
|
||||
{/*丢帧*/}
|
||||
{/*丢帧*/}
|
||||
}
|
||||
|
||||
else if(LeCanTp_u_FrameInfo == 1)/*FF*/
|
||||
@ -474,11 +474,11 @@ void RxIndicationCanTP_AddrFunc_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
{
|
||||
SeCanTp_e_AddrMethod = CeCanTp_e_Functional;
|
||||
|
||||
/*获得多帧长度*/
|
||||
/*获得多帧长度*/
|
||||
//SeCanTp_u_RxLen =(uint16)(((uint16)(LeCanTp_e_CanSduPtr[0] & 0x0f) << 8) + (uint16)LeCanTp_e_CanSduPtr[1]);
|
||||
SeCanTp_u_RxMFDataCnt = 0;
|
||||
|
||||
/*获得前6个数据*/
|
||||
/*获得前6个数据*/
|
||||
for(LeCanTp_u_DataIndex = 2;LeCanTp_u_DataIndex < 8;LeCanTp_u_DataIndex++)
|
||||
{
|
||||
SaCanTp_u_RxMFBuffer[SeCanTp_u_RxMFDataCnt] = LeCanTp_e_CanSduPtr[LeCanTp_u_DataIndex];
|
||||
@ -486,29 +486,29 @@ void RxIndicationCanTP_AddrFunc_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
}
|
||||
SeCanTp_u_LastSN = 1;
|
||||
|
||||
/*直接回复流控帧*/
|
||||
/*直接回复流控帧*/
|
||||
SaCanTp_u_TxBuffer[0] = 0x30;
|
||||
SaCanTp_u_TxBuffer[1] = 0;
|
||||
SaCanTp_u_TxBuffer[2] = CANTP_RX_STMIN;
|
||||
|
||||
TransmitCanIf_Buffer(CANTP_RESP_CANID,8,SaCanTp_u_TxBuffer);
|
||||
|
||||
SeCanTp_e_TpSts = CeCanTp_e_MF_CFTakein;/*等待接收后续帧*/
|
||||
SeCanTp_e_TpSts = CeCanTp_e_MF_CFTakein;/*等待接收后续帧*/
|
||||
|
||||
SeCanTp_e_TimerSwitch = CeCanTp_e_Cr;
|
||||
SeCanTp_u_Timer = 0;
|
||||
}
|
||||
else
|
||||
{/*丢帧*/}
|
||||
{/*丢帧*/}
|
||||
}
|
||||
else if(LeCanTp_u_FrameInfo == 2)/*CF*/
|
||||
{
|
||||
if(SeCanTp_e_TpSts == CeCanTp_e_MF_CFTakein)
|
||||
{
|
||||
/*检验SN*/
|
||||
/*检验SN*/
|
||||
if((LeCanTp_e_CanSduPtr[0]&0x0F) == ((SeCanTp_u_LastSN+1)&0x0F))
|
||||
{
|
||||
/*获得数据*/
|
||||
/*获得数据*/
|
||||
SeCanTp_u_LastSN++;
|
||||
|
||||
for(LeCanTp_u_DataIndex = 1;LeCanTp_u_DataIndex < 8;LeCanTp_u_DataIndex++)
|
||||
@ -520,7 +520,7 @@ void RxIndicationCanTP_AddrFunc_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
}
|
||||
else
|
||||
{
|
||||
/*数据接收完毕*/
|
||||
/*数据接收完毕*/
|
||||
SeCanTp_e_TpSts = CeCanTp_e_MF_Get;
|
||||
|
||||
SeCanTp_u_RespFlag = DAMING_TRUE;
|
||||
@ -530,7 +530,7 @@ void RxIndicationCanTP_AddrFunc_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
|
||||
if(SeCanTp_u_RxMFDataCnt == SeCanTp_u_RxLen)
|
||||
{
|
||||
/*数据接收完毕*/
|
||||
/*数据接收完毕*/
|
||||
SeCanTp_e_TpSts = CeCanTp_e_MF_Get;
|
||||
|
||||
SeCanTp_u_RespFlag = DAMING_TRUE;
|
||||
@ -541,18 +541,18 @@ void RxIndicationCanTP_AddrFunc_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
}
|
||||
else
|
||||
{
|
||||
/*SN错误 丢帧*/
|
||||
/*SN错误 丢帧*/
|
||||
SeCanTp_e_TpSts = CeCanTp_e_Idel;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*当前不是 多帧接受后续帧阶段 丢帧*/
|
||||
/*当前不是 多帧接受后续帧阶段 丢帧*/
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*不接受 流控帧 与 其他状态帧*/
|
||||
/*不接受 流控帧 与 其他状态帧*/
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -575,11 +575,11 @@ void RxIndicationCanTP_AddrFunc_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
{
|
||||
LeCanTp_u_FrameInfo = LeCanTp_e_CanSduPtr[0] >> 4;
|
||||
|
||||
if((SeCanTp_e_TpSts == CeCanTp_e_SF_Get)/*已接收到单帧*/
|
||||
||(SeCanTp_e_TpSts == CeCanTp_e_MF_Get)/*已接收到多帧*/
|
||||
||(SeCanTp_e_TpSts == CeCanTp_e_Answer))/*当前正在响应*/
|
||||
if((SeCanTp_e_TpSts == CeCanTp_e_SF_Get)/*已接收到单帧*/
|
||||
||(SeCanTp_e_TpSts == CeCanTp_e_MF_Get)/*已接收到多帧*/
|
||||
||(SeCanTp_e_TpSts == CeCanTp_e_Answer))/*当前正在响应*/
|
||||
{
|
||||
/*丢帧*/
|
||||
/*丢帧*/
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -588,7 +588,7 @@ void RxIndicationCanTP_AddrFunc_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
SeCanTp_u_RxLen = LeCanTp_e_CanSduPtr[0]&0x0f;
|
||||
if(SeCanTp_u_RxLen < 8)
|
||||
{
|
||||
SeCanTp_e_TpSts = CeCanTp_e_SF_Get;/*单帧接收*/
|
||||
SeCanTp_e_TpSts = CeCanTp_e_SF_Get;/*单帧接收*/
|
||||
|
||||
SeCanTp_e_AddrMethod = CeCanTp_e_Functional;
|
||||
for(LeCanTp_u_DataIndex = 0;LeCanTp_u_DataIndex < SeCanTp_u_RxLen;LeCanTp_u_DataIndex++)
|
||||
@ -600,7 +600,7 @@ void RxIndicationCanTP_AddrFunc_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
SeCanTp_w_RespTimer = 1000U;
|
||||
}
|
||||
else
|
||||
{/*丢帧*/}
|
||||
{/*丢帧*/}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -610,24 +610,24 @@ void RxIndicationCanTP_AddrFunc_Message(CanIf_HwHandleType LeCanTp_e_Hrh,
|
||||
#endif
|
||||
|
||||
/******************************************************************************
|
||||
*函数名称 :
|
||||
*函数名称 :
|
||||
|
||||
*参数 :
|
||||
*参数 :
|
||||
|
||||
*返回值 :
|
||||
*返回值 :
|
||||
|
||||
*描述 : 发送
|
||||
*描述 : 发送
|
||||
|
||||
*编辑时间 :
|
||||
*编辑时间 :
|
||||
|
||||
*备注 :
|
||||
*备注 :
|
||||
*****************************************************************************/
|
||||
TeCanTp_e_TxResult SetCanTp_TxBuffer(uint16 LeCanTp_p_DL , const uint8 LeCanTp_p_DataAddr[])
|
||||
{
|
||||
TeCanTp_e_TxResult LeCanTp_e_TxResult;
|
||||
uint16 LeCanTp_s_Index;
|
||||
|
||||
/*只有在反馈阶段 可以发送数据*/
|
||||
/*只有在反馈阶段 可以发送数据*/
|
||||
if ((SeCanTp_e_TpSts == CeCanTp_e_Answer) && (SeCanTp_e_TxSts == CeCanTp_e_Tx_Idle))
|
||||
{
|
||||
SeCanTp_u_RespFlag = DAMING_FALSE;
|
||||
@ -635,12 +635,12 @@ TeCanTp_e_TxResult SetCanTp_TxBuffer(uint16 LeCanTp_p_DL , const uint8 LeCanTp_p
|
||||
|
||||
if(LeCanTp_p_DL == 0)
|
||||
{
|
||||
/*该报文无反馈*/
|
||||
/*该报文无反馈*/
|
||||
SeCanTp_e_TpSts = CeCanTp_e_Idel;
|
||||
}
|
||||
else if(LeCanTp_p_DL < 8)
|
||||
{
|
||||
/*单帧 直接发送*/
|
||||
/*单帧 直接发送*/
|
||||
SaCanTp_u_TxBuffer[0] = (uint8)LeCanTp_p_DL;
|
||||
|
||||
for(LeCanTp_s_Index = 1; LeCanTp_s_Index < 8; LeCanTp_s_Index++)
|
||||
@ -659,10 +659,10 @@ TeCanTp_e_TxResult SetCanTp_TxBuffer(uint16 LeCanTp_p_DL , const uint8 LeCanTp_p
|
||||
}
|
||||
else
|
||||
{
|
||||
/*多帧报文*/
|
||||
/*多帧报文*/
|
||||
SeCanTp_e_TxSts = CeCanTp_e_Tx_Busy;
|
||||
|
||||
/*数据提取*/
|
||||
/*数据提取*/
|
||||
for(LeCanTp_s_Index = 0; LeCanTp_s_Index < LeCanTp_p_DL; LeCanTp_s_Index++)
|
||||
{
|
||||
SaCanTp_u_TxDataBuffer[LeCanTp_s_Index] = LeCanTp_p_DataAddr[LeCanTp_s_Index];
|
||||
@ -671,7 +671,7 @@ TeCanTp_e_TxResult SetCanTp_TxBuffer(uint16 LeCanTp_p_DL , const uint8 LeCanTp_p
|
||||
SeCanTp_u_TxLen = LeCanTp_p_DL;
|
||||
|
||||
|
||||
/*发送首帧*/
|
||||
/*发送首帧*/
|
||||
SaCanTp_u_TxBuffer[0] = 0x10 + (uint8)(LeCanTp_p_DL >> 8);
|
||||
SaCanTp_u_TxBuffer[1] = (uint8)(LeCanTp_p_DL & 0x00ff);
|
||||
|
||||
@ -700,29 +700,29 @@ TeCanTp_e_TxResult SetCanTp_TxBuffer(uint16 LeCanTp_p_DL , const uint8 LeCanTp_p
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
*函数名称 :
|
||||
*函数名称 :
|
||||
|
||||
*参数 :
|
||||
*参数 :
|
||||
|
||||
*返回值 :
|
||||
*返回值 :
|
||||
|
||||
*描述 : 78负响应 发送响应后 不中断当前 反馈流程
|
||||
*描述 : 78负响应 发送响应后 不中断当前 反馈流程
|
||||
|
||||
*编辑时间 :
|
||||
*编辑时间 :
|
||||
|
||||
*备注 :
|
||||
*备注 :
|
||||
*****************************************************************************/
|
||||
TeCanTp_e_TxResult SetCanTp_Tx_78Neg(uint16 LeCanTp_p_DL , const uint8 LeCanTp_p_DataAddr[])
|
||||
{
|
||||
TeCanTp_e_TxResult LeCanTp_e_TxResult;
|
||||
uint8 LeCanTp_u_Index;
|
||||
|
||||
/*只有在反馈阶段 可以发送数据*/
|
||||
/*只有在反馈阶段 可以发送数据*/
|
||||
if ((SeCanTp_e_TpSts == CeCanTp_e_Answer) && (SeCanTp_e_TxSts == CeCanTp_e_Tx_Idle))
|
||||
{
|
||||
if(LeCanTp_p_DL < 8)
|
||||
{
|
||||
/*单帧 直接发送*/
|
||||
/*单帧 直接发送*/
|
||||
SaCanTp_u_TxBuffer[0] = (uint8)LeCanTp_p_DL;
|
||||
|
||||
for(LeCanTp_u_Index = 1; LeCanTp_u_Index < 8; LeCanTp_u_Index++)
|
||||
@ -756,17 +756,17 @@ TeCanTp_e_TxResult SetCanTp_Tx_78Neg(uint16 LeCanTp_p_DL , const uint8 LeCanTp_p
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*函数名称 :
|
||||
*函数名称 :
|
||||
|
||||
*参数 :
|
||||
*参数 :
|
||||
|
||||
*返回值 :
|
||||
*返回值 :
|
||||
|
||||
*描述 :
|
||||
*描述 :
|
||||
|
||||
*编辑时间 :
|
||||
*编辑时间 :
|
||||
|
||||
*备注 :
|
||||
*备注 :
|
||||
*****************************************************************************/
|
||||
void InitCanTp_Parameter(void)
|
||||
{
|
||||
@ -774,20 +774,20 @@ void InitCanTp_Parameter(void)
|
||||
|
||||
for(LeCanTp_u_InitIndex = 0; LeCanTp_u_InitIndex<8 ; LeCanTp_u_InitIndex++)
|
||||
{
|
||||
SaCanTp_u_RxSFBuffer[LeCanTp_u_InitIndex] = 0;/*单帧buffer*/
|
||||
SaCanTp_u_RxSFBuffer[LeCanTp_u_InitIndex] = 0;/*单帧buffer*/
|
||||
SaCanTp_u_TxBuffer[LeCanTp_u_InitIndex] = 0;
|
||||
SaCanTp_u_TxDataBuffer[LeCanTp_u_InitIndex] = 0;
|
||||
SaCanTp_u_RxMFBuffer[LeCanTp_u_InitIndex] = 0;/*多帧接收buffer*/
|
||||
SaCanTp_u_RxMFBuffer[LeCanTp_u_InitIndex] = 0;/*多帧接收buffer*/
|
||||
}
|
||||
|
||||
SeCanTp_e_TpSts = CeCanTp_e_Idel;/*TP层工作状态*/
|
||||
SeCanTp_e_TpSts = CeCanTp_e_Idel;/*TP层工作状态*/
|
||||
|
||||
SeCanTp_u_BS = 0;
|
||||
SeCanTp_u_STmin = 10;
|
||||
|
||||
|
||||
SeCanTp_u_RxLen = 0;
|
||||
SeCanTp_e_AddrMethod = CeCanTp_e_Physical;/*寻址方式*/
|
||||
SeCanTp_e_AddrMethod = CeCanTp_e_Physical;/*寻址方式*/
|
||||
|
||||
SeCanTp_u_RxMFDataCnt = 0;
|
||||
SeCanTp_u_LastSN = 0;
|
||||
@ -795,7 +795,7 @@ void InitCanTp_Parameter(void)
|
||||
SeCanTp_u_Timer = 0;
|
||||
SeCanTp_e_TimerSwitch = 0;
|
||||
|
||||
SeCanTp_e_TxSts = CeCanTp_e_Tx_Idle;/*发送状态*/
|
||||
SeCanTp_e_TxSts = CeCanTp_e_Tx_Idle;/*发送状态*/
|
||||
|
||||
SeCanTp_u_TxLen = 0;
|
||||
|
||||
@ -805,7 +805,7 @@ void InitCanTp_Parameter(void)
|
||||
SeCanTp_u_MFTxSN = 0;
|
||||
SeCanTp_u_MFTxSpacing = 0;
|
||||
|
||||
SeCanTp_w_RespTimer = 1000U; /*反馈计时器*/
|
||||
SeCanTp_w_RespTimer = 1000U; /*反馈计时器*/
|
||||
SeCanTp_u_RespFlag = DAMING_FALSE;
|
||||
}
|
||||
|
||||
@ -813,29 +813,29 @@ void InitCanTp_Parameter(void)
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
*函数名称 :
|
||||
*函数名称 :
|
||||
|
||||
*参数 :
|
||||
*参数 :
|
||||
|
||||
*返回值 :
|
||||
*返回值 :
|
||||
|
||||
*描述 : 主函数 用于发送 多帧 与 监控超时时间
|
||||
*描述 : 主函数 用于发送 多帧 与 监控超时时间
|
||||
|
||||
*编辑时间 :
|
||||
*编辑时间 :
|
||||
|
||||
*备注 :
|
||||
*备注 :
|
||||
*****************************************************************************/
|
||||
void MngCanTp_MainFunction(void)
|
||||
{
|
||||
uint8 LeCanTp_u_Index;
|
||||
|
||||
if(SeCanTp_e_TpSts == CeCanTp_e_MF_CFTakein)/*超时*/
|
||||
if(SeCanTp_e_TpSts == CeCanTp_e_MF_CFTakein)/*超时*/
|
||||
{
|
||||
if(SeCanTp_e_TimerSwitch == CeCanTp_e_Cr)
|
||||
{
|
||||
if(SeCanTp_u_Timer > CANTP_CR_TIMEOUT)
|
||||
{
|
||||
/*超时*/
|
||||
/*超时*/
|
||||
SeCanTp_e_TpSts = CeCanTp_e_Idel;
|
||||
}
|
||||
else
|
||||
@ -854,11 +854,11 @@ void MngCanTp_MainFunction(void)
|
||||
|
||||
}
|
||||
|
||||
if(SeCanTp_u_RespFlag == DAMING_TRUE)/*APP反馈超时*/
|
||||
if(SeCanTp_u_RespFlag == DAMING_TRUE)/*APP反馈超时*/
|
||||
{
|
||||
if(SeCanTp_w_RespTimer > CANTP_APP_RESP_78NEG)
|
||||
{
|
||||
/*超时*/
|
||||
/*超时*/
|
||||
SeCanTp_e_TpSts = CeCanTp_e_Idel;
|
||||
|
||||
SeCanTp_u_RespFlag = DAMING_FALSE;
|
||||
@ -877,13 +877,13 @@ void MngCanTp_MainFunction(void)
|
||||
|
||||
if(SeCanTp_e_TpSts == CeCanTp_e_Answer)
|
||||
{
|
||||
if(SeCanTp_e_MFTxSts == CeCanTp_e_TX_FCWaiting)/*FC等待超时*/
|
||||
if(SeCanTp_e_MFTxSts == CeCanTp_e_TX_FCWaiting)/*FC等待超时*/
|
||||
{
|
||||
if(SeCanTp_e_TimerSwitch == CeCanTp_e_Bs)
|
||||
{
|
||||
if(SeCanTp_u_Timer > CANTP_BS_TIMEOUT)
|
||||
{
|
||||
/*超时*/
|
||||
/*超时*/
|
||||
SeCanTp_e_MFTxSts = CeCanTp_e_TX_Idel;
|
||||
SeCanTp_e_TpSts = CeCanTp_e_Idel;
|
||||
SeCanTp_e_TxSts = CeCanTp_e_Tx_Idle;
|
||||
@ -902,7 +902,7 @@ void MngCanTp_MainFunction(void)
|
||||
else
|
||||
{}
|
||||
|
||||
if(SeCanTp_e_MFTxSts == CeCanTp_e_TX_CFGaving)/*发送*/
|
||||
if(SeCanTp_e_MFTxSts == CeCanTp_e_TX_CFGaving)/*发送*/
|
||||
{
|
||||
/*CF*/
|
||||
SeCanTp_u_MFTxSpacing++;
|
||||
@ -911,7 +911,7 @@ void MngCanTp_MainFunction(void)
|
||||
{
|
||||
if(SeCanTp_u_MFTxSpacing > SeCanTp_u_STmin)
|
||||
{
|
||||
SeCanTp_u_MFTxSpacing = 0;//修复stmin少1ms
|
||||
SeCanTp_u_MFTxSpacing = 0;//修复stmin少1ms
|
||||
if(SeCanTp_u_TxMFIndex < (SeCanTp_u_TxLen-7))
|
||||
{
|
||||
SaCanTp_u_TxBuffer[0] = 0x20 + SeCanTp_u_MFTxSN;
|
||||
@ -927,7 +927,7 @@ void MngCanTp_MainFunction(void)
|
||||
|
||||
if(SeCanTp_u_BS == 1u)
|
||||
{
|
||||
SeCanTp_e_MFTxSts = CeCanTp_e_TX_FCWaiting;/*等流控帧*/
|
||||
SeCanTp_e_MFTxSts = CeCanTp_e_TX_FCWaiting;/*等流控帧*/
|
||||
SeCanTp_u_Timer = 0;
|
||||
SeCanTp_e_TimerSwitch = CeCanTp_e_Bs;
|
||||
}
|
||||
@ -938,7 +938,7 @@ void MngCanTp_MainFunction(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
/*最后一帧*/
|
||||
/*最后一帧*/
|
||||
uint8 LeCanTp_u_Cnt = SeCanTp_u_TxLen - SeCanTp_u_TxMFIndex;
|
||||
|
||||
SaCanTp_u_TxBuffer[0] = 0x20 + SeCanTp_u_MFTxSN;
|
||||
@ -966,7 +966,7 @@ void MngCanTp_MainFunction(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
SeCanTp_e_MFTxSts = CeCanTp_e_TX_FCWaiting;/*等流控帧*/
|
||||
SeCanTp_e_MFTxSts = CeCanTp_e_TX_FCWaiting;/*等流控帧*/
|
||||
SeCanTp_u_Timer = 0;
|
||||
SeCanTp_e_TimerSwitch = CeCanTp_e_Bs;
|
||||
}
|
||||
@ -983,18 +983,18 @@ void MngCanTp_MainFunction(void)
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
*函数名称 :
|
||||
*函数名称 :
|
||||
|
||||
*参数 :
|
||||
*参数 :
|
||||
|
||||
*返回值 :
|
||||
*返回值 :
|
||||
|
||||
*描述 : S3 状态函数
|
||||
S3 : 接收到报文 至 反馈完毕(以调用发送函数为标志) 读接口为 DAMING_ACTIVE 否则为 DAMING_INACTIVE
|
||||
*描述 : S3 状态函数
|
||||
S3 : 接收到报文 至 反馈完毕(以调用发送函数为标志) 读接口为 DAMING_ACTIVE 否则为 DAMING_INACTIVE
|
||||
|
||||
*编辑时间 :
|
||||
*编辑时间 :
|
||||
|
||||
*备注 :
|
||||
*备注 :
|
||||
*****************************************************************************/
|
||||
uint8 GetCanTp_u_S3Sts(void)
|
||||
{
|
||||
|
@ -12,7 +12,9 @@
|
||||
//#include "eel.h"
|
||||
//#include "r_fdl_types.h"
|
||||
#include "Dcm_extern.h"
|
||||
|
||||
static uint8 ModeOverVoltCnt,ModeUderVoltCnt;
|
||||
static uint8 PowerOverVoltCnt,PowerUderVoltCnt;
|
||||
extern uint16_t ECM_lost_count,GBC_lost_count;
|
||||
const TsDcm_h_DtcGroupType CaDcm_u_DtcTable[DCM_SUPDTC_COUNT]={
|
||||
{ 0,0x91,0x17,0x16},//系统供电电压过低
|
||||
{ 1,0x91,0x17,0x17},//系统供电电压过高
|
||||
@ -89,8 +91,9 @@ void DtcStutasInit(void)
|
||||
|
||||
void DtcInit(void)
|
||||
{
|
||||
|
||||
tDiagStart = 1500;
|
||||
ECM_lost_count = 500;
|
||||
GBC_lost_count = 500;
|
||||
tDiagStartVolt = 500;
|
||||
DtcStutasInit();
|
||||
}
|
||||
@ -189,7 +192,7 @@ static void WriteDtcSnapshot(uint8 DtcIndex)
|
||||
DF_Write(&temp,GetIndexNumber(DtcIndex+8),2);
|
||||
}
|
||||
}
|
||||
extern uint16_t ECM_lost_count,GBC_lost_count;
|
||||
|
||||
void CommunicationLostDetected(void)
|
||||
{
|
||||
if (ECM_lost_count > 0)
|
||||
@ -208,13 +211,29 @@ void ClearDtcStutas(uint8 DtcIndex)
|
||||
// DtcStutas[DtcIndex].DtcStutas &= ~(TestNotCompletedThisOperationCycle | TestFailed); //2017/7/2 11:52:29 del
|
||||
DtcStutas[DtcIndex].DtcStutas &= ~TestFailed; //2017/7/2 11:52:56 spark add
|
||||
}
|
||||
|
||||
extern uint8_t testdata[8];
|
||||
uint16_t busoffreccnt = 0;
|
||||
static void CanDTC_LostCommDetected(void)
|
||||
{
|
||||
/*
|
||||
testdata[4] = ChkNetDiagCondition();
|
||||
testdata[5] = GetVoltage(KL30_VOLTAGE) > 160;
|
||||
testdata[6] = GetVoltage(KL30_VOLTAGE) < 90;
|
||||
testdata[7] = GetCanBusOffErr();
|
||||
*/
|
||||
if (busoffreccnt > 0)
|
||||
{
|
||||
busoffreccnt--;
|
||||
return;
|
||||
}
|
||||
if(ChkNetDiagCondition() == 0) return;
|
||||
if(GetVoltage(KL30_VOLTAGE) > 160)return;
|
||||
if(GetVoltage(KL30_VOLTAGE) < 90)return;
|
||||
if (0 != GetCanBusOffErr())return;
|
||||
if (PowerOverVoltCnt > 0)return;
|
||||
if (PowerUderVoltCnt > 0)return;
|
||||
|
||||
|
||||
//if(GetVoltage(KL30_VOLTAGE) > 160)return;
|
||||
//if(GetVoltage(KL30_VOLTAGE) < 90)return;
|
||||
//if (0 != GetCanBusOffErr())return;
|
||||
|
||||
CommunicationLostDetected();
|
||||
if (ECM_lost_count == 0)
|
||||
@ -278,7 +297,7 @@ static void CanDTC_AcBusOffDetected(void)
|
||||
/**************************************************************************************/
|
||||
static void PowerVoltageChk(void)
|
||||
{
|
||||
static uint8 PowerOverVoltCnt,PowerUderVoltCnt;
|
||||
|
||||
if(GetVoltage(KL30_VOLTAGE) > 160)
|
||||
{
|
||||
if(PowerOverVoltCnt < 50) /* 50*40ms = 2s */
|
||||
@ -310,7 +329,7 @@ static void PowerVoltageChk(void)
|
||||
{
|
||||
if(PowerUderVoltCnt > 0){
|
||||
PowerUderVoltCnt--;
|
||||
if(PowerUderVoltCnt>13){ /* 13*40ms = 1.48s */
|
||||
if(PowerUderVoltCnt>13){ /* 13*40ms = 520ms */
|
||||
PowerUderVoltCnt = 12;
|
||||
}
|
||||
}
|
||||
@ -379,7 +398,7 @@ static void TempMotorFeedbackChk(void)
|
||||
/**************************************************************************************/
|
||||
static void ModeMotorFeedbackChk(void)
|
||||
{
|
||||
static uint8 ModeOverVoltCnt,ModeUderVoltCnt;
|
||||
|
||||
if(GetVoltage(MODE_MOTOR) >= 49)
|
||||
{
|
||||
if(ModeOverVoltCnt < 50) /* 50*40ms = 2s */
|
||||
|
@ -2128,7 +2128,7 @@ TeDcm_h_ResultType MngDcm_TransmitExitService(void)
|
||||
SeDcm_u_RidFF01Sts = CeDcm_e_RidStop;
|
||||
|
||||
RidFF02RunSts = Rid_Idle;
|
||||
//DtcInit();
|
||||
DtcInit();
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
|
@ -86,7 +86,7 @@ unsigned char GetVoltage(unsigned char ch)
|
||||
|
||||
switch (ch)
|
||||
{
|
||||
case KL30_VOLTAGE:
|
||||
case 0:
|
||||
if (SupplyVoltage > 0xff)
|
||||
{
|
||||
return 0xff;
|
||||
@ -206,7 +206,27 @@ void WriteIoParameter(unsigned char p,unsigned char data)
|
||||
/************************************************************************************/
|
||||
unsigned char GetIgnVoltStatus(void)
|
||||
{
|
||||
if (SupplyVoltage > 160 || SupplyVoltage < 90)
|
||||
static uint8 ignstateh = 0,ignstatel=0;
|
||||
if (SupplyVoltage > 160)
|
||||
{
|
||||
ignstateh = 1;
|
||||
}
|
||||
else if (SupplyVoltage < 150)
|
||||
{
|
||||
ignstateh = 0;
|
||||
}
|
||||
|
||||
if (SupplyVoltage < 90)
|
||||
{
|
||||
ignstatel = 1;
|
||||
}
|
||||
else if (SupplyVoltage > 100)
|
||||
{
|
||||
ignstatel = 0;
|
||||
}
|
||||
|
||||
|
||||
if (ignstatel == 1 || ignstateh == 1)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
@ -16,13 +16,6 @@
|
||||
#define IO_K30 7
|
||||
|
||||
|
||||
#define EVA_SENSOR 0
|
||||
#define OUTSIDE_SENSOR 1
|
||||
#define INSIDE_SENSOR 2
|
||||
#define KL30_VOLTAGE 3
|
||||
#define TEMP_MOTOR 4
|
||||
#define MODE_MOTOR 5
|
||||
#define REC_MOTOR 6
|
||||
|
||||
|
||||
|
||||
@ -57,10 +50,10 @@ extern IO_parameter_t io_parameter[8];
|
||||
/************************/
|
||||
// DCM <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
|
||||
/************************/
|
||||
//占쏙옙矩沼걜J?
|
||||
//<EFBFBD><EFBFBD>ϻỰģ<EFBFBD>?
|
||||
|
||||
//#define DCM_DEFAULT_SESSION 0x01 /*Ĭ<><C4AC>ģʽ*/
|
||||
//#define DCM_PROGRAMME_SESSION 0x02 /*占쏙옙占식J?*/
|
||||
//#define DCM_PROGRAMME_SESSION 0x02 /*<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>?*/
|
||||
//#define DCM_EXTEND_SESSION 0x04 /*<2A><>չģʽ*/
|
||||
|
||||
extern uint8 MngDcm_GetDiagnosticSession(void);
|
||||
@ -79,11 +72,11 @@ extern uint8 GetNetworkMsgSts(void);
|
||||
|
||||
|
||||
/************************************************************************************
|
||||
// 占쏙옙占쏙옙占쏙옙占? ch : /
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ch : /
|
||||
// 0: KL30<33><30>ѹ /
|
||||
// 1: 占쏙옙軻逃占쏙옙占승똑듸옙占쌘듸옙占쏙옙占쏙옙占쏙옙占싼? /
|
||||
// 1: <EFBFBD><EFBFBD>ʻԱ<EFBFBD><EFBFBD><EFBFBD>¶ȵ<EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? /
|
||||
// 2: <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ /
|
||||
// 3: 琦占쏙옙占쏙옙占신듸옙占쌘듸옙占쏙옙占쏙옙占쏙옙占싼? /
|
||||
// 3: ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? /
|
||||
// 4<><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶ȴ<C2B6><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ /
|
||||
// /
|
||||
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> /
|
||||
@ -93,41 +86,41 @@ extern uint8 GetNetworkMsgSts(void);
|
||||
extern unsigned char GetVoltage(unsigned char ch);
|
||||
|
||||
/************************************************************************************
|
||||
// 占쏙옙占쏙옙占쏙옙占? motor : /
|
||||
// 1: 占쏙옙軻逃占쏙옙占승똑듸옙占쌘듸옙占? /
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? motor : /
|
||||
// 1: <EFBFBD><EFBFBD>ʻԱ<EFBFBD><EFBFBD><EFBFBD>¶ȵ<EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD>? /
|
||||
// 2: <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> /
|
||||
// 3: 琦占쏙옙占쏙옙占신듸옙占쌘듸옙占? /
|
||||
// 3: ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD>? /
|
||||
// /
|
||||
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> /
|
||||
// 0: 占쏙옙占쏙옙占쏙옙占? 1占쏙옙占쏙옙占쏙옙占쌓? /
|
||||
// 0: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? /
|
||||
// /
|
||||
************************************************************************************/
|
||||
extern unsigned char GetMotorLockStatus(unsigned char motor);
|
||||
|
||||
/************************************************************************************
|
||||
// 占쏙옙占쏙옙占쏙옙占? p : /
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? p : /
|
||||
// 0: TEMP <09><>ʻԱ<CABB><D4B1><EFBFBD>¶ȷ<C2B6><C8B7><EFBFBD>λ<EFBFBD><CEBB> /
|
||||
// 1: REC <09><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>ģʽ /
|
||||
// 2: FAN 占식뤄옙占쏙옙占싸? /
|
||||
// 2: FAN <EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? /
|
||||
// 3: MODE ģʽ<C4A3><CABD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> /
|
||||
// 4: DEFROST <09><>˪<EFBFBD><CBAA><EFBFBD><EFBFBD> /
|
||||
// 5: REARDEF 占쏙옙占싯?占쏙옙占쏙옙 /
|
||||
// 5: REARDEF <EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD> /
|
||||
// 6: AC A/C<><43><EFBFBD>䰴<EFBFBD><E4B0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> /
|
||||
// 7: K30 ECU Supplier voltage /
|
||||
// /
|
||||
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> /
|
||||
// 0: 占쏙옙壇占쏙옙data,占쏙옙占쏙옙占?22占쏙옙2F占쏙옙占쏙옙 /
|
||||
// 0: <EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>data,<2C><><EFBFBD><EFBFBD><EFBFBD>?22<32><32>2F<32><46><EFBFBD><EFBFBD> /
|
||||
************************************************************************************/
|
||||
extern unsigned char GetIoParameter(unsigned char p);
|
||||
|
||||
/************************************************************************************
|
||||
// 占쏙옙占쏙옙占쏙옙占? p : /
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? p : /
|
||||
// 0: TEMP <09><>ʻԱ<CABB><D4B1><EFBFBD>¶ȷ<C2B6><C8B7><EFBFBD>λ<EFBFBD><CEBB> /
|
||||
// 1: REC <09><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>ģʽ /
|
||||
// 2: FAN 占식뤄옙占쏙옙占싸? /
|
||||
// 2: FAN <EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? /
|
||||
// 3: MODE ģʽ<C4A3><CABD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> /
|
||||
// 4: DEFROST <09><>Ч /
|
||||
// 5: REARDEF 占쏙옙占싯?占쏙옙占쏙옙 /
|
||||
// 5: REARDEF <EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<3F><><EFBFBD><EFBFBD> /
|
||||
// 6: AC <09><>Ч /
|
||||
// 7: K30 <09><>Ч /
|
||||
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> /
|
||||
@ -136,7 +129,7 @@ extern unsigned char GetIoParameter(unsigned char p);
|
||||
extern void WriteIoParameter(unsigned char p,unsigned char data);
|
||||
|
||||
/************************************************************************************
|
||||
// 占쏙옙占쏙옙占쏙옙占? p : /
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? p : /
|
||||
// /
|
||||
// /
|
||||
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> /
|
||||
@ -146,9 +139,9 @@ extern void WriteIoParameter(unsigned char p,unsigned char data);
|
||||
extern unsigned char GetIgnVoltStatus(void);
|
||||
|
||||
/************************************************************************************
|
||||
// 占쏙옙占쏙옙占쏙옙占? ID : CAN ID //
|
||||
// 占쏙옙占쏙옙占쏙옙占? Dlc : CAN 占쏙옙占쏙옙占쏙옙占쌥놂옙占쏙옙 //
|
||||
// 占쏙옙占쏙옙占쏙옙占? *Data : 寧占쏙옙 CAN 占쏙옙占쏙옙占쏙옙占쌥삼옙占쏙옙占쏙옙占쏙옙寧占쏙옙 //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? ID : CAN ID //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? Dlc : CAN <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? *Data : ָ<><D6B8> CAN <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> //
|
||||
// //
|
||||
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> //
|
||||
// 0<><30> <20><><EFBFBD>ͳɹ<CDB3> <20><>0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7> //
|
||||
@ -156,19 +149,19 @@ extern unsigned char GetIgnVoltStatus(void);
|
||||
extern unsigned char TransmitCAN_Message(unsigned int ID,unsigned char Dlc,unsigned char *Data);
|
||||
|
||||
/************************************************************************************
|
||||
// 占쏙옙占쏙옙占쏙옙占? write_buf : 寧占쏙옙 占쏙옙狼畇占쏙옙占쏙옙占쌥삼옙占쏙옙占쏙옙占식듸옙囹 //
|
||||
// 占쏙옙占쏙옙占쏙옙占? data_num : 占쏙옙占쌥댐옙占쏙옙 //
|
||||
// 占쏙옙占쏙옙占쏙옙占? len : 畇占쏙옙占쏙옙占쌥놂옙占쏙옙 //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? write_buf : ָ<><D6B8> <20><>Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? data_num : <09><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD> //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? len : д<><D0B4><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> //
|
||||
// //
|
||||
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> //
|
||||
// 0占쏙옙 畇占쏙옙<EC8F99>占? 占쏙옙0 占쏙옙畇占쏙옙呵占쏙옙 //
|
||||
// 0<EFBFBD><EFBFBD> д<><D0B4>ɹ<EFBFBD>? <20><>0 <20><>д<EFBFBD><D0B4>ʧ<EFBFBD><CAA7> //
|
||||
************************************************************************************/
|
||||
extern unsigned char DF_Write(unsigned char* write_buf,unsigned char data_num,unsigned char len);
|
||||
|
||||
/************************************************************************************
|
||||
// 占쏙옙占쏙옙占쏙옙占? read_buf : 寧占쏙옙占싫∽옙占쏙옙莩占쏙옙占식삼옙占쏙옙占쏙옙占식듸옙囹 //
|
||||
// 占쏙옙占쏙옙占쏙옙占? data_num : 占쏙옙占쌥댐옙占쏙옙 //
|
||||
// 占쏙옙占쏙옙占쏙옙占? len : 占쏙옙혤占쏙옙占쌥놂옙占쏙옙 //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? read_buf : ָ<><D6B8><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? data_num : <09><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD> //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? len : <09><>ȡ<EFBFBD><C8A1><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> //
|
||||
// //
|
||||
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> //
|
||||
// 0<><30> <20><>ȡ<EFBFBD>ɹ<EFBFBD> <20><>0 <20><><EFBFBD><EFBFBD>ȡʧ<C8A1><CAA7> //
|
||||
@ -184,7 +177,7 @@ extern uint32 GetTimerCnt(void);
|
||||
|
||||
/************************************************************************************
|
||||
// <20><>ȡdata Flash<73><68><EFBFBD>ݴ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //
|
||||
// 占쏙옙占쏙옙占쏙옙占? code : //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? code : //
|
||||
// 0 : <20><>ȡAPP<50>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //
|
||||
// 1 : <20><>ȡ2E<32><45><EFBFBD><EFBFBD>0xF110<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //
|
||||
// 2 : <20><>ȡ2E<32><45><EFBFBD><EFBFBD>0xF190<39><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //
|
||||
@ -216,7 +209,7 @@ extern unsigned char GetIndexNumber(unsigned char code);
|
||||
|
||||
/************************************************************************************
|
||||
// <20><>ȡACӲ<43><D3B2><EFBFBD>汾 //
|
||||
// 占쏙옙占쏙옙占쏙옙占? hdv : //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? hdv : //
|
||||
// ָ<><D6B8><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ //
|
||||
// //
|
||||
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> //
|
||||
@ -227,7 +220,7 @@ extern void GetHardwareVersion(unsigned char* hdv);
|
||||
|
||||
/************************************************************************************
|
||||
// <20><>ȡAC<41><43><EFBFBD><EFBFBD><EFBFBD>汾 //
|
||||
// 占쏙옙占쏙옙占쏙옙占? swv : //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? swv : //
|
||||
// ָ<><D6B8><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ //
|
||||
// //
|
||||
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> //
|
||||
@ -239,7 +232,7 @@ extern void GetSoftwareVersion(unsigned char* swv);
|
||||
|
||||
/************************************************************************************
|
||||
// <20><>ȡAC<41><43>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汾 //
|
||||
// 占쏙옙占쏙옙占쏙옙占? swv : //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? swv : //
|
||||
// ָ<><D6B8><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ //
|
||||
// //
|
||||
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> //
|
||||
@ -253,7 +246,7 @@ extern void GetSupplierSoftwareVersion(unsigned char* supswv);
|
||||
|
||||
/************************************************************************************
|
||||
// <20><>ȡAC<41><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //
|
||||
// 占쏙옙占쏙옙占쏙옙占? *date : //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? *date : //
|
||||
// data[0] = YEAR //
|
||||
// data[1] = MONTH //
|
||||
// data[0] = DAY //
|
||||
@ -266,7 +259,7 @@ extern void GetManufacturingDate(unsigned char* date);
|
||||
|
||||
/************************************************************************************
|
||||
// <20><>ȡCan<61><6E><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>״̬ //
|
||||
// 占쏙옙占쏙옙占쏙옙占? 占쏙옙 //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20><> //
|
||||
// //
|
||||
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> Can<61><6E><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>״̬ //
|
||||
// //
|
||||
@ -275,20 +268,20 @@ extern void GetManufacturingDate(unsigned char* date);
|
||||
extern unsigned char GetCanBusOffErr(void);
|
||||
|
||||
/************************************************************************************
|
||||
// 占쏙옙혤占쏙옙袈占심뱄옙占쏙옙甄占쏙옙占? //
|
||||
// 占쏙옙占쏙옙占쏙옙占? //
|
||||
// <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ʷ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD><EFBFBD><EFBFBD>? //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? //
|
||||
// //
|
||||
// 占쏙옙占쏙옙令占쏙옙 占쏙옙袈占심뱄옙占쏙옙甄占쏙옙占? //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD> <20><>ʷ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>̴<EFBFBD><CCB4><EFBFBD>? //
|
||||
// //
|
||||
// //
|
||||
************************************************************************************/
|
||||
extern unsigned char GetProgrammingCounter(void);
|
||||
|
||||
/************************************************************************************
|
||||
// 占쏙옙혤占쏙옙袈占쏙옙甄占쏙옙占? //
|
||||
// 占쏙옙占쏙옙占쏙옙占? //
|
||||
// <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD>̴<EFBFBD><EFBFBD><EFBFBD>? //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? //
|
||||
// //
|
||||
// 占쏙옙占쏙옙令占쏙옙 占쏙옙袈占쏙옙甄占쏙옙占? //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD> <20><>ʷ<EFBFBD><CAB7>̴<EFBFBD><CCB4><EFBFBD>? //
|
||||
// //
|
||||
// //
|
||||
************************************************************************************/
|
||||
@ -296,7 +289,7 @@ extern unsigned char GetProgrammingAttempCounter(void);
|
||||
|
||||
/************************************************************************************
|
||||
// <20><><EFBFBD>DTC<54><43><EFBFBD><EFBFBD> //
|
||||
// 占쏙옙占쏙옙占쏙옙占? //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? //
|
||||
// //
|
||||
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> ״̬ //
|
||||
// //
|
||||
@ -308,7 +301,7 @@ extern unsigned char Clear_DTC_Data(void);
|
||||
|
||||
/************************************************************************************
|
||||
// <20><>ȡBCM<43>ڵ㶪ʧ״̬ //
|
||||
// 占쏙옙占쏙옙占쏙옙占? 占쏙옙 //
|
||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20><> //
|
||||
// //
|
||||
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> BCM<43>ڵ㶪ʧ״̬ //
|
||||
// //
|
||||
|
@ -530,7 +530,7 @@ uint8_t checkExitBusOff(void)
|
||||
|
||||
#define FAST_BUSOFF_THRESHOULD 49 // 50MS
|
||||
#define SLOW_BUSOFF_THRESHOULD 199 // 200MS
|
||||
|
||||
extern uint16_t busoffreccnt;
|
||||
void BusOff_Recovery(void);
|
||||
#define BUSOFF_INIT 0
|
||||
#define BUSOFF_IDLE 1
|
||||
@ -552,6 +552,7 @@ void BusOff_Detect(void)
|
||||
case BUSOFF_IDLE:
|
||||
if (checkBusOff())
|
||||
{
|
||||
busoffreccnt = 1500;
|
||||
BusOff_flag = 1;
|
||||
netState = BUSOFF_WAIT;
|
||||
if (ucBusOffModeState < 5)
|
||||
@ -613,7 +614,7 @@ void IGN_Voltage_Detect(void)
|
||||
{
|
||||
uint32_t adval;
|
||||
adval = getAdval(ADCH_IGN);
|
||||
SupplyVoltage = (adval*57*5)>>10 + 7;
|
||||
SupplyVoltage = ((adval*57*5)>>10) + 7;
|
||||
if (adval <= 305 )
|
||||
{
|
||||
IGN_Voltage_error_count++;
|
||||
|
@ -69,22 +69,23 @@ void CAN_TX_MESSAGE_INIT(void)
|
||||
TxCanMessage.LBL = 0; /* Label Data */
|
||||
TxCanMessage.TS = 0; /* Timestamp Data */
|
||||
Can_Msg_Change_Bcm();
|
||||
GBC_lost_count = 1000;
|
||||
ECM_lost_count = 1000;
|
||||
//GBC_lost_count = 1000;
|
||||
//ECM_lost_count = 1000;
|
||||
}
|
||||
|
||||
//extern uint8_t flagOverCurrentKB,flagOverCurrentZY;
|
||||
uint8_t txbuf1[8],txbuf2[8],txbuf3[8];
|
||||
extern uint16_t SupplyVoltage;
|
||||
uint8_t testdata[8] = {0};
|
||||
void TxTestMsg(void)
|
||||
{
|
||||
uint8_t testdata[8] = {0};
|
||||
//uint8_t testdata[8] = {0};
|
||||
if ((App28sTxRxStatus & DCM28S_MASK_TX_DISABLE) == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
testdata[0] = SupplyVoltage>>8;
|
||||
testdata[1] = SupplyVoltage;
|
||||
testdata[1] = SupplyVoltage;//SupplyVoltage;
|
||||
testdata[2] = ECM_lost_count>0?1:0;
|
||||
testdata[3] = GBC_lost_count>0?1:0;
|
||||
TransmitCAN_Message(0x333,8,testdata);
|
||||
|
Loading…
x
Reference in New Issue
Block a user