瀏覽代碼

MGMLX:V2.3.0.12 增加3轴数据输出

CHENJIE-PC\QiXiang_CHENJIE 3 年之前
父節點
當前提交
9fb6bf12d5
共有 9 個文件被更改,包括 65 次插入38 次删除
  1. 2 2
      inc/Signal.h
  2. 1 1
      inc/app.h
  3. 11 0
      src/CANEncode.c
  4. 0 1
      src/CANTask.c
  5. 32 3
      src/GpsTask.c
  6. 2 1
      src/MainTask.c
  7. 4 6
      src/Signal.c
  8. 9 12
      src/bsp_custom.c
  9. 4 12
      src/sensor.c

+ 2 - 2
inc/Signal.h

@@ -1,6 +1,6 @@
 #include "commontypedef.h"
 #include "cmsis_os2.h"
-extern	UINT16	COMOutTable[28];
+extern	UINT16	COMOutTable[29];
 //declear the UINT8 vars
 extern	UINT8	battCellTemp[8];
 extern	UINT8	MOSTemp;
@@ -39,7 +39,7 @@ extern	UINT16	maxCellVol;
 extern	UINT16	battPackVol;
 extern	UINT16	battI;
 extern	UINT16	nbHwVersion;
-
+extern  INT16 xzyDataSend[3]; 
 extern UINT8 Lockstatus;
 extern UINT8 Error_count;
 

+ 1 - 1
inc/app.h

