Skip to content

Commit 50af08a

Browse files
committed
Merge branch 'master' into pixelbuf
2 parents be9caeb + d2a7cd6 commit 50af08a

File tree

111 files changed

+1076
-391
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

111 files changed

+1076
-391
lines changed

.travis.yml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ git:
2121
# that SDK is shortest and add it there. In the case of major re-organizations,
2222
# just try to make the builds "about equal in run time"
2323
env:
24-
- TRAVIS_TESTS="unix docs translations website" TRAVIS_BOARDS="feather_huzzah circuitplayground_express mini_sam_m4 grandcentral_m4_express pca10056 pca10059 feather_nrf52840_express makerdiary_nrf52840_mdk particle_boron particle_argon particle_xenon sparkfun_nrf52840_mini" TRAVIS_SDK=arm:nrf:esp8266
24+
- TRAVIS_TESTS="unix docs translations website" TRAVIS_BOARDS="circuitplayground_express mini_sam_m4 grandcentral_m4_express pca10056 pca10059 feather_nrf52840_express makerdiary_nrf52840_mdk makerdiary_nrf52840_mdk_usb_dongle particle_boron particle_argon particle_xenon sparkfun_nrf52840_mini" TRAVIS_SDK=arm:nrf
2525
- TRAVIS_BOARDS="metro_m0_express metro_m4_express pirkey_m0 trellis_m4_express trinket_m0" TRAVIS_SDK=arm
2626
- TRAVIS_BOARDS="feather_radiofruit_zigbee gemma_m0 hallowing_m0_express itsybitsy_m0_express itsybitsy_m4_express meowmeow" TRAVIS_SDK=arm
2727
- TRAVIS_BOARDS="feather_m0_express_crickit feather_m0_rfm69 feather_m0_rfm9x feather_m4_express arduino_zero arduino_mkr1300 arduino_mkrzero" TRAVIS_SDK=arm
@@ -30,15 +30,15 @@ env:
3030
addons:
3131
artifacts:
3232
paths:
33-
- $(ls -d1 bin/*/* | tr "\n" ":")
33+
- $(ls -d1 bin/*/*/* | tr "\n" ":")
3434
target_paths: /
3535

3636
deploy:
3737
provider: releases
3838
api_key:
3939
secure: "jdqVFw6itRY4qwQF4ReXo0uaymT+Mob6RhYX0lw8KWFNqBgHnLVuKmKKcGMEuRvBVMPkvxF7bMuOQzSBOunqwlHFse3oMzdWvQODv1zwV7pSRXGwTdIvTPbBjKWxnBG9uSNRf2R5AMflJFUxy2CbtBpgvNzr+4VLREZDrrjEu8C1iTtXGpSm5AQ5iIp2fkMAWD85FP7CQPpkqRoxhSIFZmTdurfYRmenq1OZ/4SeD5TESKcyvqJNzVT9z210B3cg3eAkP6ukvelW4qE2zgIANqUkGqvDEnAvEII9M89kuwhCMAekdfwnUSPrry+g77i1dUZHoRN1+MFj+waYtPaqxdYo2G1sysa6enxlu4jHMR5MfMk9eKHgaNgL3PiyANusYSS44amh8QIiVaX5nw82myZDCpQOZW7YqJKE6WX70Lbs4mS+wIs+ig4KIXO1B0p9kMb0OeVjHRl+KcXsWGRu/ECG/ExpqlVIssSPU407LohMXT2cJ37CY/R/EeK2XSDsQ2M3L3EAGUjCJdBGuwsOJ+2lG+HQpAVu9vAB4kq5jy9Ye+MG+8Xlkly3XZZ5+FkXyYxKnXb26/QVv0e5sIG5OmdJCPYFaH2J1QdKo7CdhEcBtrf6DMPWaimGMldShFqzLjOz3b3qLysRxFF0aGb7ipKPa57vawNzYHoPAViOcXQ="
4040
file_glob: true
41-
file: "$TRAVIS_BUILD_DIR/bin/*/*"
41+
file: "$TRAVIS_BUILD_DIR/bin/*/*/*"
4242
skip_cleanup: true
4343
draft: true
4444
on:
@@ -86,7 +86,7 @@ before_script:
8686
script:
8787
# Build mpy-cross first because other builds depend on it.
8888
- echo 'Building mpy-cross' && echo 'travis_fold:start:mpy-cross'
89-
- make -C mpy-cross -j2 ; echo $? > status
89+
- make -C mpy-cross -j2 ; S=$? ; echo $S > status ; (exit $S)
9090
- echo 'travis_fold:end:mpy-cross' && tools/print_status.py status
9191

9292
# Use unbuffered output because building all the releases can take a long time.
@@ -95,7 +95,7 @@ script:
9595
- cd ..
9696

9797
- echo 'Building unix' && echo 'travis_fold:start:unix'
98-
- (! var_search "${TRAVIS_TESTS-}" unix || (make -C ports/unix deplibs -j2 && make -C ports/unix -j2 && make -C ports/unix coverage -j2)) ; echo $? > status
98+
- (! var_search "${TRAVIS_TESTS-}" unix || (make -C ports/unix deplibs -j2 && make -C ports/unix -j2 && make -C ports/unix coverage -j2)) ; S=$? ; echo $S > status ; (exit $S)
9999
- echo 'travis_fold:end:unix' && tools/print_status.py status
100100

101101
# run tests without coverage info
@@ -104,27 +104,27 @@ script:
104104

105105
# run tests with coverage info
106106
- echo 'Test all' && echo 'travis_fold:start:test_all'
107-
- (! var_search "${TRAVIS_TESTS-}" unix || (cd tests && MICROPY_CPYTHON3=python3.5 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1)) ; echo $? > status
107+
- (! var_search "${TRAVIS_TESTS-}" unix || (cd tests && MICROPY_CPYTHON3=python3.5 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1)) ; S=$? ; echo $S > status ; (exit $S)
108108
- echo 'travis_fold:end:test_all' && tools/print_status.py status
109109

110110
- echo 'Test threads' && echo 'travis_fold:start:test_threads'
111-
- (! var_search "${TRAVIS_TESTS-}" unix || (cd tests && MICROPY_CPYTHON3=python3.5 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 -d thread)) ; echo $? >status
111+
- (! var_search "${TRAVIS_TESTS-}" unix || (cd tests && MICROPY_CPYTHON3=python3.5 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 -d thread)) ; S=$? ; echo $S > status ; (exit $S)
112112
- echo 'travis_fold:end:test_threads' && tools/print_status.py status
113113

114114
- echo 'Testing with native' && echo 'travis_fold:start:test_native'
115-
- (! var_search "${TRAVIS_TESTS-}" unix || (cd tests && MICROPY_CPYTHON3=python3.5 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 --emit native)) ; echo $? >status
115+
- (! var_search "${TRAVIS_TESTS-}" unix || (cd tests && MICROPY_CPYTHON3=python3.5 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 --emit native)) ; S=$? ; echo $S > status ; (exit $S)
116116
- echo 'travis_fold:end:test_native' && tools/print_status.py status
117117

118118
- (echo 'Testing with mpy' && echo 'travis_fold:start:test_mpy')
119-
- (! var_search "${TRAVIS_TESTS-}" unix || (cd tests && MICROPY_CPYTHON3=python3.5 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 --via-mpy -d basics float)) ; echo $? >status
119+
- (! var_search "${TRAVIS_TESTS-}" unix || (cd tests && MICROPY_CPYTHON3=python3.5 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 --via-mpy -d basics float)) ; S=$? ; echo $S > status ; (exit $S)
120120
- echo 'travis_fold:end:test_mpy' && tools/print_status.py status
121121

122122
- (echo 'Building docs' && echo 'travis_fold:start:build_docs')
123-
- (! var_search "${TRAVIS_TESTS-}" docs || sphinx-build -E -W -b html . _build/html) ; echo $? >status
123+
- (! var_search "${TRAVIS_TESTS-}" docs || sphinx-build -E -W -b html . _build/html) ; S=$? ; echo $S > status ; (exit $S)
124124
- echo 'travis_fold:end:build_docs' && tools/print_status.py status
125125

126126
- (echo 'Building translations' && echo 'travis_fold:start:build_translations')
127-
- (! var_search "${TRAVIS_TESTS-}" translations || make check-translate) ; echo $? >status
127+
- (! var_search "${TRAVIS_TESTS-}" translations || make check-translate) ; S=$? ; echo $S > status ; (exit $S)
128128
- echo 'travis_fold:end:build_translations' && tools/print_status.py status
129129

130130
# run coveralls coverage analysis (try to, even if some builds/tests failed)

extmod/moduhashlib.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ STATIC mp_obj_t uhashlib_sha256_update(mp_obj_t self_in, mp_obj_t arg);
6666

6767
#if MICROPY_SSL_MBEDTLS
6868

69-
STATIC mp_obj_t uhashlib_sha256_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
70-
mp_arg_check_num(n_args, n_kw, 0, 1, false);
69+
STATIC mp_obj_t uhashlib_sha256_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *args, mp_map_t *kw_args) {
70+
mp_arg_check_num(n_args, kw_args, 0, 1, false);
7171
mp_obj_hash_t *o = m_new_obj_var(mp_obj_hash_t, char, sizeof(mbedtls_sha256_context));
7272
o->base.type = type;
7373
mbedtls_sha256_init((mbedtls_sha256_context*)&o->state);
@@ -104,8 +104,8 @@ static void check_not_unicode(const mp_obj_t arg) {
104104
#endif
105105
}
106106

107-
STATIC mp_obj_t uhashlib_sha256_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
108-
mp_arg_check_num(n_args, n_kw, 0, 1, false);
107+
STATIC mp_obj_t uhashlib_sha256_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *args, mp_map_t *kw_args) {
108+
mp_arg_check_num(n_args, kw_args, 0, 1, false);
109109
mp_obj_hash_t *o = m_new_obj_var(mp_obj_hash_t, char, sizeof(CRYAL_SHA256_CTX));
110110
o->base.type = type;
111111
sha256_init((CRYAL_SHA256_CTX*)o->state);
@@ -155,8 +155,8 @@ STATIC const mp_obj_type_t uhashlib_sha256_type = {
155155
STATIC mp_obj_t uhashlib_sha1_update(mp_obj_t self_in, mp_obj_t arg);
156156

157157
#if MICROPY_SSL_AXTLS
158-
STATIC mp_obj_t uhashlib_sha1_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
159-
mp_arg_check_num(n_args, n_kw, 0, 1, false);
158+
STATIC mp_obj_t uhashlib_sha1_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *args, mp_map_t *kw_args) {
159+
mp_arg_check_num(n_args, kw_args, 0, 1, false);
160160
mp_obj_hash_t *o = m_new_obj_var(mp_obj_hash_t, char, sizeof(SHA1_CTX));
161161
o->base.type = type;
162162
SHA1_Init((SHA1_CTX*)o->state);

extmod/vfs.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ mp_obj_t mp_vfs_mount(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args
176176
// auto-detect the filesystem and create the corresponding VFS entity.
177177
// (At the moment we only support FAT filesystems.)
178178
#if MICROPY_VFS_FAT
179-
vfs_obj = mp_fat_vfs_type.make_new(&mp_fat_vfs_type, 1, 0, &vfs_obj);
179+
vfs_obj = mp_fat_vfs_type.make_new(&mp_fat_vfs_type, 1, &vfs_obj, NULL);
180180
#endif
181181
}
182182

extmod/vfs_fat.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ mp_import_stat_t fat_vfs_import_stat(void *vfs_in, const char *path) {
6565
return MP_IMPORT_STAT_NO_EXIST;
6666
}
6767

68-
STATIC mp_obj_t fat_vfs_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
69-
mp_arg_check_num(n_args, n_kw, 1, 1, false);
68+
STATIC mp_obj_t fat_vfs_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *args, mp_map_t *kw_args) {
69+
mp_arg_check_num(n_args, kw_args, 1, 1, false);
7070

7171
// create new object
7272
fs_user_mount_t *vfs = m_new_obj(fs_user_mount_t);
@@ -111,7 +111,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(fat_vfs_del_obj, fat_vfs_del);
111111

112112
STATIC mp_obj_t fat_vfs_mkfs(mp_obj_t bdev_in) {
113113
// create new object
114-
fs_user_mount_t *vfs = MP_OBJ_TO_PTR(fat_vfs_make_new(&mp_fat_vfs_type, 1, 0, &bdev_in));
114+
fs_user_mount_t *vfs = MP_OBJ_TO_PTR(fat_vfs_make_new(&mp_fat_vfs_type, 1, &bdev_in, NULL));
115115

116116
// make the filesystem
117117
uint8_t working_buf[_MAX_SS];

extmod/vfs_fat_file.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,9 +206,9 @@ STATIC mp_obj_t file_open(fs_user_mount_t *vfs, const mp_obj_type_t *type, mp_ar
206206
return MP_OBJ_FROM_PTR(o);
207207
}
208208

209-
STATIC mp_obj_t file_obj_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *args) {
209+
STATIC mp_obj_t file_obj_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *args, mp_map_t *kw_args) {
210210
mp_arg_val_t arg_vals[FILE_OPEN_NUM_ARGS];
211-
mp_arg_parse_all_kw_array(n_args, n_kw, args, FILE_OPEN_NUM_ARGS, file_open_args, arg_vals);
211+
mp_arg_parse_all(n_args, args, kw_args, FILE_OPEN_NUM_ARGS, file_open_args, arg_vals);
212212
return file_open(NULL, type, arg_vals);
213213
}
214214

ports/atmel-samd/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,7 @@ SRC_SHARED_MODULE = \
386386
displayio/Group.c \
387387
displayio/OnDiskBitmap.c \
388388
displayio/Palette.c \
389+
displayio/Shape.c \
389390
displayio/Sprite.c \
390391
gamepad/__init__.c \
391392
gamepad/GamePad.c \
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
* This file is part of the MicroPython project, http://micropython.org/
3+
*
4+
* The MIT License (MIT)
5+
*
6+
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
7+
*
8+
* Permission is hereby granted, free of charge, to any person obtaining a copy
9+
* of this software and associated documentation files (the "Software"), to deal
10+
* in the Software without restriction, including without limitation the rights
11+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12+
* copies of the Software, and to permit persons to whom the Software is
13+
* furnished to do so, subject to the following conditions:
14+
*
15+
* The above copyright notice and this permission notice shall be included in
16+
* all copies or substantial portions of the Software.
17+
*
18+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24+
* THE SOFTWARE.
25+
*/
26+
27+
#include "boards/board.h"
28+
#include "mpconfigboard.h"
29+
#include "hal/include/hal_gpio.h"
30+
31+
void board_init(void) {
32+
}
33+
34+
bool board_requests_safe_mode(void) {
35+
return false;
36+
}
37+
38+
void reset_board(void) {
39+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#define MICROPY_HW_BOARD_NAME "TG-Boards' Datalore IP M4"
2+
#define MICROPY_HW_MCU_NAME "samd51j19"
3+
4+
#define CIRCUITPY_MCU_FAMILY samd51
5+
6+
// This is for Rev F which is green
7+
8+
#define MICROPY_HW_LED_TX (&pin_PA27)
9+
#define MICROPY_HW_LED_RX (&pin_PB06)
10+
11+
#define MICROPY_HW_LED_STATUS (&pin_PA16)
12+
13+
#define MICROPY_HW_NEOPIXEL (&pin_PB22)
14+
15+
// These are pins not to reset.
16+
// QSPI Data pins
17+
#define MICROPY_PORT_A (PORT_PA08 | PORT_PA09 | PORT_PA10 | PORT_PA11)
18+
// QSPI CS, QSPI SCK and NeoPixel pin
19+
#define MICROPY_PORT_B (PORT_PB10 | PORT_PB11 | PORT_PB22)
20+
#define MICROPY_PORT_C (0)
21+
#define MICROPY_PORT_D (0)
22+
23+
#define AUTORESET_DELAY_MS 500
24+
25+
// If you change this, then make sure to update the linker scripts as well to
26+
// make sure you don't overwrite code
27+
#define CIRCUITPY_INTERNAL_NVM_SIZE 8192
28+
29+
#define BOARD_FLASH_SIZE (FLASH_SIZE - 0x4000 - CIRCUITPY_INTERNAL_NVM_SIZE)
30+
31+
#define BOARD_HAS_CRYSTAL 1
32+
33+
#define DEFAULT_I2C_BUS_SCL (&pin_PB03)
34+
#define DEFAULT_I2C_BUS_SDA (&pin_PB02)
35+
36+
#define DEFAULT_SPI_BUS_SCK (&pin_PA13)
37+
#define DEFAULT_SPI_BUS_MOSI (&pin_PA12)
38+
#define DEFAULT_SPI_BUS_MISO (&pin_PA14)
39+
40+
#define DEFAULT_UART_BUS_RX (&pin_PA23)
41+
#define DEFAULT_UART_BUS_TX (&pin_PA22)
42+
43+
// USB is always used internally so skip the pin objects for it.
44+
#define IGNORE_PIN_PA24 1
45+
#define IGNORE_PIN_PA25 1
46+
47+
#define CIRCUITPY_I2CSLAVE
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
LD_FILE = boards/samd51x19-bootloader-external-flash.ld
2+
USB_VID = 0x4097
3+
USB_PID = 0x0001
4+
USB_PRODUCT = "Datalore IP M4"
5+
USB_MANUFACTURER = "TG-Boards"
6+
7+
QSPI_FLASH_FILESYSTEM = 1
8+
EXTERNAL_FLASH_DEVICE_COUNT = 3
9+
EXTERNAL_FLASH_DEVICES = "GD25Q16C, W25Q16JV_IQ, W25Q16JV_IM"
10+
11+
LONGINT_IMPL = MPZ
12+
13+
CHIP_VARIANT = SAMD51J19A
14+
CHIP_FAMILY = samd51
15+
16+
MICROPY_PY_NETWORK = 1
17+
MICROPY_PY_WIZNET5K = 5500
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#include "shared-bindings/board/__init__.h"
2+
3+
#include "board_busses.h"
4+
5+
// This mapping only includes functional names because pins broken
6+
// out on connectors are labeled with their MCU name available from
7+
// microcontroller.pin.
8+
STATIC const mp_map_elem_t board_global_dict_table[] = {
9+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A0), (mp_obj_t)&pin_PA02 },
10+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A1), (mp_obj_t)&pin_PA05 },
11+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A2), (mp_obj_t)&pin_PA06 },
12+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A3), (mp_obj_t)&pin_PA04 },
13+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A4), (mp_obj_t)&pin_PB08 },
14+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A5), (mp_obj_t)&pin_PB09 },
15+
16+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D0), (mp_obj_t)&pin_PA23 },
17+
{ MP_OBJ_NEW_QSTR(MP_QSTR_RX), (mp_obj_t)&pin_PA23 },
18+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D1), (mp_obj_t)&pin_PA22 },
19+
{ MP_OBJ_NEW_QSTR(MP_QSTR_TX), (mp_obj_t)&pin_PA22 },
20+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D2), (mp_obj_t)&pin_PB17 },
21+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D3), (mp_obj_t)&pin_PB16 },
22+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D4), (mp_obj_t)&pin_PB13 },
23+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D5), (mp_obj_t)&pin_PB14 },
24+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D6), (mp_obj_t)&pin_PB15 },
25+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D7), (mp_obj_t)&pin_PB12 },
26+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D8), (mp_obj_t)&pin_PA21 },
27+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D9), (mp_obj_t)&pin_PA20 },
28+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D10), (mp_obj_t)&pin_PA18 },
29+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D11), (mp_obj_t)&pin_PA19 },
30+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D12), (mp_obj_t)&pin_PA17 },
31+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D13), (mp_obj_t)&pin_PA16 },
32+
33+
{ MP_OBJ_NEW_QSTR(MP_QSTR_SDA), (mp_obj_t)&pin_PB02 },
34+
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCL), (mp_obj_t)&pin_PB03 },
35+
36+
{ MP_OBJ_NEW_QSTR(MP_QSTR_NEOPIXEL), (mp_obj_t)&pin_PB22 },
37+
38+
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCK), (mp_obj_t)&pin_PA13 },
39+
{ MP_OBJ_NEW_QSTR(MP_QSTR_MOSI), (mp_obj_t)&pin_PA12 },
40+
{ MP_OBJ_NEW_QSTR(MP_QSTR_MISO), (mp_obj_t)&pin_PA14 },
41+
42+
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
43+
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
44+
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
45+
};
46+
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);

