Prechádzať zdrojové kódy

1、波特率修改为250,2、FIFO优化

CHENJIE-PC\QiXiang_CHENJIE 3 rokov pred
rodič
commit
0b5bd88e6c

+ 4 - 4
.settings/language.settings.xml

@@ -5,7 +5,7 @@
 			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
 			<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
 			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
-			<provider class="com.freescale.s32ds.cross.gnu.CrossGCCBuiltinSpecsDetector" console="false" env-hash="1805121227979261312" id="com.freescale.s32ds.cross.gnu.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT S32DS Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+			<provider class="com.freescale.s32ds.cross.gnu.CrossGCCBuiltinSpecsDetector" console="false" env-hash="512964616103659477" id="com.freescale.s32ds.cross.gnu.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT S32DS Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
 				<language-scope id="org.eclipse.cdt.core.gcc"/>
 				<language-scope id="org.eclipse.cdt.core.g++"/>
 			</provider>
@@ -16,7 +16,7 @@
 			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
 			<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
 			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
-			<provider class="com.freescale.s32ds.cross.gnu.CrossGCCBuiltinSpecsDetector" console="false" env-hash="1805121227979261312" id="com.freescale.s32ds.cross.gnu.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT S32DS Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+			<provider class="com.freescale.s32ds.cross.gnu.CrossGCCBuiltinSpecsDetector" console="false" env-hash="512964616103659477" id="com.freescale.s32ds.cross.gnu.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT S32DS Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
 				<language-scope id="org.eclipse.cdt.core.gcc"/>
 				<language-scope id="org.eclipse.cdt.core.g++"/>
 			</provider>
@@ -27,7 +27,7 @@
 			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
 			<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
 			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
-			<provider class="com.freescale.s32ds.cross.gnu.CrossGCCBuiltinSpecsDetector" console="false" env-hash="1805121227979261312" id="com.freescale.s32ds.cross.gnu.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT S32DS Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+			<provider class="com.freescale.s32ds.cross.gnu.CrossGCCBuiltinSpecsDetector" console="false" env-hash="512964616103659477" id="com.freescale.s32ds.cross.gnu.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT S32DS Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
 				<language-scope id="org.eclipse.cdt.core.gcc"/>
 				<language-scope id="org.eclipse.cdt.core.g++"/>
 			</provider>
@@ -38,7 +38,7 @@
 			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
 			<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
 			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
-			<provider class="com.freescale.s32ds.cross.gnu.CrossGCCBuiltinSpecsDetector" console="false" env-hash="1805121227979261312" id="com.freescale.s32ds.cross.gnu.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT S32DS Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+			<provider class="com.freescale.s32ds.cross.gnu.CrossGCCBuiltinSpecsDetector" console="false" env-hash="512964616103659477" id="com.freescale.s32ds.cross.gnu.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT S32DS Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
 				<language-scope id="org.eclipse.cdt.core.gcc"/>
 				<language-scope id="org.eclipse.cdt.core.g++"/>
 			</provider>

+ 98 - 40
generate/src/Can_VS_0_PBcfg.c

