Skip to content

Commit 19d353c

Browse files
committed
nrf: fixups for changes from 2.2
1. bidirectional SPI support (@microbuilder please check) 2. slight changes in DigitalIO types 3. placeholders (not implemented yet) for single/double-click bootloader support
1 parent d8686cc commit 19d353c

File tree

4 files changed

+58
-23
lines changed

4 files changed

+58
-23
lines changed

ports/nrf/Makefile

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -137,25 +137,25 @@ SRC_C += \
137137
help.c \
138138
pin_named_pins.c \
139139
fatfs_port.c \
140-
fifo.c \
140+
fifo.c \
141141
drivers/softpwm.c \
142142
drivers/ticker.c \
143143
drivers/bluetooth/ble_drv.c \
144144
drivers/bluetooth/ble_uart.c \
145-
boards/$(BOARD)/board.c \
146-
boards/$(BOARD)/pins.c \
145+
boards/$(BOARD)/board.c \
146+
boards/$(BOARD)/pins.c \
147147
device/$(MCU_VARIANT)/system_$(MCU_SUB_VARIANT).c \
148148
device/$(MCU_VARIANT)/startup_$(MCU_SUB_VARIANT).c \
149149
lib/oofatfs/ff.c \
150150
lib/oofatfs/option/ccsbcs.c \
151-
lib/timeutils/timeutils.c \
152-
lib/utils/buffer_helper.c \
153-
lib/utils/context_manager_helpers.c \
154-
lib/utils/interrupt_char.c \
155-
lib/utils/pyexec.c \
151+
lib/timeutils/timeutils.c \
152+
lib/utils/buffer_helper.c \
153+
lib/utils/context_manager_helpers.c \
154+
lib/utils/interrupt_char.c \
155+
lib/utils/pyexec.c \
156156
lib/libc/string0.c \
157157
lib/mp-readline/readline.c \
158-
internal_flash.c \
158+
internal_flash.c \
159159

160160

