// // Function Name: bootloadGpioInit // Description: This function selects the chip's GPIO configuration. These // settings are the minimum base configuration needed to // support the bootloader functionality. These settings can // be modified for custom applications as long as the base // settings are preserved. // Parameters: none // Returns: none // void bootloadGpioInit(void) { halInternalEnableWatchDog(); #ifdef BTL_HAS_RADIO if (paIsPresent()) { // The PHY_CONFIG token indicates that a power amplifier is present. // Not all power amplifiers require both TX_ACTIVE and nTX_ACTIVE. If // your design does not require TX_ACTIVE or nTX_ACTIVE, you can remove // the GPIO configuration for the unused signal to save a bit of flash. // Configure GPIO PC5 to support TX_ACTIVE alternate output function. halGpioSetConfig(PORTC_PIN(5),GPIOCFG_OUT_ALT); // Configure GPIO PC6 to support nTX_ACTIVE alternate output function. halGpioSetConfig(PORTC_PIN(6),GPIOCFG_OUT_ALT); } #endif #ifndef NO_LED halGpioSetConfig(BOARD_ACTIVITY_LED, GPIOCFG_OUT); halClearLed(BOARD_ACTIVITY_LED); halGpioSetConfig(BOARD_HEARTBEAT_LED, GPIOCFG_OUT); halSetLed(BOARD_HEARTBEAT_LED); #endif CONFIGURE_EXTERNAL_REGULATOR_ENABLE(); }
void halBoardPowerUp(void) { /* Set everything to input value */ GPIO_PACFGL = (GPIOCFG_IN <<PA0_CFG_BIT)| (GPIOCFG_IN <<PA1_CFG_BIT)| (GPIOCFG_IN <<PA2_CFG_BIT)| (GPIOCFG_IN <<PA3_CFG_BIT); GPIO_PACFGH = (GPIOCFG_IN <<PA4_CFG_BIT)| /* PTI EN */ (GPIOCFG_IN <<PA5_CFG_BIT)| /* PTI_DATA */ (GPIOCFG_IN <<PA6_CFG_BIT)| (GPIOCFG_IN <<PA7_CFG_BIT); GPIO_PBCFGL = (GPIOCFG_IN <<PB0_CFG_BIT)| (GPIOCFG_OUT_ALT <<PB1_CFG_BIT)| /* Uart TX */ (GPIOCFG_IN <<PB2_CFG_BIT)| /* Uart RX */ (GPIOCFG_IN <<PB3_CFG_BIT); GPIO_PBCFGH = (GPIOCFG_IN <<PB4_CFG_BIT)| (GPIOCFG_IN <<PB5_CFG_BIT)| (GPIOCFG_IN <<PB6_CFG_BIT)| (GPIOCFG_IN <<PB7_CFG_BIT); GPIO_PCCFGL = (GPIOCFG_IN <<PC0_CFG_BIT)| (GPIOCFG_IN <<PC1_CFG_BIT)| (GPIOCFG_IN <<PC2_CFG_BIT)| (GPIOCFG_IN <<PC3_CFG_BIT); GPIO_PCCFGH = (GPIOCFG_IN <<PC4_CFG_BIT)| (GPIOCFG_IN <<PC5_CFG_BIT)| #ifdef EMBERZNET_HAL (CFG_C6 <<PC6_CFG_BIT)| /* OSC32K */ (CFG_C7 <<PC7_CFG_BIT); /* OSC32K */ #else (GPIOCFG_IN <<PC6_CFG_BIT)| /* OSC32K */ (GPIOCFG_IN <<PC7_CFG_BIT); /* OSC32K */ #endif /* Configure GPIO for I2C access */ if ((boardDescription->flags & BOARD_HAS_MEMS) || (boardDescription->flags & BOARD_HAS_EEPROM)) { halGpioConfig(PORTA_PIN(1), GPIOCFG_OUT_ALT_OD); halGpioConfig(PORTA_PIN(2), GPIOCFG_OUT_ALT_OD); } /* Configure GPIO for ADC access (temp sensor) */ if (boardDescription->flags & BOARD_HAS_TEMP_SENSOR) { halGpioConfig(PORTx_PIN(boardDescription->temperatureSensor->gpioPort, boardDescription->temperatureSensor->gpioPin), GPIOCFG_ANALOG); } /* Configure GPIO for LEDs */ { LedResourceType *leds = (LedResourceType *) boardDescription->io->leds; int8u i; for (i = 0; i < boardDescription->leds; i++) { /* LED default off */ halGpioConfig(PORTx_PIN(leds[i].gpioPort, leds[i].gpioPin), GPIOCFG_OUT); halGpioSet(PORTx_PIN(leds[i].gpioPort, leds[i].gpioPin), 1); } } /* Configure GPIO for BUTTONSs */ { ButtonResourceType *buttons = (ButtonResourceType *) boardDescription->io->buttons; int8u i; for (i = 0; i < boardDescription->buttons; i++) { halGpioConfig(PORTx_PIN(buttons[i].gpioPort, buttons[i].gpioPin), GPIOCFG_IN_PUD); halGpioSet(PORTx_PIN(buttons[i].gpioPort, buttons[i].gpioPin), GPIOOUT_PULLUP); } } /* Configure GPIO for power amplifier */ if (boardDescription->flags & BOARD_HAS_PA) { /* SiGe Ant Sel (default ceramic antenna) */ halGpioConfig(PORTB_PIN(5), GPIOCFG_OUT); halGpioSet(PORTB_PIN(5), 1); /* SiGe Standby (default out of standby) */ halGpioConfig(PORTB_PIN(6), GPIOCFG_OUT); halGpioSet(PORTB_PIN(6), 1); /* SiGe LNA (default LNA off )*/ halGpioConfig(PORTB_PIN(7), GPIOCFG_OUT); halGpioSet(PORTB_PIN(7), 0); /* SiGe nTX Active */ halGpioConfig(PORTC_PIN(5), GPIOCFG_OUT_ALT); } }