Forráskód Böngészése

MCU工程更新:
CAN驱动更新,优化频繁发送CAN数据时偶发出现的丢包问题。
因为CAN_TCTRL_TSNEXT置位时,控制器内部槽计数器才会加1,否则槽计数器计数不准确,导致实际槽已满,但未返回满状态,因此出现丢包问题。

helen 8 órája
szülő
commit
078c11a774

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

@@ -586,10 +586,10 @@ static int CAN_STB_FIFO_Tran(CANFD_TypeDef* CANx, CanMsg* TxMessage)
 
 	}
 
+	CANx->TCTRL |= CAN_TCTRL_TSNEXT;
 	if((CANx->TCTRL & CAN_TCTRL_TSSTAT_MASK) != 0X03)
 	//if(!(CANx->TCTRL & CAN_TCTRL_TSNEXT))
 	{
-		CANx->TCTRL |= CAN_TCTRL_TSNEXT;
 		ret = 1;
 	}else{
 		PDEBUG("STB FULL \r\n");

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

@@ -587,10 +587,10 @@ static int CAN_STB_FIFO_Tran(CANFD_TypeDef* CANx, CanMsg* TxMessage)
 
 	}
 
+	CANx->TCTRL |= CAN_TCTRL_TSNEXT;
 	if((CANx->TCTRL & CAN_TCTRL_TSSTAT_MASK) != 0X03)
 	//if(!(CANx->TCTRL & CAN_TCTRL_TSNEXT))
 	{
-		CANx->TCTRL |= CAN_TCTRL_TSNEXT;
 		ret = 1;
 	}else{
 		PDEBUG("STB FULL \r\n");