|
@@ -57,15 +57,19 @@ static osMessageQueueId_t i2c_recv_msgqueue;
|
|
|
*/
|
|
|
#define ADC_TASK_STACK_SIZE (512)
|
|
|
#define ADC_MSG_MAX_NUM (7)
|
|
|
-#define ADC_AioResDivRatioDefault (ADC_AioResDivRatio1)
|
|
|
-#define REV_AioResDivRatioDefault 1
|
|
|
-#define ADC_ChannelAioVbat (1800)
|
|
|
+#define ADC_AioResDivRatioDefault (ADC_AioResDivRatio14Over16)
|
|
|
+#define REV_AioResDivRatioDefault 16/14
|
|
|
+//#define ADC_ChannelAioVbat (1200)
|
|
|
+static UINT32 ADC_ChannelAioVbat=1200;
|
|
|
#define ADC_ChannelAioRes (15000)
|
|
|
#define NTC_FullAioValue (1200)
|
|
|
#define ADC_AioResDivRatioExtra (ADC_AioResDivRatio8Over16)
|
|
|
#define REV_AioResDivRatioExtra 16/8
|
|
|
#define NTC_REQ_UPDATE_DATA (0x01)
|
|
|
#define ADC_MSG_TIMEOUT (1000)
|
|
|
+#define ADC_CALIBRATION_VALUE (50900)
|
|
|
+
|
|
|
+static UINT32 ADC_InsideRES=500000;
|
|
|
|
|
|
#define ADC_RECV_CONTROL_FLAG (0x1)
|
|
|
typedef struct
|
|
@@ -74,6 +78,7 @@ typedef struct
|
|
|
UINT32 request;
|
|
|
UINT32 NTCvalue[7];
|
|
|
}NtcResult_t;
|
|
|
+
|
|
|
NtcResult_t gNtcDev;
|
|
|
volatile static UINT32 vbatChannelResult = 0;
|
|
|
volatile static UINT32 thermalChannelResult = 0;
|
|
@@ -447,7 +452,7 @@ UINT8 CanTriggerEvtInit(void)
|
|
|
queue_attr.mq_mem = can_recv_queue_buf;
|
|
|
queue_attr.mq_size = sizeof(can_recv_queue_buf);
|
|
|
can_recv_msgqueue = osMessageQueueNew(I2C_RECV_QUEUE_BUF_SIZE,1, &queue_attr);
|
|
|
- printf("CanTriggerEvtInit \r\n");
|
|
|
+ //printf("CanTriggerEvtInit \r\n");
|
|
|
return 0;
|
|
|
}
|
|
|
/**
|
|
@@ -462,7 +467,7 @@ void CanWaitEvt(UINT32 timeout)
|
|
|
UINT8 msg = 0;
|
|
|
UINT32 mask;
|
|
|
status = osMessageQueueGet(can_recv_msgqueue, &msg, 0 , osWaitForever);
|
|
|
- printf("msg = %#x\r\n",msg);
|
|
|
+ //printf("msg = %#x\r\n",msg);
|
|
|
}
|
|
|
/**
|
|
|
\fn void CanTiggerEvt(UINT8 cmd)
|
|
@@ -616,21 +621,48 @@ void HAL_Can_Init(Can_InitType param)
|
|
|
CAN_WriteReg(CANINTE,0x43);
|
|
|
CAN_WriteReg(CANINTF,0x00);
|
|
|
|
|
|
- CAN_WriteReg(CANCTRL,param.mode |CLKOUT_ENABLED);//??MCP2515����???a?y3��?�?,��?3??????�? REQOP_NORMAL|CLKOUT_ENABLED
|
|
|
- CAN_ReadReg(CANSTAT,1,&temp);//?����?CAN���䨬???��??�¦�??��
|
|
|
- if(OPMODE_NORMAL !=(temp&0xE0))//?D??MCP2515��?��?��??-??��??y3��?�?
|
|
|
+ CAN_WriteReg(CANCTRL,param.mode |CLKOUT_ENABLED);//??MCP2515¨¦¨¨???a?y3¡ê?¡ê¨º?,¨ª?3??????¡ê¨º? REQOP_NORMAL|CLKOUT_ENABLED
|
|
|
+ CAN_ReadReg(CANSTAT,1,&temp);//?¨¢¨¨?CAN¡Á¡ä¨¬???¡ä??¡Â¦Ì??¦Ì
|
|
|
+ if(param.mode !=(temp&0xE0))//?D??MCP2515¨º?¡¤?¨°??-??¨¨??y3¡ê?¡ê¨º?
|
|
|
{
|
|
|
CAN_WriteReg(CANCTRL,param.mode|CLKOUT_ENABLED);//?����???MCP2515����???a?y3��?�?,��?3??????�?REQOP_NORMAL
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*******************************************************************************
|
|
|
-* o����y?? : HAL_Can_Transmit
|
|
|
-* ?����? : CAN����?��???��3��?����?��y?Y
|
|
|
-* ��?��? : *CAN_TX_Buf(��y����?����y?Y?o3???????),len(��y����?����y?Y3��?��)
|
|
|
-* ��?3? : ?T
|
|
|
-* ����???�� : ?T
|
|
|
-* ?��?�� : ?T
|
|
|
+* : HAL_Can_Sleep
|
|
|
+*
|
|
|
+*
|
|
|
+*
|
|
|
+*
|
|
|
+*
|
|
|
+*******************************************************************************/
|
|
|
+void HAL_Can_Sleep(void)
|
|
|
+{
|
|
|
+ UINT8 temp=0,t=0;
|
|
|
+ do{
|
|
|
+ CAN_WriteReg(CANCTRL,OPMODE_SLEEP |CLKOUT_DISABLED);
|
|
|
+ CAN_ReadReg(CANSTAT,1,&temp);
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ //printf("%s[%d] [%#x]\r\n",__FUNCTION__, __LINE__,temp);
|
|
|
+ #endif
|
|
|
+ if(OPMODE_SLEEP ==(temp&0xE0)){
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ //printf("SLEEP SUC \r\n");
|
|
|
+ #endif
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }while(t++<3);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/*******************************************************************************
|
|
|
+* o¡¥¨ºy?? : HAL_Can_Transmit
|
|
|
+* ?¨¨¨º? : CAN¡¤¡é?¨ª???¡§3¡è?¨¨¦Ì?¨ºy?Y
|
|
|
+* ¨º?¨¨? : *CAN_TX_Buf(¡äy¡¤¡é?¨ª¨ºy?Y?o3???????),len(¡äy¡¤¡é?¨ª¨ºy?Y3¡è?¨¨)
|
|
|
+* ¨º?3? : ?T
|
|
|
+* ¡¤¦Ì???¦Ì : ?T
|
|
|
+* ?¦Ì?¡Â : ?T
|
|
|
*******************************************************************************/
|
|
|
INT32 HAL_Can_Transmit(Can_TxMsgType Can_TxMsg)
|
|
|
{
|
|
@@ -720,7 +752,7 @@ void CanHandleDataCallback(UINT32 event)
|
|
|
}
|
|
|
#if 0
|
|
|
#ifdef USING_PRINTF
|
|
|
- printf("[%d] CanHandleDataCallback :%d\r\n",__LINE__,event);
|
|
|
+ //printf("[%d] CanHandleDataCallback :%d\r\n",__LINE__,event);
|
|
|
#else
|
|
|
ECOMM_TRACE(UNILOG_PLA_APP,CAN_CB1, P_INFO, 1, "SPI event [%u] coming!",event);
|
|
|
#endif
|
|
@@ -894,7 +926,7 @@ void GsensorTriggerEvent(UINT32 event ,UINT32 data)
|
|
|
status = osMessageQueuePut(i2c_recv_msgqueue, &msg, 0, 0);
|
|
|
if(status == osErrorResource)
|
|
|
{
|
|
|
- //ECOMM_TRACE(UNILOG_PLA_DRIVER, GsensorTriggerEvent_0, P_WARNING, 0, "I2C recv queue error");
|
|
|
+ ECOMM_TRACE(UNILOG_PLA_DRIVER, GsensorTriggerEvent_0, P_WARNING, 0, "I2C recv queue error");
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -942,7 +974,7 @@ static void HAL_I2C_RecvTaskEntry(void)
|
|
|
//handle data
|
|
|
//I2CEvtProcess(msg.event);
|
|
|
#ifdef USING_PRINTF
|
|
|
- printf("[%d]i2c recv event\r\n",__LINE__);
|
|
|
+ //printf("[%d]i2c recv event\r\n",__LINE__);
|
|
|
#else
|
|
|
ECOMM_TRACE(UNILOG_PLA_DRIVER, I2C_GSENSOR_D, P_INFO, 0, "i2c recv event");
|
|
|
#endif
|
|
@@ -1013,7 +1045,7 @@ void GsensorI2CHandler(ARM_I2C_SignalEvent_t cb_event)
|
|
|
i2cDrvInstance->Control(ARM_I2C_BUS_CLEAR, 0);
|
|
|
HAL_I2C_CreateRecvTaskAndQueue();
|
|
|
#ifdef USING_PRINTF
|
|
|
- printf("[%d] i2c config ok\r\n",__LINE__);
|
|
|
+ //printf("[%d] i2c config ok\r\n",__LINE__);
|
|
|
#else
|
|
|
ECOMM_TRACE(UNILOG_PLA_DRIVER, I2C_GSENSOR_I, P_INFO, 0, "i2c config ok");
|
|
|
#endif
|
|
@@ -1042,7 +1074,7 @@ void GpsDataRecvCallback(UINT32 event, void* dataPtr, UINT32 dataLen)
|
|
|
{
|
|
|
if((event == ARM_USART_EVENT_RX_TIMEOUT) || (event == ARM_USART_EVENT_RECEIVE_COMPLETE)){
|
|
|
#ifdef USING_PRINTF
|
|
|
- // printf("GpsDataRecvCallback [%d] %s\r\n",dataLen,dataPtr);
|
|
|
+ // //printf("GpsDataRecvCallback [%d] %s\r\n",dataLen,dataPtr);
|
|
|
#endif
|
|
|
if(dataLen>0){
|
|
|
gpsReqMsg gpsInfo;
|
|
@@ -1092,14 +1124,91 @@ void GPSUsartHandler(UINT32 baudRate)
|
|
|
*/
|
|
|
static INT32 AdcGetRes(UINT32 NTCvalue){
|
|
|
UINT32 Resvalue;
|
|
|
- if(NTCvalue>=(ADC_ChannelAioVbat-100))
|
|
|
+ if(NTCvalue>=(ADC_ChannelAioVbat-10))
|
|
|
Resvalue=1000000;
|
|
|
else{
|
|
|
- Resvalue=ADC_ChannelAioRes*NTCvalue/(ADC_ChannelAioVbat-NTCvalue);
|
|
|
+ Resvalue=(long long)ADC_ChannelAioRes*(long long)NTCvalue/(ADC_ChannelAioVbat-NTCvalue);
|
|
|
+ }
|
|
|
+ return Resvalue;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ \fn INT32 AdcGetRes(UINT32 NTCvalue)
|
|
|
+ \param[in] req : NTCvalue
|
|
|
+ \brief
|
|
|
+ \return Resvalue
|
|
|
+*/
|
|
|
+static INT32 AdcGetResFromInres(UINT32 NTCvalue){
|
|
|
+ UINT32 Resvalue,ResvalueCount;
|
|
|
+ if(NTCvalue>=(ADC_ChannelAioVbat-10))
|
|
|
+ ResvalueCount=1000000;
|
|
|
+ else{
|
|
|
+ ResvalueCount=ADC_ChannelAioRes*NTCvalue/(ADC_ChannelAioVbat-NTCvalue);
|
|
|
+ }
|
|
|
+
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ //printf("%s[%d][%d][%d]\r\n",__FUNCTION__, __LINE__,ADC_InsideRES,ResvalueCount);
|
|
|
+ #endif
|
|
|
+
|
|
|
+ if(ResvalueCount>=ADC_InsideRES)
|
|
|
+ Resvalue=1000000;
|
|
|
+ else
|
|
|
+ Resvalue=(long long)ADC_InsideRES*(long long)ResvalueCount/(ADC_InsideRES-ResvalueCount);
|
|
|
+
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ //printf("%s[%d][%d]\r\n",__FUNCTION__, __LINE__,Resvalue);
|
|
|
+ #endif
|
|
|
+
|
|
|
+ return Resvalue;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+/**
|
|
|
+ \fn INT32 AdcVbatCali(UINT32 NTCvalue)
|
|
|
+ \param[in] req : NTCvalue
|
|
|
+ \brief
|
|
|
+ \return Resvalue
|
|
|
+*/
|
|
|
+static INT32 AdcVbatCali(UINT32 NTCvalue){
|
|
|
+ UINT32 Resvalue;
|
|
|
+ if(NTCvalue>=(ADC_ChannelAioVbat-10))
|
|
|
+ Resvalue=1000000;
|
|
|
+ else{
|
|
|
+ Resvalue=(long long)(ADC_ChannelAioRes+ADC_CALIBRATION_VALUE)*(long long)NTCvalue/ADC_CALIBRATION_VALUE; //ADC_ChannelAioRes*NTCvalue/(ADC_ChannelAioVbat-NTCvalue);
|
|
|
+ }
|
|
|
+ if(Resvalue<1300&&Resvalue>1100)
|
|
|
+ ADC_ChannelAioVbat=Resvalue;
|
|
|
+ return Resvalue;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ \fn INT32 AdcInresCali(UINT32 NTCvalue)
|
|
|
+ \param[in] req : NTCvalue
|
|
|
+ \brief
|
|
|
+ \return Resvalue
|
|
|
+*/
|
|
|
+static INT32 AdcInresCali(UINT32 NTCvalue){
|
|
|
+ UINT32 Resvalue,ResvalueCount;
|
|
|
+ if(NTCvalue>=(ADC_ChannelAioVbat-10))
|
|
|
+ ResvalueCount=1000000;
|
|
|
+ else{
|
|
|
+ ResvalueCount=ADC_ChannelAioRes*NTCvalue/(ADC_ChannelAioVbat-NTCvalue);
|
|
|
}
|
|
|
+
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ //printf("%s[%d][%d]\r\n",__FUNCTION__, __LINE__,ResvalueCount);
|
|
|
+ #endif
|
|
|
+
|
|
|
+ if(ResvalueCount>=ADC_CALIBRATION_VALUE)
|
|
|
+ Resvalue=1000000;
|
|
|
+ else
|
|
|
+ Resvalue=(long long)ADC_CALIBRATION_VALUE*(long long)ResvalueCount/(ADC_CALIBRATION_VALUE-ResvalueCount);
|
|
|
+ if(Resvalue>=200000&&Resvalue<1000000)
|
|
|
+ ADC_InsideRES=Resvalue;
|
|
|
return Resvalue;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
\fn INT32 AdcSendReq(UINT32 req,UINT32 * param ,UINT32 timeout)
|
|
|
\param[in] req : ADC_REQ_BITMAP_VBAT ADC_REQ_BITMAP_TEMP; timeout = 0 at irq ,otherwize equal to ADC_MSG_TIMEOUT
|
|
@@ -1112,7 +1221,7 @@ INT32 AdcSendReq(UINT32 req,UINT32 * param , UINT8 len ,UINT32 timeout)
|
|
|
adcReqMsg ReqMsg;
|
|
|
|
|
|
ReqMsg.request = req;
|
|
|
- ReqMsg.param[NTC_Channel1] = ReqMsg.param[NTC_Channel2] = ReqMsg.param[NTC_Channel3] = ReqMsg.param[NTC_Channel4] = ReqMsg.param[NTC_Channel5] =ADC_AioResDivRatioDefault ;
|
|
|
+ ReqMsg.param[NTC_Channel1] = ReqMsg.param[NTC_Channel2] = ReqMsg.param[NTC_Channel3] = ReqMsg.param[NTC_Channel4] = ReqMsg.param[NTC_Channel5] = ReqMsg.param[NTC_Channel5_InresCali] =ADC_AioResDivRatioDefault ;
|
|
|
ret = osMessageQueuePut(adcMsgHandle, &ReqMsg, 0, timeout);
|
|
|
|
|
|
if(ret != osOK)
|
|
@@ -1132,13 +1241,13 @@ INT32 AdcSendReq(UINT32 req,UINT32 * param , UINT8 len ,UINT32 timeout)
|
|
|
param[0] = gNtcDev.NTCvalue[1];
|
|
|
break;
|
|
|
case ADC_REQ_BITMAP_CH1:
|
|
|
- param[0] = AdcGetRes(gNtcDev.NTCvalue[2+NTC_Channel1]);
|
|
|
+ param[0] = AdcGetResFromInres(gNtcDev.NTCvalue[2+NTC_Channel1]);
|
|
|
break;
|
|
|
case ADC_REQ_BITMAP_CH2:
|
|
|
- param[0] =AdcGetRes(gNtcDev.NTCvalue[2+NTC_Channel2]);
|
|
|
+ param[0] =AdcGetResFromInres(gNtcDev.NTCvalue[2+NTC_Channel2]);
|
|
|
break;
|
|
|
case ADC_REQ_BITMAP_CH3:
|
|
|
- param[0] =AdcGetRes(gNtcDev.NTCvalue[2+NTC_Channel3]);
|
|
|
+ param[0] =AdcGetResFromInres(gNtcDev.NTCvalue[2+NTC_Channel3]);
|
|
|
break;
|
|
|
case ADC_REQ_BITMAP_CH4:
|
|
|
param[0] = AdcGetRes(gNtcDev.NTCvalue[2+NTC_Channel4]);
|
|
@@ -1146,6 +1255,12 @@ INT32 AdcSendReq(UINT32 req,UINT32 * param , UINT8 len ,UINT32 timeout)
|
|
|
case ADC_REQ_BITMAP_CH5:
|
|
|
param[0] = AdcGetRes(gNtcDev.NTCvalue[2+NTC_Channel5]);
|
|
|
break;
|
|
|
+ case ADC_REQ_BITMAP_VBAT_CALI:
|
|
|
+ param[0] = AdcVbatCali(gNtcDev.NTCvalue[2+NTC_Channel5_VbatCali]);
|
|
|
+ break;
|
|
|
+ case ADC_REQ_BITMAP_INRES_CALI:
|
|
|
+ param[0] = AdcInresCali(gNtcDev.NTCvalue[2+NTC_Channel5_InresCali]);
|
|
|
+ break;
|
|
|
}
|
|
|
osEventFlagsClear(adcTrigerHandle, ADC_RECV_CONTROL_FLAG);
|
|
|
return ret;
|
|
@@ -1199,6 +1314,18 @@ static void ADC_NTC4OR5ChannelCallback(uint32_t result)
|
|
|
osEventFlagsSet(adcEvtHandle, ADC_REQ_BITMAP_CH5);
|
|
|
}
|
|
|
}
|
|
|
+static void ADC_NTCVbatCaliChannelCallback(uint32_t result)
|
|
|
+{
|
|
|
+ NTCChannelResult[NTC_Channel5_VbatCali] = result;
|
|
|
+ osEventFlagsSet(adcEvtHandle, ADC_REQ_BITMAP_VBAT_CALI);
|
|
|
+}
|
|
|
+
|
|
|
+static void ADC_NTCInresCaliChannelCallback(uint32_t result)
|
|
|
+{
|
|
|
+ NTCChannelResult[NTC_Channel5_InresCali] = result;
|
|
|
+ osEventFlagsSet(adcEvtHandle, ADC_REQ_BITMAP_INRES_CALI);
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
\fn void AdcProcess(void* arg)
|
|
@@ -1244,8 +1371,14 @@ static void AdcProcess(void* arg)
|
|
|
if(regMsg.request & ADC_REQ_BITMAP_CH1)
|
|
|
{
|
|
|
if(regMsg.param[NTC_Channel1]>=ADC_AioResDivRatio1 && regMsg.param[NTC_Channel1]<=ADC_AioResDivRatio1Over16){
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ //printf("%s[%d]\r\n",__FUNCTION__, __LINE__);
|
|
|
+ #endif
|
|
|
adcConfig.channelConfig.aioResDiv = regMsg.param[NTC_Channel1];
|
|
|
}else{
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ //printf("%s[%d]\r\n",__FUNCTION__, __LINE__);
|
|
|
+ #endif
|
|
|
adcConfig.channelConfig.aioResDiv = ADC_AioResDivRatioDefault;
|
|
|
}
|
|
|
ADC_ChannelInit(ADC_ChannelAio1, ADC_UserAPP, &adcConfig, ADC_NTC1ChannelCallback);
|
|
@@ -1255,9 +1388,14 @@ static void AdcProcess(void* arg)
|
|
|
if(regMsg.request & ADC_REQ_BITMAP_CH2)
|
|
|
{
|
|
|
if(regMsg.param[NTC_Channel2]>=ADC_AioResDivRatio1 && regMsg.param[NTC_Channel2]<=ADC_AioResDivRatio1Over16){
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ //printf("%s[%d]\r\n",__FUNCTION__, __LINE__);
|
|
|
+ #endif
|
|
|
adcConfig.channelConfig.aioResDiv = regMsg.param[NTC_Channel2];
|
|
|
}else{
|
|
|
- adcConfig.channelConfig.aioResDiv = ADC_AioResDivRatioDefault;
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ //printf("%s[%d]\r\n",__FUNCTION__, __LINE__);
|
|
|
+ #endif
|
|
|
}
|
|
|
ADC_ChannelInit(ADC_ChannelAio2, ADC_UserAPP, &adcConfig, ADC_NTC2ChannelCallback);
|
|
|
ADC_StartConversion(ADC_ChannelAio2, ADC_UserAPP);
|
|
@@ -1266,8 +1404,14 @@ static void AdcProcess(void* arg)
|
|
|
if(regMsg.request & ADC_REQ_BITMAP_CH3)
|
|
|
{
|
|
|
if(regMsg.param[NTC_Channel3]>=ADC_AioResDivRatio1 && regMsg.param[NTC_Channel3]<=ADC_AioResDivRatio1Over16){
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ //printf("%s[%d]\r\n",__FUNCTION__, __LINE__);
|
|
|
+ #endif
|
|
|
adcConfig.channelConfig.aioResDiv = regMsg.param[NTC_Channel3];
|
|
|
}else{
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ //printf("%s[%d]\r\n",__FUNCTION__, __LINE__);
|
|
|
+ #endif
|
|
|
adcConfig.channelConfig.aioResDiv = ADC_AioResDivRatioDefault;
|
|
|
}
|
|
|
ADC_ChannelInit(ADC_ChannelAio3, ADC_UserAPP, &adcConfig, ADC_NTC3ChannelCallback);
|
|
@@ -1278,28 +1422,48 @@ static void AdcProcess(void* arg)
|
|
|
if(regMsg.request & ADC_REQ_BITMAP_CH4){
|
|
|
gNtcDev.flagC4 = 1;
|
|
|
GPIO_PinWrite(0, 1, 1);
|
|
|
-
|
|
|
- if(regMsg.param[NTC_Channel4]>=ADC_AioResDivRatio1 && regMsg.param[NTC_Channel4]<=ADC_AioResDivRatio1Over16){
|
|
|
- adcConfig.channelConfig.aioResDiv = regMsg.param[NTC_Channel4];
|
|
|
- }else{
|
|
|
- adcConfig.channelConfig.aioResDiv = ADC_AioResDivRatioDefault;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
}else{
|
|
|
GPIO_PinWrite(0, 1, 0);
|
|
|
gNtcDev.flagC4 = 0;
|
|
|
- if(regMsg.param[NTC_Channel5]>=ADC_AioResDivRatio1 && regMsg.param[NTC_Channel5]<=ADC_AioResDivRatio1Over16){
|
|
|
- adcConfig.channelConfig.aioResDiv = regMsg.param[NTC_Channel5];
|
|
|
- }else{
|
|
|
- adcConfig.channelConfig.aioResDiv = ADC_AioResDivRatioDefault;
|
|
|
- }
|
|
|
+ }
|
|
|
+ ADC_GetDefaultConfig(&adcConfig);
|
|
|
+ adcConfig.channelConfig.thermalInput = ADC_ThermalInputAio4;
|
|
|
+ ADC_ChannelInit(ADC_ChannelThermal, ADC_UserAPP, &adcConfig, ADC_NTC4OR5ChannelCallback);
|
|
|
+ ADC_StartConversion(ADC_ChannelThermal, ADC_UserAPP);
|
|
|
+ }
|
|
|
|
|
|
+ if(regMsg.request & ADC_REQ_BITMAP_VBAT_CALI)
|
|
|
+ {
|
|
|
+ GPIO_PinWrite(0, 1, 0);
|
|
|
+ gNtcDev.flagC4 = 0;
|
|
|
+ ADC_GetDefaultConfig(&adcConfig);
|
|
|
+ adcConfig.channelConfig.thermalInput = ADC_ThermalInputAio4;
|
|
|
+ ADC_ChannelInit(ADC_ChannelThermal, ADC_UserAPP, &adcConfig, ADC_NTCVbatCaliChannelCallback);
|
|
|
+ ADC_StartConversion(ADC_ChannelThermal, ADC_UserAPP);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(regMsg.request & ADC_REQ_BITMAP_INRES_CALI)
|
|
|
+ {
|
|
|
+ GPIO_PinWrite(0, 1, 0);
|
|
|
+ if(regMsg.param[NTC_Channel5_InresCali]>=ADC_AioResDivRatio1 && regMsg.param[NTC_Channel5_InresCali]<=ADC_AioResDivRatio1Over16){
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ //printf("%s[%d]\r\n",__FUNCTION__, __LINE__);
|
|
|
+ #endif
|
|
|
+ adcConfig.channelConfig.aioResDiv = regMsg.param[NTC_Channel5_InresCali];
|
|
|
+ }else{
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ //printf("%s[%d]\r\n",__FUNCTION__, __LINE__);
|
|
|
+ #endif
|
|
|
+ adcConfig.channelConfig.aioResDiv = ADC_AioResDivRatioDefault;
|
|
|
}
|
|
|
- ADC_ChannelInit(ADC_ChannelAio4, ADC_UserAPP, &adcConfig, ADC_NTC4OR5ChannelCallback);
|
|
|
+
|
|
|
+ gNtcDev.flagC4 = 0;
|
|
|
+ ADC_ChannelInit(ADC_ChannelAio4, ADC_UserAPP, &adcConfig, ADC_NTCInresCaliChannelCallback);
|
|
|
ADC_StartConversion(ADC_ChannelAio4, ADC_UserAPP);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
ret = osEventFlagsWait(adcEvtHandle, regMsg.request, osFlagsWaitAll, ADC_GET_RESULT_TIMOUT);
|
|
|
|
|
|
if(regMsg.request & ADC_REQ_BITMAP_VBAT)
|
|
@@ -1319,7 +1483,10 @@ static void AdcProcess(void* arg)
|
|
|
ADC_ChannelDeInit(ADC_ChannelAio1, ADC_UserAPP);
|
|
|
if(times==1){
|
|
|
gNtcDev.NTCvalue[2+NTC_Channel1]= HAL_ADC_CalibrateRawCode(NTCChannelResult[NTC_Channel1])*REV_AioResDivRatioDefault;
|
|
|
- if(gNtcDev.NTCvalue[2+NTC_Channel1]>(NTC_FullAioValue-100)){
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ //printf("%s[%d][%d]\r\n",__FUNCTION__, __LINE__,gNtcDev.NTCvalue[2+NTC_Channel1]);
|
|
|
+ #endif
|
|
|
+ if(gNtcDev.NTCvalue[2+NTC_Channel1]>(NTC_FullAioValue-10)){
|
|
|
regMsg.param[NTC_Channel1]=ADC_AioResDivRatioExtra;
|
|
|
times++;
|
|
|
goto retry;
|
|
@@ -1334,7 +1501,10 @@ static void AdcProcess(void* arg)
|
|
|
ADC_ChannelDeInit(ADC_ChannelAio2, ADC_UserAPP);
|
|
|
if(times==1){
|
|
|
gNtcDev.NTCvalue[2+NTC_Channel2]= HAL_ADC_CalibrateRawCode(NTCChannelResult[NTC_Channel2])*REV_AioResDivRatioDefault;
|
|
|
- if(gNtcDev.NTCvalue[2+NTC_Channel2]>(NTC_FullAioValue-100)){
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ //printf("%s[%d][%d]\r\n",__FUNCTION__, __LINE__,gNtcDev.NTCvalue[2+NTC_Channel2]);
|
|
|
+ #endif
|
|
|
+ if(gNtcDev.NTCvalue[2+NTC_Channel2]>(NTC_FullAioValue-10)){
|
|
|
regMsg.param[NTC_Channel2]=ADC_AioResDivRatioExtra;
|
|
|
times++;
|
|
|
goto retry;
|
|
@@ -1348,7 +1518,10 @@ static void AdcProcess(void* arg)
|
|
|
ADC_ChannelDeInit(ADC_ChannelAio3, ADC_UserAPP);
|
|
|
if(times==1){
|
|
|
gNtcDev.NTCvalue[2+NTC_Channel3]= HAL_ADC_CalibrateRawCode(NTCChannelResult[NTC_Channel3])*REV_AioResDivRatioDefault;
|
|
|
- if(gNtcDev.NTCvalue[2+NTC_Channel3]>(NTC_FullAioValue-100)){
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ //printf("%s[%d][%d]\r\n",__FUNCTION__, __LINE__,gNtcDev.NTCvalue[2+NTC_Channel3]);
|
|
|
+ #endif
|
|
|
+ if(gNtcDev.NTCvalue[2+NTC_Channel3]>(NTC_FullAioValue-10)){
|
|
|
regMsg.param[NTC_Channel3]=ADC_AioResDivRatioExtra;
|
|
|
times++;
|
|
|
goto retry;
|
|
@@ -1359,30 +1532,45 @@ static void AdcProcess(void* arg)
|
|
|
}
|
|
|
if(regMsg.request & ADC_REQ_BITMAP_CH4 ||regMsg.request & ADC_REQ_BITMAP_CH5)
|
|
|
{
|
|
|
- ADC_ChannelDeInit(ADC_ChannelAio4, ADC_UserAPP);
|
|
|
+ ADC_ChannelDeInit(ADC_ChannelThermal, ADC_UserAPP);
|
|
|
if(gNtcDev.flagC4){
|
|
|
- if(times==1){
|
|
|
- gNtcDev.NTCvalue[2+NTC_Channel4]= HAL_ADC_CalibrateRawCode(NTCChannelResult[NTC_Channel4])*REV_AioResDivRatioDefault;
|
|
|
- if(gNtcDev.NTCvalue[2+NTC_Channel4]>(NTC_FullAioValue-100)){
|
|
|
- regMsg.param[NTC_Channel4]=ADC_AioResDivRatioExtra;
|
|
|
- times++;
|
|
|
- goto retry;
|
|
|
- }
|
|
|
- }else{
|
|
|
- gNtcDev.NTCvalue[2+NTC_Channel4]= HAL_ADC_CalibrateRawCode(NTCChannelResult[NTC_Channel4])*REV_AioResDivRatioExtra;
|
|
|
+ gNtcDev.NTCvalue[2+NTC_Channel4]= HAL_ADC_CalibrateRawCode(NTCChannelResult[NTC_Channel4]);
|
|
|
+ }else{
|
|
|
+ gNtcDev.NTCvalue[2+NTC_Channel5]= HAL_ADC_CalibrateRawCode(NTCChannelResult[NTC_Channel5]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(regMsg.request & ADC_REQ_BITMAP_VBAT_CALI)
|
|
|
+ {
|
|
|
+ ADC_ChannelDeInit(ADC_ChannelThermal, ADC_UserAPP);
|
|
|
+ if(times==1){
|
|
|
+ gNtcDev.NTCvalue[2+NTC_Channel5_VbatCali]= HAL_ADC_CalibrateRawCode(NTCChannelResult[NTC_Channel5_VbatCali]);
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ //printf("%s[%d][%d]\r\n",__FUNCTION__, __LINE__,gNtcDev.NTCvalue[2+NTC_Channel5_VbatCali]);
|
|
|
+ #endif
|
|
|
+ if(gNtcDev.NTCvalue[2+NTC_Channel5_VbatCali]>(NTC_FullAioValue-10)){
|
|
|
+ regMsg.param[NTC_Channel5_VbatCali]=ADC_AioResDivRatioExtra;
|
|
|
+ times++;
|
|
|
+ goto retry;
|
|
|
}
|
|
|
}else{
|
|
|
- if(times==1){
|
|
|
- gNtcDev.NTCvalue[2+NTC_Channel5]= HAL_ADC_CalibrateRawCode(NTCChannelResult[NTC_Channel5])*REV_AioResDivRatioDefault;
|
|
|
- if(gNtcDev.NTCvalue[2+NTC_Channel5]>(NTC_FullAioValue-100)){
|
|
|
- regMsg.param[NTC_Channel5]=ADC_AioResDivRatioExtra;
|
|
|
- times++;
|
|
|
- goto retry;
|
|
|
- }
|
|
|
- }else{
|
|
|
- gNtcDev.NTCvalue[2+NTC_Channel5]= HAL_ADC_CalibrateRawCode(NTCChannelResult[NTC_Channel5])*REV_AioResDivRatioExtra;
|
|
|
- }
|
|
|
-
|
|
|
+ gNtcDev.NTCvalue[2+NTC_Channel5_VbatCali]= HAL_ADC_CalibrateRawCode(NTCChannelResult[NTC_Channel5_VbatCali]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(regMsg.request & ADC_REQ_BITMAP_INRES_CALI)
|
|
|
+ {
|
|
|
+ ADC_ChannelDeInit(ADC_ChannelAio4, ADC_UserAPP);
|
|
|
+ if(times==1){
|
|
|
+ gNtcDev.NTCvalue[2+NTC_Channel5_InresCali]= HAL_ADC_CalibrateRawCode(NTCChannelResult[NTC_Channel5_InresCali])*REV_AioResDivRatioDefault;
|
|
|
+ #ifdef USING_PRINTF
|
|
|
+ //printf("%s[%d][%d]\r\n",__FUNCTION__, __LINE__,gNtcDev.NTCvalue[2+NTC_Channel5_InresCali]);
|
|
|
+ #endif
|
|
|
+ if(gNtcDev.NTCvalue[2+NTC_Channel5_InresCali]>(NTC_FullAioValue-10)){
|
|
|
+ regMsg.param[NTC_Channel5_InresCali]=ADC_AioResDivRatioExtra;
|
|
|
+ times++;
|
|
|
+ goto retry;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ gNtcDev.NTCvalue[2+NTC_Channel5_InresCali]= HAL_ADC_CalibrateRawCode(NTCChannelResult[NTC_Channel5_InresCali])*REV_AioResDivRatioExtra;
|
|
|
}
|
|
|
}
|
|
|
osEventFlagsSet(adcTrigerHandle, ADC_RECV_CONTROL_FLAG);
|
|
@@ -1472,7 +1660,7 @@ void PowerPinConfig(IOType iotype)
|
|
|
|
|
|
PAD_SetPinConfig(31, &padConfig);
|
|
|
GPIO_PinConfig(1, AON_GPS_POWER2, &config);
|
|
|
- GPIO_PinWrite(1, 1 << AON_GPS_POWER2, 1 << AON_RELAY_DRV);
|
|
|
+ GPIO_PinWrite(1, 1 << AON_GPS_POWER2, 1 << AON_GPS_POWER2);
|
|
|
|
|
|
PAD_SetPinConfig(32, &padConfig);
|
|
|
GPIO_PinConfig(1, AON_RELAY_DRV, &config);
|
|
@@ -1584,7 +1772,6 @@ INT32 posGGAServiceStart( posGGACallBack callBack)
|
|
|
return -1;
|
|
|
}else{
|
|
|
GPSPowerCtr(true);
|
|
|
- GPSUsartHandler(9600);
|
|
|
gGPSDataCBfunc = callBack;
|
|
|
return 0;
|
|
|
}
|
|
@@ -1597,7 +1784,6 @@ INT32 posGGAServiceStart( posGGACallBack callBack)
|
|
|
*/
|
|
|
void posGGAServiceStop( void)
|
|
|
{
|
|
|
- HAL_UART_DeInitHandler(PORT_USART_2);
|
|
|
GPSPowerCtr(false);
|
|
|
gGPSDataCBfunc = NULL;
|
|
|
}
|