161161
DRIVERS_SRC_C += $(addprefix modules/,\
@@ -196,25 +196,26 @@ SRC_COMMON_HAL += \
196196
microcontroller/Pin.c \
197197
microcontroller/Processor.c \
198198
os/__init__.c \
199-
time/__init__.c \
199+
time/__init__.c \
200200
analogio/__init__.c \
201201
analogio/AnalogIn.c \
202202
analogio/AnalogOut.c \
203203
busio/__init__.c\
204204
busio/I2C.c \
205205
busio/SPI.c \
206-
pulseio/__init__.c \
206+
pulseio/__init__.c \
207207
pulseio/PulseIn.c \
208208
pulseio/PulseOut.c \
209-
pulseio/PWMOut.c \
210-
storage/__init__.c \
209+
pulseio/PWMOut.c \
210+
storage/__init__.c \
211211

212212
# These don't have corresponding files in each port but are still located in
213213
# shared-bindings to make it clear what the contents of the modules are.
214214
SRC_BINDINGS_ENUMS = \
215215
digitalio/Direction.c \
216216
digitalio/DriveMode.c \
217217
digitalio/Pull.c \
218+
microcontroller/RunMode.c \
218219
help.c \
219220
math/__init__.c \
220221
supervisor/__init__.c \
@@ -225,7 +226,7 @@ SRC_COMMON_HAL_EXPANDED = $(addprefix shared-bindings/, $(SRC_COMMON_HAL)) \
225226
$(addprefix common-hal/, $(SRC_COMMON_HAL))
226227

227228
SRC_SHARED_MODULE = \
228-
os/__init__.c \
229+
os/__init__.c \
229230
random/__init__.c \
230231
storage/__init__.c \
231232

ports/nrf/common-hal/busio/SPI.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,3 +160,27 @@ bool common_hal_busio_spi_read(busio_spi_obj_t *self, uint8_t *data, size_t len,
160160

161161
return true;
162162
}
163+
164+
bool common_hal_busio_spi_transfer(busio_spi_obj_t *self, uint8_t *data_out, uint8_t *data_in, size_t len) {
165+
if (len == 0) {
166+
return true;
167+
}
168+
169+
while (len)
170+
{
171+
self->spi->TXD = *data_out;
172+
173+
while(!self->spi->EVENTS_READY);
174+
175+
*data_in = self->spi->RXD;
176+
177+
data_out++;
178+
data_in++;
179+
len--;
180+
181+
self->spi->EVENTS_READY = 0x0UL;
182+
}
183+
184+
return true;
185+
}
186+

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ void common_hal_digitalio_digitalinout_deinit(digitalio_digitalinout_obj_t* self
5555
}
5656

5757
void common_hal_digitalio_digitalinout_switch_to_input(
58-
digitalio_digitalinout_obj_t* self, enum digitalio_pull_t pull) {
58+
digitalio_digitalinout_obj_t* self, digitalio_pull_t pull) {
5959
self->output = false;
6060

6161
hal_gpio_cfg_pin(self->pin->port, self->pin->pin, HAL_GPIO_MODE_INPUT, HAL_GPIO_PULL_DISABLED);
@@ -64,7 +64,7 @@ void common_hal_digitalio_digitalinout_switch_to_input(
6464

6565
void common_hal_digitalio_digitalinout_switch_to_output(
6666
digitalio_digitalinout_obj_t* self, bool value,
67-
enum digitalio_drive_mode_t drive_mode) {
67+
digitalio_drive_mode_t drive_mode) {
6868
const uint8_t pin = self->pin->pin;
6969

7070
self->output = true;
@@ -74,7 +74,7 @@ void common_hal_digitalio_digitalinout_switch_to_output(
7474
common_hal_digitalio_digitalinout_set_value(self, value);
7575
}
7676

77-
enum digitalio_direction_t common_hal_digitalio_digitalinout_get_direction(
77+
digitalio_direction_t common_hal_digitalio_digitalinout_get_direction(
7878
digitalio_digitalinout_obj_t* self) {
7979
return self->output? DIRECTION_OUTPUT : DIRECTION_INPUT;
8080
}
@@ -110,7 +110,7 @@ bool common_hal_digitalio_digitalinout_get_value(
110110

111111
void common_hal_digitalio_digitalinout_set_drive_mode(
112112
digitalio_digitalinout_obj_t* self,
113-
enum digitalio_drive_mode_t drive_mode) {
113+
digitalio_drive_mode_t drive_mode) {
114114
bool value = common_hal_digitalio_digitalinout_get_value(self);
115115
self->open_drain = drive_mode == DRIVE_MODE_OPEN_DRAIN;
116116
// True is implemented differently between modes so reset the value to make
@@ -120,7 +120,7 @@ void common_hal_digitalio_digitalinout_set_drive_mode(
120120
}
121121
}
122122

123-
enum digitalio_drive_mode_t common_hal_digitalio_digitalinout_get_drive_mode(
123+
digitalio_drive_mode_t common_hal_digitalio_digitalinout_get_drive_mode(
124124
digitalio_digitalinout_obj_t* self) {
125125
if (self->open_drain) {
126126
return DRIVE_MODE_OPEN_DRAIN;
@@ -130,7 +130,7 @@ enum digitalio_drive_mode_t common_hal_digitalio_digitalinout_get_drive_mode(
130130
}
131131

132132
void common_hal_digitalio_digitalinout_set_pull(
133-
digitalio_digitalinout_obj_t* self, enum digitalio_pull_t pull) {
133+
digitalio_digitalinout_obj_t* self, digitalio_pull_t pull) {
134134
hal_gpio_pull_t asf_pull = HAL_GPIO_PULL_DISABLED;
135135
switch (pull) {
136136
case PULL_UP:
@@ -146,7 +146,7 @@ void common_hal_digitalio_digitalinout_set_pull(
146146
hal_gpio_pull_set(self->pin->port, self->pin->pin, asf_pull);
147147
}
148148

149-
enum digitalio_pull_t common_hal_digitalio_digitalinout_get_pull(
149+
digitalio_pull_t common_hal_digitalio_digitalinout_get_pull(
150150
digitalio_digitalinout_obj_t* self) {
151151
uint32_t pin = self->pin->pin;
152152
if (self->output) {

ports/nrf/common-hal/microcontroller/__init__.c

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
#include "common-hal/microcontroller/Pin.h"
2828
#include "common-hal/microcontroller/Processor.h"
2929

30+
31+
#include "shared-bindings/microcontroller/__init__.h"
3032
#include "shared-bindings/microcontroller/Pin.h"
3133
#include "shared-bindings/microcontroller/Processor.h"
3234

@@ -41,9 +43,17 @@ void common_hal_mcu_disable_interrupts() {
4143
void common_hal_mcu_enable_interrupts() {
4244
}
4345

44-
// The singleton microcontroller.Processor object, returned by microcontroller.cpu
46+
void common_hal_mcu_on_next_reset(mcu_runmode_t runmode) {
47+
// TODO: see atmel-samd for functionality
48+
}
49+
50+
void common_hal_mcu_reset(void) {
51+
// TODO: see atmel-samd for functionality
52+
}
53+
54+
// The singleton microcontroller.Processor object, bound to microcontroller.cpu
4555
// It currently only has properties, and no state.
46-
mcu_processor_obj_t common_hal_mcu_processor_obj = {
56+
const mcu_processor_obj_t common_hal_mcu_processor_obj = {
4757
.base = {
4858
.type = &mcu_processor_type,
4959
},

0 commit comments

Comments
 (0)