Commit 8441a8f1 authored by 时昊's avatar 时昊

feat:增加can接收buffer

parent c9abbe84
...@@ -6,7 +6,7 @@ st_CanMsgTxOp CAN_CH0_CanMsgTxOp; ...@@ -6,7 +6,7 @@ st_CanMsgTxOp CAN_CH0_CanMsgTxOp;
const st_CAN_SendAttribute CAN_CH0_CANSendAttr[CAN_CH0_ID_SEND_TOTAL] = const st_CAN_SendAttribute CAN_CH0_CANSendAttr[CAN_CH0_ID_SEND_TOTAL] =
{ {
{0} {0}
}; };
const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX] = const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX] =
......
...@@ -3,9 +3,7 @@ ...@@ -3,9 +3,7 @@
#include "Components.h" #include "Components.h"
#include "CAN_Signal\CAN_Lib.h" #include "CAN_Signal\CAN_Lib.h"
extern st_CanMsgOp CAN_CH0_CanMsgOp; extern st_CanMsgOp CAN_CH0_CanMsgOp;
extern st_CanMsgTxOp CAN_CH0_CanMsgTxOp; extern st_CanMsgTxOp CAN_CH0_CanMsgTxOp;
typedef enum typedef enum
...@@ -23,7 +21,7 @@ typedef enum ...@@ -23,7 +21,7 @@ typedef enum
typedef enum typedef enum
{ {
TEST, TEST,
CAN_CH0_ID_SEND_TOTAL, CAN_CH0_ID_SEND_TOTAL,
} CAN_CH0_CAN_MSG_SEND_ID_t; } CAN_CH0_CAN_MSG_SEND_ID_t;
......
...@@ -45,6 +45,60 @@ void Can_RX_Apply_Buff(void) ...@@ -45,6 +45,60 @@ void Can_RX_Apply_Buff(void)
CAN_MessageCache_Init(CAN0MSG01, &CAN_RecvMsg); CAN_MessageCache_Init(CAN0MSG01, &CAN_RecvMsg);
CAN_MessageCache_OverWriteConfig(CAN0MSG01, ENABLE); CAN_MessageCache_OverWriteConfig(CAN0MSG01, ENABLE);
CAN_RecvMsg.Id = 0x111;
CAN_RecvMsg.IDE = CAN_Id_Standard;
CAN_RecvMsg.CacheType = CAN_CacheType_Rx_NoMask;
CAN_RecvMsg.RTR = CAN_RTR_Data;
CAN_RecvMsg.Interrupt = ENABLE;
CAN_MessageCache_DeInit(CAN0MSG02);
CAN_MessageCache_Init(CAN0MSG02, &CAN_RecvMsg);
CAN_MessageCache_OverWriteConfig(CAN0MSG02, ENABLE);
CAN_RecvMsg.Id = 0x401;
CAN_RecvMsg.IDE = CAN_Id_Standard;
CAN_RecvMsg.CacheType = CAN_CacheType_Rx_NoMask;
CAN_RecvMsg.RTR = CAN_RTR_Data;
CAN_RecvMsg.Interrupt = ENABLE;
CAN_MessageCache_DeInit(CAN0MSG03);
CAN_MessageCache_Init(CAN0MSG03, &CAN_RecvMsg);
CAN_MessageCache_OverWriteConfig(CAN0MSG03, ENABLE);
CAN_RecvMsg.Id = 0x402;
CAN_RecvMsg.IDE = CAN_Id_Standard;
CAN_RecvMsg.CacheType = CAN_CacheType_Rx_NoMask;
CAN_RecvMsg.RTR = CAN_RTR_Data;
CAN_RecvMsg.Interrupt = ENABLE;
CAN_MessageCache_DeInit(CAN0MSG04);
CAN_MessageCache_Init(CAN0MSG04, &CAN_RecvMsg);
CAN_MessageCache_OverWriteConfig(CAN0MSG04, ENABLE);
CAN_RecvMsg.Id = 0x12B;
CAN_RecvMsg.IDE = CAN_Id_Standard;
CAN_RecvMsg.CacheType = CAN_CacheType_Rx_NoMask;
CAN_RecvMsg.RTR = CAN_RTR_Data;
CAN_RecvMsg.Interrupt = ENABLE;
CAN_MessageCache_DeInit(CAN0MSG05);
CAN_MessageCache_Init(CAN0MSG05, &CAN_RecvMsg);
CAN_MessageCache_OverWriteConfig(CAN0MSG05, ENABLE);
CAN_RecvMsg.Id = 0x450;
CAN_RecvMsg.IDE = CAN_Id_Standard;
CAN_RecvMsg.CacheType = CAN_CacheType_Rx_NoMask;
CAN_RecvMsg.RTR = CAN_RTR_Data;
CAN_RecvMsg.Interrupt = ENABLE;
CAN_MessageCache_DeInit(CAN0MSG06);
CAN_MessageCache_Init(CAN0MSG06, &CAN_RecvMsg);
CAN_MessageCache_OverWriteConfig(CAN0MSG06, ENABLE);
CAN_RecvMsg.Id = 0x37B;
CAN_RecvMsg.IDE = CAN_Id_Standard;
CAN_RecvMsg.CacheType = CAN_CacheType_Rx_NoMask;
CAN_RecvMsg.RTR = CAN_RTR_Data;
CAN_RecvMsg.Interrupt = ENABLE;
CAN_MessageCache_DeInit(CAN0MSG07);
CAN_MessageCache_Init(CAN0MSG07, &CAN_RecvMsg);
CAN_MessageCache_OverWriteConfig(CAN0MSG07, ENABLE);
// CAN_RecvMsg.Id = DIAG_ID_Rx_PHY; // CAN_RecvMsg.Id = DIAG_ID_Rx_PHY;
// CAN_RecvMsg.IDE = CAN_Id_Standard; // CAN_RecvMsg.IDE = CAN_Id_Standard;
...@@ -71,21 +125,21 @@ void Can_RX_Apply_Buff(void) ...@@ -71,21 +125,21 @@ void Can_RX_Apply_Buff(void)
*/ */
void Can_Tx_Apply_Buff(void) void Can_Tx_Apply_Buff(void)
{ {
CanTxRxMsg CAN_SendMsg; // CanTxRxMsg CAN_SendMsg;
CanTxRxMsg CAN_SendMsg_Diag_Tx; // CanTxRxMsg CAN_SendMsg_Diag_Tx;
CAN_SendMsg.Id = 0x500; // CAN_SendMsg.Id = 0x500;
CAN_SendMsg.IDE = CAN_Id_Standard; // CAN_SendMsg.IDE = CAN_Id_Standard;
CAN_SendMsg.CacheType = CAN_CacheType_Tx; // CAN_SendMsg.CacheType = CAN_CacheType_Tx;
CAN_SendMsg.RTR = CAN_RTR_Data; // CAN_SendMsg.RTR = CAN_RTR_Data;
CAN_RecvMsg.Interrupt = DISABLE; // CAN_RecvMsg.Interrupt = DISABLE;
CAN_SendMsg.DLC = 8; // CAN_SendMsg.DLC = 8;
for (uint8_t i = 0; i < CAN_SendMsg.DLC; i++) // for (uint8_t i = 0; i < CAN_SendMsg.DLC; i++)
{ // {
CAN_SendMsg.Data[i] = 0; // CAN_SendMsg.Data[i] = 0;
} // }
CAN_MessageCache_DeInit(CAN0MSG08); // CAN_MessageCache_DeInit(CAN0MSG08);
CAN_MessageCache_Init(CAN0MSG08, &CAN_SendMsg); // CAN_MessageCache_Init(CAN0MSG08, &CAN_SendMsg);
// CAN_SendMsg_Diag_Tx.Id = DIAG_ID_Tx; // CAN_SendMsg_Diag_Tx.Id = DIAG_ID_Tx;
...@@ -129,10 +183,10 @@ void COM_CAN_Init(void) ...@@ -129,10 +183,10 @@ void COM_CAN_Init(void)
Can_RX_BuffInit(&CAN_CH0_CanMsgOp, CAN_CH0_CAN_MSG_CONST_ARRAY, CAN_CH0_ID_TOTAL_MAX); Can_RX_BuffInit(&CAN_CH0_CanMsgOp, CAN_CH0_CAN_MSG_CONST_ARRAY, CAN_CH0_ID_TOTAL_MAX);
CAN_RX_SetEnable(&CAN_CH0_CanMsgOp, CAN_N_RX_Enable); CAN_RX_SetEnable(&CAN_CH0_CanMsgOp, CAN_N_RX_Enable);
memset(pTXBuff, 0, sizeof(pTXBuff)); // memset(pTXBuff, 0, sizeof(pTXBuff));
CAN_CH0_CanMsgTxOp.CanMsg = (st_CAN_SendOperation *)pTXBuff; // CAN_CH0_CanMsgTxOp.CanMsg = (st_CAN_SendOperation *)pTXBuff;
Can_TX_BuffInit(&CAN_CH0_CanMsgTxOp, CAN_CH0_CANSendAttr, CAN_CH0_ID_SEND_TOTAL, COM_APP_Process); // Can_TX_BuffInit(&CAN_CH0_CanMsgTxOp, CAN_CH0_CANSendAttr, CAN_CH0_ID_SEND_TOTAL, COM_APP_Process);
CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Enable); // CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Enable);
} }
...@@ -198,35 +252,35 @@ uint8_t Get_Busoff_Status(void) ...@@ -198,35 +252,35 @@ uint8_t Get_Busoff_Status(void)
return get_can_busoff(CAN_CH_0); return get_can_busoff(CAN_CH_0);
} }
uint8_t COM_APP_Process(st_CAN_Msg *Msg) // uint8_t COM_APP_Process(st_CAN_Msg *Msg)
{ // {
Can_Write((st_CAN_Msg *)Msg); // Can_Write((st_CAN_Msg *)Msg);
return 0; // return 0;
} // }
void Can_Write(st_CAN_Msg *Msg) // void Can_Write(st_CAN_Msg *Msg)
{ // {
uint32_t i = 0; // uint32_t i = 0;
CanTxRxMsg CAN_SendMsg; // CanTxRxMsg CAN_SendMsg;
CAN_SendMsg.Id = Msg->MsgID; /* ID */ // CAN_SendMsg.Id = Msg->MsgID; /* ID */
CAN_SendMsg.DLC = Msg->MsgDLC; /* Len */ // CAN_SendMsg.DLC = Msg->MsgDLC; /* Len */
CAN_SendMsg.RTR = Msg->MsgRTR; /* Default 0 */ // CAN_SendMsg.RTR = Msg->MsgRTR; /* Default 0 */
CAN_SendMsg.IDE = CAN_Id_Standard; /* Stand 0 Ext 1 */ // CAN_SendMsg.IDE = CAN_Id_Standard; /* Stand 0 Ext 1 */
CAN_SendMsg.CacheType = CAN_CacheType_Tx; // CAN_SendMsg.CacheType = CAN_CacheType_Tx;
for (i = 0; i < CAN_SendMsg.DLC; i++) /* 获取数据 */ // for (i = 0; i < CAN_SendMsg.DLC; i++) /* 获取数据 */
{ // {
CAN_SendMsg.Data[i] = Msg->Msg[i]; // CAN_SendMsg.Data[i] = Msg->Msg[i];
} // }
switch (CAN_SendMsg.Id) // switch (CAN_SendMsg.Id)
{ // {
case 0x500: // case 0x500:
CAN_Transmit(CAN0MSG08, &CAN_SendMsg); // CAN_Transmit(CAN0MSG08, &CAN_SendMsg);
break; // break;
default: // default:
break; // break;
} // }
} // }
...@@ -20,8 +20,8 @@ static void can_recv_handler(void *msg) ...@@ -20,8 +20,8 @@ static void can_recv_handler(void *msg)
if (CAN_GetFlagStatus(CAN0, CAN_FLAG_REC) != RESET) if (CAN_GetFlagStatus(CAN0, CAN_FLAG_REC) != RESET)
{ {
CAN_ClearFlag(CAN0, CAN_FLAG_REC); CAN_ClearFlag(CAN0, CAN_FLAG_REC);
// CANMSG = CAN_Get_CANxMSGy(CAN0); // CANMSG = CAN_Get_CANxMSGy(CAN0);
// CAN_Receive_IT(CAN0, &CAN_RecvMsg); // CAN_Receive_IT(CAN0, &CAN_RecvMsg);
if (can_rx_handler != NULL) if (can_rx_handler != NULL)
{ {
...@@ -31,9 +31,9 @@ static void can_recv_handler(void *msg) ...@@ -31,9 +31,9 @@ static void can_recv_handler(void *msg)
} }
/** /**
* @brief CAN初始? * @brief CAN初始?
* *
* @param config CAN初始结构体指? * @param config CAN初始结构体指?
* @return uint8_t 0成功 1失败 * @return uint8_t 0成功 1失败
*/ */
uint8_t rte_can_init(can_config_st_t *config) uint8_t rte_can_init(can_config_st_t *config)
...@@ -98,7 +98,7 @@ uint8_t rte_can_init(can_config_st_t *config) ...@@ -98,7 +98,7 @@ uint8_t rte_can_init(can_config_st_t *config)
/** /**
* @brief can反初始化 * @brief can反初始化
* @param CANx CAN0 ? CAN1 * @param CANx CAN0 ? CAN1
* *
* @return uint8_t 0成功 1失败 * @return uint8_t 0成功 1失败
*/ */
...@@ -124,10 +124,10 @@ uint8_t rte_can_deinit(CAN_CH ch) ...@@ -124,10 +124,10 @@ uint8_t rte_can_deinit(CAN_CH ch)
/** /**
* @brief 获取CAN是否BusOff * @brief 获取CAN是否BusOff
* @param CANx CAN0 ? CAN1 * @param CANx CAN0 ? CAN1
* *
* @return uint8_t 0 没有busoff * @return uint8_t 0 没有busoff
* 1 错误的操? 2 busoff * 1 错误的操? 2 busoff
*/ */
uint8_t get_can_busoff(CAN_CH ch) uint8_t get_can_busoff(CAN_CH ch)
{ {
...@@ -151,9 +151,9 @@ uint8_t get_can_busoff(CAN_CH ch) ...@@ -151,9 +151,9 @@ uint8_t get_can_busoff(CAN_CH ch)
} }
/** /**
* @brief 从busoff状态恢? * @brief 从busoff状态恢?
* *
* @param CANx CAN0 ? CAN1 * @param CANx CAN0 ? CAN1
* @return uint8_t 0成功 1失败 * @return uint8_t 0成功 1失败
*/ */
uint8_t reset_busoff(CAN_CH ch) uint8_t reset_busoff(CAN_CH ch)
...@@ -189,7 +189,7 @@ uint8_t reset_busoff(CAN_CH ch) ...@@ -189,7 +189,7 @@ uint8_t reset_busoff(CAN_CH ch)
return 0; return 0;
} }
/* 下面是一些例? 自己? /* 下面是一些例�? 自己�?
CAN_SendMsg.Id = 0x00aa0432; CAN_SendMsg.Id = 0x00aa0432;
CAN_SendMsg.IDE = CAN_Id_Extended; CAN_SendMsg.IDE = CAN_Id_Extended;
CAN_SendMsg.CacheType = CAN_CacheType_Tx; CAN_SendMsg.CacheType = CAN_CacheType_Tx;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment