diff options
| author | Dan Halbert <halbert@halwitz.org> | 2019-08-22 01:04:00 -0400 |
|---|---|---|
| committer | Dan Halbert <halbert@halwitz.org> | 2019-08-22 01:04:00 -0400 |
| commit | d94023e9b310731807785ffc6f4249faf4912554 (patch) | |
| tree | 5b6ee3b7c8b391b61816b32866eaf986406e9feb | |
| parent | 42143ca0568c69bec6c60da3ae9a1e8f3ca106ff (diff) | |
Fix CPBlue LFCLKSRC; CPB has no status neopixel
| -rw-r--r-- | ports/nrf/boards/circuitplayground_bluefruit/mpconfigboard.h | 2 | ||||
| -rw-r--r-- | ports/nrf/boards/circuitplayground_bluefruit/mpconfigboard.mk | 3 | ||||
| -rw-r--r-- | ports/nrf/common-hal/bleio/Adapter.c | 13 | ||||
| -rw-r--r-- | ports/nrf/common-hal/bleio/Characteristic.c | 2 | ||||
| -rw-r--r-- | ports/nrf/mpconfigport.mk | 5 | ||||
| -rw-r--r-- | ports/nrf/peripherals/nrf/clocks.c | 7 |
6 files changed, 25 insertions, 7 deletions
diff --git a/ports/nrf/boards/circuitplayground_bluefruit/mpconfigboard.h b/ports/nrf/boards/circuitplayground_bluefruit/mpconfigboard.h index 04c7e8d60..f618a652c 100644 --- a/ports/nrf/boards/circuitplayground_bluefruit/mpconfigboard.h +++ b/ports/nrf/boards/circuitplayground_bluefruit/mpconfigboard.h @@ -34,8 +34,6 @@ #define FLASH_SIZE (0x100000) #define FLASH_PAGE_SIZE (4096) -#define MICROPY_HW_NEOPIXEL (&pin_P0_13) - #define MICROPY_HW_LED_STATUS (&pin_P1_14) #if QSPI_FLASH_FILESYSTEM diff --git a/ports/nrf/boards/circuitplayground_bluefruit/mpconfigboard.mk b/ports/nrf/boards/circuitplayground_bluefruit/mpconfigboard.mk index dbb32629c..44c385c5b 100644 --- a/ports/nrf/boards/circuitplayground_bluefruit/mpconfigboard.mk +++ b/ports/nrf/boards/circuitplayground_bluefruit/mpconfigboard.mk @@ -10,6 +10,9 @@ MCU_CHIP = nrf52840 SD ?= s140 SOFTDEV_VERSION ?= 6.1.0 +# Unusually, board does not have a 32 kHz xtal. +BOARD_HAS_32KHZ_XTAL = 0 + BOOT_SETTING_ADDR = 0xFF000 ifeq ($(SD),) diff --git a/ports/nrf/common-hal/bleio/Adapter.c b/ports/nrf/common-hal/bleio/Adapter.c index 936dfcb9b..463e5d25b 100644 --- a/ports/nrf/common-hal/bleio/Adapter.c +++ b/ports/nrf/common-hal/bleio/Adapter.c @@ -47,8 +47,17 @@ STATIC void softdevice_assert_handler(uint32_t id, uint32_t pc, uint32_t info) { STATIC uint32_t ble_stack_enable(void) { nrf_clock_lf_cfg_t clock_config = { - .source = NRF_CLOCK_LF_SRC_XTAL, - .accuracy = NRF_CLOCK_LF_ACCURACY_20_PPM +#if BOARD_HAS_32KHZ_XTAL + .source = NRF_CLOCK_LF_SRC_XTAL, + .rc_ctiv = 0, + .rc_temp_ctiv = 0, + .accuracy = NRF_CLOCK_LF_ACCURACY_20_PPM +#else + .source = NRF_CLOCK_LF_SRC_RC, + .rc_ctiv = 16, + .rc_temp_ctiv = 2, + .accuracy = NRF_CLOCK_LF_ACCURACY_250_PPM +#endif }; uint32_t err_code = sd_softdevice_enable(&clock_config, softdevice_assert_handler); diff --git a/ports/nrf/common-hal/bleio/Characteristic.c b/ports/nrf/common-hal/bleio/Characteristic.c index 45e8d2495..604d24d73 100644 --- a/ports/nrf/common-hal/bleio/Characteristic.c +++ b/ports/nrf/common-hal/bleio/Characteristic.c @@ -183,7 +183,7 @@ void common_hal_bleio_characteristic_set_value(bleio_characteristic_obj_t *self, (self->props & CHAR_PROP_WRITE_NO_RESPONSE)); } else { if (self->fixed_length && bufinfo->len != self->max_length) { - mp_raise_ValueError(translate("Value length required fixed length")); + mp_raise_ValueError(translate("Value length != required fixed length")); } if (bufinfo->len > self->max_length) { mp_raise_ValueError(translate("Value length > max_length")); diff --git a/ports/nrf/mpconfigport.mk b/ports/nrf/mpconfigport.mk index 55920b3f4..11058cd7e 100644 --- a/ports/nrf/mpconfigport.mk +++ b/ports/nrf/mpconfigport.mk @@ -28,6 +28,11 @@ CIRCUITPY_RTC = 1 # frequencyio not yet implemented CIRCUITPY_FREQUENCYIO = 0 +ifndef BOARD_HAS_32KHZ_XTAL +# Assume crystal is present, which is the most common case. +BOARD_HAS_32KHZ_XTAL = 1 +endif + # CircuitPython doesn't yet support NFC so force the NFC antenna pins to be GPIO. # See https://github.com/adafruit/circuitpython/issues/1300 # Defined here because system_nrf52840.c doesn't #include any of our own include files. diff --git a/ports/nrf/peripherals/nrf/clocks.c b/ports/nrf/peripherals/nrf/clocks.c index 4acb878db..b8f231385 100644 --- a/ports/nrf/peripherals/nrf/clocks.c +++ b/ports/nrf/peripherals/nrf/clocks.c @@ -28,9 +28,12 @@ #include "nrfx.h" void nrf_peripherals_clocks_init(void) { - // Set low-frequency clock source to be crystal. If there's a crystalless board, this will need to be - // generalized. + +#if BOARD_HAS_32KHZ_XTAL NRF_CLOCK->LFCLKSRC = (uint32_t)((CLOCK_LFCLKSRC_SRC_Xtal << CLOCK_LFCLKSRC_SRC_Pos) & CLOCK_LFCLKSRC_SRC_Msk); +#else + NRF_CLOCK->LFCLKSRC = (uint32_t)((CLOCK_LFCLKSRC_SRC_RC << CLOCK_LFCLKSRC_SRC_Pos) & CLOCK_LFCLKSRC_SRC_Msk); +#endif NRF_CLOCK->TASKS_LFCLKSTART = 1UL; // Wait for clocks to start. |
