10000 Merge branch 'master' into nrf52840_usbboot · sparkfun/circuitpython@10846d3 · GitHub
[go: up one dir, main page]

Skip to content

Commit 10846d3

Browse files
committed
Merge branch 'master' into nrf52840_usbboot
2 parents a53b1c7 + 4962468 commit 10846d3

File tree

27 files changed

+86
-1610
lines changed

27 files changed

+86
-1610
lines changed

ports/nrf/Makefile

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,7 @@ INC += -I$(BUILD)
4343
INC += -I$(BUILD)/genhdr
4444
INC += -I./../../lib/cmsis/inc
4545
INC += -I./boards/$(BOARD)
46-
INC += -I./hal
4746
INC += -I./modules/ubluepy
48-
INC += -I./modules/random
4947
INC += -I./modules/ble
5048
INC += -I./nrfx
5149
INC += -I./nrfx/hal
@@ -65,7 +63,6 @@ CFLAGS += $(INC) -Wall -Werror -ansi -std=gnu99 -nostdlib $(COPT) $(NRF_DEFINES)
6563
CFLAGS += -fno-strict-aliasing
6664
CFLAGS += -fstack-usage -fno-builtin -fshort-enums
6765
CFLAGS += -fdata-sections -ffunction-sections
68-
CFLAGS += -DNRF5_HAL_H='<$(MCU_VARIANT)_hal.h>'
6966
CFLAGS += -D__START=main
7067

7168
LDFLAGS = $(CFLAGS)
@@ -91,10 +88,6 @@ LIBS := -L $(dir $(LIBM_FILE_NAME)) -lm
9188
LIBS += -L $(dir $(LIBC_FILE_NAME)) -lc
9289
LIBS += -L $(dir $(LIBGCC_FILE_NAME)) -lgc B41A c
9390

