From 13e0fafc140c16539691d26afafaca417e7e2fbc Mon Sep 17 00:00:00 2001
From: WXK <287788329@qq.com>
Date: 星期四, 16 一月 2025 09:43:45 +0800
Subject: [PATCH] 更新为sdk0.7.0版本

---
 01_SDK/nimble/os/freertos/portable/RVDS/ARM_CM0/pan107x/os_setup.c |  232 +++++++++++++++++++++++++++++++++------------------------
 1 files changed, 134 insertions(+), 98 deletions(-)

diff --git a/01_SDK/nimble/os/freertos/portable/RVDS/ARM_CM0/pan107x/os_setup.c b/01_SDK/nimble/os/freertos/portable/RVDS/ARM_CM0/pan107x/os_setup.c
index db749c2..a3b2bc2 100644
--- a/01_SDK/nimble/os/freertos/portable/RVDS/ARM_CM0/pan107x/os_setup.c
+++ b/01_SDK/nimble/os/freertos/portable/RVDS/ARM_CM0/pan107x/os_setup.c
@@ -1,13 +1,14 @@
 #include "FreeRTOS.h"
 #include "task.h"
-#ifdef NIMBLE_SPARK_SUP
-#include "app_config_spark.h"
-#endif
+#include "ble_config.h"
 #include "pan_clktrim.h"
 #include "nimble/nimble_port.h"
 #include "pan_svc_call.h"
 #ifdef NIMBLE_SPARK_SUP
 #include "nimble/pan107x/nimble_glue_spark.h"
+#endif
+#if CONFIG_RTT_LOG_ENABLE
+#include "SEGGER_RTT.h"
 #endif
 #include "pan_power.h"
 
@@ -24,7 +25,7 @@
 
 extern uint32_t lp_int_ctrl_reg;
 extern uint32_t rst_status_reg;
-extern void app_main(void);
+extern void app_init(void);
 
 static uint8_t m_chip_mac[6];
 
@@ -59,8 +60,28 @@
 	
     temp_check_start(TEMP_CHECK_INTERVAL_MS);
 
-	if (HAL_ADC_GetValue(&adc_temperature, &temp) == PAN_HAL_SUCCESS)
+	if (HAL_ADC_GetValue(&adc_temperature, &temp) == PAN_HAL_SUCCESS) {
 		PW_AutoOptimizeParams((int)temp);
+	
+		/* Update SCA */
+		static uint8_t config = 0xFF;
+		uint16_t SCA = CONFIG_BT_CTLR_SCA;
+		if(temp > 15 && temp < 30){
+			if(config == 0)
+				return;
+			config = 0;
+			SCA = CONFIG_BT_CTLR_SCA;
+		}
+		else{
+			if(config == 1)
+				return;
+			config = 1;
+			SCA = (CONFIG_LOW_SPEED_CLOCK_SRC==0 ? 1000:500);
+		}
+		pan_misc_upd_local_sca(SCA);
+		
+		//printf("update SCA:%d\n", SCA);
+	}
 #endif
 }
 
@@ -70,8 +91,8 @@
 	//register timer
 	ble_npl_callout_init(&temp_check_timer, (struct ble_npl_eventq *)nimble_port_get_dflt_eventq(), temp_check_cb, NULL);
 
-	//start timer
-	temp_check_start(1000);
+	//start timer right after os shedulingk
+	temp_check_start(0);
 #endif
 }
 
@@ -161,44 +182,64 @@
 }
 #endif /* CONFIG_FORCE_CALIB_RCL_CLK */
 
-#if CONFIG_LOG_ENABLE
+#if CONFIG_UART_LOG_ENABLE
 void debug_uart_init(void)
 {
-    /* Unlock protected registers */
-    SYS_UnlockReg();
+    UART_InitTypeDef Init_Struct = {
+        .UART_BaudRate = CONFIG_LOG_UART_BAUDRATE,
+        .UART_LineCtrl = Uart_Line_8n1,
+    };
 
+#if (CONFIG_LOG_UART_PIN == 0)
     CLK_APB1PeriphClockCmd(CLK_APB1Periph_UART0, ENABLE);
-    
-#ifdef IP_101x
-    /* Init I/O Multi-function  */
-    SYS_SET_MFP(P1, 1, UART0_TX);
-    SYS_SET_MFP(P1, 2, UART0_RX);
-    GPIO_EnableDigitalPath(P1, BIT2);
-#else
-    /* Init I/O Multi-function  */
-    SYS_SET_MFP(P1, 6, UART0_TX);
-    SYS_SET_MFP(P1, 7, UART0_RX);
-    GPIO_EnableDigitalPath(P1, BIT7);
-#endif
-
-    /* Relock protected registers */
-//    SYS_LockReg();
-
-    UART_InitTypeDef Init_Struct;
-
-    Init_Struct.UART_BaudRate = 921600;
-
-    #ifdef CONFIG_APP_REDEFINE_BAUDRATE
-    Init_Struct.UART_BaudRate = CONFIG_APP_REDEFINE_BAUDRATE;
-    #endif
-
-    Init_Struct.UART_LineCtrl = Uart_Line_8n1;
-
-    /* Init UART0 for printf */
+    SYS_SET_MFP(P0, 5, UART0_TX);
     UART_Init(UART0, &Init_Struct);
     UART_EnableFifo(UART0);
+#endif
+#if (CONFIG_LOG_UART_PIN == 1)
+    CLK_APB1PeriphClockCmd(CLK_APB1Periph_UART0, ENABLE);
+    SYS_SET_MFP(P1, 1, UART0_TX);
+    UART_Init(UART0, &Init_Struct);
+    UART_EnableFifo(UART0);
+#endif
+#if (CONFIG_LOG_UART_PIN == 2)
+    CLK_APB1PeriphClockCmd(CLK_APB1Periph_UART0, ENABLE);
+    SYS_SET_MFP(P1, 6, UART0_TX);
+    UART_Init(UART0, &Init_Struct);
+    UART_EnableFifo(UART0);
+#endif
+#if (CONFIG_LOG_UART_PIN == 3)
+    CLK_APB2PeriphClockCmd(CLK_APB2Periph_UART1, ENABLE);
+    SYS_SET_MFP(P0, 1, UART1_TX);
+    UART_Init(UART1, &Init_Struct);
+    UART_EnableFifo(UART1);
+#endif
+#if (CONFIG_LOG_UART_PIN == 4)
+    CLK_APB2PeriphClockCmd(CLK_APB2Periph_UART1, ENABLE);
+    SYS_SET_MFP(P1, 0, UART1_TX);
+    UART_Init(UART1, &Init_Struct);
+    UART_EnableFifo(UART1);
+#endif
+#if (CONFIG_LOG_UART_PIN == 5)
+    CLK_APB2PeriphClockCmd(CLK_APB2Periph_UART1, ENABLE);
+    SYS_SET_MFP(P1, 2, UART1_TX);
+    UART_Init(UART1, &Init_Struct);
+    UART_EnableFifo(UART1);
+#endif
+#if (CONFIG_LOG_UART_PIN == 6)
+    CLK_APB2PeriphClockCmd(CLK_APB2Periph_UART1, ENABLE);
+    SYS_SET_MFP(P2, 5, UART1_TX);
+    UART_Init(UART1, &Init_Struct);
+    UART_EnableFifo(UART1);
+#endif
+#if (CONFIG_LOG_UART_PIN == 7)
+    CLK_APB2PeriphClockCmd(CLK_APB2Periph_UART1, ENABLE);
+    SYS_SET_MFP(P3, 1, UART1_TX);
+    UART_Init(UART1, &Init_Struct);
+    UART_EnableFifo(UART1);
+#endif
 }
