diff options
Diffstat (limited to 'cc3200/misc/antenna.c')
| -rw-r--r-- | cc3200/misc/antenna.c | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/cc3200/misc/antenna.c b/cc3200/misc/antenna.c index 5c7f3053e..0fbf79f0f 100644 --- a/cc3200/misc/antenna.c +++ b/cc3200/misc/antenna.c @@ -55,32 +55,24 @@ static antenna_type_t antenna_type_selected = ANTENNA_TYPE_INTERNAL; DEFINE PUBLIC FUNCTIONS ******************************************************************************/ void antenna_init0(void) { - - MAP_PRCMPeripheralClkEnable(PRCM_GPIOA3, PRCM_RUN_MODE_CLK); + // enable the peripheral clock and set the gpio direction for + // both antenna 1 and antenna 2 pins + MAP_PRCMPeripheralClkEnable(PRCM_GPIOA3, PRCM_RUN_MODE_CLK | PRCM_SLP_MODE_CLK); MAP_GPIODirModeSet(GPIOA3_BASE, 0x0C, GPIO_DIR_MODE_OUT); - // configure PIN_29 for GPIOOutput - HWREG(REG_PAD_CONFIG_26) = ((HWREG(REG_PAD_CONFIG_26) & ~(PAD_STRENGTH_MASK - | PAD_TYPE_MASK)) | (0x00000020 | 0x00000000 )); - + // configure antenna 1 pin type and strength + HWREG(REG_PAD_CONFIG_26) = ((HWREG(REG_PAD_CONFIG_26) & ~(PAD_STRENGTH_MASK | PAD_TYPE_MASK)) | (0x00000020 | 0x00000000)); // set the mode - HWREG(REG_PAD_CONFIG_26) = (((HWREG(REG_PAD_CONFIG_26) & ~PAD_MODE_MASK) | - 0x00000000) & ~(3 << 10)); - + HWREG(REG_PAD_CONFIG_26) = ((HWREG(REG_PAD_CONFIG_26) & ~PAD_MODE_MASK) | 0x00000000) & ~(3 << 10); // set the direction HWREG(REG_PAD_CONFIG_26) = ((HWREG(REG_PAD_CONFIG_26) & ~0xC00) | 0x00000800); - - // configure PIN_30 for GPIOOutput - HWREG(REG_PAD_CONFIG_27) = ((HWREG(REG_PAD_CONFIG_27) & ~(PAD_STRENGTH_MASK - | PAD_TYPE_MASK)) | (0x00000020 | 0x00000000 )); - + // configure antenna 2 pin type and strength + HWREG(REG_PAD_CONFIG_27) = ((HWREG(REG_PAD_CONFIG_27) & ~(PAD_STRENGTH_MASK | PAD_TYPE_MASK)) | (0x00000020 | 0x00000000)); // set the mode - HWREG(REG_PAD_CONFIG_27) = (((HWREG(REG_PAD_CONFIG_27) & ~PAD_MODE_MASK) | - 0x00000000) & ~(3 << 10)); - + HWREG(REG_PAD_CONFIG_27) = ((HWREG(REG_PAD_CONFIG_27) & ~PAD_MODE_MASK) | 0x00000000) & ~(3 << 10); // set the direction - HWREG(REG_PAD_CONFIG_26) = ((HWREG(REG_PAD_CONFIG_27) & ~0xC00) | 0x00000800); + HWREG(REG_PAD_CONFIG_27) = ((HWREG(REG_PAD_CONFIG_27) & ~0xC00) | 0x00000800); // select the currently active antenna antenna_select(antenna_type_selected); @@ -89,8 +81,14 @@ void antenna_init0(void) { void antenna_select (antenna_type_t _antenna) { if (_antenna == ANTENNA_TYPE_INTERNAL) { MAP_GPIOPinWrite(GPIOA3_BASE, 0x0C, 0x04); + // also configure the pull-up and pull-down accordingly + HWREG(REG_PAD_CONFIG_26) = ((HWREG(REG_PAD_CONFIG_26) & ~PAD_TYPE_MASK)) | PIN_TYPE_STD_PU; + HWREG(REG_PAD_CONFIG_27) = ((HWREG(REG_PAD_CONFIG_27) & ~PAD_TYPE_MASK)) | PIN_TYPE_STD_PD; } else { MAP_GPIOPinWrite(GPIOA3_BASE, 0x0C, 0x08); + // also configure the pull-up and pull-down accordingly + HWREG(REG_PAD_CONFIG_26) = ((HWREG(REG_PAD_CONFIG_26) & ~PAD_TYPE_MASK)) | PIN_TYPE_STD_PD; + HWREG(REG_PAD_CONFIG_27) = ((HWREG(REG_PAD_CONFIG_27) & ~PAD_TYPE_MASK)) | PIN_TYPE_STD_PU; } antenna_type_selected = _antenna; } |