94-
SRC_HAL = $(addprefix hal/,\
95-
hal_rng.c \
96-
)
97-
9891
SRC_NRFX = $(addprefix nrfx/,\
9992
drivers/src/nrfx_power.c \
10093
drivers/src/nrfx_spim.c \
@@ -105,12 +98,9 @@ SRC_NRFX = $(addprefix nrfx/,\
10598
SRC_C += \
10699
mphalport.c \
107100
fatfs_port.c \
108-
fifo.c \
109101
tick.c \
110102
background.c \
111103
internal_flash.c \
112-
drivers/softpwm.c \
113-
drivers/ticker.c \
114104
drivers/bluetooth/ble_drv.c \
115105
drivers/bluetooth/ble_uart.c \
116106
boards/$(BOARD)/board.c \
@@ -156,7 +146,6 @@ DRIVERS_SRC_C += $(addprefix modules/,\
156146
ubluepy/ubluepy_scanner.c \
157147
ubluepy/ubluepy_scan_entry.c \
158148
ble/modble.c \
159-
random/modrandom.c \
160149
)
161150

162151
SRC_COMMON_HAL += \
@@ -222,7 +211,8 @@ SRC_SHARED_BINDINGS = \
222211
bitbangio/__init__.c \
223212
bitbangio/I2C.c \
224213
bitbangio/SPI.c \
225-
bitbangio/OneWire.c
214+
bitbangio/OneWire.c \
215+
random/__init__.c
226216

227217

228218
SRC_SHARED_MODULE_EXPANDED = $(addprefix shared-bindings/, $(SRC_SHARED_BINDINGS)) \
@@ -235,7 +225,6 @@ FROZEN_MPY_MPY_FILES := $(addprefix $(BUILD)/,$(FROZEN_MPY_PY_FILES:.py=.mpy))
235225

236226
OBJ += $(PY_O) $(SUPERVISOR_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o))
237227
OBJ += $(BUILD)/pins_gen.o
238-
OBJ += $(addprefix $(BUILD)/, $(SRC_HAL:.c=.o))
239228
OBJ += $(addprefix $(BUILD)/, $(SRC_NRFX:.c=.o))
240229
OBJ += $(addprefix $(BUILD)/, $(DRIVERS_SRC_C:.c=.o))
241230
OBJ += $(addprefix $(BUILD)/, $(SRC_COMMON_HAL_EXPANDED:.c=.o))

ports/nrf/boards/feather52832/nrf52_hal_conf.h

Lines changed: 0 additions & 18 deletions
This file was deleted.

ports/nrf/boards/feather52840/nrf52_hal_conf.h

Lines changed: 0 additions & 18 deletions
This file was deleted.

ports/nrf/boards/pca10040/nrf52_hal_conf.h

Lines changed: 0 additions & 18 deletions
This file was deleted.

ports/nrf/boards/pca10056/nrf52_hal_conf.h

Lines changed: 0 additions & 18 deletions
This file was deleted.

ports/nrf/common-hal/analogio/AnalogIn.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ void common_hal_analogio_analogin_construct(analogio_analogin_obj_t *self, const
3737
if (pin->adc_channel == 0)
3838
mp_raise_ValueError("Pin does not have ADC capabilities");
3939

40-
hal_gpio_cfg_pin(pin->port, pin->pin, HAL_GPIO_MODE_INPUT, HAL_GPIO_PULL_DISABLED);
40+
nrf_gpio_cfg_default(NRF_GPIO_PIN_MAP(pin->port, pin->pin));
4141

4242
self->pin = pin;
4343
}

ports/nrf/common-hal/digitalio/DigitalInOut.c

Lines changed: 70 additions & 68 deletions
139
Original file line numberDiff line numberDiff line change
@@ -24,146 +24,148 @@
2424
* THE SOFTWARE.
2525
*/
2626

27-
#include <stdint.h>
28-
#include <string.h>
29-
27+
#include "shared-bindings/digitalio/DigitalInOut.h"
3028
#include "py/runtime.h"
31-
#include "py/mphal.h"
3229

33-
#include "hal/hal_gpio.h"
34-
35-
#include "common-hal/microcontroller/Pin.h"
36-
#include "shared-bindings/digitalio/DigitalInOut.h"
30+
#include "nrf_gpio.h"
3731

3832
digitalinout_result_t common_hal_digitalio_digitalinout_construct(
39-
digitalio_digitalinout_obj_t* self, const mcu_pin_obj_t* pin) {
33+
digitalio_digitalinout_obj_t *self, const mcu_pin_obj_t *pin) {
4034
self->pin = pin;
41-
hal_gpio_cfg_pin(pin->port, pin->pin, HAL_GPIO_MODE_INPUT, HAL_GPIO_PULL_DISABLED);
35+
36+
nrf_gpio_cfg_input(NRF_GPIO_PIN_MAP(pin->port, pin->pin), NRF_GPIO_PIN_NOPULL);
37+
4238
return DIGITALINOUT_OK;
4339
}
4440

45-
bool common_hal_digitalio_digitalinout_deinited(digitalio_digitalinout_obj_t* self) {
41+
bool common_hal_digitalio_digitalinout_deinited(digitalio_digitalinout_obj_t *self) {
4642
return self->pin == mp_const_none;
4743
}
4844

49-
void common_hal_digitalio_digitalinout_deinit(digitalio_digitalinout_obj_t* self) {
45+
void common_hal_digitalio_digitalinout_deinit(digitalio_digitalinout_obj_t *self) {
5046
if (common_hal_digitalio_digitalinout_deinited(self)) {
5147
return;
5248
}
53-
reset_pin(self->pin->pin);
49+
50+
const uint32_t pin = NRF_GPIO_PIN_MAP(self->pin->port, self->pin->pin);
51+
nrf_gpio_cfg_default(pin);
52+
5453
self->pin = mp_const_none;
5554
}
5655

5756
void common_hal_digitalio_digitalinout_switch_to_input(
58-
digitalio_digitalinout_obj_t* self, digitalio_pull_t pull) {
59-
self->output = false;
57+
digitalio_digitalinout_obj_t *self, digitalio_pull_t pull) {
58+
const uint32_t pin = NRF_GPIO_PIN_MAP(self->pin->port, self->pin->pin);
59+
60+
nrf_gpio_cfg_input(pin, NRF_GPIO_PIN_NOPULL);
6061

61-
hal_gpio_cfg_pin(self->pin->port, self->pin->pin, HAL_GPIO_MODE_INPUT, HAL_GPIO_PULL_DISABLED);
6262
common_hal_digitalio_digitalinout_set_pull(self, pull);
6363
}
6464

6565
void common_hal_digitalio_digitalinout_switch_to_output(
66-
digitalio_digitalinout_obj_t* self, bool value,
66+
digitalio_digitalinout_obj_t *self, bool value,
6767
digitalio_drive_mode_t drive_mode) {
68-
const uint8_t pin = self->pin->pin;
68+
const uint32_t pin = NRF_GPIO_PIN_MAP(self->pin->port, self->pin->pin);
6969

70-
self->output = true;
7170
self->open_drain = (drive_mode == DRIVE_MODE_OPEN_DRAIN);
7271

73-
hal_gpio_cfg_pin(self->pin->port, pin, HAL_GPIO_MODE_OUTPUT, HAL_GPIO_PULL_DISABLED);
72+
nrf_gpio_cfg_input(pin, NRF_GPIO_PIN_NOPULL);
73+
7474
common_hal_digitalio_digitalinout_set_value(self, value);
7575
}
7676

7777
digitalio_direction_t common_hal_digitalio_digitalinout_get_direction(
78-
digitalio_digitalinout_obj_t* self) {
79-
return self->output? DIRECTION_OUTPUT : DIRECTION_INPUT;
78+
digitalio_digitalinout_obj_t *self) {
79+
const uint32_t pin = NRF_GPIO_PIN_MAP(self->pin->port, self->pin->pin);
80+
81+
return (nrf_gpio_pin_dir_get(pin) == NRF_GPIO_PIN_DIR_OUTPUT) ? DIRECTION_OUTPUT : DIRECTION_INPUT;
8082
}
8183

8284
void common_hal_digitalio_digitalinout_set_value(
83-
digitalio_digitalinout_obj_t* self, bool value) {
84-
if (value) {
85-
if (self->open_drain) {
86-
hal_gpio_dir_set(self->pin->port, self->pin->pin, HAL_GPIO_MODE_INPUT);
87-
} else {
88-
hal_gpio_pin_set(self->pin->port, self->pin->pin);
89-
hal_gpio_dir_set(self->pin->port, self->pin->pin, HAL_GPIO_MODE_OUTPUT);
90-
}
85+
digitalio_digitalinout_obj_t *self, bool value) {
86+
const uint32_t pin = NRF_GPIO_PIN_MAP(self->pin->port, self->pin->pin);
87+
88+
if (value && self->open_drain) {
89+
nrf_gpio_pin_dir_set(pin, NRF_GPIO_PIN_DIR_INPUT);
9190
} else {
92-
hal_gpio_pin_clear(self->pin->port, self->pin->pin);
93-
hal_gpio_dir_set(self->pin->port, self->pin->pin, HAL_GPIO_MODE_OUTPUT);
91+
nrf_gpio_pin_dir_set(pin, NRF_GPIO_PIN_DIR_OUTPUT);
92+
nrf_gpio_pin_write(pin, value);
9493
}
9594
}
9695

9796
bool common_hal_digitalio_digitalinout_get_value(
98-
digitalio_digitalinout_obj_t* self) {
99-
const uint8_t pin = self->pin->pin;
100-
if (!self->output) {
101-
return hal_gpio_pin_read(self->pin);
102-
} else {
103-
if (self->open_drain && hal_gpio_dir_get(self->pin->port, self->pin->pin) == HAL_GPIO_MODE_INPUT) {
97+
digitalio_digitalinout_obj_t *self) {
98+
const uint32_t pin = NRF_GPIO_PIN_MAP(self->pin->port, self->pin->pin);
99+
const nrf_gpio_pin_dir_t dir = nrf_gpio_pin_dir_get(pin);
100+
101+
if (dir == NRF_GPIO_PIN_DIR_INPUT) {
102+
if (self->open_drain)
104103
return true;
105-
} else {
106-
return (GPIO_BASE(self->pin->port)->OUT >> pin) & 1;
107-
}
104+
105+
return nrf_gpio_pin_read(pin);
108106
}
107+
108+
return nrf_gpio_pin_out_read(pin);
109109
}
110110

111111
void common_hal_digitalio_digitalinout_set_drive_mode(
112-
digitalio_digitalinout_obj_t* self,
112+
digitalio_digitalinout_obj_t *self,
113113
digitalio_drive_mode_t drive_mode) {
114-
bool value = common_hal_digitalio_digitalinout_get_value(self);
114+
const bool value = common_hal_digitalio_digitalinout_get_value(self);
115115
self->open_drain = drive_mode == DRIVE_MODE_OPEN_DRAIN;
116+
116117
// True is implemented differently between modes so reset the value to make
117118
// sure its correct for the new mode.
118-
if (value) {
119+
if (value)
119120
common_hal_digitalio_digitalinout_set_value(self, value);
120-
}
121121
}
122122

123123
digitalio_drive_mode_t common_hal_digitalio_digitalinout_get_drive_mode(
124-
digitalio_digitalinout_obj_t* self) {
125-
if (self->open_drain) {
124+
digitalio_digitalinout_obj_t *self) {
125+
if (self->open_drain)
126126
return DRIVE_MODE_OPEN_DRAIN;
127-
} else {
128-
return DRIVE_MODE_PUSH_PULL;
129-
}
127+
128+
return DRIVE_MODE_PUSH_PULL;
130129
}
131130

132131
void common_hal_digitalio_digitalinout_set_pull(
133-
digitalio_digitalinout_obj_t* self, digitalio_pull_t pull) {
134-
hal_gpio_pull_t asf_pull = HAL_GPIO_PULL_DISABLED;
132+
digitalio_digitalinout_obj_t *self, digitalio_pull_t pull) {
133+
const uint32_t pin = NRF_GPIO_PIN_MAP(self->pin->port, self->pin->pin);
134+
nrf_gpio_pin_pull_t hal_pull = NRF_GPIO_PIN_NOPULL;
135+
135136
switch (pull) {
136137
case PULL_UP:
137-
asf_pull = HAL_GPIO_PULL_UP;
138+
hal_pull = NRF_GPIO_PIN_PULLUP;
138139
break;
140
case PULL_DOWN:
140-
asf_pull = HAL_GPIO_PULL_DOWN;
141+
hal_pull = NRF_GPIO_PIN_PULLDOWN;
141142
break;
142143
case PULL_NONE:
143144
default:
144145
break;
145146
}
146-
hal_gpio_pull_set(self->pin->port, self->pin->pin, asf_pull);
147+
148+
nrf_gpio_cfg_input(pin, hal_pull);
147149
}
148150

149151
digitalio_pull_t common_hal_digitalio_digitalinout_get_pull(
150-
digitalio_digitalinout_obj_t* self) {
151-
uint32_t pin = self->pin->pin;
152-
if (self->output) {
152+
digitalio_digitalinout_obj_t *self) {
153+
uint32_t pin = NRF_GPIO_PIN_MAP(self->pin->port, self->pin->pin);
154+
NRF_GPIO_Type *reg = nrf_gpio_pin_port_decode(&pin);
155+
156+
if (nrf_gpio_pin_dir_get(pin) == NRF_GPIO_PIN_DIR_OUTPUT) {
153157
mp_raise_AttributeError("Cannot get pull while in output mode");
154158
return PULL_NONE;
155-
} else {
156-
hal_gpio_pull_t pull = hal_gpio_pull_get(self->pin->port, pin);
159+
}
157160

158-
switch(pull)
159-
{
160-
case HAL_GPIO_PULL_UP:
161-
return PULL_UP;
161+
switch (reg->PIN_CNF[self->pin->pin] & GPIO_PIN_CNF_PULL_Msk) {
162+
case NRF_GPIO_PIN_PULLUP:
163+
return PULL_UP;
162164

163-
case HAL_GPIO_PULL_DOWN:
164-
return PULL_DOWN;
165+
case NRF_GPIO_PIN_PULLDOWN:
166+
return PULL_DOWN;
165167

166-
default: return PULL_NONE;
167-
}
168+
default:
169+
return PULL_NONE;
168170
}
169171
}

ports/nrf/common-hal/digitalio/DigitalInOut.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,10 @@
2828
#define MICROPY_INCLUDED_NRF_COMMON_HAL_DIGITALIO_DIGITALINOUT_H
2929

3030
#include "common-hal/microcontroller/Pin.h"
31-
#include "py/obj.h"
3231

3332
typedef struct {
3433
mp_obj_base_t base;
35-
const mcu_pin_obj_t * pin;
36-
bool output;
34+
const mcu_pin_obj_t *pin;
3735
bool open_drain;
3836
} digitalio_digitalinout_obj_t;
3937

0 commit comments

Comments
 (0)
0