-#endif //CONFIG_LOG_ENABLE
+#endif //CONFIG_UART_LOG_ENABLE
 
 void track_pin_init(void)
 {
@@ -274,8 +315,8 @@
 
 	CLK->RCH_CTRL &= ~BIT(0);
 
-    CLK_PCLK1Config(CONFIG_PERIPH_DIVIDE / 2);
-    CLK_PCLK2Config(CONFIG_PERIPH_DIVIDE / 2);
+    CLK_PCLK1Config(CONFIG_APB1_CLOCK_DIVISOR >> 1);
+    CLK_PCLK2Config(CONFIG_APB2_CLOCK_DIVISOR >> 1);
     /*
 	 * Note that all clocks on APB are disabled by default after SoC power up, and
 	 * the default AHB clocks enabled after SoC power up are:
@@ -308,6 +349,24 @@
 #endif
 }
 
+#define APP_POWER_TEST_EN    0
+#if APP_POWER_TEST_EN
+void app_power_test(OTP_STRUCT_T *otp)
+{
+	//buck out(DCDC):default:8;   FT-2
+	uint32_t tmp = ANA->LP_BUCK_3V; 
+	tmp &= ~(0xFul<<2);
+	tmp |= (((otp->m.buck_out_trim >> 1) - 2) << 2);
+	//tmp |= (((otp->m.buck_out_trim >> 1) - 3) << 2);
+	ANA->LP_BUCK_3V = tmp;
+
+	//HPLDO(DVDD) default - 1/2; default:8
+	tmp = ANA->LP_HP_LDO;
+	tmp &= ~(0xFul <<3);
+	tmp |= ((otp->m.hp_ldo_trim - 2)<<3); //~1.12V
+	ANA->LP_HP_LDO = tmp;
+}
+#endif
 
 static int pan10xx_hw_calib_init(void)
 {
@@ -332,25 +391,9 @@
 		}
         printf("- Chip UID          : %02X%02X%02X%02X%02X%02X%02X%02X%02X\n", otp.m.uid[0], otp.m.uid[1],
             otp.m.uid[2], otp.m.uid[3], otp.m.uid[4], otp.m.uid[5], otp.m.uid[6], otp.m.uid[7], otp.m.uid[8]);
-	
-		//buck out(DCDC):default - 2; default:8
-		uint32_t tmp = ANA->LP_BUCK_3V; 
-		tmp &= ~(0xFul<<2);
-		tmp |= (((otp.m.buck_out_trim >> 1) - 2) << 2);
-		ANA->LP_BUCK_3V = tmp;
-				
-	#if CONFIG_DVDD_VOL_OPTIMIZE_EN		
-		//HPLDO(DVDD) default - 1/2; default:8
-		tmp = ANA->LP_HP_LDO;
-		tmp &= ~(0xFul <<3);
-		tmp |= ((otp.m.hp_ldo_trim - 2)<<3); //~1.12V
-		ANA->LP_HP_LDO = tmp;
-	#else
-		//HPLDO(DVDD) default - 1/2; default:8
-		tmp = ANA->LP_HP_LDO;
-		tmp &= ~(0xFul <<3);
-		tmp |= ((otp.m.hp_ldo_trim - 1)<<3); //~1.16V
-		ANA->LP_HP_LDO = tmp;
+		
+	#if APP_POWER_TEST_EN
+		app_power_test(&otp);
 	#endif
     }
     printf("- Chip Flash UID    : ");
@@ -358,16 +401,6 @@
         printf("%02X", flash_ids.uid[i]);
     }
     printf("\n- Chip Flash Size   : %ld KB\n", BIT(flash_ids.memory_density_id) >> 10);
-
-#if CONFIG_SOC_INCREASE_LPLDOH_CALIB_CODE
-    /* Temporarily get and increase LPLDOH calibrate code */
-    uint32_t i = ((ANA->LP_LP_LDO_3V & (0xFu << 17)) >> 17) + CONFIG_SOC_INCREASE_LPLDOH_CALIB_CODE;
-    /* Handle code overflow */
-    if (i > 15) {
-        i = 15;
-    }
-    ANA->LP_LP_LDO_3V = (ANA->LP_LP_LDO_3V & ~(0xFu << 17)) | (i << 17);
-#endif /* CONFIG_SOC_INCREASE_LPLDOH_CALIB_CODE */
 
     return 0;
 }
@@ -377,6 +410,7 @@
 	uint8_t addr_null[6] = {0, 0, 0, 0, 0, 0};
 	
 	if (memcmp(m_chip_mac, addr_null, 6) == 0) {
+		printf("Warnning: No chip mac addr\n");
 		return 1;
 	} else {
 		memcpy(mac, m_chip_mac, 6);
@@ -384,11 +418,26 @@
 	}
 }
 
