Browse Source

Merge branch 'V2版本CAN修改分支' into 发布版本

CHENJIE-PC\QiXiang_CHENJIE 3 years ago
parent
commit
28a1172c14
10 changed files with 229 additions and 37 deletions
  1. 0 1
      inc/MainTask.h
  2. 2 2
      inc/TcpTask.h
  3. 5 4
      inc/app.h
  4. 20 2
      inc/hal_module_adapter.h
  5. 50 4
      src/MainTask.c
  6. 23 11
      src/TcpTask.c
  7. 3 2
      src/UDSService.c
  8. 1 1
      src/UartTask.c
  9. 1 1
      src/bsp_custom.c
  10. 124 9
      src/hal_module_adapter.c

+ 0 - 1
inc/MainTask.h

@@ -20,6 +20,5 @@ typedef enum
     PROCESS_STATE_WORK,
     PROCESS_STATE_SLEEP
 }process_Main;
-
 void MainTaskInit(void* arg);
 void MainTaskDeInit(void* arg);

+ 2 - 2
inc/TcpTask.h

@@ -18,8 +18,8 @@ extern UINT32 TcpService;
 #define QMSG_ID_SOCK_EXIT       	(QMSG_ID_BASE + 6)
 #define APP_EVENT_QUEUE_SIZE    (10)
 
-#define CHRG_END_DELAY    (1800)
-#define RUN_END_DELAY    (60)
+#define CHRG_END_DELAY    (300)
+#define RUN_END_DELAY    (100)
 
 #define QX_TCP_IPADRRES				"47.97.127.222"
 #define QX_TCP_PORT					8712

+ 5 - 4
inc/app.h

