Browse Source

JM_V3.0.0.5 增加滤波,只接收xxxxxxF3的报文

BJQX-ZHENGCHAO\Zhengchao 3 years ago
parent
commit
55eacf637d
4 changed files with 150 additions and 110 deletions
  1. 1 1
      inc/AppConfig.h
  2. 1 1
      inc/bsp_custom.h
  3. 33 0
      src/AppTaskCan.c
  4. 115 108
      src/hal_module_adapter.c

+ 1 - 1
inc/AppConfig.h

@@ -13,7 +13,7 @@
 #define DATA_MODULE_TYPE (1)           //1表示NB模块,2表示4G cat1
 #define EOLSTATE (0)                   //1表示下线检测跳过,使用默认值,0表示使用下线检测
 #define DEFAULT_SN "JMTEST00000000001" //默认上传的SN编码
-#define APPSWVERSION 0x03000004        //数据模块软件版本号
+#define APPSWVERSION 0x03000005        //数据模块软件版本号
 
 #define TCP_ADD "iotp.fast-fun.cn" //数据上传的地址
 #define TCP_PORT 8712              //数据上传的端口

+ 1 - 1
inc/bsp_custom.h

@@ -6,7 +6,7 @@ extern "C" {
 #endif
 
 #include "bsp.h"
-#include "IQmathLib.h"
+
 #include "hal_module_adapter.h"
 #define getbit(x,y)     ((x) >> (y)&1)                        //获取x的第y位的数值
 #define setbit(x,y)     x|=(1<<y)                             //x的第y位置1

+ 33 - 0
src/AppTaskCan.c

@@ -63,6 +63,39 @@ static void CanTask()
 			param.baudrate = CAN_500Kbps;
 			param.mode = REQOP_NORMAL;
 			param.packType = EXT_PACK;
+			
+			param.RxStdIDH[0] = 0xFF;
+			param.RxStdIDL[0] = 0xFF;
+			param.RxExtIDH[0] = 0xFF;
+			param.RxExtIDL[0] = 0xFF;
+
+			param.RxStdIDH[1] = 0xFF;
+			param.RxStdIDL[1] = 0xFF;
+			param.RxExtIDH[1] = 0xFF;
+			param.RxExtIDL[1] = 0xFF;
+
+			param.RxStdIDH[2] = 0xFF;
+			param.RxStdIDL[2] = 0xFF;
+			param.RxExtIDH[2] = 0xFF;
+			param.RxExtIDL[2] = 0xFF;
+
+			param.RxStdIDH[3] = 0xFF;
+			param.RxStdIDL[3] = 0xFF;
+			param.RxExtIDH[3] = 0xFF;
+			param.RxExtIDL[3] = 0xFF;
+
+			param.RxStdIDH[4] = 0xFF;
+			param.RxStdIDL[4] = 0xFF;
+			param.RxExtIDH[4] = 0xFF;
+			param.RxExtIDL[4] = 0xFF;
+
+			param.RxStdIDH[5] = 0xFF;
+			param.RxStdIDL[5] = 0xFF;
+			param.RxExtIDH[5] = 0xFF;
+			param.RxExtIDL[5] = 0xFF;
+			
+			
+			
 			HAL_Can_Init(param);
 			osDelay(100);
 			PROC_CAN_STATE_SWITCH(PROCESS_CAN_STATE_WORK);

+ 115 - 108
src/hal_module_adapter.c

@@ -857,7 +857,7 @@ void HAL_Can_Init(Can_InitType param)
 		CAN_WriteReg(RXB1DLC, DLC_8);
 	}
 	else if (param.packType == EXT_PACK)
-	{
+	{	
 		/*TXB0*/
 		CAN_WriteReg(TXB0SIDH, 0xFF & (param.TxStdIDH));
 		CAN_WriteReg(TXB0SIDL, (0xEB & (param.TxStdIDL)) | 0x08);
@@ -868,44 +868,50 @@ void HAL_Can_Init(Can_InitType param)
 		CAN_WriteReg(RXM0SIDH, 0x00); //FF->00 zhengchao
 		CAN_WriteReg(RXM0SIDL, 0x00); //E3->00 zhengchao
 		CAN_WriteReg(RXM0EID8, 0x00); //FF->00 zhengchao
-		CAN_WriteReg(RXM0EID0, 0x00); //FF->00 zhengchao
+		CAN_WriteReg(RXM0EID0, 0xF3); //FF->00 zhengchao
+
+		/*?����???2��??��??��*/
+		CAN_WriteReg(RXM1SIDH, 0x00); //FF->00 zhengchao
+		CAN_WriteReg(RXM1SIDL, 0x00); //E3->00 zhengchao
+		CAN_WriteReg(RXM1EID8, 0x00); //FF->00 zhengchao
+		CAN_WriteReg(RXM1EID0, 0xF3); //FF->00 zhengchao
 
 		/*?����???2��??��??��*/
 		CAN_WriteReg(RXF0SIDH, 0xFF & (param.RxStdIDH[0]));
 		CAN_WriteReg(RXF0SIDL, (0xEB & (param.RxStdIDL[0])) | 0x08);
 		CAN_WriteReg(RXF0EID8, 0xFF & (param.RxExtIDH[0]));
-		CAN_WriteReg(RXF0EID8, 0xFF & (param.RxExtIDL[0]));
+		CAN_WriteReg(RXF0EID0, 0xFF & (param.RxExtIDL[0]));
 
 		CAN_WriteReg(RXF1SIDH, 0xFF & (param.RxStdIDH[1]));
 		CAN_WriteReg(RXF1SIDL, (0xEB & (param.RxStdIDL[1])) | 0x08);
 		CAN_WriteReg(RXF1EID8, 0xFF & (param.RxExtIDH[1]));
-		CAN_WriteReg(RXF1EID8, 0xFF & (param.RxExtIDL[1]));
+		CAN_WriteReg(RXF1EID0, 0xFF & (param.RxExtIDL[1]));
 
 		CAN_WriteReg(RXF2SIDH, 0xFF & (param.RxStdIDH[2]));
 		CAN_WriteReg(RXF2SIDL, (0xEB & (param.RxStdIDL[2])) | 0x08);
 		CAN_WriteReg(RXF2EID8, 0xFF & (param.RxExtIDH[2]));
-		CAN_WriteReg(RXF2EID8, 0xFF & (param.RxExtIDL[2]));
+		CAN_WriteReg(RXF2EID0, 0xFF & (param.RxExtIDL[2]));
 
 		CAN_WriteReg(RXF3SIDH, 0xFF & (param.RxStdIDH[3]));
 		CAN_WriteReg(RXF3SIDL, (0xEB & (param.RxStdIDL[3])) | 0x08);
 		CAN_WriteReg(RXF3EID8, 0xFF & (param.RxExtIDH[3]));
-		CAN_WriteReg(RXF3EID8, 0xFF & (param.RxExtIDL[3]));
+		CAN_WriteReg(RXF3EID0, 0xFF & (param.RxExtIDL[3]));
 
 		CAN_WriteReg(RXF4SIDH, 0xFF & (param.RxStdIDH[4]));
 		CAN_WriteReg(RXF4SIDL, (0xEB & (param.RxStdIDL[4])) | 0x08);
 		CAN_WriteReg(RXF4EID8, 0xFF & (param.RxExtIDH[4]));
-		CAN_WriteReg(RXF4EID8, 0xFF & (param.RxExtIDL[4]));
+		CAN_WriteReg(RXF4EID0, 0xFF & (param.RxExtIDL[4]));
 
 		CAN_WriteReg(RXF5SIDH, 0xFF & (param.RxStdIDH[5]));
 		CAN_WriteReg(RXF5SIDL, (0xEB & (param.RxStdIDL[5])) | 0x08);
 		CAN_WriteReg(RXF5EID8, 0xFF & (param.RxExtIDH[5]));
-		CAN_WriteReg(RXF5EID8, 0xFF & (param.RxExtIDL[5]));
+		CAN_WriteReg(RXF5EID0, 0xFF & (param.RxExtIDL[5]));
 
-		CAN_WriteReg(RXB0CTRL, RXM_RCV_ALL | BUKT_ROLLOVER);
-		CAN_WriteReg(RXB0DLC, DLC_8);
+		CAN_WriteReg(RXB0CTRL, RXM_VALID_EXT | BUKT_ROLLOVER);
+		//CAN_WriteReg(RXB0DLC, DLC_8);
 
-		CAN_WriteReg(RXB1CTRL, RXM_RCV_ALL);
-		CAN_WriteReg(RXB1DLC, DLC_8);
+		CAN_WriteReg(RXB1CTRL, RXM_VALID_EXT);
+		//CAN_WriteReg(RXB1DLC, DLC_8);
 	}
 
 	CAN_WriteReg(BFPCTRL, 0x3F);		  //zhengchao20210304  add
@@ -1124,7 +1130,7 @@ UINT8 HAL_Can_Receive(CAN_Msg_Type *CanRxMsgBuffer)
 	UINT8 ret = 0;
 
 	CAN_ReadReg(CANINTF, 1, &temp);
-	//printf("CANINTF = %x\n",temp);
+	
 	ret = temp & 0x03;
 
 	switch (ret)
@@ -1132,85 +1138,86 @@ UINT8 HAL_Can_Receive(CAN_Msg_Type *CanRxMsgBuffer)
 	case 0x00:
 		return ret;
 		break;
-		// 	case 0x01:
-		// 		/*get the id information*/
-		// 		CAN_ReadReg(RXB0SIDH, 1, &SIdH);
-		// 		CAN_ReadReg(RXB0SIDL, 1, &SIdL);
-		// 		CAN_ReadReg(RXB0EID8, 1, &EId8);
-		// 		CAN_ReadReg(RXB0EID0, 1, &EId0);
-
-		// 		CAN_ReadReg(RXB0DLC, 1, &len);
-		// 		len = len & 0x0F;
-		// 		CanRxMsgBuffer[0].DLC = len;
-
-		// 		if (SIdL & 0x8) // if SIdL.3 = 1, the id belongs to ExtID
-		// 		{
-		// 			(CanRxMsgBuffer[0]).Id = ((SIdH << 5 | (SIdL >> 5) << 2 | SIdL & 0x3) << 16 | (EId8 << 8) | EId0);
-		// 		}
-		// 		else
-		// 		{
-		// 			(CanRxMsgBuffer[0]).Id = SIdH << 3 | SIdL >> 5;
-		// 		}
-
-		// 		j = 0;
-		// 		while (j < len)
-		// 		{
-		// 			CAN_ReadReg(RXB0D0 + j, 1, &((CanRxMsgBuffer[0]).Data[j]));
-		// 			j++;
-		// 		}
-		// #ifdef USING_PRINTF
-		// 		printf("1-buffer0 ID = %x\n", CanRxMsgBuffer[0].Id);
-		// 		// for(j=0;j<8;j++)
-		// 		// {
-		// 		// 	printf("%x ",CanRxMsgBuffer[0].Data[j]);
-		// 		// }
-		// 		// printf("\n");
-		// #endif
-		// 		CAN_WriteReg(CANINTF, temp & 0xFE);
-		// 		return ret;
-		// 		break;
-
-		// 	case 0x02:
-		// 		/*get the id information*/
-		// 		CAN_ReadReg(RXB1SIDH, 1, &SIdH);
-		// 		CAN_ReadReg(RXB1SIDL, 1, &SIdL);
-		// 		CAN_ReadReg(RXB1EID8, 1, &EId8);
-		// 		CAN_ReadReg(RXB1EID0, 1, &EId0);
-
-		// 		CAN_ReadReg(RXB1DLC, 1, &len);
-		// 		len = len & 0x0F;
-		// 		CanRxMsgBuffer[1].DLC = len;
-
-		// 		if (SIdL & 0x8) // SIdL.3 = 1, ExtID
-		// 		{
-		// 			(CanRxMsgBuffer[1]).Id = ((SIdH << 5 | (SIdL >> 5) << 2 | SIdL & 0x3) << 16 | (EId8 << 8) | EId0);
-		// 		}
-		// 		else
-		// 		{
-		// 			(CanRxMsgBuffer[1]).Id = SIdH << 3 | SIdL >> 5;
-		// 		}
-
-		// 		j = 0;
-		// 		while (j < len)
-		// 		{
-		// 			CAN_ReadReg(RXB1D0 + j, 1, &((CanRxMsgBuffer[1]).Data[j]));
-		// 			j++;
-		// 		}
-
-		// #ifdef USING_PRINTF
-		// 		printf("1-buffer1 ID = %x\n", CanRxMsgBuffer[1].Id);
-		// 		// for(j=0;j<8;j++)
-		// 		// {
-		// 		// 	printf("%x ",CanRxMsgBuffer[1].Data[j]);
-		// 		// }
-		// 		// printf("\n");
-		// #endif
-		// 		CAN_WriteReg(CANINTF, temp & 0xFD);
-		// 		return ret;
-		// 		break;
-		//case 0x03:
-	default:
+		 	case 0x01:
+		 		/*get the id information*/
+		 		CAN_ReadReg(RXB0SIDH, 1, &SIdH);
+		 		CAN_ReadReg(RXB0SIDL, 1, &SIdL);
+		 		CAN_ReadReg(RXB0EID8, 1, &EId8);
+		 		CAN_ReadReg(RXB0EID0, 1, &EId0);
+
+		 		CAN_ReadReg(RXB0DLC, 1, &len);
+				len = len & 0x0F;
+		 		CanRxMsgBuffer[0].DLC = len;
+
+		 		if (SIdL & 0x8) // if SIdL.3 = 1, the id belongs to ExtID
+		 		{
+		 			(CanRxMsgBuffer[0]).Id = ((SIdH << 5 | (SIdL >> 5) << 2 | SIdL & 0x3) << 16 | (EId8 << 8) | EId0);
+		 		}
+		 		else
+		 		{
+		 			(CanRxMsgBuffer[0]).Id = SIdH << 3 | SIdL >> 5;
+		 		}
+
+				j = 0;
+		 		while (j < len)
+				{
+		 			CAN_ReadReg(RXB0D0 + j, 1, &((CanRxMsgBuffer[0]).Data[j]));
+		 			j++;
+	 		}
+		 #ifdef USING_PRINTF
+		 		printf("1-buffer0 ID = %x\n", CanRxMsgBuffer[0].Id);
+		 		// for(j=0;j<8;j++)
+		 		// {
+		 		// 	printf("%x ",CanRxMsgBuffer[0].Data[j]);
+		 		// }
+		 		// printf("\n");
+		 #endif
+		 		CAN_WriteReg(CANINTF, temp & 0xFE);
+		 		return ret;
+		 		break;
+
+		 	case 0x02:
+		 		/*get the id information*/
+		 		CAN_ReadReg(RXB1SIDH, 1, &SIdH);
+		 		CAN_ReadReg(RXB1SIDL, 1, &SIdL);
+		 		CAN_ReadReg(RXB1EID8, 1, &EId8);
+		 		CAN_ReadReg(RXB1EID0, 1, &EId0);
+
+		 		CAN_ReadReg(RXB1DLC, 1, &len);
+		 		len = len & 0x0F;
+		 		CanRxMsgBuffer[1].DLC = len;
+
+		 		if (SIdL & 0x8) // SIdL.3 = 1, ExtID
+		 		{
+		 			(CanRxMsgBuffer[1]).Id = ((SIdH << 5 | (SIdL >> 5) << 2 | SIdL & 0x3) << 16 | (EId8 << 8) | EId0);
+		 		}
+		 		else
+		 		{
+		 			(CanRxMsgBuffer[1]).Id = SIdH << 3 | SIdL >> 5;
+		 		}
+
+		 		j = 0;
+		 		while (j < len)
+		 		{
+		 			CAN_ReadReg(RXB1D0 + j, 1, &((CanRxMsgBuffer[1]).Data[j]));
+		 			j++;
+		 		}
+
+		 #ifdef USING_PRINTF
+		 		printf("1-buffer1 ID = %x\n", CanRxMsgBuffer[1].Id);
+		 		// for(j=0;j<8;j++)
+		 		// {
+		 		// 	printf("%x ",CanRxMsgBuffer[1].Data[j]);
+		 		// }
+		 		// printf("\n");
+		 #endif
+		 		CAN_WriteReg(CANINTF, temp & 0xFD);
+		 		return ret;
+		 		break;
+		case 0x03:
+	//default:
 		/*get the id information*/
+		//printf("CANINTF = %x\n",temp&0x03);
 		CAN_ReadReg(RXB0SIDH, 1, &SIdH);
 		CAN_ReadReg(RXB0SIDL, 1, &SIdL);
 		CAN_ReadReg(RXB0EID8, 1, &EId8);
@@ -1235,13 +1242,13 @@ UINT8 HAL_Can_Receive(CAN_Msg_Type *CanRxMsgBuffer)
 			CAN_ReadReg(RXB0D0 + j, 1, &((CanRxMsgBuffer[0]).Data[j]));
 			j++;
 		}
-#ifdef USING_PRINTF1
+#ifdef USING_PRINTF
 		printf("2-buffer0 ID = %x\n", CanRxMsgBuffer[0].Id);
-		// for (j = 0; j < 8; j++)
-		// {
-		// 	printf("%x ", CanRxMsgBuffer[0].Data[j]);
-		// }
-		// printf("\n");
+		for (j = 0; j < 8; j++)
+		{
+			printf("%x ", CanRxMsgBuffer[0].Data[j]);
+		}
+		printf("\n");
 #endif
 
 		/*get the id information*/
@@ -1270,20 +1277,20 @@ UINT8 HAL_Can_Receive(CAN_Msg_Type *CanRxMsgBuffer)
 			j++;
 		}
 
-#ifdef USING_PRINTF1
+#ifdef USING_PRINTF
 		printf("2-buffer1 ID = %x\n", CanRxMsgBuffer[1].Id);
-		// for (j = 0; j < 8; j++)
-		// {
-		// 	printf("%x ", CanRxMsgBuffer[1].Data[j]);
-		// }
-		// printf("\n");
+		for (j = 0; j < 8; j++)
+		{
+			printf("%x ", CanRxMsgBuffer[1].Data[j]);
+		}
+		printf("\n");
 #endif
 		CAN_WriteReg(CANINTF, temp & 0xFC);
 		return ret;
-		break;
-
-		// default:
-		// 	break;
+			break;
+		 default:
+		 	return ret;
+		 	break;
 	}
 	/*
 	CAN_ReadReg(CANINTF,1, &temp1);
@@ -2592,4 +2599,4 @@ BOOL NB_ADC_Get(UINT32 *adcValue, ADC_CHANNEL_TYPE adcChannel)
 		return TRUE;
 	else
 		return FALSE;
-}
+}