ports/atmel-samd/boards/pyportal/pins.c

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,20 @@
88
// microcontroller.pin.
99
STATIC const mp_map_elem_t board_global_dict_table[] = {
1010
{ MP_OBJ_NEW_QSTR(MP_QSTR_AUDIO_OUT), (mp_obj_t)&pin_PA02 },
11+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A0), (mp_obj_t)&pin_PA02 }, // analog out/in
1112

13+
// STEMMA connectors
14+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A1), (mp_obj_t)&pin_PB02 }, // SDA
15+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A2), (mp_obj_t)&pin_PB03 }, // SCL
16+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A3), (mp_obj_t)&pin_PB00 }, // D3
17+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D3), (mp_obj_t)&pin_PB00 }, // D3
18+
{ MP_OBJ_NEW_QSTR(MP_QSTR_A4), (mp_obj_t)&pin_PB01 }, // D4
19+
{ MP_OBJ_NEW_QSTR(MP_QSTR_D4), (mp_obj_t)&pin_PB01 }, // D4
20+
21+
// Indicator LED
1222
{ MP_OBJ_NEW_QSTR(MP_QSTR_D13), (mp_obj_t)&pin_PA27 },
23+
{ MP_OBJ_NEW_QSTR(MP_QSTR_L), (mp_obj_t)&pin_PA27 },
24+
{ MP_OBJ_NEW_QSTR(MP_QSTR_NEOPIXEL), (mp_obj_t)&pin_PB22 },
1325

1426
// LCD pins
1527
{ MP_OBJ_NEW_QSTR(MP_QSTR_TFT_RESET), (mp_obj_t)&pin_PA00 },
@@ -40,18 +52,26 @@ STATIC const mp_map_elem_t board_global_dict_table[] = {
4052
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_GPIO0), (mp_obj_t)&pin_PB15 },
4153
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_RESET), (mp_obj_t)&pin_PB16 },
4254

55+
// UART
56+
{ MP_OBJ_NEW_QSTR(MP_QSTR_TX), (mp_obj_t)&pin_PB12 },
57+
{ MP_OBJ_NEW_QSTR(MP_QSTR_RX), (mp_obj_t)&pin_PB13 },
58+
59+
// SPI
60+
{ MP_OBJ_NEW_QSTR(MP_QSTR_MOSI), (mp_obj_t)&pin_PA12 },
61+
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCK), (mp_obj_t)&pin_PA13 },
62+
{ MP_OBJ_NEW_QSTR(MP_QSTR_MISO), (mp_obj_t)&pin_PA14 },
63+
64+
// I2C
65+
{ MP_OBJ_NEW_QSTR(MP_QSTR_SDA), (mp_obj_t)&pin_PB02 },
66+
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCL), (mp_obj_t)&pin_PB03 },
4367