@@ -13,9 +13,10 @@
 extern "C" {
 #endif
 //全局定义声明区
-#define BMS_MANUFACTURE (1) //BMS制造商表示1-超力源,2-美顺
+#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表示美顺6455
+#define BMS_INFO  (1)       //1-1表示超力源4830,1-2表示超力源6060,2-1表示美顺6455
+#define EOLSTATE (0) //1标识下线检测跳过,使用默认值
 
 #if  BMS_MANUFACTURE==1
     #if BMS_INFO==1
@@ -42,9 +43,9 @@ extern "C" {
 
 #define HWVERSION		    0x0102    //硬件主版本,现为V1.2板
 #define	BLSWVERSION		0x01020000    //BootLoader版本号V1.2.0.0
-#define	DRVSWVERSION		0x01040000     //驱动层版本号V1.4.0.0
+#define	DRVSWVERSION		0x01050000     //驱动层版本号V1.4.0.0  驱动层1.5.0.0,增加了三轴
 //#define	APPSWVERSION		0x01020208     
-#define	APPSWVERSION		0x02000008
+#define	APPSWVERSION		0x02010000
 //--------------------------------------------------------------------------------
 
 #define APP_CONFIG_FILE_LATEST_VERSION 0

+ 20 - 2
inc/hal_module_adapter.h

@@ -25,6 +25,14 @@ extern "C" {
 #define ADC_REQ_BITMAP_VBAT_CALI					 			(0x80)
 #define ADC_REQ_BITMAP_INRES_CALI					 			(0x100)
 #define ADC_GET_RESULT_TIMOUT 								 (2000)
+typedef enum
+{ 
+ FAST_CHARGE_TEMP = 1, 
+ NORMAL_CHARGE_TEMP,
+ OTHER_TEMP_1,
+ OTHER_TEMP_2,
+ VBAT
+}ADC_CHANNEL_TYPE;
 typedef enum _ntc_channel
 {
     NTC_Channel1 ,	         
@@ -123,7 +131,15 @@ typedef struct _Can_TxMsgType
     UINT8 DLC;
     UINT8 Data[8];
 }Can_TxMsgType;
-
+typedef struct UTC8Time_Type
+{
+    UINT16 year; 
+	UINT8 month; 
+	UINT8 day; 
+	UINT8 hour; 
+	UINT8 minute; 
+	UINT8 second; 
+}UTC8TimeType;
 #ifdef BL_FILE_LOG
 typedef enum
 {
@@ -167,7 +183,9 @@ void HAL_Can_Sleep(void);
 INT32 HAL_Can_Reset(void);
 INT8 HAL_Can_Transmit(CAN_Msg_Type Can_TxMsg);
 void  HAL_Can_Receive(CAN_Msg_Type* CanRxMsgBuffer);
- #ifdef BL_FILE_LOG
+void UTCToBeijing(UTC8TimeType* UTC8Time,unsigned int UTCyear,unsigned char UTCmonth,unsigned char UTCday,unsigned int UTChour,unsigned char UTCminute,unsigned char UTCsecond);
+BOOL NB_ADC_Get(UINT32* adcValue, ADC_CHANNEL_TYPE adcChannel);
+#ifdef BL_FILE_LOG
 void bluejoy_printf(BlLogLevel level, const UINT8 *format, ...);
 void bluejoy_read_logfile(void);
 void bluejoy_del_logfile(void);

+ 50 - 4
src/MainTask.c

@@ -32,9 +32,7 @@
 #include "Fota.h"
 #include "UartTask.h"
 #include "sensor.h"
-
-#define EOLSTATE (0) //1标识下线检测跳过,使用默认值
-
+#include "Signal.h"
 extern UINT8 	UDSSwitch;
 extern volatile bool NB_Fota_update_flag;
 extern volatile bool BMS_Fota_update_flag;
@@ -91,6 +89,8 @@ static void MainTask(void* arg)
 
     int32_t inParam = 0xAABBCCDD;
     UINT32  param;
+    UINT32 adcValue;
+    UINT8 i=0;
     slpManSetPmuSleepMode(true,SLP_HIB_STATE,false);
     slpManApplyPlatVoteHandle("MainSlp",&MainSlpHandler);
     slpManPlatVoteDisableSleep(MainSlpHandler, SLP_SLP1_STATE);
@@ -157,7 +157,6 @@ static void MainTask(void* arg)
 	/***calibrate the ADC Collect***/
 	AdcSendReq(ADC_REQ_BITMAP_VBAT_CALI,&param,1,ADC_GET_RESULT_TIMOUT);						
 	AdcSendReq(ADC_REQ_BITMAP_INRES_CALI,&param,1,ADC_GET_RESULT_TIMOUT);
-
 	
 	NetSocDisplay(LED_SOC_0,LED_TURN_OFF);
 	NetSocDisplay(LED_SOC_1,LED_TURN_OFF);
@@ -180,6 +179,8 @@ static void MainTask(void* arg)
             }
             case PROCESS_STATE_WORK:
             {
+
+                
                 osDelay(1000);
                 if(Work_timer_end)
                 {
@@ -190,6 +191,51 @@ static void MainTask(void* arg)
                     PROC_MAIN_STATE_SWITCH(PROCESS_STATE_SLEEP);
                     break;
                 }
+                else
+                {   
+                    switch (i)
+                    {
+                        case FAST_CHARGE_TEMP:
+                         NB_ADC_Get(&adcValue,FAST_CHARGE_TEMP);
+                         fastChargeTemp = LookUpRTtable(adcValue);
+                            #ifdef USING_PRINTF
+                                printf("FAST_CHARGE_TEMP:%d!\n",fastChargeTemp);
+                            #endif
+                        break;
+                        case NORMAL_CHARGE_TEMP:
+                            NB_ADC_Get(&adcValue,NORMAL_CHARGE_TEMP);
+                            normalChargeTemp = LookUpRTtable(adcValue);
+                            #ifdef USING_PRINTF
+                                printf("NORMAL_CHARGE_TEMP:%d!\n",normalChargeTemp);
+                            #endif
+                        break;
+                        case OTHER_TEMP_1:
+                            NB_ADC_Get(&adcValue,OTHER_TEMP_1);
+                            heatTemp1 = LookUpRTtable(adcValue);
+                            #ifdef USING_PRINTF
+                                printf("OTHER_TEMP_1:%d!\n",heatTemp1);
+                            #endif                        
+                        break;
+                        case OTHER_TEMP_2:
+                            NB_ADC_Get(&adcValue,OTHER_TEMP_2);
+                            heatTemp2 = LookUpRTtable(adcValue);
+                            #ifdef USING_PRINTF
+                                printf("OTHER_TEMP_2:%d!\n",heatTemp2);
+                            #endif                        
+                        break;
+                        case  VBAT:
+                            NB_ADC_Get(&adcValue,VBAT);                        
+                            #ifdef USING_PRINTF
+                                printf("VBAT:%d!\n",adcValue);
+                            #endif
+                            i = 0;
+                        break;
+                        default:
+                            i=0;
+                            break;
+                    }
+                    i++;   
+                }
                 if(TcpService!=0x00||UDSSwitch==1||BMS_Fota_update_flag)
                 {
                     xTimerReset(work_timer,0);

+ 23 - 11
src/TcpTask.c

@@ -234,23 +234,27 @@ static void TcpDataInfoAssembleSend()
     UINT8 temp=0;
 
     UINT16 DataLen=0;
-    UINT8 BattSendFreq=0;
-    UINT8 GpsSendFreq=0;
+    UINT8 BattSendFreq=6;
+    UINT8 GpsSendFreq=1;
     UINT8 WorkState=0;
-    static UINT8 WorkFlag;
+
+    UINT16 year;
+    UINT8 month,day,hour,minite,sec;
+    UTC8TimeType UTC8TimeTcp;
+    static UINT8 WorkFlag=0;
 	int i = 0;
 	INT8 len = -1;
     WorkState = battWorkState;
     if(WorkState==0x00 && WorkFlag==0x01)
     {
-        if(send_counter%RUN_END_DELAY==0)
+        if(send_counter%(RUN_END_DELAY/5)==0)
         {
             WorkFlag=0x00;
         }
     }
     else if(WorkState==0x00 && WorkFlag==0x02)
     {
-        if(send_counter%CHRG_END_DELAY==0)
+        if(send_counter%(CHRG_END_DELAY/5)==0)
         {
             WorkFlag=0x00;
         }
@@ -266,21 +270,16 @@ static void TcpDataInfoAssembleSend()
             GpsSendFreq = AppDataInfo.GpsChrgInfoSendFreq/5;
             break;
         case 0x01:
-            BattSendFreq = AppDataInfo.BmsDisChrgInfoSendFreq/5;
             GpsSendFreq = AppDataInfo.GpsDisChrgInfoSendFreq/5;
             break;
         case 0x02:
             BattSendFreq = AppDataInfo.BmsChrgInfoSendFreq/5;
-            GpsSendFreq = AppDataInfo.GpsChrgInfoSendFreq/5;
             break;
         default:
             BattSendFreq = AppDataInfo.BmsDisChrgInfoSendFreq/5;
             GpsSendFreq = AppDataInfo.GpsChrgInfoSendFreq/5;
             break;
     }    
-    #ifdef USING_PRINTF1
-            printf("send_counter= %x,BattSendFreq= %x,GpsSendFreq= %x,UartReadMsg:%x\n",send_counter,BattSendFreq,GpsSendFreq,UartReadMsg.data[(0x03+BATT_CELL_VOL_NUM)*2+1]);
-    #endif
     if(send_counter%BattSendFreq==0)
     {
         //osStatus_t result = osMutexAcquire(UartMutex, osWaitForever);
@@ -295,6 +294,18 @@ static void TcpDataInfoAssembleSend()
         BattToTcpInfo.encryptMethod = TCP_ENCPT_DISABLE; //not encrypt
 	    BattToTcpInfo.dataLength[0] = (DataLen>>8) & 0xFF;
 	    BattToTcpInfo.dataLength[1] = DataLen & 0xFF;
+       
+        year=(TimeStracture.UTCtimer1&0xffff0000)>>16;
+        month=(TimeStracture.UTCtimer1&0xff00)>>8;
+        day=TimeStracture.UTCtimer1&0xff;
+        hour=(TimeStracture.UTCtimer2&0xff000000)>>24;
+        minite=(TimeStracture.UTCtimer2&0xff0000)>>16;
+        sec=(TimeStracture.UTCtimer2&0xff00)>>8;
+        UTCToBeijing((UTC8TimeType *)&UTC8TimeTcp,year,month,day,hour,minite,sec);
+        #ifdef USING_PRINTF1
+            printf("year:%x\n",year);
+            printf("year:%x,month:%d,day:%d,hour:%d,minute:%d,second:%d\n",UTC8TimeTcp.year,UTC8TimeTcp.month,UTC8TimeTcp.day,UTC8TimeTcp.hour,UTC8TimeTcp.minute,UTC8TimeTcp.second);
+        #endif
         BattToTcpInfo.battInfo.sendTimeUTC[0] = ((((TimeStracture.UTCtimer1) >> 16) & 0xFFFF) - 0x07D0) & 0xFF; 	//year
         BattToTcpInfo.battInfo.sendTimeUTC[1] = ((TimeStracture.UTCtimer1) >> 8 ) & 0xFF;							//month
         BattToTcpInfo.battInfo.sendTimeUTC[2] = (TimeStracture.UTCtimer1) & 0xFF;									//day
@@ -391,7 +402,8 @@ static void TcpDataInfoAssembleSend()
         memcpy((UINT8 *)&GpsToTcpInfo.gpsInfo.locateMark, GpsData,sizeof(GpsData));
         GpsToTcpInfo.CRC = bcc_chk((UINT8 *)&GpsToTcpInfo, sizeof(GPSMsgtoTcpType)-1 );
         osMutexRelease(GpsMutex);
-        if(GpsToTcpInfo.gpsInfo.locateMark==0x01)
+        //if(GpsToTcpInfo.gpsInfo.locateMark==0x01)
+        if(1)
         {
             len = tcpipConnectionSend(socContext.id, (UINT8 *)&GpsToTcpInfo, sizeof(GpsToTcpInfo), 0, 0, 0);
             if(len>0)

+ 3 - 2
src/UDSService.c

@@ -198,8 +198,9 @@ void UDS_Service()
 										ret = HAL_Can_Transmit(UDSAnswer);										
 									}
 									else if(UDSSubService[i] == 0x05)  //check the enviroment temp of NB
-									{
-										UDSPositiveAnswer(0x08,i,0x00);  //ntcvalue										
+									{				
+										UINT32 temp = ((fastChargeTemp<<24)&0xFF000000) | ((normalChargeTemp<<16)&0xFF0000) | ((heatTemp1<<8)&0xFF00) | (heatTemp2&0xFF);				
+										UDSPositiveAnswer(0x08,i,temp);  //ntcvalue										
 									}									
 									else if(UDSSubService[i] == 0x06)	//check the tcp link of NB
 									{

+ 1 - 1
src/UartTask.c

@@ -531,7 +531,7 @@ UINT8 Uart_DataRecv_func(UINT8* Uart_Read_Msg,UINT8* Uart_Recv_Buffer)
             }
         } 
     }
-     #ifdef USING_PRINTF
+     #ifdef USING_PRINTF1
          printf("Uart_Rece_buffer1: ");
          for(int i=0;i<Data_Len;i++)
          {

+ 1 - 1
src/bsp_custom.c

@@ -120,7 +120,7 @@ static void PMU_WakeupPadInit(void)
 {
     const padWakeupSettings_t cfg =
     {
-        true, false,             // group0 posedge, negedge
+        false, true,             // group0 posedge, negedge
         true, true,             // group1 posedge, negedge
         true, true,             // group2 posedge, negedge
     };

+ 124 - 9
src/hal_module_adapter.c

@@ -198,12 +198,7 @@ led_pin_config_t gLedCfg[LED_INX_MAX]={{LED_PORT_0,LED_GPIO_PIN_1,LED_PAD_INDEX1
 									 {LED_PORT_0,LED_GPIO_PIN_4,LED_PAD_INDEX4, PAD_MuxAlt0},\
 								       {LED_PORT_1,LED_GPIO_PIN_5,LED_PAD_INDEX5, PAD_MuxAlt0}};
 
-#ifdef BL_FILE_LOG
-#include <stdarg.h>
-static UINT8 blLogFileNux=0;
-
-//UTCת»»Îª±±¾©Ê±¼ä  º¯Êý¿ÉÖ±½Óµ÷ÓÃ
-static void UTCToBeijing(unsigned char * bjttbuf,unsigned int UTCyear,unsigned char UTCmonth,unsigned char UTCday,unsigned int UTChour,unsigned char UTCminute,unsigned char UTCsecond)
+void UTCToBeijing(UTC8TimeType* UTC8Time,unsigned int UTCyear,unsigned char UTCmonth,unsigned char UTCday,unsigned int UTChour,unsigned char UTCminute,unsigned char UTCsecond)
 {
 	int year=0,month=0,day=0,hour=0;
     int lastday = 0;// ÔµÄ×îºóÒ»ÌìÈÕÆÚ
@@ -258,10 +253,20 @@ static void UTCToBeijing(unsigned char * bjttbuf,unsigned int UTCyear,unsigned c
 				}
 		}
 		
-		sprintf((char *)bjttbuf,"%04d-%02d-%02d %02d:%02d:%02d ",
-							year,month,day,hour,UTCminute,UTCsecond);	//UTCÈÕÆÚʱ·ÖÃëת»»³É±±¾©Ê±¼ä
+	UTC8Time->year = year;
+	UTC8Time->month = month;
+	UTC8Time->day = day;
+	UTC8Time->hour = hour;
+	UTC8Time->minute = UTCminute;
+	UTC8Time->second = UTCsecond;
 }
 
+#ifdef BL_FILE_LOG
+#include <stdarg.h>
+static UINT8 blLogFileNux=0;
+
+//UTCת»»Îª±±¾©Ê±¼ä  º¯Êý¿ÉÖ±½Óµ÷ÓÃ
+
 static void bluejoy_write_logfile(UINT8 * buf)
 {
 	int32_t err;
@@ -371,7 +376,9 @@ void bluejoy_printf(BlLogLevel level, const UINT8 *format, ...)
 	minite=(timeUtc.UTCtimer2&0xff0000)>>16;
 	sec=(timeUtc.UTCtimer2&0xff00)>>8;
 	memset(buf,0,128+1);
-	UTCToBeijing(buf,year,month,day,hour,minite,sec);
+	UTC8TimeType UTC8TimeStruct;
+	UTCToBeijing(UTC8TimeStruct,year,month,day,hour,minite,sec);
+	sprintf((char *)buf,"%04d-%02d-%02d %02d:%02d:%02d ",UTC8TimeStruct.year,UTC8TimeStruct.month,UTC8TimeStruct.day,UTC8TimeStruct.hour,UTC8TimeStruct.minute,UTC8TimeStruct.second);
 	va_start(args, format);
 	vsnprintf(buf+strlen(buf), 128-strlen(buf), format, args);
 	va_end(args);
@@ -2334,4 +2341,112 @@ void posGGAServiceStop( void)
 {	
 	GPSPowerCtr(false);
 	gpsHandle = NULL;
+}
+BOOL NB_ADC_Get(UINT32* adcValue, ADC_CHANNEL_TYPE adcChannel)
+{ 
+ //UINT32 NTCR2,NTCR3,NTCR4,NTCR5,Vbat = 0;
+ //*adcValue = 0xFFFFFFFF;
+ INT32 ret = 1;
+ switch(adcChannel)
+ {
+  case FAST_CHARGE_TEMP:  //P2-7
+   ret = AdcSendReq(ADC_REQ_BITMAP_CH1,adcValue,01,ADC_GET_RESULT_TIMOUT);   
+   break;
+  case NORMAL_CHARGE_TEMP: //P2-9
+   ret = AdcSendReq(ADC_REQ_BITMAP_CH2,adcValue,01,ADC_GET_RESULT_TIMOUT);
+   break;
+  case OTHER_TEMP_1: //P2-11
+   ret = AdcSendReq(ADC_REQ_BITMAP_CH31,adcValue,01,ADC_GET_RESULT_TIMOUT);
+   break;
+  case OTHER_TEMP_2: //P2-13
+   ret = AdcSendReq(ADC_REQ_BITMAP_CH30,adcValue,01,ADC_GET_RESULT_TIMOUT);
+   break;
+  case VBAT: //Vbat
+   ret = AdcSendReq(ADC_REQ_BITMAP_CH4,adcValue,01,ADC_GET_RESULT_TIMOUT);
+   break;
+  default:
+   break;
+ }
+ if(ret == 0)
+  return TRUE;
+ else
+  return FALSE;
+}
+UINT8 LookUpRTtable(UINT32 R_value)
+{
+	UINT8 Temp_Table1[23] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22};
+	UINT8 Temp_Table2[217] = {23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,
+	49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,
+	84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,
+	115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,
+	142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,
+	169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,
+	196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,
+	223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239};
+	UINT32 R_Table1[23] = {202269,191063,180554,170694,161438,152746,144580,136905,129687,122898,116508,
+						110493,104827,99488,94455,89710,85233,81008,77019,73252,69693,66329,63148};
+	UINT16 R_Table2[217] = {
+	60140,57293,54599,52049,49633,47343,45174,43117,41166,39315,37558,35891,34307,32802,31373,
+	30014,28722,27493,26324,25211,24152,23144,22183,21268,20395,19564,18771,18015,17293,16604,
+	15947,15319,14720,14147,13600,13077,12577,12098,11641,11203,10784,10383,10000,9632,9280,8942,
+	8619,8309,8012,7727,7454,7191,6940,6698,6466,6244,6030,5825,5627,5438,5255,5080,4911,4749,4593,
+	4443,4299,4160,4026,3898,3773,3654,3539,3428,3321,3218,3119,3023,2931,2841,2755,2672,2592,2515,
+	2441,2369,2299,2232,2167,2104,2044,1985,1928,1874,1821,1769,1720,1672,1626,1581,1537,1495,1455,
+	1415,1377,1340,1305,1270,1236,1204,1172,1142,1112,1083,1056,1029,1002,977,952,928,905,883,861,
+	839,819,799,779,760,742,724,707,690,674,658,642,627,613,599,585,571,558,546,533,521,509,498,487,
+	476,466,455,445,436,426,417,408,399,391,382,374,366,359,351,344,337,330,323,316,310,304,298,292,
+	286,280,274,269,264,259,254,249,244,239,234,230,226,221,217,213,209,205,201,198,194,190,187,183,
+	180,177,174,171,168,165,162,159,156,153,151,148,145,143,141,138,136,133,131,129,127,125};
+	if(R_value>R_Table2[0])
+	{
+		if(R_value<=R_Table1[22])//判断是否超出表尾
+		{
+			return Temp_Table1[22];
+		}
+		else if(R_value>=R_Table1[0])//判断是否超出表头
+		{
+			return Temp_Table1[0];
+		}
+		else 
+		{
+			for(int i=0;i<23-1;i++)
+			{
+				if ((R_value<=R_Table1[i])&&(R_value>R_Table1[i+1]))//中间判断
+				{
+					return Temp_Table1[i];
+				}
+				else
+				{
+					continue;
+				} 
+				
+			}
+		}
+	}//R-1
+	else
+	{
+		if(R_value<=R_Table2[216])//判断是否超出表尾
+		{
+			return Temp_Table2[216];
+		}
+		else if(R_value>=R_Table2[0])//判断是否超出表头
+		{
+			return Temp_Table2[0];
+		}
+		else 
+		{
+			for(int i=0;i<217-1;i++)
+			{
+				if ((R_value<R_Table2[i])&&(R_value>=R_Table2[i+1]))//中间判断
+				{
+					return Temp_Table2[i+1];
+				}
+				else
+				{
+					continue;
+				} 
+				
+			}
+		}
+	}//R-2
 }