+
+uint8_t pan10x_roll_mac_addr_get(uint8_t *mac)
+{
+	uint8_t addr_temp[6];
+	uint8_t addr_null[] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+	
+	FMC_ReadInfoArea(FLCTL, 0x100, CMD_DREAD, addr_temp, sizeof(addr_temp));
+	
+	if (memcmp(addr_temp, addr_null, 6) == 0) {
+		printf("Warnning: No chip roll mac addr\n");
+		return 1;
+	} else {
+		memcpy(mac, addr_temp, 6);
+		return 0;
+	}
+}
+
+
 void pan10x_init()
 {
-#if CONFIG_RF_CALIB
-    CLK->XTH_CTRL = (CLK->XTH_CTRL & ~CLK_XTHCTL_XO_CAP_SEL_Msk) | (0x16 << CLK_XTHCTL_XO_CAP_SEL_Pos);
-#endif
 
 #if CONFIG_VECTOR_REMAP_TO_RAM
     static ALIGN(256) uint32_t ram_vector[64] = {0};
@@ -400,10 +449,6 @@
     pan10xx_hw_calib_init();
 
 #if CONFIG_FLASH_LDO_EN
-#if CONFIG_FLASH_LDO_VOL < 8
-    ANA->LP_HP_LDO &= ~(BIT(22)|BIT(21)|BIT(20));
-    ANA->LP_HP_LDO |= (CONFIG_FLASH_LDO_VOL<<20);
-#endif /* CONFIG_FLASH_LDO_VOL */
     ANA->LP_HP_LDO &= ~ANAC_HPLDO_FLASHLDO_BP_Msk_3v;
 #else
     ANA->LP_HP_LDO |= ANAC_HPLDO_FLASHLDO_BP_Msk_3v;
@@ -493,7 +538,7 @@
 
 void setup_thread(void *param)
 {
-    app_main();
+    app_init();
 }
 
 CONFIG_RAM_CODE void soc_busy_wait(uint32_t us)
@@ -519,15 +564,23 @@
 	extern void app_init_early(void);
 	app_init_early();
 
-#if CONFIG_LOG_ENABLE
-    /* log uart initialize */
+#if CONFIG_UART_LOG_ENABLE
     debug_uart_init();
-#endif /* CONFIG_LOG_ENABLE */
+#endif
+
+#if CONFIG_RTT_LOG_ENABLE
+    SEGGER_RTT_Init();
+#endif
+
+#if NIMBLE_CFG_CONTROLLER
+#if (CONFIG_UART_LOG_ENABLE || CONFIG_RTT_LOG_ENABLE)
+    pan_misc_register_print(vprintf);
+#endif
+#endif /* NIMBLE_CFG_CONTROLLER */
 
 	/* Track Init */
 #if CONFIG_BT_CTLR_LINK_LAYER_DEBUG
 	track_pin_init();
-	pan_misc_register_print(vprintf);
 #endif
 
     /* system configure */
@@ -537,7 +590,6 @@
     /* Init low power flow */
     extern void deepsleep_init(void);
     deepsleep_init();
-	
 #endif
 
 #ifdef NIMBLE_SPARK_SUP
@@ -558,11 +610,6 @@
 	/* get clock frequence, no matter rcl or xtl */
 	clktrim_measure_32k_clk(1000);
 #endif
-	
-#if CONFIG_SYSTEM_WATCH_DOG_ENABLE
-	extern void system_watch_dog_init(void);
-	system_watch_dog_init();
-#endif
 
     setup_thread(NULL);
 
@@ -577,17 +624,6 @@
 void vApplicationMallocFailedHook(void)
 {
     printf("pvPortMalloc failed\n");
-}
-#endif
-
-#if (CONFIG_LOG_ENABLE == 0)
-void SendChar(int ch)
-{
-}
-
-char GetChar(void)
-{
-    return (char)0;
 }
 #endif
 

--
Gitblit v1.9.3