4468
// SD Card
45-
{ MP_OBJ_NEW_QSTR(MP_QSTR_SD_MOSI), (mp_obj_t)&pin_PA12 },
46-
{ MP_OBJ_NEW_QSTR(MP_QSTR_SD_SCK), (mp_obj_t)&pin_PA13 },
4769
{ MP_OBJ_NEW_QSTR(MP_QSTR_SD_CS), (mp_obj_t)&pin_PB30 },
48-
{ MP_OBJ_NEW_QSTR(MP_QSTR_SD_MISO), (mp_obj_t)&pin_PA14 },
4970
{ MP_OBJ_NEW_QSTR(MP_QSTR_SD_CARD_DETECT), (mp_obj_t)&pin_PA01 },
5071

51-
{ MP_OBJ_NEW_QSTR(MP_QSTR_NEOPIXEL), (mp_obj_t)&pin_PB22 },
52-
5372
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
5473
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
74+
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
5575

5676
{ MP_ROM_QSTR(MP_QSTR_DISPLAY), MP_ROM_PTR(&board_display_obj)}
5777
};

ports/atmel-samd/common-hal/displayio/FourWire.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ bool common_hal_displayio_fourwire_begin_transaction(displayio_fourwire_obj_t* s
7070
return false;
7171
}
7272
// TODO(tannewt): Stop hardcoding SPI frequency, polarity and phase.
73-
common_hal_busio_spi_configure(&self->bus, 12000000, 0, 0, 8);
73+
common_hal_busio_spi_configure(&self->bus, 48000000, 0, 0, 8);
7474
common_hal_digitalio_digitalinout_set_value(&self->chip_select, false);
7575
return true;
7676
}