@@ -186,16 +186,16 @@ extern "C"{
 static const uint32 Can_au32HwBufferAddr_Ctrl0[11U]=
 {
     (FLEXCAN_0_BASE + (uint32)0x0080U),
-    (FLEXCAN_0_BASE + (uint32)0x0090U),
-    (FLEXCAN_0_BASE + (uint32)0x00a0U),
-    (FLEXCAN_0_BASE + (uint32)0x00b0U),
-    (FLEXCAN_0_BASE + (uint32)0x00c0U),
-    (FLEXCAN_0_BASE + (uint32)0x00d0U),
-    (FLEXCAN_0_BASE + (uint32)0x00e0U),
-    (FLEXCAN_0_BASE + (uint32)0x00f0U),
     (FLEXCAN_0_BASE + (uint32)0x0100U),
     (FLEXCAN_0_BASE + (uint32)0x0110U),
-    (FLEXCAN_0_BASE + (uint32)0x0120U)
+    (FLEXCAN_0_BASE + (uint32)0x0120U),
+    (FLEXCAN_0_BASE + (uint32)0x0130U),
+    (FLEXCAN_0_BASE + (uint32)0x0140U),
+    (FLEXCAN_0_BASE + (uint32)0x0150U),
+    (FLEXCAN_0_BASE + (uint32)0x0160U),
+    (FLEXCAN_0_BASE + (uint32)0x0170U),
+    (FLEXCAN_0_BASE + (uint32)0x0180U),
+    (FLEXCAN_0_BASE + (uint32)0x0190U)
 };
 
 /**
@@ -204,34 +204,94 @@ static const uint32 Can_au32HwBufferAddr_Ctrl0[11U]=
 static const uint32 Can_au32HwBufferAddr_Ctrl1[11U]=
 {
     (FLEXCAN_1_BASE + (uint32)0x0080U),
-    (FLEXCAN_1_BASE + (uint32)0x0090U),
-    (FLEXCAN_1_BASE + (uint32)0x00a0U),
-    (FLEXCAN_1_BASE + (uint32)0x00b0U),
-    (FLEXCAN_1_BASE + (uint32)0x00c0U),
-    (FLEXCAN_1_BASE + (uint32)0x00d0U),
-    (FLEXCAN_1_BASE + (uint32)0x00e0U),
-    (FLEXCAN_1_BASE + (uint32)0x00f0U),
     (FLEXCAN_1_BASE + (uint32)0x0100U),
     (FLEXCAN_1_BASE + (uint32)0x0110U),
-    (FLEXCAN_1_BASE + (uint32)0x0120U)
+    (FLEXCAN_1_BASE + (uint32)0x0120U),
+    (FLEXCAN_1_BASE + (uint32)0x0130U),
+    (FLEXCAN_1_BASE + (uint32)0x0140U),
+    (FLEXCAN_1_BASE + (uint32)0x0150U),
+    (FLEXCAN_1_BASE + (uint32)0x0160U),
+    (FLEXCAN_1_BASE + (uint32)0x0170U),
+    (FLEXCAN_1_BASE + (uint32)0x0180U),
+    (FLEXCAN_1_BASE + (uint32)0x0190U)
 };
 
 
 /**
 *   @brief  Hardware Filter of Can0HardwareObject_RX
 */
-static const Can_HwFilterType Can_aHwFilter_Object0=
+static const Can_HwFilterType Can_aHwFilter_Object0[8U]=
 {
-    (uint32)0x00000000U,
-    (uint32)0xc0000000U
+    {
+        (uint32)0x00000000U,
+        (uint32)0x00000000U
+    },
+    {
+        (uint32)0x00000000U,
+        (uint32)0x00000000U
+    },
+    {
+        (uint32)0x00000000U,
+        (uint32)0x00000000U
+    },
+    {
+        (uint32)0x00000000U,
+        (uint32)0x00000000U
+    },
+    {
+        (uint32)0x00000000U,
+        (uint32)0x00000000U
+    },
+    {
+        (uint32)0x00000000U,
+        (uint32)0x00000000U
+    },
+    {
+        (uint32)0x00000000U,
+        (uint32)0x00000000U
+    },
+    {
+        (uint32)0x00000000U,
+        (uint32)0x00000000U
+    }
 };
 /**
 *   @brief  Hardware Filter of Can1HardwareObject_RX
 */
-static const Can_HwFilterType Can_aHwFilter_Object1=
+static const Can_HwFilterType Can_aHwFilter_Object1[8U]=
 {
-    (uint32)0x00000000U,
-    (uint32)0xc0000000U
+    {
+        (uint32)0x00000000U,
+        (uint32)0x00000000U
+    },
+    {
+        (uint32)0x00000000U,
+        (uint32)0x00000000U
+    },
+    {
+        (uint32)0x00000000U,
+        (uint32)0x00000000U
+    },
+    {
+        (uint32)0x00000000U,
+        (uint32)0x00000000U
+    },
+    {
+        (uint32)0x00000000U,
+        (uint32)0x00000000U
+    },
+    {
+        (uint32)0x00000000U,
+        (uint32)0x00000000U
+    },
+    {
+        (uint32)0x00000000U,
+        (uint32)0x00000000U
+    },
+    {
+        (uint32)0x00000000U,
+        (uint32)0x00000000U
+    }
 };
 
 #define CAN_STOP_SEC_CONFIG_DATA_32
@@ -286,7 +346,7 @@ static const Can_HwObjectConfigType Can_aHwObjectConfig[CAN_HWOBJECT_CONFIG_COUN
         /* Object enable trigger transmit */
         (boolean)FALSE,
         /* Number of Hw Object used in one Hoh */
-        (uint8)1U,
+        (uint8)6U,
         /* MainFunction RW period reference */
         (uint8)CanMainFunctionRWPeriods_0,
         /* Data Payload length */
@@ -296,9 +356,9 @@ static const Can_HwObjectConfigType Can_aHwObjectConfig[CAN_HWOBJECT_CONFIG_COUN
         /* Hardware Filter Count */
         (uint8)8U,
         /* Hw Filter Config */
-        &Can_aHwFilter_Object0,
-        /* Message Buffer is Rx normal */
-        CAN_RX_NORMAL,
+        Can_aHwFilter_Object0,
+        /* Message Buffer is Legacy FIFO */
+        CAN_RX_LEGACY_FIFO,
         /* Buffer Index in Message buffer ram */
         (uint8)0U,
         /* Message buffer address */
@@ -321,7 +381,7 @@ static const Can_HwObjectConfigType Can_aHwObjectConfig[CAN_HWOBJECT_CONFIG_COUN
         /* Object enable trigger transmit */
         (boolean)FALSE,
         /* Number of Hw Object used in one Hoh */
-        (uint8)1U,
+        (uint8)6U,
         /* MainFunction RW period reference */
         (uint8)CanMainFunctionRWPeriods_0,
         /* Data Payload length */
@@ -331,9 +391,9 @@ static const Can_HwObjectConfigType Can_aHwObjectConfig[CAN_HWOBJECT_CONFIG_COUN
         /* Hardware Filter Count */
         (uint8)8U,
         /* Hw Filter Config */
-        &Can_aHwFilter_Object1,
-        /* Message Buffer is Rx normal */
-        CAN_RX_NORMAL,
+        Can_aHwFilter_Object1,
+        /* Message Buffer is Legacy FIFO */
+        CAN_RX_LEGACY_FIFO,
         /* Buffer Index in Message buffer ram */
         (uint8)0U,
         /* Message buffer address */
@@ -370,7 +430,7 @@ static const Can_HwObjectConfigType Can_aHwObjectConfig[CAN_HWOBJECT_CONFIG_COUN
         /* Message Buffer is Tx normal */
         CAN_TX_NORMAL,
         /* Buffer Index in Message buffer ram */
-        (uint8)1U,
+        (uint8)8U,
         /* Message buffer address */
         &Can_au32HwBufferAddr_Ctrl0[1U]
         #if (CAN_TIMESTAMP_ENABLE == STD_ON)
@@ -405,7 +465,7 @@ static const Can_HwObjectConfigType Can_aHwObjectConfig[CAN_HWOBJECT_CONFIG_COUN
         /* Message Buffer is Tx normal */
         CAN_TX_NORMAL,
         /* Buffer Index in Message buffer ram */
-        (uint8)1U,
+        (uint8)8U,
         /* Message buffer address */
         &Can_au32HwBufferAddr_Ctrl1[1U]
         #if (CAN_TIMESTAMP_ENABLE == STD_ON)
@@ -481,10 +541,10 @@ static const Can_BaudrateConfigType Can_aBaudrateConfig_Ctrl1[1U]=
         (boolean)FALSE,
         /* Nominal bit rate */
         {
-            (uint8)6U,
-            (uint8)3U,
-            (uint8)3U,
-            (uint16)5U,
+            (uint8)2U,
+            (uint8)5U,
+            (uint8)5U,
+            (uint16)11U,
             #if (CAN_DUAL_CLOCK_MODE == STD_ON)
             /* Alternative Baudrate Nominal Prescaler */
             (uint16)9U,
@@ -539,9 +599,8 @@ static const Can_ControllerConfigType Can_aControllerConfig[CAN_CONTROLLER_CONFI
         (boolean)TRUE,
         /* Bus Off uses polling */
         (boolean)TRUE,
-        /* --- Default values when Legacy FIFO is not available --- */
         /* Global mask of Legacy FIFO */
-        (uint32)0xFFFFFFFFU,
+        (uint32)0xc0000000U,
         /* ID Acceptance Mode */
         CAN_LEGACY_FIFO_FORMAT_A,
         /* Legacy FIFO Warning Notification */
@@ -588,9 +647,8 @@ static const Can_ControllerConfigType Can_aControllerConfig[CAN_CONTROLLER_CONFI
         (boolean)TRUE,
         /* Bus Off uses polling */
         (boolean)TRUE,
-        /* --- Default values when Legacy FIFO is not available --- */
         /* Global mask of Legacy FIFO */
-        (uint32)0xFFFFFFFFU,
+        (uint32)0xc0000000U,
         /* ID Acceptance Mode */
         CAN_LEGACY_FIFO_FORMAT_A,
         /* Legacy FIFO Warning Notification */

+ 15 - 15
generate/src/FlexCAN_Ip_VS_0_PBcfg.c

@@ -114,11 +114,11 @@ const Flexcan_Ip_ConfigType Flexcan_aCtrlConfigPB_VS_0[2U]=
     /* Can Hardware Channel FLEXCAN_0 */
     {
         /* Number Of Message Buffer used .max_num_mb */
-        (uint8)11U,
+        (uint8)18U,
         /*Can Hw filter count* .num_id_filters */
-        (Flexcan_Ip_RxFifoIdFilterNumType)0U,
+        (Flexcan_Ip_RxFifoIdFilterNumType)((8U >> 3U) - 1U),
         /* Legacy FIFO ENABLED .is_rx_fifo_needed */
-        (boolean)FALSE,
+        (boolean)TRUE,
         #if (FLEXCAN_IP_FEATURE_HAS_ENHANCED_RX_FIFO == STD_ON)
         /* The number of standard ID filter elements */
         0U,
@@ -164,7 +164,7 @@ const Flexcan_Ip_ConfigType Flexcan_aCtrlConfigPB_VS_0[2U]=
             (uint8)0U
         },
         /* Fifo Transfer Type .transfer_type */
-        FLEXCAN_RXFIFO_USING_INTERRUPTS,
+        FLEXCAN_RXFIFO_USING_POLLING,
         #if (FLEXCAN_IP_FEATURE_HAS_DMA_ENABLE == STD_ON)
         /* DMA channel number used for transfers. */
         (uint8)0U,
@@ -177,11 +177,11 @@ const Flexcan_Ip_ConfigType Flexcan_aCtrlConfigPB_VS_0[2U]=
     /* Can Hardware Channel FLEXCAN_1 */
     {
         /* Number Of Message Buffer used .max_num_mb */
-        (uint8)11U,
+        (uint8)18U,
         /*Can Hw filter count* .num_id_filters */
-        (Flexcan_Ip_RxFifoIdFilterNumType)0U,
+        (Flexcan_Ip_RxFifoIdFilterNumType)((8U >> 3U) - 1U),
         /* Legacy FIFO ENABLED .is_rx_fifo_needed */
-        (boolean)FALSE,
+        (boolean)TRUE,
         #if (FLEXCAN_IP_FEATURE_HAS_ENHANCED_RX_FIFO == STD_ON)
         /* The number of standard ID filter elements */
         0U,
@@ -212,22 +212,22 @@ const Flexcan_Ip_ConfigType Flexcan_aCtrlConfigPB_VS_0[2U]=
         (boolean)FALSE,
         /* Values for normal baudrate .bitrate */
         {
-            (uint8)6U,
-            (uint8)3U,
-            (uint8)3U,
-            (uint16)5,
+            (uint8)2U,
+            (uint8)5U,
+            (uint8)5U,
+            (uint16)11,
             (uint8)3U
         },
         /* Values for CBT baudrate .bitrate_cbt */
         {
-            (uint8)7U,
+            (uint8)5U,
             (uint8)4U,
-            (uint8)2U,
-            (uint16)5U,
+            (uint8)5U,
+            (uint16)11U,
             (uint8)0U
         },
         /* Fifo Transfer Type .transfer_type */
-        FLEXCAN_RXFIFO_USING_INTERRUPTS,
+        FLEXCAN_RXFIFO_USING_POLLING,
         #if (FLEXCAN_IP_FEATURE_HAS_DMA_ENABLE == STD_ON)
         /* DMA channel number used for transfers. */
         (uint8)0U,

+ 28 - 13
src/AppTaskCan.c

@@ -6,27 +6,42 @@
  */
 #include "AppTaskCan.h"
 #ifdef APP_CAN_ENABLE
-extern uint32 canrxcounter;
+uint32 timerCounterNow = 0;
+static void vCanRxCallback(TimerHandle_t pxTimer)
+{
+	uint32 ulTimerID;
+	ulTimerID = (uint32)pvTimerGetTimerID(pxTimer);
+	if(ulTimerID==0)
+	{
+		Can_MainFunction_Read();
+	}
+}
 void CanTask(void *pvParameters)
 {
 	(void)pvParameters;
 	CanIf_bRxFlag = false;
 	Can_Msg_Type_Data CanRxMsg;
-	CanRecvQueueHandle = xQueueCreate(20, sizeof(Can_Msg_Type_Data));
-	uint32 RxDiagnoseTimer = 0;
+	CanRecvQueueHandle = xQueueCreate(100, sizeof(Can_Msg_Type_Data));
+	TimerHandle_t monitorTimer1ms;
+	monitorTimer1ms = xTimerCreate("monitor1ms",1,pdTRUE,(void *)0,vCanRxCallback);
+	xTimerStart(monitorTimer1ms,0);
+	BaseType_t ret = pdFALSE;
 	while(1)
 	{
-		memset(&CanRxMsg, 0, sizeof(CanRxMsg));
-		Can_MainFunction_Read();
-		BaseType_t ret = xQueueReceive(CanRecvQueueHandle, &CanRxMsg, 1);
-		if (ret == pdPASS)
+
+		do
 		{
-			BcuDecodeFunction(CanRxMsg.id,CanRxMsg.data);//canЭÒé½âÎö
-		}
-		if(TimerCounter%100==0&&RxDiagnoseTimer>=(TimerCounter+100))
+			memset(&CanRxMsg, 0, sizeof(CanRxMsg));
+			ret = xQueueReceive(CanRecvQueueHandle, &CanRxMsg, 1);
+			if (ret == pdPASS)
+			{
+				BcuDecodeFunction(CanRxMsg.id,CanRxMsg.data);//canЭÒé½âÎö
+			}
+		}while(ret == pdPASS);
+		if(TimerCounter%100==0&&timerCounterNow!=TimerCounter)
 		{
-			RxDiagnoseTimer = TimerCounter;
 			BcuRxDiagnose();
+			timerCounterNow = TimerCounter;
 		}
 	}
 }
@@ -2307,8 +2322,8 @@ void BcuRxMsgSetInvalidValue(uint32 ID)
 		break;
 	case 0x18E3EFF4:
 		BMS9_TotCSCNum = 0xFF;
-		BMS9_PackTotCellNum = 0xFFFF;
-		BMS9_PackTotTempNum = 0xFF;
+		BMS9_PackTotCellNum = BMS_CELL_MAX_NUM;
+		BMS9_PackTotTempNum = BMS_TEMP_MAX_NUM;
 		BMS9_HVBranchNum = 0xFF;
 		BMS9_SingleHVBranchCellNum = 0xFF;
 		BMS9_BattSysNum = 0xFF;