Ver Fonte

解决adc问题 增加短路保护功能

liuhao há 3 anos atrás
pai
commit
9d9a97eed4

+ 2 - 1
YC11xxSDK_v3565_20210412/Librarier/device/system.c

@@ -10,7 +10,7 @@ Description  : none.
 #include "system.h"
 #include "yc11xx_bt_interface.h"
 
-
+uint8_t Bt_CONNECTED_State=0;
 //*****************************************************************************
 //
 //! A simple  MyPrintf function supporting \%c, \%d, \%p, \%s, \%u,\%x, and \%X.
@@ -68,6 +68,7 @@ void setprintportcb(printport_CB *printportx)
 void printfsend(uint8_t* buf, int len)
 {
 	 #if (DEBUG_BLE_PRINTF==1)
+	 if(Bt_CONNECTED_State==1)
 	 Bt_SndBleData(0x001e,buf,len);//ble 注意打印长度超过20字节会被截断 
 	 #else
     USART_SendDataFromBuff(printportcb.print_port,buf,len);

+ 7 - 5
YC11xxSDK_v3565_20210412/Librarier/device/system.h

@@ -26,19 +26,19 @@ Description  : none.
 #define NEC_GPIO 31
 #endif
 
-#define DEBUG_USART 1
-
+#define DEBUG_USART 0
+#define DEBUG_BLE_PRINTF 1
 #if (DEBUG_USART==1)
 #define PRINTPORT  UARTB
 #define PRINTRXIO  6
-#define PRINTTXIO  23
+#define PRINTTXIO  7
 #else   
 #define PRINTPORT  UARTB
 #define PRINTRXIO  6
-#define PRINTTXIO  20
+#define PRINTTXIO  7
 #endif
 
-#define DEBUG_BLE_PRINTF 0 
+
 
 #define BLE_SEND_HANDLE 0x001e 
 
@@ -50,6 +50,8 @@ Description  : none.
 #define BIT_FLIP(a,b) ((a) ^= (1<<(b)))				//bit Negation
 #define BIT_GET(a,b) (((a) & (1<<(b)))>>(b))
 
+extern uint8_t Bt_CONNECTED_State;
+
 typedef struct printportStruct
 {
     USART_TypeDef print_port;

+ 1 - 0
YC11xxSDK_v3565_20210412/Librarier/drivers/adc/Drv_adc.c

@@ -1,6 +1,7 @@
 #include "Drv_adc.h"
 #include "system.h"
 
+//#define DEBUG_ADC
 
 /**
   * @brief  calculate voltage ,acording reference value and reference voltage

+ 6 - 6
YC11xxSDK_v3565_20210412/Librarier/drivers/ota/drv_ota.c

@@ -103,16 +103,16 @@ void Bt_BleOTA(uint8_t len,uint8_t *dataPtr)
 				
 	 		case OTA_EVT_DATA:   		//接收ota 数据
 	 			if(OTA_start_ignore>0)OTA_start_ignore--;
-	 			if(OTA_packetid == 0 || (OTA_packetid +1) == (*(dataPtr+4) + (*(dataPtr+5) <<8))){
-	 				OTA_packetid = *(dataPtr+4) + (*(dataPtr+5) <<8);
+	 			if(OTA_packetid == 0 || (OTA_packetid +1) == (*(dataPtr+4) + (*(dataPtr+5) <<8))){//判断包序号是否正常
+	 				OTA_packetid = *(dataPtr+4) + (*(dataPtr+5) <<8); //获得包序号 
 	 				}
 				else{
 		 			break;
 		 		}
-				if(  (*(dataPtr+6)+((*(dataPtr+7))<<8)) >0)
+				if(  (*(dataPtr+6)+((*(dataPtr+7))<<8)) >0)//长度大于0再写入
 				{
-	 			 	QSPI_WriteFlashData(OTA_flash_start_addr+OTA_datalen, (*(dataPtr+6)+((*(dataPtr+7))<<8)) ,dataPtr+8);
-					OTA_datalen +=   (*(dataPtr+6)+((*(dataPtr+7))<<8)) ;
+	 			 	QSPI_WriteFlashData(OTA_flash_start_addr+OTA_datalen, (*(dataPtr+6)+((*(dataPtr+7))<<8)) ,dataPtr+8);//写入flash
+					OTA_datalen +=   (*(dataPtr+6)+((*(dataPtr+7))<<8)) ;//计算写入长度值
 				}
 				else{
 					break;		
@@ -165,7 +165,7 @@ void Bt_BleOTA(uint8_t len,uint8_t *dataPtr)
 	 			Lpm_unLockLpm(OTA_UPDATE_FLAG);
 	 			break;
 	 			
-	 		case OTA_EVT_RESET:   	//复位
+	 		case OTA_EVT_RESET:   	//ota 复位 
 				OTA_Init();
 				break;				
 			default:

+ 0 - 1
YC11xxSDK_v3565_20210412/Librarier/sc_user/u_main.c

@@ -21,7 +21,6 @@ void ag_timer_glo_task_cb(void)
 	{
 		//ºìÍâ½ÓÊÕ
 		g_ir_recv_done_flag = 0;
-		
 		ir_decode(rc_decode());
 		U_UART_PRINTF("ir_code = %02X, %02X, %02X, %02X\n", g_ir_code[0], g_ir_code[1], g_ir_code[2], g_ir_code[3]);
 	}

+ 8 - 4
YC11xxSDK_v3565_20210412/Librarier/sc_user/u_power.c

@@ -7,16 +7,17 @@
 
 #define POWER_DET_CHN		(0x02)
 #define POWER_DET_PORT		(0x32)
-#define POWER_ADC_ERR_PVT	(229) //adc值 短路时的电压对应值
+#define POWER_ADC_ERR_PVT	(10500) // 短路时的电压对应值 低于10.5V  这里单位为mV
 
-#define ADC_CHECK         (0)
+#define ADC_CHECK         (1)
 
 extern void light_state_upload(void);
 
 static void power_check_cb(void)
 {
 	static int det_cnt = 0, adc_temp_mean = 0, undervoltage_cnt = 0;
-
+  uint32_t adc_val=0;
+	
 	adc_temp_mean += ADC_GetVoltage(ADC_CHANNEL_5); //读取adc数据
 	//U_UART_PRINTF("ad=%d\n", adc_temp_mean);
 	++det_cnt;
@@ -24,6 +25,9 @@ static void power_check_cb(void)
 	{
 		det_cnt = 0;
 		adc_temp_mean /= 3;
+		if(adc_temp_mean<0)adc_temp_mean=0;//负数是错误值
+		adc_temp_mean = (adc_temp_mean*123);//硬件衰减倍数12.3 还原硬件衰减倍数、
+		adc_temp_mean/=10;
 		if (adc_temp_mean < POWER_ADC_ERR_PVT && g_light_para.power_st)
 		{
 			if (++undervoltage_cnt >= 2)
@@ -37,7 +41,7 @@ static void power_check_cb(void)
 			undervoltage_cnt = 0;
 		}
 		
-		U_UART_PRINTF("m_ad=%d\n", adc_temp_mean);
+		U_UART_PRINTF("m_ad=%d mV\n", adc_temp_mean);
 		
 		adc_temp_mean = 0;
 		u_ag_timer_start(AG_TIMER_ID_POWER_CHECK, TIMER_TIME_POWER_CHECK, power_check_cb);

+ 7 - 1
YC11xxSDK_v3565_20210412/Librarier/sc_user/u_pwm_drive.c

@@ -8,6 +8,7 @@
 //#define PWM_CHANCE_R  	(8)
 //#define PWM_CHANCE_G  	(9)
 //#define PWM_CHANCE_B    (10) //bk
+
 #define PWM_CHANCE_R  	(24)
 #define PWM_CHANCE_G  	(0)
 #define PWM_CHANCE_B    (25)
@@ -86,7 +87,12 @@ void light_set_color(uint32_t color_rgb)
 //	UserSet_OutPWM(PWM_CHANCE_R,PWM_CHANNEL_1,20000,chan_2);//R		
 //	UserSet_OutPWM(PWM_CHANCE_B,PWM_CHANNEL_2,20000,chan_1);//B
 	
-	UserSet_OutPWM(PWM_CHANCE_G,PWM_CHANNEL_0,20000,pwm_chan_0);// G	
+//	UserSet_OutPWM(PWM_CHANCE_G,PWM_CHANNEL_0,20000,pwm_chan_0);// G	
+//	UserSet_OutPWM(PWM_CHANCE_R,PWM_CHANNEL_1,20000,pwm_chan_2);//R		
+//	UserSet_OutPWM(PWM_CHANCE_B,PWM_CHANNEL_2,20000,pwm_chan_1);//B
+	
+	
+		UserSet_OutPWM(PWM_CHANCE_G,PWM_CHANNEL_0,20000,pwm_chan_0);// G	
 	UserSet_OutPWM(PWM_CHANCE_R,PWM_CHANNEL_1,20000,pwm_chan_2);//R		
 	UserSet_OutPWM(PWM_CHANCE_B,PWM_CHANNEL_2,20000,pwm_chan_1);//B
 	

+ 6 - 7
YC11xxSDK_v3565_20210412/Librarier/sc_user/u_rc.c

@@ -10,10 +10,7 @@ uint8_t g_ir_recv_done_flag = 0x00;
 
 #if (NEC_ENABLE==1)
 
-uint8_t *rc_decode(void)
-{
-	return (g_ir_code);
-}
+
 
 
 //Ñ¡Ôñ nec½ÓÊÕµÄgpio£¬ ¿ªÊ¹ÄÜ
@@ -44,15 +41,17 @@ void Bt_NecCallBack(uint8_t len,uint8_t *dataPtr)
 			break;
 	}
 }
-
+#endif
 void rc_init(void)
 {
   #if (NEC_ENABLE==1)
 	nec_receive_enable(NEC_GPIO);
 	#endif
 }
-#endif
-
+uint8_t *rc_decode(void)
+{
+	return (g_ir_code);
+}
 
 #if 0  //bk3431
 #include "t_icu.h"

+ 21 - 7
YC11xxSDK_v3565_20210412/Librarier/user/user_driver.c

@@ -294,12 +294,15 @@ int Process(const int16_t* data, size_t length)
 static unsigned long long AudioSumVal=0;//
 static unsigned int AudioCntIdx=0;
 static unsigned char AudioDbVal=0;//分贝值
+static  int AudioValMin=0;
+static  int AudioValMax=0;
 
 void Audio_to_uart_start()
 {
 //	char audioVal=0;
 	 	short audioVal=0;
-	if (sMicCurVariable.mMicEnable == MIC_DISABLE)
+	  int indexL=0;
+	  if (sMicCurVariable.mMicEnable == MIC_DISABLE)
 		return;
 	int audioWPtr = HREADW(CORE_ADCD_ADDR) ;
 	int bufferLen = Audio_get_buffer_len();
@@ -309,22 +312,33 @@ void Audio_to_uart_start()
 
 		//Original sound sampling(pcm)
 		testPtr = (short *)sMicCurVariable.mReadPtr;
-		for(int indexL = 0; indexL < (ENCODE_INPUT_LEN>>1); indexL++)
+		for( indexL = 0; indexL < (ENCODE_INPUT_LEN>>1); indexL++)
 		{
-			   //audioVal = *(testPtr+ indexL)/10; //串口显示波形用
-			   //printfsend(&audioVal,1);
-			   audioVal = *(testPtr+ indexL);
+//			   audioVal = *(testPtr+ indexL)/100; //串口显示波形用
+//			   printfsend((uint8_t*)&audioVal,1);
 			   
+			   audioVal = *(testPtr+ indexL);
+			   if(audioVal<AudioValMin)
+				 {
+				   AudioValMin = audioVal;
+				 }
+				 	if(audioVal>AudioValMax)
+				 {
+				   AudioValMax = audioVal;
+				 }
+				 
 			  if(AudioCntIdx<ENCODE_INPUT_LEN*100)
 				{
 								AudioSumVal+=abs(*(testPtr+ indexL));
 								AudioCntIdx++;
 				}else
 		    {
-				      AudioCntIdx=0;
 					    AudioDbVal = (int)(10.0*log10(AudioSumVal));  
 						 AudioSumVal=0;
-						 MyPrintf("val:%ddb\r\n",AudioDbVal);//计算分贝值打印 
+						AudioCntIdx=0;
+						//MyPrintf("sys:%d val:%ddb AudioValMax:%d AudioValMin:%d SumVal:%d\r\n",sys_time_handle.get_run_tickms(),AudioDbVal,AudioValMax,AudioValMin,AudioSumVal);//计算分贝值打印
+					 MyPrintf("val:%ddb \r\n",AudioDbVal); 
+					  AudioValMin=0;AudioValMax=0;
 				}
 
 				//MyPrintf("%c",*(sMicCurVariable.mReadPtr + indexL));

Diff do ficheiro suprimidas por serem muito extensas
+ 174 - 174
YC11xxSDK_v3565_20210412/ModuleDemo/Bluetooth-BLE-TEST/Prj/MDK/Objects/output/flash.dat


Diff do ficheiro suprimidas por serem muito extensas
+ 174 - 174
YC11xxSDK_v3565_20210412/ModuleDemo/Bluetooth-BLE-TEST/Prj/MDK/Objects/output/flash_final.dat


Diff do ficheiro suprimidas por serem muito extensas
+ 359 - 357
YC11xxSDK_v3565_20210412/ModuleDemo/Bluetooth-BLE-TEST/Prj/MDK/Objects/output/out.rom


+ 1 - 1
YC11xxSDK_v3565_20210412/ModuleDemo/Bluetooth-BLE-TEST/Prj/MDK/Objects/output/sched.rom

@@ -114,7 +114,7 @@ mem_le_transmit_window:50
 mem_le_adv_interval_max:a0 00
 mem_le_adv_own_addr_type:00
 mem_tx_power:00
-mem_le_pairing_mode:01
+mem_le_pairing_mode:00
 mem_le_secure_connect_enable:00
 mem_le_pres:02 03 00 01 10 02 03 #justwork
 

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 1
YC11xxSDK_v3565_20210412/ModuleDemo/Bluetooth-BLE-TEST/Prj/MDK/yc11xx.uvguix.liuhao


+ 7 - 6
YC11xxSDK_v3565_20210412/ModuleDemo/Bluetooth-BLE-TEST/User/main.c

@@ -84,12 +84,14 @@ void Bt_EvtCallBack(uint8_t len,uint8_t *dataPtr)
 		case IPC_EVT_LE_DISCONNECTED:		//断连
 			u_gapc_disconnect_cd(IPC_EVT_LE_DISCONNECTED);
 			gBLEState.topState = BLE_IDLE;
+		  Bt_CONNECTED_State=0;
 			#ifdef DEBUG_DRV_BT
 			MyPrintf("\r\n***************IPC_EVT_LE_DISCONNECTED***************\r\n");
 			#endif
 			Bt_StartAdv(60,0x80);
 			break;
 		case IPC_EVT_LE_CONNECTED:			//连接
+			Bt_CONNECTED_State=1;
 			IPC_TxControlCmd(IPC_CMD_UPDATE_CONN);
 			//SYS_ReleaseTimer(&gAdv_Timer);
 		  Bt_SndCmdLeUpdateAttMTU();
@@ -191,7 +193,7 @@ void Bt_BleCallBack(uint8_t len,uint8_t *dataPtr)
 			switch(handle)
 			{
 				case OTA_BLE_WRITE_HANDLE:			//ota write handle
-				Lpm_LockLpm(OTA_UPDATE_FLAG);		//停止进入休眠
+				Lpm_LockLpm(OTA_UPDATE_FLAG);		//停止进入休眠 
 				MyPrintf("OTA_Start\r\n");
 				Bt_BleOTA(len-1, dataPtr+1);			//ota 升级
 				//SYS_SetTimer(&OTA_sleep_timer,50,TIMER_SINGLE|TIMER_TYPE_BIT,BT_OTA_Sleep_func);
@@ -305,27 +307,26 @@ int main(void)
 	TaskManager_Init();
 	UserTask_Create(1,user_task1,1);
 	UserTask_Create(2,user_task2,1);
-  UserTimerTask_Create(test1,1000);
+  //UserTimerTask_Create(test1,1000);
 	#ifdef HW_WATCH_DOG_FUNC
 	WDT_Enable();//开启看门狗 
 	#endif
-	//light_set_color(0xff00);
 	MyPrintf("\r\nOTA_VERSION_Dev\r\n");
 	MyPrintf("\r\nRUN_ADDR:%x\r\n",Get_runAddr());
 	while(1)
 	{
 		#ifdef HW_WATCH_DOG_FUNC
-		WDT_Kick();//喂狗
+		WDT_Kick();//喂狗 
 		#endif
 		ag_timer_sched();//定时轮询
 		TaskManager_Run();//任务调度器运行
-		//Audio_to_uart_start();
+		Audio_to_uart_start();
 		switch (HREAD(IPC_MCU_STATE))
 		{
 			case IPC_MCU_STATE_RUNNING:
 			{
 				IPC_HandleRxPacket();						//m0和bt交互数据类型判断,是evt还是ble data?并执行对应回调函数
-//				SYS_timerPolling();//定时器任务轮询
+				//				SYS_timerPolling();//定时器任务轮询 
 				Lpm_LockLpm(M0_LPM_FLAG);			
 				
 			}				

+ 1 - 1
YC11xxSDK_v3565_20210412/patch/sched.rom

@@ -114,7 +114,7 @@ mem_le_transmit_window:50
 mem_le_adv_interval_max:a0 00
 mem_le_adv_own_addr_type:00
 mem_tx_power:00
-mem_le_pairing_mode:01
+mem_le_pairing_mode:00
 mem_le_secure_connect_enable:00
 mem_le_pres:02 03 00 01 10 02 03 #justwork
 

+ 1 - 1
YC11xxSDK_v3565_20210412/patch/user.dat

@@ -48,7 +48,7 @@ mem_le_transmit_window:50
 mem_le_adv_interval_max:a0 00
 mem_le_adv_own_addr_type:00
 mem_tx_power:00
-mem_le_pairing_mode:01
+mem_le_pairing_mode:00
 mem_le_secure_connect_enable:00
 mem_le_pres:02 03 00 01 10 02 03 #justwork
 

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff