串口透传OK
This commit is contained in:
parent
eefa3d51b1
commit
0fcd2db86a
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[submodule "ASW/CherryRB"]
|
||||||
|
path = ASW/CherryRB
|
||||||
|
url = https://github.com/cherry-embedded/CherryRB.git
|
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@ -3,6 +3,8 @@
|
|||||||
"files.associations": {
|
"files.associations": {
|
||||||
"candrv.h": "c",
|
"candrv.h": "c",
|
||||||
"stm32l4xx_hal.h": "c",
|
"stm32l4xx_hal.h": "c",
|
||||||
"uart2candiagapp.h": "c"
|
"uart2candiagapp.h": "c",
|
||||||
|
"chry_ringbuffer.h": "c",
|
||||||
|
"stdio.h": "c"
|
||||||
}
|
}
|
||||||
}
|
}
|
1
ASW/CherryRB
Submodule
1
ASW/CherryRB
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 19ea7c6efcf19dc9e805a0a662212533ee5b1edb
|
@ -3,6 +3,9 @@
|
|||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
#include "CanDrv.h"
|
#include "CanDrv.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include "Uart2CanDiagApp.h"
|
||||||
|
#include <string.h>
|
||||||
|
#include "CherryRB/chry_ringbuffer.h"
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* the defines
|
* the defines
|
||||||
@ -21,6 +24,11 @@
|
|||||||
extern CAN_HandleTypeDef hcan1;
|
extern CAN_HandleTypeDef hcan1;
|
||||||
static CAN_TxHeaderTypeDef txhead;
|
static CAN_TxHeaderTypeDef txhead;
|
||||||
static uint32_t TxMailbox = CAN_TX_MAILBOX0;
|
static uint32_t TxMailbox = CAN_TX_MAILBOX0;
|
||||||
|
static uint16_t respID = 0,phyID = 0;
|
||||||
|
|
||||||
|
static chry_ringbuffer_t rb;
|
||||||
|
static uint8_t mempool[64];
|
||||||
|
static uint8_t FlagRbErr,FlagGetFC;
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* the const
|
* the const
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
@ -30,6 +38,9 @@ static uint32_t TxMailbox = CAN_TX_MAILBOX0;
|
|||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* the functions
|
* the functions
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
uint8_t CanDrv_Init(void)
|
uint8_t CanDrv_Init(void)
|
||||||
{
|
{
|
||||||
txhead.StdId = TEST_ID;
|
txhead.StdId = TEST_ID;
|
||||||
@ -38,19 +49,13 @@ uint8_t CanDrv_Init(void)
|
|||||||
txhead.TransmitGlobalTime = DISABLE;
|
txhead.TransmitGlobalTime = DISABLE;
|
||||||
txhead.DLC = 8;
|
txhead.DLC = 8;
|
||||||
HAL_CAN_Start(&hcan1);
|
HAL_CAN_Start(&hcan1);
|
||||||
CAN_FilterTypeDef filter;
|
CanDrv_SetFilter(0x777,0);//for test
|
||||||
filter.FilterMode = CAN_FILTERMODE_IDMASK;
|
|
||||||
filter.FilterIdHigh = 0x7B2 << 5; // 注意:标准 ID 要左移 5 位
|
|
||||||
filter.FilterMaskIdHigh = 0x7FF << 5;
|
|
||||||
filter.FilterFIFOAssignment = CAN_RX_FIFO0;
|
|
||||||
filter.FilterBank = 0;
|
|
||||||
|
|
||||||
filter.FilterScale = CAN_FILTERSCALE_32BIT;
|
|
||||||
filter.FilterActivation = CAN_FILTER_ENABLE;
|
|
||||||
|
|
||||||
|
|
||||||
HAL_CAN_ConfigFilter(&hcan1,&filter);
|
|
||||||
HAL_CAN_ActivateNotification(&hcan1, CAN_IT_RX_FIFO0_MSG_PENDING);
|
HAL_CAN_ActivateNotification(&hcan1, CAN_IT_RX_FIFO0_MSG_PENDING);
|
||||||
|
|
||||||
|
if(0 != chry_ringbuffer_init(&rb, mempool, 64))
|
||||||
|
{
|
||||||
|
printf("err:can rb init\n");
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,6 +83,7 @@ uint8_t CanDrv_GetCANTxEmpty(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//中断函数
|
||||||
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
|
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
|
||||||
{
|
{
|
||||||
CAN_RxHeaderTypeDef rxmsg;
|
CAN_RxHeaderTypeDef rxmsg;
|
||||||
@ -85,8 +91,72 @@ void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
|
|||||||
HAL_CAN_GetRxMessage(hcan,CAN_RX_FIFO0,&rxmsg,data);
|
HAL_CAN_GetRxMessage(hcan,CAN_RX_FIFO0,&rxmsg,data);
|
||||||
if (rxmsg.StdId >= 0x600)
|
if (rxmsg.StdId >= 0x600)
|
||||||
{
|
{
|
||||||
printf("get id:0x%03x",rxmsg.StdId);
|
//printf("get id:0x%03x",rxmsg.StdId);
|
||||||
|
if (respID == rxmsg.StdId)
|
||||||
|
{
|
||||||
|
uint32_t len = chry_ringbuffer_write(&rb, data, 8);
|
||||||
|
if (len != 8)
|
||||||
|
{
|
||||||
|
FlagRbErr = 1;
|
||||||
|
printf("err:ring buf write\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t CanDrv_SetFilter(uint16_t id,uint8_t bank)
|
||||||
|
{
|
||||||
|
CAN_FilterTypeDef filter;
|
||||||
|
filter.FilterMode = CAN_FILTERMODE_IDMASK;
|
||||||
|
filter.FilterIdHigh = id << 5; // 注意:标准 ID 要左移 5 位
|
||||||
|
filter.FilterMaskIdHigh = 0x7FF << 5;
|
||||||
|
filter.FilterFIFOAssignment = CAN_RX_FIFO0;
|
||||||
|
filter.FilterBank = bank;
|
||||||
|
|
||||||
|
filter.FilterScale = CAN_FILTERSCALE_32BIT;
|
||||||
|
filter.FilterActivation = CAN_FILTER_ENABLE;
|
||||||
|
|
||||||
|
|
||||||
|
HAL_CAN_ConfigFilter(&hcan1,&filter);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CanDrv_SetDiagID(uint16_t pid,uint16_t rid)
|
||||||
|
{
|
||||||
|
CanDrv_SetFilter(rid,1);
|
||||||
|
respID = rid;
|
||||||
|
phyID = pid;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t CanDrv_isGetFC(void)
|
||||||
|
{
|
||||||
|
uint8_t ret = 0;
|
||||||
|
ret = FlagGetFC;
|
||||||
|
FlagGetFC = 0;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CanDrv_MsgRecvTask(void)
|
||||||
|
{
|
||||||
|
uint8_t data[8];
|
||||||
|
uint32_t len = chry_ringbuffer_read(&rb, data, 8);
|
||||||
|
if (len)
|
||||||
|
{
|
||||||
|
if (len == 8)
|
||||||
|
{
|
||||||
|
//缓冲区中有数据
|
||||||
|
U2CD_PackDiagMsg(data);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FlagRbErr = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -32,6 +32,10 @@ uint8_t CanDrv_Init(void);
|
|||||||
uint8_t CanDrv_Txmsg(uint16_t id,uint8_t * data);
|
uint8_t CanDrv_Txmsg(uint16_t id,uint8_t * data);
|
||||||
void CanDrv_Test(void);
|
void CanDrv_Test(void);
|
||||||
uint8_t CanDrv_GetCANTxEmpty(void);
|
uint8_t CanDrv_GetCANTxEmpty(void);
|
||||||
|
uint8_t CanDrv_SetFilter(uint16_t id,uint8_t bank);
|
||||||
|
void CanDrv_SetDiagID(uint16_t pid,uint16_t rid);
|
||||||
|
void CanDrv_MsgRecvTask(void);
|
||||||
|
uint8_t CanDrv_isGetFC(void);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -5,13 +5,16 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include "CanDrv.h"
|
#include "CanDrv.h"
|
||||||
|
#include "uartapp.h"
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* the defines
|
* the defines
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
#define TX_BUF_SIZE 2050
|
#define U2CD_TX_BUF_SIZE 2050
|
||||||
|
#define U2CD_RX_BUF_SIZE 128
|
||||||
#define N_Bs 150
|
#define N_Bs 150
|
||||||
#define N_As 70
|
#define N_As 70
|
||||||
#define P2_SERVER 50
|
#define P2_SERVER 150
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* the typedefs
|
* the typedefs
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
@ -35,13 +38,15 @@ static uint8_t U2CD_fill;
|
|||||||
static uint8_t U2CD_cfgFlag;
|
static uint8_t U2CD_cfgFlag;
|
||||||
static uint8_t U2CD_TTFlag;
|
static uint8_t U2CD_TTFlag;
|
||||||
static uint16_t U2CD_TTLen;
|
static uint16_t U2CD_TTLen;
|
||||||
static uint8_t U2CD_Txbuf[TX_BUF_SIZE];
|
static uint8_t U2CD_Txbuf[U2CD_TX_BUF_SIZE];
|
||||||
static uint16_t U2CD_TxCnt;//发送数据指针
|
static uint16_t U2CD_TxCnt;//发送数据指针
|
||||||
static uint8_t U2CD_TxSN;
|
static uint8_t U2CD_TxSN;
|
||||||
static uint8_t U2CD_TxTimeCounter;
|
static uint8_t U2CD_TxTimeCounter;
|
||||||
|
static uint8_t U2CD_WaitRespFlag = 0;
|
||||||
static uint8_t U2CD_FCFlag = 0;
|
static uint8_t U2CD_FCFlag = 0;
|
||||||
static uint8_t U2CD_Framebuf[8];
|
static uint8_t U2CD_Framebuf[8];
|
||||||
|
|
||||||
|
static uint8_t U2CD_Rxbuf[U2CD_RX_BUF_SIZE];
|
||||||
static U2CD_TASK_STATE task_state;
|
static U2CD_TASK_STATE task_state;
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* the const
|
* the const
|
||||||
@ -55,6 +60,8 @@ static U2CD_TASK_STATE task_state;
|
|||||||
static void U2CD_TxSF(uint16_t id,uint8_t* data,uint16_t len);
|
static void U2CD_TxSF(uint16_t id,uint8_t* data,uint16_t len);
|
||||||
static void U2CD_TxFF(uint16_t id,uint8_t* data,uint16_t len);
|
static void U2CD_TxFF(uint16_t id,uint8_t* data,uint16_t len);
|
||||||
static void U2CD_TxCF(uint16_t id,uint8_t* data,uint16_t len);
|
static void U2CD_TxCF(uint16_t id,uint8_t* data,uint16_t len);
|
||||||
|
static void U2CD_TxFC(uint16_t id);
|
||||||
|
|
||||||
|
|
||||||
void U2CD_Init(void)
|
void U2CD_Init(void)
|
||||||
{
|
{
|
||||||
@ -73,6 +80,9 @@ void U2CD_cfg(uint16_t pid,uint16_t fid,uint16_t rid,uint8_t stmin,uint8_t fill)
|
|||||||
U2CD_stmin = stmin;
|
U2CD_stmin = stmin;
|
||||||
U2CD_fill = fill;
|
U2CD_fill = fill;
|
||||||
U2CD_cfgFlag = 1;
|
U2CD_cfgFlag = 1;
|
||||||
|
|
||||||
|
CanDrv_SetDiagID(pid,rid);
|
||||||
|
printf("ok:config finished\n");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -87,25 +97,32 @@ void U2CD_TickTask(void)
|
|||||||
}
|
}
|
||||||
void U2CD_Task(void)
|
void U2CD_Task(void)
|
||||||
{
|
{
|
||||||
|
CanDrv_MsgRecvTask();
|
||||||
switch (task_state)
|
switch (task_state)
|
||||||
{
|
{
|
||||||
case U2CD_TASK_idle:
|
case U2CD_TASK_idle:
|
||||||
if (U2CD_TTFlag == 1)
|
if (U2CD_TTFlag == 1)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (U2CD_TTLen <= 7)
|
if (U2CD_TTLen <= 7)
|
||||||
{
|
{
|
||||||
|
//printf("debug:send SF\n");
|
||||||
U2CD_TxSF(U2CD_pid,U2CD_Txbuf,U2CD_TTLen);
|
U2CD_TxSF(U2CD_pid,U2CD_Txbuf,U2CD_TTLen);
|
||||||
task_state = U2CD_TASK_WaitResp;
|
task_state = U2CD_TASK_WaitResp;
|
||||||
U2CD_TxTimeCounter = 0;
|
U2CD_TxTimeCounter = 0;
|
||||||
|
U2CD_WaitRespFlag = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
//printf("debug:send FF");
|
||||||
U2CD_TxFF(U2CD_pid,U2CD_Txbuf,U2CD_TTLen);
|
U2CD_TxFF(U2CD_pid,U2CD_Txbuf,U2CD_TTLen);
|
||||||
task_state = U2CD_TASK_WaitFC;
|
task_state = U2CD_TASK_WaitFC;
|
||||||
U2CD_TxTimeCounter = 0;
|
U2CD_TxTimeCounter = 0;
|
||||||
U2CD_FCFlag = 0;
|
U2CD_FCFlag = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
U2CD_TTFlag = 0;
|
||||||
|
U2CD_TTLen = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -117,6 +134,7 @@ void U2CD_Task(void)
|
|||||||
}
|
}
|
||||||
if (U2CD_FCFlag == 1)
|
if (U2CD_FCFlag == 1)
|
||||||
{
|
{
|
||||||
|
U2CD_FCFlag = 0;
|
||||||
U2CD_TxTimeCounter = 0;
|
U2CD_TxTimeCounter = 0;
|
||||||
task_state = U2CD_TASK_TxCF;
|
task_state = U2CD_TASK_TxCF;
|
||||||
}
|
}
|
||||||
@ -157,6 +175,13 @@ void U2CD_Task(void)
|
|||||||
printf("err:P2_SERVER timeout\n");
|
printf("err:P2_SERVER timeout\n");
|
||||||
task_state = U2CD_TASK_idle;
|
task_state = U2CD_TASK_idle;
|
||||||
}
|
}
|
||||||
|
if (U2CD_WaitRespFlag == 1)
|
||||||
|
{
|
||||||
|
//printf("ok:get resp\n");
|
||||||
|
U2CD_WaitRespFlag = 0;
|
||||||
|
task_state = U2CD_TASK_idle;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -165,7 +190,7 @@ void U2CD_Task(void)
|
|||||||
|
|
||||||
void U2CD_TTreq(uint8_t* data,uint16_t len)
|
void U2CD_TTreq(uint8_t* data,uint16_t len)
|
||||||
{
|
{
|
||||||
if (len > TX_BUF_SIZE)
|
if (len > U2CD_TX_BUF_SIZE)
|
||||||
{
|
{
|
||||||
printf("err:len too long");
|
printf("err:len too long");
|
||||||
return;
|
return;
|
||||||
@ -185,6 +210,90 @@ void U2CD_TTreq(uint8_t* data,uint16_t len)
|
|||||||
memcpy(U2CD_Txbuf,data,len);
|
memcpy(U2CD_Txbuf,data,len);
|
||||||
U2CD_TTLen = len;
|
U2CD_TTLen = len;
|
||||||
U2CD_TTFlag = 1;
|
U2CD_TTFlag = 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void U2CD_DiagMsgProReq(uint8_t *data,uint16_t len)
|
||||||
|
{
|
||||||
|
U2CD_WaitRespFlag = 1;
|
||||||
|
//printf("ok:get pdu\n");
|
||||||
|
printf("data:");
|
||||||
|
uartapp_TxHexData(data,len);
|
||||||
|
printf("\nend\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
void U2CD_PackDiagMsg(uint8_t *data)
|
||||||
|
{
|
||||||
|
//变量大小需要考虑PDU_BUF_SIZE大小
|
||||||
|
static uint8_t pointer,maxlen,flag_getff,last_frame_sn;
|
||||||
|
|
||||||
|
|
||||||
|
uint8_t n_pci = data[0]>>4;
|
||||||
|
|
||||||
|
switch (n_pci)
|
||||||
|
{
|
||||||
|
case 0://单帧
|
||||||
|
maxlen = data[0]&0x0f;
|
||||||
|
memcpy(U2CD_Rxbuf,&data[1],maxlen);
|
||||||
|
U2CD_DiagMsgProReq(U2CD_Rxbuf,maxlen);
|
||||||
|
flag_getff = 0;
|
||||||
|
break;
|
||||||
|
case 1://首帧
|
||||||
|
maxlen = ((data[0]&0x0f)<<8) + data[1];
|
||||||
|
if (maxlen <= U2CD_RX_BUF_SIZE)
|
||||||
|
{
|
||||||
|
U2CD_TxFC(U2CD_pid);
|
||||||
|
memcpy(U2CD_Rxbuf,&data[2],6);
|
||||||
|
flag_getff = 1;
|
||||||
|
last_frame_sn = 0;
|
||||||
|
pointer = 6;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("err:data too long\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 2://连续帧
|
||||||
|
if (flag_getff != 1)
|
||||||
|
{
|
||||||
|
//未收到首帧
|
||||||
|
printf("err:not get ff\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
uint8_t frame_sn = data[0]&0x0f;
|
||||||
|
if (((last_frame_sn+1)&0x0f) == frame_sn)
|
||||||
|
{//sn 正确
|
||||||
|
if (pointer+7 >= maxlen)
|
||||||
|
{//最后一帧
|
||||||
|
memcpy(&U2CD_Rxbuf[pointer],&data[1],(maxlen-pointer));
|
||||||
|
U2CD_DiagMsgProReq(U2CD_Rxbuf,maxlen);
|
||||||
|
flag_getff = 0;
|
||||||
|
//printf("debug:lcf\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//printf("debug:cf\n");
|
||||||
|
memcpy(&U2CD_Rxbuf[pointer],&data[1],7);
|
||||||
|
pointer+=7;
|
||||||
|
}
|
||||||
|
last_frame_sn = frame_sn;
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("err:sn err %d\n",frame_sn);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
//printf("ok:get FC\n");
|
||||||
|
U2CD_FCFlag = 1;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void U2CD_TxSF(uint16_t id,uint8_t* data,uint16_t len)
|
static void U2CD_TxSF(uint16_t id,uint8_t* data,uint16_t len)
|
||||||
@ -225,4 +334,17 @@ static void U2CD_TxCF(uint16_t id,uint8_t* data,uint16_t len)
|
|||||||
|
|
||||||
CanDrv_Txmsg(id,U2CD_Framebuf);
|
CanDrv_Txmsg(id,U2CD_Framebuf);
|
||||||
U2CD_TxSN++;
|
U2CD_TxSN++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void U2CD_TxFC(uint16_t id)
|
||||||
|
{
|
||||||
|
U2CD_Framebuf[0] = 0x30;
|
||||||
|
U2CD_Framebuf[1] = 8;//bs
|
||||||
|
U2CD_Framebuf[2] = 0;//stmin
|
||||||
|
|
||||||
|
for (uint8_t i = 3; i < 8; i++)
|
||||||
|
{
|
||||||
|
U2CD_Framebuf[i] = U2CD_fill;
|
||||||
|
}
|
||||||
|
CanDrv_Txmsg(id,U2CD_Framebuf);
|
||||||
|
}
|
||||||
|
@ -31,8 +31,9 @@ void U2CD_Init(void);
|
|||||||
void U2CD_cfg(uint16_t pid,uint16_t fid,uint16_t rid,uint8_t stmin,uint8_t fill);
|
void U2CD_cfg(uint16_t pid,uint16_t fid,uint16_t rid,uint8_t stmin,uint8_t fill);
|
||||||
void U2CD_Task(void);
|
void U2CD_Task(void);
|
||||||
void U2CD_TickTask(void);
|
void U2CD_TickTask(void);
|
||||||
|
void U2CD_DiagMsgProReq(uint8_t *data,uint16_t len);
|
||||||
|
void U2CD_PackDiagMsg(uint8_t *data);
|
||||||
|
void U2CD_TTreq(uint8_t* data,uint16_t len);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
#include "ud_66.h"
|
#include "ud_66.h"
|
||||||
#include "Uart2CanDiagApp.h"
|
#include "Uart2CanDiagApp.h"
|
||||||
|
#include <stdio.h>
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* the defines
|
* the defines
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
@ -54,7 +54,9 @@ void uartapp_cmd66(uint8_t* data, uint16_t len)
|
|||||||
ud66_cfg(data+1,len-1);
|
ud66_cfg(data+1,len-1);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
case CMD66_TTreq:
|
||||||
|
U2CD_TTreq(data+1,len-1);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -73,6 +75,7 @@ static void ud66_cfg(uint8_t* data, uint16_t len)
|
|||||||
uint8_t stmin = data[6];
|
uint8_t stmin = data[6];
|
||||||
uint8_t fill = data[7];
|
uint8_t fill = data[7];
|
||||||
U2CD_cfg(pid,fid,rid,stmin,fill);
|
U2CD_cfg(pid,fid,rid,stmin,fill);
|
||||||
|
//printf("pid=%x\n",pid);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -150,7 +150,7 @@ void uartapp_maintask(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("err rxsize=%d\n", rxsize);
|
printf("err:format err\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
maintask_gotoidle();
|
maintask_gotoidle();
|
||||||
@ -191,3 +191,7 @@ static void uartapp_cmdpro(uint8_t* data, uint16_t len)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void uartapp_TxHexData(uint8_t* data, uint16_t len)
|
||||||
|
{
|
||||||
|
HAL_UART_Transmit(&huart1, (uint8_t*)data, len, len*100);
|
||||||
|
}
|
@ -59,6 +59,9 @@
|
|||||||
void uartapp_init(void);
|
void uartapp_init(void);
|
||||||
void uartapp_maintask(void);
|
void uartapp_maintask(void);
|
||||||
uint32_t crc_calc(uint32_t addr,uint32_t len);
|
uint32_t crc_calc(uint32_t addr,uint32_t len);
|
||||||
|
void uartapp_TxHexData(uint8_t* data, uint16_t len);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /*DEFINES_NAME*/
|
#endif /*DEFINES_NAME*/
|
||||||
|
|
||||||
|
@ -76,6 +76,7 @@ target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
|
|||||||
${PROJECT_SOURCE_DIR}/asw/
|
${PROJECT_SOURCE_DIR}/asw/
|
||||||
${PROJECT_SOURCE_DIR}/asw/UartDiagApp/
|
${PROJECT_SOURCE_DIR}/asw/UartDiagApp/
|
||||||
${PROJECT_SOURCE_DIR}/asw/UartDiagApp/Uart2CanDiag
|
${PROJECT_SOURCE_DIR}/asw/UartDiagApp/Uart2CanDiag
|
||||||
|
${PROJECT_SOURCE_DIR}/ASW/CherryRB
|
||||||
)
|
)
|
||||||
|
|
||||||
# Add project symbols (macros)
|
# Add project symbols (macros)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user