ports/nrf/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ the following links:
3535

3636
* Adafruit Feather nRF52840: `boards/feather_nrf52840_express/README.md`: 1MB Flash, 256KB SRAM
3737
* Nordic PCA10056 (uses nRF52840): `boards/pca10056/README.md`
38-
* MakerDiary NRF52840 MDK: `boards/makerdiary_nrf52840_mdk/README.md`
38+
* MakerDiary nRF52840 MDK: `boards/makerdiary_nrf52840_mdk/README.md`
39+
* MakerDiary nRF52840 MDK USB Dongle: `boards/makerdiary_nrf52840_mdk_usb_dongle/README.md`
3940

4041
For all other board targets, see the generic notes below.
4142

@@ -76,6 +77,7 @@ Target Board (BOARD) | Bluetooth Stack (SD) | Bluetooth Support | Fl
7677
pca10056 | s140 | Peripheral and Scanner | [Segger](#segger-targets)
7778
feather_nrf52840_express | s140 | Peripheral and Scanner | UF2 bootloader
7879
makerdiary_nrf52840_mdk | s140 | Peripheral and Scanner | pyocd or ARM mbed DAPLink
80+
makerdiary_nrf52840_mdk_usb_dongle | s140 | Peripheral and Scanner | DFU bootloader & nrfutil
7981

8082
## Segger Targets
8183

0 commit comments

Comments
 (0)