@@ -15,7 +15,7 @@ extern "C" {
 //全局定义声明区
 #define BMS_MANUFACTURE (2) //BMS制造商表示1-超力源,2-美顺
 #define DATA_MODULE_TYPE (1) //1表示NB模块,2表示4G cat1
-#define BMS_INFO  (2)       //1-1表示超力源4830,1-2表示超力源6060,2-1表示美顺MLS,2-2表示美顺MWL,2-3表示美顺MGM
+#define BMS_INFO  (3)       //1-1表示超力源4830,1-2表示超力源6060,2-1表示美顺MLS,2-2表示美顺MWL,2-3表示美顺MGM
 #define EOLSTATE (0) //1标识下线检测跳过,使用默认值
 
 #if  BMS_MANUFACTURE==1

+ 11 - 0
src/CANEncode.c

@@ -203,6 +203,17 @@ void CANEncodeFunction(UINT32 ID,UINT8* rawData)
 			*(UINT8*)(rawData +6) =reservedSignal7&0xFF;
 			*(UINT8*)(rawData +7) =reservedSignal8&0xFF;
 			break;
+		case 0x7CE:
+			*(UINT8*)(rawData +0) =(xzyDataSend[0]>>8)&0xFF;
+			*(UINT8*)(rawData +1) =(xzyDataSend[0])&0xFF;
+			*(UINT8*)(rawData +2) =(xzyDataSend[1]>>8)&0xFF;
+			*(UINT8*)(rawData +3) =(xzyDataSend[1])&0xFF;
+			*(UINT8*)(rawData +4) =(xzyDataSend[2]>>8)&0xFF;
+			*(UINT8*)(rawData +5) =(xzyDataSend[2])&0xFF;
+			*(UINT8*)(rawData +6) =reservedSignal8&0xFF;
+			*(UINT8*)(rawData +7) =reservedSignal8&0xFF;
+			break;
+
 		case	0x7B0:
 			*(UINT8*)(rawData +0) = (AppNVMData.battSN[0])&0xFF;
 			*(UINT8*)(rawData +1) = (AppNVMData.battSN[1])&0xFF;

+ 0 - 1
src/CANTask.c

@@ -124,7 +124,6 @@ static void Can_Receive()
 					{	
 						UDS_Service();
 						udsFlag = 0;
-						BuzzerControl = FALSE;
 					}
 					else if(msgFlag == 1)
 					{

+ 32 - 3
src/GpsTask.c

@@ -29,6 +29,7 @@
 #include "MainTask.h"
 #include "GpsTask.h"
 #include "TcpTask.h"
+#include "Signal.h"
 //全局变量区输入
 extern volatile BOOL Sleep_flag; 
 extern AppDataBody AppDataInfo;
@@ -37,7 +38,7 @@ extern UINT8 WorkFlag;
 UINT8 GpsData[20];
 osMutexId_t GpsMutex = NULL;
 //线程定义区
-#define GPS_TASK_STACK_SIZE   								 (512)
+#define GPS_TASK_STACK_SIZE   								 (1024)
 static QueueHandle_t norGpsHandle = NULL;
 static osThreadId_t gpsTaskHandle = NULL;
 static StaticTask_t gpsTask = NULL;
@@ -46,9 +47,15 @@ static UINT8 gpsTaskStack[GPS_TASK_STACK_SIZE];
 //函数声明区
 void strdel(char * str,char c);
 UINT32 location_handle(char *in1);
-
+UINT8 Aoi1Event = 0;
+UINT8 Aoi2Event = 0;
 static void GpsTask(void* arg)
 {
+    UINT8 xyzCounter = 0; 
+    INT16 xData[3] = {0};
+    INT16 yData[3] = {0};
+    INT16 zData[3] = {0};
+    INT16 xyzData[3] = {0};
     gpsReqMsg msg;
 	char *p=NULL;
 	const char *delim = "\n";
@@ -66,7 +73,7 @@ static void GpsTask(void* arg)
     while(1)
     {
         //char temp[] = "$GNRMC,082626.000,A,2939.91801,N,10637.09500,E,0.543,30.254,261120,,,A,V*17";
-        osStatus_t ret = osMessageQueueGet(norGpsHandle, &msg, 0, osWaitForever);
+        osStatus_t ret = osMessageQueueGet(norGpsHandle, &msg, 0, 100);
         if(ret==0)
         {
             if (msg.dataPtr)
@@ -147,6 +154,28 @@ static void GpsTask(void* arg)
                 free(msg.dataPtr);
             msg.dataPtr=NULL;
         }
+        if(Aoi1Event||Aoi2Event||Timer_count%10==0)
+        {
+            Aoi1Event=0;
+            Aoi2Event=0;
+            //SL_SC7A20_Reg_read_all();
+            UINT8 ret  = SL_SC7A20_Read_XYZ_Data(xyzData);
+            xData[xyzCounter] = xyzData[0];
+            yData[xyzCounter] = xyzData[1];
+            zData[xyzCounter] = xyzData[2];
+            xyzCounter++;
+            if(xyzCounter>3)
+            {
+                xyzCounter=0;
+            }
+            xzyDataSend[0] = (xData[0] + xData[1] + xData[2])/3;
+            xzyDataSend[1] = (yData[0] + yData[1] + yData[2])/3;
+            xzyDataSend[2] = (zData[0] + zData[1] + zData[2])/3;
+            #ifdef USING_PRINTF
+                printf("\n%d %d %d \r\n", xzyDataSend[0],xzyDataSend[1],xzyDataSend[2]);
+            #endif
+
+        }
         if (Sleep_flag)
 		{
             posGGAServiceStop();

+ 2 - 1
src/MainTask.c

@@ -88,6 +88,7 @@ static void MainTask(void* arg)
     }
     GsensorI2CHandler(GsensorI2CCallback);
     GsensorInit();
+    
 
     int32_t inParam = 0xAABBCCDD;
     UINT32  param;
@@ -205,7 +206,7 @@ static void MainTask(void* arg)
                     osDelay(1000);
                     EC_SystemReset();
                 }
-                osDelay(1000);
+                osDelay(100);
                 if(Work_timer_end)
                 {
                     xTimerStop(montior_timer, 0);

+ 4 - 6
src/Signal.c

@@ -1,6 +1,6 @@
 #include "Signal.h"
 
-UINT16	COMOutTable[28]	=	{
+UINT16	COMOutTable[29]	=	{
 0x6A0,
 0x6A1,
 0x6A2,
@@ -15,7 +15,6 @@ UINT16	COMOutTable[28]	=	{
 0x6C2,
 0x6C3,
 0x6C4,
-
 0x7C0,
 0x7C1,
 0x7C2,
@@ -29,8 +28,8 @@ UINT16	COMOutTable[28]	=	{
 0x7CA,
 0x7CB,
 0x7CC,
-0x7CD
-
+0x7CD,
+0x7CE
 		};
 
 //declear the UINT8 vars
@@ -70,10 +69,9 @@ UINT16	maxCellVol = 0xFFFF;
 UINT16	battPackVol = 0xFFFF;
 UINT16	battI = 0xFFFF;
 UINT16	nbHwVersion = 0xFFFF;
-
-
 UINT8 Lockstatus = 0;
 UINT8 Error_count=0;
+INT16 xzyDataSend[3] = {0};
 
 //declear the UINT32 vars
 UINT32	battWarningState = 0xFFFFFFFF;

+ 9 - 12
src/bsp_custom.c

@@ -22,6 +22,8 @@
 extern uint8_t lockoutState;
 #endif
 extern UINT8 Lockstatus;
+extern UINT8 Aoi1Event;
+extern UINT8 Aoi2Event;
 void GPR_SetUartClk(void)
 {
     GPR_ClockDisable(GPR_UART0FuncClk);
@@ -280,32 +282,27 @@ void Pad3_WakeupIntHandler(void)
 {
     if(slpManExtIntPreProcess(PadWakeup3_IRQn)==false)
         return;
-
+    Aoi1Event = 1;
     // add custom code below //
 #ifdef USING_PRINTF1
 	printf("[%d]PadWakeup3_IRQn\r\n",__LINE__);
 // #else	
 //     ECOMM_TRACE(UNILOG_PLA_APP, pad3_Wk, P_SIG, 0, "PadWakeup3_IRQn");
 #endif
-
- 	
-
-
-
 }
 
 void Pad4_WakeupIntHandler(void)
 {
     if(slpManExtIntPreProcess(PadWakeup4_IRQn)==false)
         return;
+    Aoi1Event = 2;
     // add custom code below //
-#ifdef USING_PRINTF1
-	printf("[%d]PadWakeup3_IRQn\r\n",__LINE__);
-// #else	
-
-//     ECOMM_TRACE(UNILOG_PLA_APP, pad4_Wk, P_SIG, 0, "PadWakeup4_IRQn");
-#endif
+    #ifdef USING_PRINTF1
+        printf("[%d]PadWakeup3_IRQn\r\n",__LINE__);
+    // #else	
 
+    //     ECOMM_TRACE(UNILOG_PLA_APP, pad4_Wk, P_SIG, 0, "PadWakeup4_IRQn");
+    #endif
 }
 
 void Pad5_WakeupIntHandler(void)

+ 4 - 12
src/sensor.c

@@ -501,7 +501,6 @@ void  SL_SC7A20_Reg_read_all(void)
 		GSENSOR_ReadReg(adr,1, &SL_Read_Reg);
 		printf("%#x = %#x\r\n",adr,SL_Read_Reg);	
 	}
-	
     printf("SL_SC7A20_Reg_readall --------\r\n");	
 }
 
@@ -559,23 +558,16 @@ INT8  SL_SC7A20_Read_XYZ_Data(INT8 *SL_SC7A20_Data_XYZ_Buf)
 INT8  SL_SC7A20_Read_XYZ_Data(INT16 *SL_SC7A20_Data_XYZ_Buf)
 {
     UINT8 SL_Read_Buf[7];
-    
     GSENSOR_ReadReg(SL_SC7A20_STATUS_REG,1, &SL_Read_Buf[0]);
-    #ifdef USING_PRINTF	
-		printf("SL_SC7A20_STATUS_REG = %#x\r\n",SL_Read_Buf[0]);
-	#endif
     if((SL_Read_Buf[0]&0x0f)==0x0f)
     {
-        GSENSOR_ReadReg(SL_SC7A20_DATA_OUT,6, &SL_Read_Buf[1]);
-        #ifdef USING_PRINTF	
-			printf("SL_SC7A20_DATA_OUT22 = %#x\r\n",SL_Read_Buf[1]);
-		#endif
+        for (UINT8 i = 1; i < 7; i++)
+        {
+            GSENSOR_ReadReg(SL_SC7A20_STATUS_REG+i,1, &SL_Read_Buf[i]);
+        }
         SL_SC7A20_Data_XYZ_Buf[0]=(INT16)((SL_Read_Buf[2]<<8) + SL_Read_Buf[1]);
         SL_SC7A20_Data_XYZ_Buf[1]=(INT16)((SL_Read_Buf[4]<<8) + SL_Read_Buf[3]);
         SL_SC7A20_Data_XYZ_Buf[2]=(INT16)((SL_Read_Buf[6]<<8) + SL_Read_Buf[5]);
-        #ifdef USING_PRINTF	
-			printf("SL_SC7A20_DATA_OUT BUF:X = %d,Y = %d,Z = %d\r\n",SL_SC7A20_Data_XYZ_Buf[0],SL_SC7A20_Data_XYZ_Buf[1],SL_SC7A20_Data_XYZ_Buf[2]);
-		#endif
         return  1;
     }
     else