feat: Add UART3 functionality and parse specific IDs
parent
2e4b44259a
commit
9d4bd991d5
|
|
@ -540,15 +540,16 @@ static IVEC_McalCommonErr_e __prv_McalUartInitInstance(IVEC_McalUartHandle_s* px
|
||||||
{
|
{
|
||||||
DL_UART_Main_reset(UART2);
|
DL_UART_Main_reset(UART2);
|
||||||
DL_UART_Main_enablePower(UART2);
|
DL_UART_Main_enablePower(UART2);
|
||||||
DL_GPIO_initPeripheralOutputFunction(IOMUX_PINCM36, IOMUX_PINCM36_PF_UART3_TX);
|
DL_GPIO_initPeripheralOutputFunction(IOMUX_PINCM32, IOMUX_PINCM32_PF_UART2_TX);
|
||||||
DL_GPIO_initPeripheralInputFunction(IOMUX_PINCM35, IOMUX_PINCM35_PF_UART3_RX);
|
DL_GPIO_initPeripheralInputFunction(IOMUX_PINCM33, IOMUX_PINCM33_PF_UART2_RX);
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (pxUartHandle->eUartPortNumber == IVEC_MCAL_UART_PORT_4)
|
else if (pxUartHandle->eUartPortNumber == IVEC_MCAL_UART_PORT_4)
|
||||||
{
|
{
|
||||||
DL_UART_Main_reset(UART3);
|
DL_UART_Main_reset(UART3);
|
||||||
DL_UART_Main_enablePower(UART3);
|
DL_UART_Main_enablePower(UART3);
|
||||||
DL_GPIO_initPeripheralOutputFunction(IOMUX_PINCM32, IOMUX_PINCM32_PF_UART2_TX);
|
DL_GPIO_initPeripheralOutputFunction(IOMUX_PINCM36, IOMUX_PINCM36_PF_UART3_TX);
|
||||||
DL_GPIO_initPeripheralInputFunction(IOMUX_PINCM33, IOMUX_PINCM33_PF_UART2_RX);
|
DL_GPIO_initPeripheralInputFunction(IOMUX_PINCM35, IOMUX_PINCM35_PF_UART3_RX);
|
||||||
}
|
}
|
||||||
|
|
||||||
UART_Regs* pxUartInstance = __prv_McalGetUartInstance(pxUartHandle->eUartPortNumber);
|
UART_Regs* pxUartInstance = __prv_McalGetUartInstance(pxUartHandle->eUartPortNumber);
|
||||||
|
|
|
||||||
|
|
@ -147,12 +147,12 @@ void vRTE_MatlabInit(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void vRTE_InitUartCcEcho(void)
|
void vRTE_InitUartCc(void)
|
||||||
{
|
{
|
||||||
__gprv_UartCcHandle.u8Qbuffer = __gprv_u8CcUartDataBuffer;
|
__gprv_UartCcHandle.u8Qbuffer = __gprv_u8CcUartDataBuffer;
|
||||||
__gprv_UartCcHandle.u16QbufSize = eteCAN_UART_Cc_BUFFER_MAX_SIZE_u32;
|
__gprv_UartCcHandle.u16QbufSize = eteCAN_UART_Cc_BUFFER_MAX_SIZE_u32;
|
||||||
__gprv_UartCcHandle.eUartPortNumber = IVEC_ECU_UART_PORT4;
|
__gprv_UartCcHandle.eUartPortNumber = IVEC_ECU_UART_PORT4;
|
||||||
__gprv_UartCcHandle.u32BaudRate = IVEC_ECU_UART_BAUD_1000000;
|
__gprv_UartCcHandle.u32BaudRate = IVEC_ECU_UART_BAUD_230400;
|
||||||
|
|
||||||
xECU_UartInit(&__gprv_UartCcHandle);
|
xECU_UartInit(&__gprv_UartCcHandle);
|
||||||
}
|
}
|
||||||
|
|
@ -240,7 +240,7 @@ void vRTE_AppInit(void)
|
||||||
{
|
{
|
||||||
#if rteUART_PIN_SELECTION_u8 == 1
|
#if rteUART_PIN_SELECTION_u8 == 1
|
||||||
vRTE_MatlabInit();
|
vRTE_MatlabInit();
|
||||||
vRTE_InitUartCcEcho();
|
vRTE_InitUartCc();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
vRTE_InitUartCanEcho();
|
vRTE_InitUartCanEcho();
|
||||||
|
|
@ -478,8 +478,20 @@ void vCcUartRxToCanTx(IVEC_EcuCommonCanFrame_s* pxCanMsg)
|
||||||
{
|
{
|
||||||
if(pxCanMsg->u32CanId != 0x00)
|
if(pxCanMsg->u32CanId != 0x00)
|
||||||
{
|
{
|
||||||
|
if(pxCanMsg->u32CanId == 0xabcdef)
|
||||||
|
{
|
||||||
|
pxCanMsg->u32CanId = g_u32CanId;
|
||||||
xECU_WriteDataOverCAN(&g_xCanHandle, &pxCanMsg->pucCanData[0], pxCanMsg->u32CanId, pxCanMsg->ucCanDlc, 0);
|
xECU_WriteDataOverCAN(&g_xCanHandle, &pxCanMsg->pucCanData[0], pxCanMsg->u32CanId, pxCanMsg->ucCanDlc, 0);
|
||||||
}
|
}
|
||||||
|
else if (pxCanMsg->u32CanId == 0x1cea6969)
|
||||||
|
{
|
||||||
|
iECU_UartInitiateTransmit(&g_xUartHandle, (uint32_t)pxCanMsg->u32CanId,(uint8_t*)&pxCanMsg->pucCanData[0],(uint8_t)pxCanMsg->ucCanDlc);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xECU_WriteDataOverCAN(&g_xCanHandle, &pxCanMsg->pucCanData[0], pxCanMsg->u32CanId, pxCanMsg->ucCanDlc, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
void vRTE_CcUartRxProcess(void)
|
void vRTE_CcUartRxProcess(void)
|
||||||
{
|
{
|
||||||
|
|
@ -689,7 +701,18 @@ void vRTE_ProcessCanData(void)
|
||||||
int l_i32RetSize = 0;
|
int l_i32RetSize = 0;
|
||||||
uint8_t l_u8UartBuffer[30] = { 0 };
|
uint8_t l_u8UartBuffer[30] = { 0 };
|
||||||
int l_i32Status = -1;
|
int l_i32Status = -1;
|
||||||
|
if(l_xCanBuff.u32UlId == g_u32CanId)
|
||||||
|
{
|
||||||
|
l_xCanBuff.u32UlId = 0xabcdef;
|
||||||
|
}
|
||||||
l_i32RetSize = u16CMPLX_vFrameEncode((uint32_t)l_xCanBuff.u32UlId, (uint8_t*)&l_xCanBuff.u8Data[0], (int32_t)l_xCanBuff.u8Length, l_u8UartBuffer, 30);
|
l_i32RetSize = u16CMPLX_vFrameEncode((uint32_t)l_xCanBuff.u32UlId, (uint8_t*)&l_xCanBuff.u8Data[0], (int32_t)l_xCanBuff.u8Length, l_u8UartBuffer, 30);
|
||||||
|
// if(l_xCanBuff.u32UlId == g_u32CanId)
|
||||||
|
// {
|
||||||
|
// l_u8UartBuffer[4] = 0Xab;
|
||||||
|
// l_u8UartBuffer[5] = 0Xcd;
|
||||||
|
// l_u8UartBuffer[6] = 0Xef;
|
||||||
|
// l_u8UartBuffer[7] = 0X00;
|
||||||
|
// }
|
||||||
l_i32Status = IVEC_ECUUartWrite(&__gprv_UartCcHandle, l_u8UartBuffer, l_i32RetSize);
|
l_i32Status = IVEC_ECUUartWrite(&__gprv_UartCcHandle, l_u8UartBuffer, l_i32RetSize);
|
||||||
// if(l_i32Status != 0)
|
// if(l_i32Status != 0)
|
||||||
// {
|
// {
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,15 @@
|
||||||
#include "ivec_bsw_common.h"
|
#include "ivec_bsw_common.h"
|
||||||
#include "stdint.h"
|
#include "stdint.h"
|
||||||
#include "stdio.h"
|
#include "stdio.h"
|
||||||
|
|
||||||
|
#define IVEC_VFRAME_MIN_LEN 14
|
||||||
|
#define IVEC_VFRAME_DLC 2
|
||||||
|
#define IVEC_VFRAME_DLC_LEN 2
|
||||||
|
#define IVEC_VFRAME_ID 4
|
||||||
|
#define IVEC_VFRAME_ID_LEN 4
|
||||||
|
#define IVEC_VFRAME_DATA_START 12
|
||||||
|
#define IVEC_VFRAME_SYNC_CHAR_0 0xb5
|
||||||
|
#define IVEC_VFRAME_SYNC_CHAR_1 0x63
|
||||||
int u16CMPLX_vFrameFind(uint8_t* pcBuffer, int i32Len, uint8_t** pcFrameStartPt, uint8_t** pcFrameEndPt);
|
int u16CMPLX_vFrameFind(uint8_t* pcBuffer, int i32Len, uint8_t** pcFrameStartPt, uint8_t** pcFrameEndPt);
|
||||||
uint16_t u16CMPLX_vFrameDecode( const uint8_t* pInData, int i32InLen, uint8_t* pu8FrameData, int u8FrameBufLen ,int *pi32FrameDlc,uint32_t *pu32Id);
|
uint16_t u16CMPLX_vFrameDecode( const uint8_t* pInData, int i32InLen, uint8_t* pu8FrameData, int u8FrameBufLen ,int *pi32FrameDlc,uint32_t *pu32Id);
|
||||||
uint16_t u16CMPLX_vFrameEncode(uint32_t u32Id, const uint8_t* pInData, int i32InLen, uint8_t* pu8FrameBuffer, int pu8FrameBufferLen);
|
uint16_t u16CMPLX_vFrameEncode(uint32_t u32Id, const uint8_t* pInData, int i32InLen, uint8_t* pu8FrameBuffer, int pu8FrameBufferLen);
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,13 @@
|
||||||
#include "ivec_cmplx_vFrame.h"
|
#include "ivec_cmplx_vFrame.h"
|
||||||
|
|
||||||
#define IVEC_VFRAME_MIN_LEN 14
|
|
||||||
#define IVEC_VFRAME_DLC 2
|
|
||||||
#define IVEC_VFRAME_DLC_LEN 2
|
|
||||||
#define IVEC_VFRAME_ID 4
|
|
||||||
#define IVEC_VFRAME_ID_LEN 4
|
|
||||||
#define IVEC_VFRAME_DATA_START 12
|
|
||||||
#define IVEC_VFRAME_SYNC_CHAR_0 0xb5
|
|
||||||
#define IVEC_VFRAME_SYNC_CHAR_1 0x63
|
|
||||||
|
|
||||||
#define LOG_STRING "ivec-cmplx-vframe"
|
#define LOG_STRING "ivec-cmplx-vframe"
|
||||||
|
|
||||||
static void __prv_CalculateChecksum(uint8_t *pkt, int len, uint8_t *ck)
|
static void __prv_CalculateChecksum(uint8_t *pkt, int len, uint8_t *ck)
|
||||||
{
|
{
|
||||||
uint8_t mck_a = 0, mck_b = 0;
|
uint8_t mck_a = 0, mck_b = 0;
|
||||||
/*Incremented to ignore Sync data*/
|
/*Incremented to ignore Sync data*/
|
||||||
for (int i = 2; i < len - 2; i++) {
|
for (int i = 2; i < len - 2; i++)
|
||||||
|
{
|
||||||
mck_a += pkt[i];
|
mck_a += pkt[i];
|
||||||
mck_b += mck_a;
|
mck_b += mck_a;
|
||||||
}
|
}
|
||||||
|
|
@ -25,7 +17,6 @@ static void __prv_CalculateChecksum(uint8_t* pkt, int len, uint8_t* ck)
|
||||||
ck[1] = mck_b;
|
ck[1] = mck_b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uint16_t u16CMPLX_vFrameEncode(uint32_t u32Id, const uint8_t *pInData, int i32InLen, uint8_t *pu8FrameBuffer, int pu8FrameBufferLen)
|
uint16_t u16CMPLX_vFrameEncode(uint32_t u32Id, const uint8_t *pInData, int i32InLen, uint8_t *pu8FrameBuffer, int pu8FrameBufferLen)
|
||||||
{
|
{
|
||||||
if (i32InLen > (pu8FrameBufferLen - IVEC_VFRAME_MIN_LEN) || pu8FrameBuffer == NULL)
|
if (i32InLen > (pu8FrameBufferLen - IVEC_VFRAME_MIN_LEN) || pu8FrameBuffer == NULL)
|
||||||
|
|
@ -76,19 +67,27 @@ int u16CMPLX_vFrameFind(uint8_t* pcBuffer, int i32Len, uint8_t** pcFrameStartPt,
|
||||||
int i32Ijk = 0;
|
int i32Ijk = 0;
|
||||||
for (; i32Ijk < i32Len; i32Ijk++)
|
for (; i32Ijk < i32Len; i32Ijk++)
|
||||||
{
|
{
|
||||||
if (pcBuffer[i32Ijk] == IVEC_VFRAME_SYNC_CHAR_0 && (i32Ijk <= (i32Len - 2)) && (pcBuffer[i32Ijk + 1] == IVEC_VFRAME_SYNC_CHAR_1))
|
if (pcBuffer[i32Ijk] == IVEC_VFRAME_SYNC_CHAR_0)
|
||||||
{
|
{
|
||||||
l_pcFrameStartPt = &pcBuffer[i32Ijk];
|
l_pcFrameStartPt = &pcBuffer[i32Ijk];
|
||||||
|
// i32Ijk++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (l_pcFrameStartPt == NULL)
|
||||||
|
goto exit;
|
||||||
int i32RemainingLen = i32Len - i32Ijk;
|
int i32RemainingLen = i32Len - i32Ijk;
|
||||||
IVEC_BSW_LOG(LOG_STRING, "Remaining len: %d", i32RemainingLen);
|
IVEC_BSW_LOG(LOG_STRING, "Remaining len: %d", i32RemainingLen);
|
||||||
|
if ((i32RemainingLen > 1) && (pcBuffer[i32Ijk+1] != IVEC_VFRAME_SYNC_CHAR_1))
|
||||||
|
{
|
||||||
|
l_pcFrameStartPt = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (l_pcFrameStartPt == NULL || (i32RemainingLen < IVEC_VFRAME_MIN_LEN))
|
if (l_pcFrameStartPt == NULL || (i32RemainingLen < IVEC_VFRAME_MIN_LEN))
|
||||||
goto exit;
|
goto exit;
|
||||||
uint16_t u16Dlc = 0;
|
uint16_t u16Dlc = 0;
|
||||||
memcpy(&u16Dlc, l_pcFrameStartPt + IVEC_VFRAME_DLC, IVEC_VFRAME_DLC_LEN);
|
memcpy(&u16Dlc, l_pcFrameStartPt + IVEC_VFRAME_DLC, IVEC_VFRAME_DLC_LEN);
|
||||||
IVEC_BSW_LOG(LOG_STRING, "DLC Found: %d", ucDlc);
|
IVEC_BSW_LOG(LOG_STRING, "DLC Found: %d", u16Dlc);
|
||||||
if (i32RemainingLen < (u16Dlc + IVEC_VFRAME_MIN_LEN))
|
if (i32RemainingLen < (u16Dlc + IVEC_VFRAME_MIN_LEN))
|
||||||
goto exit;
|
goto exit;
|
||||||
l_pcFrameEndPt = l_pcFrameStartPt + u16Dlc + IVEC_VFRAME_MIN_LEN - 1;
|
l_pcFrameEndPt = l_pcFrameStartPt + u16Dlc + IVEC_VFRAME_MIN_LEN - 1;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue