Explorar o código

更改MCU工程:can关闭TDC时取消对BRS的限制。

helen hai 1 mes
pai
achega
174a1d0959

+ 1 - 1
amt630hv160-mcu/amt630hv160-mcu-iram/src/ArkmicroFiles/libcpu-amt630hv160/include/amt630hv160_canfd.h

@@ -148,7 +148,7 @@ typedef struct {
 
 CanPort_t *xCanOpen(u32 id);
 void vCanClose(CanPort_t *cap);
-void vCanSetFilter(CanPort_t *cap,     CAN_FilterInitTypeDef CAN_FilterInitStruct);
+void vCanSetFilter(CanPort_t *cap, CAN_FilterInitTypeDef CAN_FilterInitStruct);
 int iCanWrite(CanPort_t *cap, CanMsg* messages, int nmsgs, TickType_t xBlockTime);
 int iCanRead(CanPort_t *cap, CanMsg* messages, int nmsgs, TickType_t xBlockTime);
 

+ 3 - 13
amt630hv160-mcu/amt630hv160-mcu-iram/src/ArkmicroFiles/libcpu-amt630hv160/source/amt630hv160_canfd.c

@@ -157,7 +157,6 @@ ListItem_t canStbTxListItem[CAN_NUM][CAN_STB_TX_BUF_NUM];
 
 static CanPort_t *pxCanPort[CAN_NUM] = {NULL};
 static CAN_InitTypeDef CanInitValue[CAN_NUM];
-static int brs_state[CAN_NUM];
 static CAN_FilterInitTypeDef CanFilterInitValue[CAN_NUM][CAN_FILTER_MAX];
 static u8 nCanFilterEnable[CAN_NUM][CAN_FILTER_MAX];
 
@@ -1089,12 +1088,6 @@ void vCanInit(CanPort_t *cap,  CanTimInit_t *TimInit, CanMode_t mode)
 	CAN_InitStructure.Mode = mode;
 
 	CanInitValue[cap->id] = CAN_InitStructure;
-	// 由于关闭了TDC,速度超过1M时,开启BRS可能不稳定
-	if (TimInit->DatBps < CANFD1MBaud) {
-		brs_state[cap->id] = 0;
-	} else {
-		brs_state[cap->id] = 1;
-	}
 	if (cap->id == CAN_ID0){
 		MCU_SYSCTRL->V6_RST_CTL &= ~(1 << 0);
 		TIMER_Udelay(10);
@@ -1146,7 +1139,7 @@ void vCanClose(CanPort_t *cap)
 }
 
 
-void vCanSetFilter(CanPort_t *cap,     CAN_FilterInitTypeDef CAN_FilterInitStruct)
+void vCanSetFilter(CanPort_t *cap, CAN_FilterInitTypeDef CAN_FilterInitStruct)
 {
 	CANFD_TypeDef *CANx = cap->pcan;
 	volatile u32 *pU32;
@@ -1185,13 +1178,13 @@ void vCanSetFilter(CanPort_t *cap,     CAN_FilterInitTypeDef CAN_FilterInitStruc
 
 	CanFilterInitValue[cap->id][CAN_FilterInitStruct.FILTERx] = CAN_FilterInitStruct;
 	if ((CAN_FilterInitStruct.IDE_M == STD_OR_EXT) || (CAN_FilterInitStruct.IDE_M == EXT_ONLY)) {
-		if (CAN_FilterInitStruct.IDMASK & 0x1FFFFFFF == 0x1FFFFFFF) {
+		if ((CAN_FilterInitStruct.IDMASK & 0x1FFFFFFF) == 0x1FFFFFFF) {
 			nCanFilterEnable[cap->id][CAN_FilterInitStruct.FILTERx] = 0;
 		} else {
 			nCanFilterEnable[cap->id][CAN_FilterInitStruct.FILTERx] = 1;
 		}
 	} else {
-		if (CAN_FilterInitStruct.IDMASK & 0x7ff == 0x7ff) {
+		if ((CAN_FilterInitStruct.IDMASK & 0x7ff) == 0x7ff) {
 			nCanFilterEnable[cap->id][CAN_FilterInitStruct.FILTERx] = 0;
 		} else {
 			nCanFilterEnable[cap->id][CAN_FilterInitStruct.FILTERx] = 1;
@@ -1236,9 +1229,6 @@ int iCanWrite(CanPort_t *cap, CanMsg* messages, int nmsgs, TickType_t xBlockTime
 		portENTER_CRITICAL();
 		if(!listLIST_IS_EMPTY(txFreeList)) {
 			ListItem_t *item = listGET_HEAD_ENTRY(txFreeList);
-			if (brs_state[cap->id] == 0) {
-				msgs->BRS = 0;
-			}
 			memcpy((void*)listGET_LIST_ITEM_VALUE(item), msgs, sizeof(CanMsg));
 			uxListRemove(item);
 			vListInsertEnd(txSendList, item);

+ 1 - 1
amt630hv160-mcu/amt630hv160-mcu-sram-nos/src/ArkmicroFiles/libcpu-amt630hv160/include/amt630hv160_canfd.h

@@ -137,7 +137,7 @@ typedef struct {
 
 CanPort_t *xCanOpen(u32 id);
 void vCanClose(CanPort_t *cap);
-void vCanSetFilter(CanPort_t *cap,     CAN_FilterInitTypeDef CAN_FilterInitStruct);
+void vCanSetFilter(CanPort_t *cap, CAN_FilterInitTypeDef CAN_FilterInitStruct);
 int iCanWrite(CanPort_t *cap, CanMsg* messages, int nmsgs, TickType_t xBlockTime);
 int iCanRead(CanPort_t *cap, CanMsg* messages, int nmsgs, TickType_t xBlockTime);
 

+ 3 - 13
amt630hv160-mcu/amt630hv160-mcu-sram-nos/src/ArkmicroFiles/libcpu-amt630hv160/source/amt630hv160_canfd.c

@@ -157,7 +157,6 @@ ListItem_t canStbTxListItem[CAN_NUM][CAN_STB_TX_BUF_NUM];
 
 static CanPort_t *pxCanPort[CAN_NUM] = {NULL};
 static CAN_InitTypeDef CanInitValue[CAN_NUM];
-static int brs_state[CAN_NUM];
 static CAN_FilterInitTypeDef CanFilterInitValue[CAN_NUM][CAN_FILTER_MAX];
 static u8 nCanFilterEnable[CAN_NUM][CAN_FILTER_MAX];
 
@@ -962,12 +961,6 @@ void vCanInit(CanPort_t *cap,  CanTimInit_t *TimInit, CanMode_t mode)
 	CAN_InitStructure.Mode = mode;
 
 	CanInitValue[cap->id] = CAN_InitStructure;
-	// 由于关闭了TDC,速度超过1M时,开启BRS可能不稳定
-	if (TimInit->DatBps < CANFD1MBaud) {
-		brs_state[cap->id] = 0;
-	} else {
-		brs_state[cap->id] = 1;
-	}
 	if (cap->id == CAN_ID0){
 		MCU_SYSCTRL->V6_RST_CTL &= ~(1 << 0);
 		TIMER_Udelay(10);
@@ -1003,7 +996,7 @@ void vCanClose(CanPort_t *cap)
 }
 
 
-void vCanSetFilter(CanPort_t *cap,     CAN_FilterInitTypeDef CAN_FilterInitStruct)
+void vCanSetFilter(CanPort_t *cap, CAN_FilterInitTypeDef CAN_FilterInitStruct)
 {
 	CANFD_TypeDef *CANx = cap->pcan;
 	volatile u32 *pU32;
@@ -1042,13 +1035,13 @@ void vCanSetFilter(CanPort_t *cap,     CAN_FilterInitTypeDef CAN_FilterInitStruc
 
 	CanFilterInitValue[cap->id][CAN_FilterInitStruct.FILTERx] = CAN_FilterInitStruct;
 	if ((CAN_FilterInitStruct.IDE_M == STD_OR_EXT) || (CAN_FilterInitStruct.IDE_M == EXT_ONLY)) {
-		if (CAN_FilterInitStruct.IDMASK & 0x1FFFFFFF == 0x1FFFFFFF) {
+		if ((CAN_FilterInitStruct.IDMASK & 0x1FFFFFFF) == 0x1FFFFFFF) {
 			nCanFilterEnable[cap->id][CAN_FilterInitStruct.FILTERx] = 0;
 		} else {
 			nCanFilterEnable[cap->id][CAN_FilterInitStruct.FILTERx] = 1;
 		}
 	} else {
-		if (CAN_FilterInitStruct.IDMASK & 0x7ff == 0x7ff) {
+		if ((CAN_FilterInitStruct.IDMASK & 0x7ff) == 0x7ff) {
 			nCanFilterEnable[cap->id][CAN_FilterInitStruct.FILTERx] = 0;
 		} else {
 			nCanFilterEnable[cap->id][CAN_FilterInitStruct.FILTERx] = 1;
@@ -1066,9 +1059,6 @@ int iCanWrite(CanPort_t *cap, CanMsg* messages, int nmsgs, TickType_t xBlockTime
 	int count = 0;
 
 	while (nmsgs--) {
-		if (brs_state[cap->id] == 0) {
-			msgs->BRS = 0;
-		}
 		if (msgs->TxMode == XMIT_PTB_MODE) {
 			cap->tx_done = 0;
 			CAN_PTB_Tran(cap->pcan, msgs);