Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
DC360_1drap3_xiaoju_V1
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
丁雨邯
DC360_1drap3_xiaoju_V1
Commits
b5ec882a
提交
b5ec882a
authored
7月 09, 2020
作者:
wysheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
TCU升级
上级
e01d7680
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
443 行增加
和
145 行删除
+443
-145
TCU_UpDate.c
DcPillar/Src/TCU/TCU_UpDate.c
+404
-105
TCU_UpDate.h
DcPillar/Src/TCU/TCU_UpDate.h
+2
-0
Thd_TCU.c
DcPillar/Src/Thread/Thd_TCU.c
+27
-39
Thd_TCU.h
DcPillar/Src/Thread/Thd_TCU.h
+10
-1
没有找到文件。
DcPillar/Src/TCU/TCU_UpDate.c
浏览文件 @
b5ec882a
#include "TCU_Update.h"
u8
TcuUpDateBuffer
[
1024
];
//TCU升级数据缓存
void
TCUUpDateHeartHandle
(
StructTCUSend
*
pPgnRecv
)
{
...
...
@@ -28,10 +28,12 @@ void TCUUpDateHeartHandle(StructTCUSend * pPgnRecv)
typedef
struct
{
u8
type
;
//设备类型
u8
addr
;
//设备通信地址
u8
sno
;
//程序内部编号
u16
ver
;
//升级目标版本
u8
type
;
//设备类型
u8
addr
;
//设备通信地址
u8
sno
;
//程序内部编号
u16
ver
;
//升级目标版本
u8
result
;
//00H:允许下载 01H:禁止下载其它:无效
u8
reason
;
//00H:无 01H:本身不支持此功能 02H:数据合法性校验失败
}
StructStartDownload
;
...
...
@@ -62,6 +64,25 @@ void TCUStartDownloadHandle(StructTCUSend * pPgnRecv)
tmp
=
tmp
<<
8
;
tmp
|=
pPgnRecv
->
Data
[
5
];
StartDownload
.
ver
=
tmp
;
if
(
StartDownload
.
type
==
0x01
)
//0x01 --- 直流充电控制器
{
/*if(StartDownload.ver != TCUControlInfo.HardwareVersion) //V5版本
{
StartDownload.result = 0x01;//01H:禁止下载
StartDownload.reason = 0x02;//02H:数据合法性校验失败
}
else*/
{
StartDownload
.
result
=
0x00
;
//00H:允许下载
StartDownload
.
reason
=
0x00
;
//
}
}
else
{
StartDownload
.
result
=
0x01
;
//01H:禁止下载
StartDownload
.
reason
=
0x01
;
//01H:本身不支持此功能
}
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
...
...
@@ -74,6 +95,9 @@ void TCUStartDownloadHandle(StructTCUSend * pPgnRecv)
tmp
=
tmp
<<
8
;
tmp
|=
pPgnRecv
->
Data
[
5
];
StartDownload_B
.
ver
=
tmp
;
StartDownload_B
.
result
=
0x01
;
StartDownload_B
.
reason
=
0x01
;
}
}
...
...
@@ -90,88 +114,106 @@ void StartDownloadAck(u8 ChgNum)
{
Data
[
1
]
=
StartDownload
.
type
;
Data
[
2
]
=
StartDownload
.
addr
;
if
(
StartDownload
.
type
==
0x01
)
//0x01 --- 直流充电控制器
{
/*if(StartDownload.ver != 0x0500) //V5版本
{
Data[3] = 0x01;//01H:禁止下载
Data[6] = 0x02;//02H:数据合法性校验失败
}
else*/
{
Data
[
3
]
=
0x00
;
//00H:允许下载
Data
[
6
]
=
0x00
;
//
}
}
else
{
Data
[
3
]
=
0x01
;
//01H:禁止下载
Data
[
6
]
=
0x01
;
//01H:本身不支持此功能
}
Data
[
3
]
=
StartDownload
.
result
;
Data
[
4
]
=
0x03
;
//0x03:BIN格式
Data
[
5
]
=
0x01
;
//0x01:校验码方案A
Data
[
6
]
=
StartDownload
.
reason
;
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_startDownloadAck
,
4
,
ChargerCont1939Addr
);
}
else
if
(
ChgNum
==
2
)
{
Data
[
1
]
=
StartDownload_B
.
type
;
Data
[
2
]
=
StartDownload_B
.
addr
;
Data
[
3
]
=
0x01
;
//01H:禁止下载
Data
[
3
]
=
StartDownload_B
.
result
;
//01H:禁止下载
Data
[
4
]
=
0x03
;
//0x03:BIN格式
Data
[
5
]
=
0x01
;
//0x01:校验码方案A
Data
[
6
]
=
0x01
;
//01H:本身不支持此功能
Data
[
6
]
=
StartDownload_B
.
reason
;
//01H:本身不支持此功能
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_startDownloadAck
,
4
,
ChargerCont1939Addr_B
);
}
}
typedef
struct
{
u8
type
;
//设备类型
u8
addr
;
//设备通信地址
u32
ProgramSize
;
//BIN格式:程序文件总字节数
}
StructRequestInterval
;
StructRequestInterval
RequestIntervalData
=
{
0
};
void
TCURequestIntervalHandle
(
StructTCUSend
*
pPgnRecv
)
{
u8
addr
=
0
;
u32
ProgramSize
=
0
;
u8
Date
[
8
]
=
{
0
};
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
if
(
pPgnRecv
->
Data
[
1
]
==
0x01
)
//0x01 --- 直流充电控制器
{
addr
=
pPgnRecv
->
Data
[
2
];
memcpy
(
&
ProgramSize
,
&
pPgnRecv
->
Data
[
3
],
4
);
//ack1
Date
[
1
]
=
0x01
;
Date
[
2
]
=
addr
;
Date
[
3
]
=
0x01
;
TCUSinglePackSendMsg
(
Date
,
8
,
eCmd_RequestIntervalAck1
,
4
,
ChargerCont1939Addr
);
//ack2
Date
[
3
]
=
0x02
;
u32
tmp
=
480
*
1024
;
memcpy
(
&
Date
[
4
],
&
tmp
,
4
);
TCUSinglePackSendMsg
(
Date
,
8
,
eCmd_RequestIntervalAck2
,
4
,
ChargerCont1939Addr
);
RequestIntervalData
.
type
=
pPgnRecv
->
Data
[
1
];
RequestIntervalData
.
addr
=
pPgnRecv
->
Data
[
2
];
memcpy
(
&
(
RequestIntervalData
.
ProgramSize
),
&
(
pPgnRecv
->
Data
[
3
]),
4
);
TCUCommuStatus
.
CommStage
=
RequestIntervalStage
;
}
}
}
u8
TcuUpDateBuffer
[
1024
];
u32
PackageAddr
=
0
;
void
TCURequestIntervalAck
(
void
)
{
u8
Date
[
8
]
=
{
0
};
//ack1
Date
[
1
]
=
RequestIntervalData
.
type
;
Date
[
2
]
=
RequestIntervalData
.
addr
;
Date
[
3
]
=
0x01
;
TCUSinglePackSendMsg
(
Date
,
8
,
eCmd_RequestIntervalAck1
,
4
,
ChargerCont1939Addr
);
//ack2
Date
[
3
]
=
0x02
;
u32
tmp
=
480
*
1024
;
memcpy
(
&
Date
[
4
],
&
tmp
,
4
);
TCUSinglePackSendMsg
(
Date
,
8
,
eCmd_RequestIntervalAck2
,
4
,
ChargerCont1939Addr
);
}
typedef
struct
{
u8
type
;
//设备类型
u8
addr
;
//设备通信地址
u32
PackageAddr
;
//分组的首地址
}
StructStartPackage
;
StructStartPackage
StartPackageData
=
{
0
};
void
TCUStartPackageHandle
(
StructTCUSend
*
pPgnRecv
)
{
u8
addr
=
0
;
u8
Date
[
8
]
=
{
0
};
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
if
(
pPgnRecv
->
Data
[
1
]
==
0x01
)
//0x01 --- 直流充电控制器
{
addr
=
pPgnRecv
->
Data
[
2
];
memcpy
(
&
PackageAddr
,
&
pPgnRecv
->
Data
[
3
],
4
);
StartPackageData
.
type
=
pPgnRecv
->
Data
[
1
];
StartPackageData
.
addr
=
pPgnRecv
->
Data
[
2
];
memcpy
(
&
StartPackageData
.
PackageAddr
,
&
pPgnRecv
->
Data
[
3
],
4
);
Date
[
1
]
=
0x01
;
Date
[
2
]
=
addr
;
memcpy
(
&
Date
[
3
],
&
PackageAddr
,
4
);
TCUSinglePackSendMsg
(
Date
,
8
,
eCmd_StartPackageAck
,
4
,
ChargerCont1939Addr
);
TCUCommuStatus
.
CommStage
=
StartPackageStage
;
}
}
}
void
TCUStartPackageAck
(
void
)
{
u8
Date
[
8
]
=
{
0
};
Date
[
1
]
=
StartPackageData
.
type
;
Date
[
2
]
=
StartPackageData
.
addr
;
memcpy
(
&
Date
[
3
],
&
(
StartPackageData
.
PackageAddr
),
4
);
TCUSinglePackSendMsg
(
Date
,
8
,
eCmd_StartPackageAck
,
4
,
ChargerCont1939Addr
);
}
void
TCUSendDateHandle
(
StructTCUSend
*
pPgnRecv
)
{
...
...
@@ -188,6 +230,8 @@ void TCUSendDateHandle(StructTCUSend * pPgnRecv)
}
index
=
4
*
pPgnRecv
->
Data
[
3
];
memcpy
(
&
TcuUpDateBuffer
[
index
],
&
(
pPgnRecv
->
Data
[
4
]),
4
);
TCUCommuStatus
.
CommStage
=
SendDateStage
;
}
}
}
...
...
@@ -197,102 +241,357 @@ u32 TCUGetPackageChecksum(void)
u32
TCUGetProgramChecksum
(
void
)
{}
typedef
struct
{
u8
type
;
//设备类型
u8
addr
;
//设备通信地址
u8
result
;
//0x55:校验失败;0xAA:校验成功;0xFF:擦除失败。
u32
checksum
;
//整包校验码
}
StructCompletePackage
;
StructCompletePackage
CompletePackageData
=
{
0
};
void
TCUCompletePackageHandle
(
StructTCUSend
*
pPgnRecv
)
{
u8
addr
=
0
;
u32
checksum
=
0
;
int
ret
=
0
;
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
if
(
pPgnRecv
->
Data
[
1
]
==
0x01
)
//0x01 --- 直流充电控制器
{
CompletePackageData
.
type
=
pPgnRecv
->
Data
[
1
];
CompletePackageData
.
addr
=
pPgnRecv
->
Data
[
2
];
memcpy
(
&
(
CompletePackageData
.
checksum
),
&
(
pPgnRecv
->
Data
[
3
]),
4
);
TCUCommuStatus
.
CommStage
=
CompletePackageStage
;
}
}
}
void
TCUCompletePackageAck
(
void
)
{
u8
Date
[
8
]
=
{
0
};
Date
[
1
]
=
CompletePackageData
.
type
;
Date
[
2
]
=
CompletePackageData
.
addr
;
if
(
CompletePackageData
.
result
==
0x55
)
{
Date
[
3
]
=
0x55
;
//0x55:校验失败
memcpy
(
&
Date
[
4
],
&
(
StartPackageData
.
PackageAddr
),
4
);
}
else
if
(
CompletePackageData
.
result
==
0xAA
)
{
Date
[
3
]
=
0xaa
;
//0xAA:校验成功
memcpy
(
&
Date
[
4
],
&
(
StartPackageData
.
PackageAddr
),
4
);
}
else
if
(
CompletePackageData
.
result
==
0xFF
)
{
Date
[
3
]
=
0xff
;
//0xFF:擦除失败
}
TCUSinglePackSendMsg
(
Date
,
8
,
eCmd_CompletePackageAck
,
4
,
ChargerCont1939Addr
);
}
typedef
struct
{
u8
type
;
//设备类型
u8
addr
;
//设备通信地址
u8
result
;
//00H:成功 01H:失败 其它:无效
u32
checksum
;
//需要更新整个程序的校验码
}
StructProgramVerification
;
StructProgramVerification
ProgramVerificationData
=
{
0
};
void
TCUProgramVerificationHandle
(
StructTCUSend
*
pPgnRecv
)
{
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
if
(
pPgnRecv
->
Data
[
1
]
==
0x01
)
//0x01 --- 直流充电控制器
{
addr
=
pPgnRecv
->
Data
[
2
];
memcpy
(
&
checksum
,
&
(
pPgnRecv
->
Data
[
3
]),
4
);
ProgramVerificationData
.
type
=
pPgnRecv
->
Data
[
1
];
ProgramVerificationData
.
addr
=
pPgnRecv
->
Data
[
2
];
memcpy
(
&
(
ProgramVerificationData
.
checksum
),
&
(
pPgnRecv
->
Data
[
3
]),
4
);
Date
[
1
]
=
0x01
;
Date
[
2
]
=
addr
;
if
(
checksum
==
TCUGetPackageChecksum
())
TCUCommuStatus
.
CommStage
=
ProgramVerificationStage
;
}
}
}
void
TCUProgramVerificationAck
(
void
)
{
u8
Date
[
8
]
=
{
0
};
Date
[
1
]
=
ProgramVerificationData
.
type
;
Date
[
2
]
=
ProgramVerificationData
.
addr
;
Date
[
3
]
=
ProgramVerificationData
.
result
;
TCUSinglePackSendMsg
(
Date
,
8
,
eCmd_ProgramVerificationAck
,
4
,
ChargerCont1939Addr
);
}
typedef
struct
{
u8
type
;
//设备类型
u8
addr
;
//设备通信地址
u8
result
;
//00H:成功 01H:失败 其它:无效
u8
cmd
;
//AAH:代表立即重启 其他:无效。
}
StructReset
;
StructReset
TCURest
=
{
0
};
void
TCUResetHandle
(
StructTCUSend
*
pPgnRecv
)
{
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
if
(
pPgnRecv
->
Data
[
1
]
==
0x01
)
//0x01 --- 直流充电控制器
{
TCURest
.
type
=
pPgnRecv
->
Data
[
1
];
TCURest
.
addr
=
pPgnRecv
->
Data
[
2
];
if
(
pPgnRecv
->
Data
[
2
]
==
0xAA
)
//AAH:代表立即重启
{
Date
[
3
]
=
0xaa
;
//0xAA:校验成功
TCURest
.
cmd
=
0xAA
;
TCUCommuStatus
.
CommStage
=
ResetStage
;
}
}
}
}
void
TCUResetAck
(
void
)
{
u8
Date
[
8
]
=
{
0
};
Date
[
1
]
=
TCURest
.
type
;
Date
[
2
]
=
TCURest
.
addr
;
Date
[
2
]
=
TCURest
.
cmd
;
//
TCUSinglePackSendMsg
(
Date
,
8
,
eCmd_resetAck
,
4
,
ChargerCont1939Addr
);
}
void
TCUUpdateHandle
(
void
)
{
static
EnumTCUCommStage
oldStage
;
static
u32
sendTick
=
0
;
static
u8
sendTimes
=
0
;
u32
SystemTick
=
GetSystemTick
();
if
(
oldStage
!=
TCUCommuStatus
.
CommStage
)
{
sendTick
=
0
;
sendTimes
=
0
;
oldStage
=
TCUCommuStatus
.
CommStage
;
}
if
((
TCUCommuStatus
.
CommStage
==
StartDownloadStage
))
{
if
(
SystemTick
-
sendTick
>=
500
)
{
sendTimes
++
;
sendTick
=
SystemTick
;
if
(
sendTimes
>
2000
/
500
)
{
TCUCommuStatus
.
CommStage
=
HeartStage
;
TCUCommuStatus
.
ErrData
.
Value
.
DataRequestSend
=
1
;
}
else
{
StartDownloadAck
(
1
);
}
}
}
if
((
TCUCommuStatus
.
CommStage
==
RequestIntervalStage
))
{
if
(
SystemTick
-
sendTick
>=
500
)
{
sendTimes
++
;
sendTick
=
SystemTick
;
if
(
sendTimes
>
2000
/
500
)
{
TCUCommuStatus
.
CommStage
=
HeartStage
;
//TCUCommuStatus.ErrData.Value.DataRequestSend = 1;
}
else
{
TCURequestIntervalAck
();
}
}
}
if
((
TCUCommuStatus
.
CommStage
==
StartPackageStage
))
{
if
(
SystemTick
-
sendTick
>=
500
)
{
sendTimes
++
;
sendTick
=
SystemTick
;
if
(
sendTimes
>
2000
/
500
)
{
TCUCommuStatus
.
CommStage
=
HeartStage
;
//TCUCommuStatus.ErrData.Value.DataRequestSend = 1;
}
else
{
TCUStartPackageAck
();
}
}
}
if
((
TCUCommuStatus
.
CommStage
==
SendDateStage
))
{
TCUCommuStatus
.
CommStage
=
SendDateWaitStage
;
}
else
if
(
TCUCommuStatus
.
CommStage
==
SendDateWaitStage
)
{
if
(
SystemTick
-
sendTick
>=
100
)
{
sendTimes
++
;
sendTick
=
SystemTick
;
if
(
sendTimes
>
1000
/
100
)
{
TCUCommuStatus
.
CommStage
=
HeartStage
;
TCUCommuStatus
.
ErrData
.
Value
.
DataSend
=
1
;
}
}
}
if
((
TCUCommuStatus
.
CommStage
==
CompletePackageStage
))
{
if
(
sendTick
==
0
)
{
if
(
CompletePackageData
.
checksum
==
TCUGetPackageChecksum
())
{
CompletePackageData
.
result
=
0xaa
;
//0xAA:校验成功
//write to flash
ret
=
CopyCode
(
BakStartAddr
+
PackageAddr
,(
u32
)
TcuUpDateBuffer
,
1024
);
int
ret
=
0
;
ret
=
CopyCode
(
BakStartAddr
+
StartPackageData
.
PackageAddr
,(
u32
)
TcuUpDateBuffer
,
1024
);
if
(
ret
==
0
)
{
memcpy
(
&
Date
[
4
],
&
(
PackageAddr
),
4
);
}
else
if
(
ret
!=
0
)
{
Date
[
3
]
=
0xff
;
//0xFF:擦除失败
CompletePackageData
.
result
=
0xff
;
//0xFF:擦除失败
}
}
else
{
CompletePackageData
.
result
=
0x55
;
//0x55:校验失败
}
}
if
(
SystemTick
-
sendTick
>=
500
)
{
sendTimes
++
;
sendTick
=
SystemTick
;
if
(
sendTimes
>
2000
/
500
)
{
TCUCommuStatus
.
CommStage
=
HeartStage
;
//TCUCommuStatus.ErrData.Value.DataRequestSend = 1;
}
else
{
Date
[
3
]
=
0x55
;
//0x55:校验失败
memcpy
(
&
Date
[
4
],
&
(
PackageAddr
),
4
);
TCUCompletePackageAck
();
}
TCUSinglePackSendMsg
(
Date
,
8
,
eCmd_CompletePackageAck
,
4
,
ChargerCont1939Addr
);
}
}
}
void
TCUProgramVerificationHandle
(
StructTCUSend
*
pPgnRecv
)
{
u8
addr
=
0
;
u32
ProgramChecksum
=
0
;
u8
Date
[
8
]
=
{
0
};
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
if
((
TCUCommuStatus
.
CommStage
==
ProgramVerificationStage
))
{
if
(
pPgnRecv
->
Data
[
1
]
==
0x01
)
//0x01 --- 直流充电控制器
if
(
sendTick
==
0
)
{
addr
=
pPgnRecv
->
Data
[
2
];
if
(
ProgramVerificationData
.
checksum
==
TCUGetProgramChecksum
())
{
ProgramVerificationData
.
result
=
0x00
;
}
else
{
ProgramVerificationData
.
result
=
0x01
;
//01H:失败
}
}
if
(
SystemTick
-
sendTick
>=
500
)
{
sendTimes
++
;
sendTick
=
SystemTick
;
if
(
sendTimes
>
2000
/
500
)
{
TCUCommuStatus
.
CommStage
=
HeartStage
;
memcpy
(
&
ProgramChecksum
,
&
(
pPgnRecv
->
Data
[
3
]),
4
);
TCUCommuStatus
.
ErrData
.
Value
.
ProgramVerification
=
1
;
}
else
{
TCUProgramVerificationAck
();
}
}
}
Date
[
1
]
=
0x01
;
Date
[
2
]
=
addr
;
if
(
ProgramChecksum
==
TCUGetProgramChecksum
())
if
((
TCUCommuStatus
.
CommStage
==
ResetStage
))
{
if
(
SystemTick
-
sendTick
>=
500
)
{
sendTimes
++
;
sendTick
=
SystemTick
;
if
(
sendTimes
>
2000
/
500
)
{
TCUCommuStatus
.
CommStage
=
HeartStage
;
//升级成功
UpdateFlagSet
(
0x414E4747
);
osDelay
(
500
);
NVIC_SystemReset
();
while
(
1
);
}
else
{
Date
[
3
]
=
0x01
;
//01H:失败
TCUResetAck
();
}
TCUSinglePackSendMsg
(
Date
,
8
,
eCmd_ProgramVerificationAck
,
4
,
ChargerCont1939Addr
);
}
}
}
void
TCU
ResetHandle
(
StructTCUSend
*
pPgnRecv
)
void
TCU
UpdateHandle_B
(
void
)
{
u8
addr
=
0
;
u8
Date
[
8
]
=
{
0
};
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
static
EnumTCUCommStage
oldStage
;
static
u32
sendTick
=
0
;
static
u8
sendTimes
=
0
;
if
(
oldStage
!=
TCUCommuStatus_B
.
CommStage
)
{
if
(
pPgnRecv
->
Data
[
1
]
==
0x01
)
//0x01 --- 直流充电控制器
sendTick
=
0
;
sendTimes
=
0
;
oldStage
=
TCUCommuStatus_B
.
CommStage
;
}
if
((
TCUCommuStatus_B
.
CommStage
==
StartDownloadStage
))
{
if
(
GetSystemTick
()
-
sendTick
>=
500
)
{
addr
=
pPgnRecv
->
Data
[
2
];
Date
[
1
]
=
0x01
;
Date
[
2
]
=
addr
;
if
(
pPgnRecv
->
Data
[
2
]
==
0xAA
)
//AAH:代表立即重启
sendTimes
++
;
sendTick
=
GetSystemTick
();
if
(
sendTimes
>
2000
/
500
)
{
Date
[
2
]
=
0xAA
;
//
TCUCommuStatus_B
.
CommStage
=
HeartStage
;
}
else
{
StartDownloadAck
(
2
);
}
TCUSinglePackSendMsg
(
Date
,
8
,
eCmd_resetAck
,
4
,
ChargerCont1939Addr
);
}
}
}
}
DcPillar/Src/TCU/TCU_UpDate.h
浏览文件 @
b5ec882a
...
...
@@ -15,5 +15,7 @@ void TCUCompletePackageHandle(StructTCUSend * pPgnRecv);
void
TCUProgramVerificationHandle
(
StructTCUSend
*
pPgnRecv
);
void
TCUResetHandle
(
StructTCUSend
*
pPgnRecv
);
void
TCUUpdateHandle
(
void
);
void
TCUUpdateHandle_B
(
void
);
#endif
/*__TCU_UPDATE_H__*/
DcPillar/Src/Thread/Thd_TCU.c
浏览文件 @
b5ec882a
...
...
@@ -254,7 +254,7 @@ void ConEMSend(void)
static
u32
ConEMSendTick_B
=
0
;
static
u32
ConEMSendEcount_B
=
0
;
if
(
TCUCommuStatus
.
ConEMSendFlag
==
1
)
if
(
TCUCommuStatus
.
ErrData
.
Mult
)
{
if
(
GetSystemTick
()
-
ConEMSendTick
>=
250
)
{
...
...
@@ -268,7 +268,16 @@ void ConEMSend(void)
{
ConEMSendTick
=
0
;
ConEMSendEcount
=
0
;
memset
(
&
TCUCommuStatus
,
0x00
,
sizeof
(
TCUCommuStatus
));
//通讯初始化
if
(
TCUCommuStatus
.
ErrData
.
Value
.
DCTCUInfor
||
TCUCommuStatus
.
ErrData
.
Value
.
DCTCUMeasu
)
{
memset
(
&
TCUCommuStatus
,
0x00
,
sizeof
(
TCUCommuStatus
));
//通讯初始化
}
else
{
TCUCommuStatus
.
ErrData
.
Mult
=
0
;
}
}
}
}
...
...
@@ -278,7 +287,7 @@ void ConEMSend(void)
ConEMSendEcount
=
0
;
}
if
(
TCUCommuStatus_B
.
ConEMSendFlag
==
1
)
if
(
TCUCommuStatus_B
.
ErrData
.
Mult
)
{
if
(
GetSystemTick
()
-
ConEMSendTick_B
>=
250
)
{
...
...
@@ -292,7 +301,16 @@ void ConEMSend(void)
{
ConEMSendTick_B
=
0
;
ConEMSendEcount_B
=
0
;
memset
(
&
TCUCommuStatus_B
,
0x00
,
sizeof
(
TCUCommuStatus
));
//通讯初始化
if
(
TCUCommuStatus_B
.
ErrData
.
Value
.
DCTCUInfor
||
TCUCommuStatus_B
.
ErrData
.
Value
.
DCTCUMeasu
)
{
memset
(
&
TCUCommuStatus_B
,
0x00
,
sizeof
(
TCUCommuStatus
));
//通讯初始化
}
else
{
TCUCommuStatus_B
.
ErrData
.
Mult
=
0
;
}
}
}
}
...
...
@@ -587,22 +605,6 @@ void CommutionRunStage(void)
}
if
((
TCUCommuStatus
.
CommStage
==
StartDownloadStage
))
{
if
(
GetSystemTick
()
-
sendTick
>=
500
)
{
sendTimes
++
;
sendTick
=
GetSystemTick
();
if
(
sendTimes
>
2000
/
500
)
{
TCUCommuStatus
.
CommStage
=
HeartStage
;
}
else
{
StartDownloadAck
(
1
);
}
}
}
oldStage
=
TCUCommuStatus
.
CommStage
;
}
...
...
@@ -710,24 +712,6 @@ void CommutionRunStage_B(void)
}
if
((
TCUCommuStatus_B
.
CommStage
==
StartDownloadStage
))
{
if
(
GetSystemTick
()
-
sendTick_B
>=
500
)
{
sendTimes_B
++
;
sendTick_B
=
GetSystemTick
();
if
(
sendTimes_B
>
2000
/
500
)
{
TCUCommuStatus_B
.
CommStage
=
HeartStage
;
}
else
{
StartDownloadAck
(
2
);
}
}
}
oldStage_B
=
TCUCommuStatus_B
.
CommStage
;
}
...
...
@@ -1218,13 +1202,15 @@ void TCUComm(void const * argument)
DCMeasuring
();
//遥测
TCUCurChgRecordInterface_A
();
//启停逻辑处理
VehicleVerificationHandle
();
TCUUpdateHandle
();
}
if
(
TCUCommuStatus_B
.
CommStage
<
HeartStage
)
{
if
(
TCUCommuStatus_B
.
ConnectFlag
!=
CONNECT_TIMEOUT
)
{
CommutionConfigurationStage_B
();
//配置阶段
CommutionConfigurationStage_B
();
//配置阶段
}
}
...
...
@@ -1236,6 +1222,8 @@ void TCUComm(void const * argument)
DCMeasuring_B
();
//遥测
TCUCurChgRecordInterface_B
();
//启停逻辑处理
VehicleVerificationHandle_B
();
TCUUpdateHandle_B
();
}
...
...
DcPillar/Src/Thread/Thd_TCU.h
浏览文件 @
b5ec882a
...
...
@@ -19,7 +19,16 @@ typedef enum {
ElectLockStage
=
6
,
PowerControlStage
=
7
,
ChgInfornQueryStage
=
8
,
StartDownloadStage
=
9
,
StartDownloadStage
,
RequestIntervalStage
,
StartPackageStage
,
SendDateStage
,
SendDateWaitStage
,
CompletePackageStage
,
ProgramVerificationStage
,
ResetStage
,
}
EnumTCUCommStage
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论