/** ******************************************************************************* * @file app_track.c * @create 2024-12-31 * @author Panchip BLE GROUP * @note * Copyright (c) 2022-2024 Shanghai Panchip Microelectronics Co.,Ltd. * ******************************************************************************* */ #include "app_track.h" #include "PanSeries.h" #if CONFIG_IO_TIMING_TRACK static void misc_io_timing_track_init(void) { // Init DeepSleep and Sleep state pin to 1 PAN_IO_TIMING_TRACK_INIT_PIN(CONFIG_TRACK_PIN_DEEPSLEEP_MODE, 1); PAN_IO_TIMING_TRACK_INIT_PIN(CONFIG_TRACK_PIN_SLEEP_MODE, 1); // Init misc IRQs pin to 0 PAN_IO_TIMING_TRACK_INIT_PIN(CONFIG_TRACK_PIN_LL_IRQ, 0); PAN_IO_TIMING_TRACK_INIT_PIN(CONFIG_TRACK_PIN_BLE_EVNT_IRQ, 0); PAN_IO_TIMING_TRACK_INIT_PIN(CONFIG_TRACK_PIN_OS_TICK_IRQ, 0); PAN_IO_TIMING_TRACK_INIT_PIN(CONFIG_TRACK_PIN_SLPTMR_IRQ, 0); PAN_IO_TIMING_TRACK_INIT_PIN(CONFIG_TRACK_PIN_HARDFAULT_IRQ, 0); // Init IO Timing Track Channels for User App Use PAN_IO_TIMING_TRACK_INIT_PIN(CONFIG_TRACK_USER_APP_CHN0, 0); PAN_IO_TIMING_TRACK_INIT_PIN(CONFIG_TRACK_USER_APP_CHN1, 0); PAN_IO_TIMING_TRACK_INIT_PIN(CONFIG_TRACK_USER_APP_CHN2, 0); PAN_IO_TIMING_TRACK_INIT_PIN(CONFIG_TRACK_USER_APP_CHN3, 0); PAN_IO_TIMING_TRACK_INIT_PIN(CONFIG_TRACK_USER_APP_CHN4, 0); PAN_IO_TIMING_TRACK_INIT_PIN(CONFIG_TRACK_USER_APP_CHN5, 0); PAN_IO_TIMING_TRACK_INIT_PIN(CONFIG_TRACK_USER_APP_CHN6, 0); PAN_IO_TIMING_TRACK_INIT_PIN(CONFIG_TRACK_USER_APP_CHN7, 0); } void track_pin_init(void) { // Enable GPIO clock for confirmation (Default enabled already for PAN10xx SoC) CLK_AHBPeriphClockCmd(CLK_AHBPeriph_GPIO, ENABLE); // Track HAL IRQs HAL_IoTimingTrackInit(); // Track SoC platform misc IRQs and states misc_io_timing_track_init(); // Track BLE controller internal events when needed #if (BLE_EN && CONFIG_BT_CTLR_LINK_LAYER_DEBUG) DbgPin_t debug_io; memset(&debug_io, 0, sizeof(debug_io)); //!!!must /** * debug pin initilization. * !!!Note: All debug pins must work in gpio mode. * By default, most GPIOs work in gpio mode. * If a GPIO does not work in gpio mode, you need to configure it to work in gpio mode. */ GPIO_SetMode(P1, BIT5, GPIO_MODE_OUTPUT); P15 = 0; GPIO_SetMode(P1, BIT3, GPIO_MODE_OUTPUT); P13 = 0; GPIO_SetMode(P1, BIT4, GPIO_MODE_OUTPUT); P14 = 0; GPIO_SetMode(P1, BIT2, GPIO_MODE_OUTPUT); P12 = 0; GPIO_SetMode(P0, BIT5, GPIO_MODE_OUTPUT); P05 = 0; GPIO_SetMode(P0, BIT3, GPIO_MODE_OUTPUT); P03 = 0; GPIO_SetMode(P2, BIT2, GPIO_MODE_OUTPUT); P22 = 0; GPIO_SetMode(P2, BIT3, GPIO_MODE_OUTPUT); P23 = 0; debug_io.dbg_chn0_pin = (uint32_t)&P15; //scan debug_io.dbg_chn1_pin = (uint32_t)&P13; //adv debug_io.dbg_chn2_pin = (uint32_t)&P14; //ll timer irq debug_io.dbg_chn3_pin = (uint32_t)&P12; //ll done irq debug_io.dbg_chn4_pin = (uint32_t)&P05; //connection0 debug_io.dbg_chn5_pin = (uint32_t)&P03; debug_io.dbg_chn6_pin = (uint32_t)&P22; debug_io.dbg_chn7_pin = (uint32_t)&P23; /* Register debug pin to track system. */ TrackTimingInitEx(&debug_io); #endif // BLE_EN && CONFIG_BT_CTLR_LINK_LAYER_DEBUG } #endif // CONFIG_IO_TIMING_TRACK