summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDaniel Campora <daniel@wipy.io>2015-06-10 12:41:29 +0200
committerDaniel Campora <daniel@wipy.io>2015-06-10 23:35:38 +0200
commit330e21c98692b1f994adef96c0fb18de88c2a5cb (patch)
treecf0b010fe2392d9f65d888dbed1d44b30cc8e958
parentf960d753e4dd3fd7527054a5edacdf398490c9b6 (diff)
downloadmicropython-330e21c98692b1f994adef96c0fb18de88c2a5cb.tar.gz
micropython-330e21c98692b1f994adef96c0fb18de88c2a5cb.zip
cc3200: Use the pull up/down resistors on the antenna selection pins.
-rw-r--r--cc3200/misc/antenna.c34
-rw-r--r--cc3200/mods/pybsleep.c8
2 files changed, 24 insertions, 18 deletions
diff --git a/cc3200/misc/antenna.c b/cc3200/misc/antenna.c
index 5c7f3053e7..0fbf79f0fc 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;
}
diff --git a/cc3200/mods/pybsleep.c b/cc3200/mods/pybsleep.c
index af16cc512c..f810f91403 100644
--- a/cc3200/mods/pybsleep.c
+++ b/cc3200/mods/pybsleep.c
@@ -499,9 +499,17 @@ STATIC void pybsleep_iopark (bool hibernate) {
if (hibernate) {
#endif
// park the antenna selection pins
+ // (tri-stated with pull down enabled)
HWREG(0x4402E108) = 0x00000E61;
HWREG(0x4402E10C) = 0x00000E61;
#if MICROPY_HW_ANTENNA_DIVERSITY
+ } else {
+ // park the antenna selection pins
+ // (tri-stated without changing the pull up/down resistors)
+ HWREG(0x4402E108) &= ~0x000000FF;
+ HWREG(0x4402E108) |= 0x00000C61;
+ HWREG(0x4402E10C) &= ~0x000000FF;
+ HWREG(0x4402E10C) |= 0x00000C61;
}
#endif
}