Merge remote-tracking branch 'upstream/master' into stm32-docfix
This commit is contained in:
commit
25245bc442
119
.github/workflows/build.yml
vendored
119
.github/workflows/build.yml
vendored
@ -16,24 +16,29 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
GITHUB_CONTEXT: ${{ toJson(github) }}
|
GITHUB_CONTEXT: ${{ toJson(github) }}
|
||||||
run: echo "$GITHUB_CONTEXT"
|
run: echo "$GITHUB_CONTEXT"
|
||||||
- name: Set up Python 3.5
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
fetch-depth: 0
|
||||||
|
- run: git fetch --recurse-submodules=no https://github.com/adafruit/circuitpython refs/tags/*:refs/tags/*
|
||||||
|
- run: git submodule sync
|
||||||
|
- run: git submodule foreach git remote -v
|
||||||
|
- run: git submodule foreach git fetch --recurse-submodules=no origin +refs/tags/*:refs/tags/*
|
||||||
|
- name: CircuitPython version
|
||||||
|
run: git describe --dirty --tags
|
||||||
|
- name: Set up Python 3.8
|
||||||
uses: actions/setup-python@v1
|
uses: actions/setup-python@v1
|
||||||
with:
|
with:
|
||||||
python-version: 3.5
|
python-version: 3.8
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get install -y eatmydata
|
sudo apt-get install -y eatmydata
|
||||||
sudo eatmydata apt-get install -y gettext librsvg2-bin mingw-w64
|
sudo eatmydata apt-get install -y gettext librsvg2-bin mingw-w64
|
||||||
pip install requests sh click setuptools cpp-coveralls Sphinx sphinx-rtd-theme recommonmark sphinxcontrib-svg2pdfconverter polib pyyaml
|
pip install requests sh click setuptools cpp-coveralls "Sphinx<4" sphinx-rtd-theme recommonmark sphinxcontrib-svg2pdfconverter polib pyyaml
|
||||||
- name: Versions
|
- name: Versions
|
||||||
run: |
|
run: |
|
||||||
gcc --version
|
gcc --version
|
||||||
python3 --version
|
python3 --version
|
||||||
- uses: actions/checkout@v1
|
|
||||||
with:
|
|
||||||
submodules: true
|
|
||||||
- name: CircuitPython version
|
|
||||||
run: git describe --dirty --always --tags
|
|
||||||
- name: Build mpy-cross
|
- name: Build mpy-cross
|
||||||
run: make -C mpy-cross -j2
|
run: make -C mpy-cross -j2
|
||||||
- name: Build unix port
|
- name: Build unix port
|
||||||
@ -42,7 +47,7 @@ jobs:
|
|||||||
make -C ports/unix -j2
|
make -C ports/unix -j2
|
||||||
make -C ports/unix coverage -j2
|
make -C ports/unix coverage -j2
|
||||||
- name: Test all
|
- name: Test all
|
||||||
run: MICROPY_CPYTHON3=python3.5 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1
|
run: MICROPY_CPYTHON3=python3.8 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1
|
||||||
working-directory: tests
|
working-directory: tests
|
||||||
- name: Print failure info
|
- name: Print failure info
|
||||||
run: |
|
run: |
|
||||||
@ -54,10 +59,10 @@ jobs:
|
|||||||
working-directory: tests
|
working-directory: tests
|
||||||
if: failure()
|
if: failure()
|
||||||
- name: Native Tests
|
- name: Native Tests
|
||||||
run: MICROPY_CPYTHON3=python3.5 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 --emit native
|
run: MICROPY_CPYTHON3=python3.8 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 --emit native
|
||||||
working-directory: tests
|
working-directory: tests
|
||||||
- name: mpy Tests
|
- name: mpy Tests
|
||||||
run: MICROPY_CPYTHON3=python3.5 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 --via-mpy -d basics float
|
run: MICROPY_CPYTHON3=python3.8 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 --via-mpy -d basics float
|
||||||
working-directory: tests
|
working-directory: tests
|
||||||
- name: Docs
|
- name: Docs
|
||||||
run: sphinx-build -E -W -b html . _build/html
|
run: sphinx-build -E -W -b html . _build/html
|
||||||
@ -103,11 +108,16 @@ jobs:
|
|||||||
gcc --version
|
gcc --version
|
||||||
python3 --version
|
python3 --version
|
||||||
msgfmt --version
|
msgfmt --version
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
submodules: true
|
submodules: true
|
||||||
|
fetch-depth: 0
|
||||||
|
- run: git fetch --recurse-submodules=no https://github.com/adafruit/circuitpython refs/tags/*:refs/tags/*
|
||||||
|
- run: git submodule sync
|
||||||
|
- run: git submodule foreach git remote -v
|
||||||
|
- run: git submodule foreach git fetch --recurse-submodules=no origin +refs/tags/*:refs/tags/*
|
||||||
- name: CircuitPython version
|
- name: CircuitPython version
|
||||||
run: git describe --dirty --always --tags
|
run: git describe --dirty --tags
|
||||||
- name: Build mpy-cross
|
- name: Build mpy-cross
|
||||||
run: make -C mpy-cross -j2
|
run: make -C mpy-cross -j2
|
||||||
- uses: actions/upload-artifact@v1.0.0
|
- uses: actions/upload-artifact@v1.0.0
|
||||||
@ -122,14 +132,20 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
board:
|
board:
|
||||||
|
- "8086_commander"
|
||||||
|
- "TG-Watch02A"
|
||||||
- "aramcon_badge_2019"
|
- "aramcon_badge_2019"
|
||||||
- "arduino_mkr1300"
|
- "arduino_mkr1300"
|
||||||
- "arduino_mkrzero"
|
- "arduino_mkrzero"
|
||||||
- "arduino_nano_33_ble"
|
- "arduino_nano_33_ble"
|
||||||
|
- "arduino_nano_33_iot"
|
||||||
- "arduino_zero"
|
- "arduino_zero"
|
||||||
- "bast_pro_mini_m0"
|
- "bast_pro_mini_m0"
|
||||||
|
- "bdmicro_vina_m0"
|
||||||
- "capablerobot_usbhub"
|
- "capablerobot_usbhub"
|
||||||
- "catwan_usbstick"
|
- "catwan_usbstick"
|
||||||
|
- "circuitbrains_basic_m0"
|
||||||
|
- "circuitbrains_deluxe_m4"
|
||||||
- "circuitplayground_bluefruit"
|
- "circuitplayground_bluefruit"
|
||||||
- "circuitplayground_express"
|
- "circuitplayground_express"
|
||||||
- "circuitplayground_express_crickit"
|
- "circuitplayground_express_crickit"
|
||||||
@ -144,6 +160,8 @@ jobs:
|
|||||||
- "electronut_labs_blip"
|
- "electronut_labs_blip"
|
||||||
- "electronut_labs_papyr"
|
- "electronut_labs_papyr"
|
||||||
- "escornabot_makech"
|
- "escornabot_makech"
|
||||||
|
- "espruino_pico"
|
||||||
|
- "espruino_wifi"
|
||||||
- "feather_bluefruit_sense"
|
- "feather_bluefruit_sense"
|
||||||
- "feather_m0_adalogger"
|
- "feather_m0_adalogger"
|
||||||
- "feather_m0_basic"
|
- "feather_m0_basic"
|
||||||
@ -153,6 +171,7 @@ jobs:
|
|||||||
- "feather_m0_rfm9x"
|
- "feather_m0_rfm9x"
|
||||||
- "feather_m0_supersized"
|
- "feather_m0_supersized"
|
||||||
- "feather_m4_express"
|
- "feather_m4_express"
|
||||||
|
- "feather_m7_1011"
|
||||||
- "feather_mimxrt1011"
|
- "feather_mimxrt1011"
|
||||||
- "feather_mimxrt1062"
|
- "feather_mimxrt1062"
|
||||||
- "feather_nrf52840_express"
|
- "feather_nrf52840_express"
|
||||||
@ -180,6 +199,9 @@ jobs:
|
|||||||
- "mini_sam_m4"
|
- "mini_sam_m4"
|
||||||
- "monster_m4sk"
|
- "monster_m4sk"
|
||||||
- "ndgarage_ndbit6"
|
- "ndgarage_ndbit6"
|
||||||
|
- "nfc_copy_cat"
|
||||||
|
- "nucleo_f767zi"
|
||||||
|
- "nucleo_h743zi_2"
|
||||||
- "ohs2020_badge"
|
- "ohs2020_badge"
|
||||||
- "openbook_m4"
|
- "openbook_m4"
|
||||||
- "particle_argon"
|
- "particle_argon"
|
||||||
@ -194,6 +216,7 @@ jobs:
|
|||||||
- "pybadge"
|
- "pybadge"
|
||||||
- "pybadge_airlift"
|
- "pybadge_airlift"
|
||||||
- "pyboard_v11"
|
- "pyboard_v11"
|
||||||
|
- "pycubed"
|
||||||
- "pygamer"
|
- "pygamer"
|
||||||
- "pygamer_advance"
|
- "pygamer_advance"
|
||||||
- "pyportal"
|
- "pyportal"
|
||||||
@ -212,27 +235,32 @@ jobs:
|
|||||||
- "sparkfun_redboard_turbo"
|
- "sparkfun_redboard_turbo"
|
||||||
- "sparkfun_samd21_dev"
|
- "sparkfun_samd21_dev"
|
||||||
- "sparkfun_samd21_mini"
|
- "sparkfun_samd21_mini"
|
||||||
|
- "sparkfun_samd51_thing_plus"
|
||||||
- "spresense"
|
- "spresense"
|
||||||
- "stm32f411ce_blackpill"
|
- "stm32f411ce_blackpill"
|
||||||
- "stm32f411ve_discovery"
|
- "stm32f411ve_discovery"
|
||||||
- "stm32f412zg_discovery"
|
- "stm32f412zg_discovery"
|
||||||
|
- "stm32f4_discovery"
|
||||||
- "stringcar_m0_express"
|
- "stringcar_m0_express"
|
||||||
- "teensy40"
|
- "teensy40"
|
||||||
- "teknikio_bluebird"
|
- "teknikio_bluebird"
|
||||||
|
- "thunderpack"
|
||||||
- "trellis_m4_express"
|
- "trellis_m4_express"
|
||||||
- "trinket_m0"
|
- "trinket_m0"
|
||||||
- "trinket_m0_haxpress"
|
- "trinket_m0_haxpress"
|
||||||
|
- "uartlogger2"
|
||||||
- "uchip"
|
- "uchip"
|
||||||
- "ugame10"
|
- "ugame10"
|
||||||
|
- "winterbloom_big_honking_button"
|
||||||
- "winterbloom_sol"
|
- "winterbloom_sol"
|
||||||
- "xinabox_cc03"
|
- "xinabox_cc03"
|
||||||
- "xinabox_cs11"
|
- "xinabox_cs11"
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Set up Python 3.5
|
- name: Set up Python 3.8
|
||||||
uses: actions/setup-python@v1
|
uses: actions/setup-python@v1
|
||||||
with:
|
with:
|
||||||
python-version: 3.5
|
python-version: 3.8
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get install -y gettext
|
sudo apt-get install -y gettext
|
||||||
@ -244,6 +272,57 @@ jobs:
|
|||||||
gcc --version
|
gcc --version
|
||||||
arm-none-eabi-gcc --version
|
arm-none-eabi-gcc --version
|
||||||
python3 --version
|
python3 --version
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
fetch-depth: 0
|
||||||
|
- run: git fetch --recurse-submodules=no https://github.com/adafruit/circuitpython refs/tags/*:refs/tags/*
|
||||||
|
- run: git submodule sync
|
||||||
|
- run: git submodule foreach git remote -v
|
||||||
|
- run: git submodule foreach git fetch --recurse-submodules=no origin +refs/tags/*:refs/tags/*
|
||||||
|
- name: mpy-cross
|
||||||
|
run: make -C mpy-cross -j2
|
||||||
|
- name: build
|
||||||
|
run: python3 -u build_release_files.py
|
||||||
|
working-directory: tools
|
||||||
|
env:
|
||||||
|
BOARDS: ${{ matrix.board }}
|
||||||
|
- uses: actions/upload-artifact@v1.0.0
|
||||||
|
with:
|
||||||
|
name: ${{ matrix.board }}
|
||||||
|
path: bin/${{ matrix.board }}
|
||||||
|
- name: Upload to S3
|
||||||
|
run: "[ -z \"$AWS_ACCESS_KEY_ID\" ] || aws s3 cp bin/ s3://adafruit-circuit-python/bin/ --recursive --no-progress --region us-east-1"
|
||||||
|
env:
|
||||||
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
|
if: github.event_name == 'push' || (github.event_name == 'release' && (github.event.action == 'published' || github.event.action == 'rerequested'))
|
||||||
|
|
||||||
|
build-riscv:
|
||||||
|
runs-on: ubuntu-16.04
|
||||||
|
needs: test
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
board:
|
||||||
|
- "fomu"
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Set up Python 3.8
|
||||||
|
uses: actions/setup-python@v1
|
||||||
|
with:
|
||||||
|
python-version: 3.8
|
||||||
|
- name: Install deps
|
||||||
|
run: |
|
||||||
|
sudo apt-get install -y gettext
|
||||||
|
pip install requests sh click setuptools awscli
|
||||||
|
wget https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.3.0-2019.08.0-x86_64-linux-centos6.tar.gz
|
||||||
|
sudo tar -C /usr --strip-components=1 -xaf riscv64-unknown-elf-gcc-8.3.0-2019.08.0-x86_64-linux-centos6.tar.gz
|
||||||
|
- name: Versions
|
||||||
|
run: |
|
||||||
|
gcc --version
|
||||||
|
riscv64-unknown-elf-gcc --version
|
||||||
|
python3 --version
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
with:
|
with:
|
||||||
submodules: true
|
submodules: true
|
||||||
@ -264,13 +343,3 @@ jobs:
|
|||||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||||
if: github.event_name == 'push' || (github.event_name == 'release' && (github.event.action == 'published' || github.event.action == 'rerequested'))
|
if: github.event_name == 'push' || (github.event_name == 'release' && (github.event.action == 'published' || github.event.action == 'rerequested'))
|
||||||
- name: Install upload deps
|
|
||||||
run: |
|
|
||||||
pip install uritemplate
|
|
||||||
- name: Upload to Release
|
|
||||||
run: "[ -z \"$ADABOT_GITHUB_ACCESS_TOKEN\" ] || python3 -u upload_release_files.py"
|
|
||||||
working-directory: tools
|
|
||||||
env:
|
|
||||||
UPLOAD_URL: ${{ github.event.release.upload_url }}
|
|
||||||
ADABOT_GITHUB_ACCESS_TOKEN: ${{ secrets.BLINKA_GITHUB_ACCESS_TOKEN }}
|
|
||||||
if: github.event_name == 'release' && (github.event.action == 'published' || github.event.action == 'rerequested')
|
|
||||||
|
11
.github/workflows/create_website_pr.yml
vendored
11
.github/workflows/create_website_pr.yml
vendored
@ -12,10 +12,10 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
GITHUB_CONTEXT: ${{ toJson(github) }}
|
GITHUB_CONTEXT: ${{ toJson(github) }}
|
||||||
run: echo "$GITHUB_CONTEXT"
|
run: echo "$GITHUB_CONTEXT"
|
||||||
- name: Set up Python 3.5
|
- name: Set up Python 3.8
|
||||||
uses: actions/setup-python@v1
|
uses: actions/setup-python@v1
|
||||||
with:
|
with:
|
||||||
python-version: 3.5
|
python-version: 3.8
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: |
|
run: |
|
||||||
pip install requests sh click
|
pip install requests sh click
|
||||||
@ -23,11 +23,14 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
gcc --version
|
gcc --version
|
||||||
python3 --version
|
python3 --version
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
submodules: true
|
submodules: true
|
||||||
|
fetch-depth: 0
|
||||||
|
- run: git fetch --recurse-submodules=no https://github.com/adafruit/circuitpython refs/tags/*:refs/tags/*
|
||||||
|
- run: git submodule foreach git fetch --recurse-submodules=no origin +refs/tags/*:refs/tags/*
|
||||||
- name: CircuitPython version
|
- name: CircuitPython version
|
||||||
run: git describe --dirty --always --tags
|
run: git describe --dirty --tags
|
||||||
- name: Website
|
- name: Website
|
||||||
run: python3 build_board_info.py
|
run: python3 build_board_info.py
|
||||||
working-directory: tools
|
working-directory: tools
|
||||||
|
25
.gitmodules
vendored
25
.gitmodules
vendored
@ -29,10 +29,6 @@
|
|||||||
[submodule "tools/python-semver"]
|
[submodule "tools/python-semver"]
|
||||||
path = tools/python-semver
|
path = tools/python-semver
|
||||||
url = https://github.com/k-bx/python-semver.git
|
url = https://github.com/k-bx/python-semver.git
|
||||||
[submodule "lib/stm32lib"]
|
|
||||||
path = lib/stm32lib
|
|
||||||
url = https://github.com/micropython/stm32lib
|
|
||||||
branch = work-F4-1.13.1+F7-1.5.0+L4-1.3.0
|
|
||||||
[submodule "atmel-samd/asf4"]
|
[submodule "atmel-samd/asf4"]
|
||||||
path = ports/atmel-samd/asf4
|
path = ports/atmel-samd/asf4
|
||||||
url = https://github.com/adafruit/asf4.git
|
url = https://github.com/adafruit/asf4.git
|
||||||
@ -96,9 +92,6 @@
|
|||||||
[submodule "frozen/circuitpython-stage"]
|
[submodule "frozen/circuitpython-stage"]
|
||||||
path = frozen/circuitpython-stage
|
path = frozen/circuitpython-stage
|
||||||
url = https://github.com/python-ugame/circuitpython-stage.git
|
url = https://github.com/python-ugame/circuitpython-stage.git
|
||||||
[submodule "ports/stm32f4/stm32f4"]
|
|
||||||
path = ports/stm32f4/stm32f4
|
|
||||||
url = https://github.com/adafruit/stm32f4.git
|
|
||||||
[submodule "ports/cxd56/spresense-exported-sdk"]
|
[submodule "ports/cxd56/spresense-exported-sdk"]
|
||||||
path = ports/cxd56/spresense-exported-sdk
|
path = ports/cxd56/spresense-exported-sdk
|
||||||
url = https://github.com/sonydevworld/spresense-exported-sdk.git
|
url = https://github.com/sonydevworld/spresense-exported-sdk.git
|
||||||
@ -111,3 +104,21 @@
|
|||||||
[submodule "ports/mimxrt10xx/sdk"]
|
[submodule "ports/mimxrt10xx/sdk"]
|
||||||
path = ports/mimxrt10xx/sdk
|
path = ports/mimxrt10xx/sdk
|
||||||
url = https://github.com/adafruit/MIMXRT10xx_SDK
|
url = https://github.com/adafruit/MIMXRT10xx_SDK
|
||||||
|
[submodule "frozen/Adafruit_CircuitPython_Register"]
|
||||||
|
path = frozen/Adafruit_CircuitPython_Register
|
||||||
|
url = https://github.com/adafruit/Adafruit_CircuitPython_Register.git
|
||||||
|
[submodule "extmod/ulab"]
|
||||||
|
path = extmod/ulab
|
||||||
|
url = https://github.com/v923z/micropython-ulab
|
||||||
|
[submodule "frozen/Adafruit_CircuitPython_ESP32SPI"]
|
||||||
|
path = frozen/Adafruit_CircuitPython_ESP32SPI
|
||||||
|
url = https://github.com/adafruit/Adafruit_CircuitPython_ESP32SPI
|
||||||
|
[submodule "frozen/Adafruit_CircuitPython_Requests"]
|
||||||
|
path = frozen/Adafruit_CircuitPython_Requests
|
||||||
|
url = https://github.com/adafruit/Adafruit_CircuitPython_Requests
|
||||||
|
[submodule "ports/stm/st_driver"]
|
||||||
|
path = ports/stm/st_driver
|
||||||
|
url = https://github.com/hathach/st_driver.git
|
||||||
|
[submodule "lib/protomatter"]
|
||||||
|
path = lib/protomatter
|
||||||
|
url = https://github.com/adafruit/Adafruit_Protomatter
|
||||||
|
@ -1,74 +1,129 @@
|
|||||||
# Contributor Covenant Code of Conduct
|
# Adafruit Community Code of Conduct
|
||||||
|
|
||||||
## Our Pledge
|
## Our Pledge
|
||||||
|
|
||||||
In the interest of fostering an open and welcoming environment, we as
|
In the interest of fostering an open and welcoming environment, we as
|
||||||
contributors and maintainers pledge to making participation in our project and
|
contributors and leaders pledge to making participation in our project and
|
||||||
our community a harassment-free experience for everyone, regardless of age, body
|
our community a harassment-free experience for everyone, regardless of age, body
|
||||||
size, disability, ethnicity, gender identity and expression, level of experience,
|
size, disability, ethnicity, gender identity and expression, level or type of
|
||||||
nationality, personal appearance, race, religion, or sexual identity and
|
experience, education, socio-economic status, nationality, personal appearance,
|
||||||
orientation.
|
race, religion, or sexual identity and orientation.
|
||||||
|
|
||||||
## Our Standards
|
## Our Standards
|
||||||
|
|
||||||
|
We are committed to providing a friendly, safe and welcoming environment for
|
||||||
|
all.
|
||||||
|
|
||||||
Examples of behavior that contributes to creating a positive environment
|
Examples of behavior that contributes to creating a positive environment
|
||||||
include:
|
include:
|
||||||
|
|
||||||
|
* Be kind and courteous to others
|
||||||
* Using welcoming and inclusive language
|
* Using welcoming and inclusive language
|
||||||
* Being respectful of differing viewpoints and experiences
|
* Being respectful of differing viewpoints and experiences
|
||||||
|
* Collaborating with other community members
|
||||||
* Gracefully accepting constructive criticism
|
* Gracefully accepting constructive criticism
|
||||||
* Focusing on what is best for the community
|
* Focusing on what is best for the community
|
||||||
* Showing empathy towards other community members
|
* Showing empathy towards other community members
|
||||||
|
|
||||||
Examples of unacceptable behavior by participants include:
|
Examples of unacceptable behavior by participants include:
|
||||||
|
|
||||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
* The use of sexualized language or imagery and sexual attention or advances
|
||||||
advances
|
* The use of inappropriate images, including in a community member's avatar
|
||||||
|
* The use of inappropriate language, including in a community member's nickname
|
||||||
|
* Any spamming, flaming, baiting or other attention-stealing behavior
|
||||||
|
* Excessive or unwelcome helping; answering outside the scope of the question
|
||||||
|
asked
|
||||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||||
|
* Promoting or spreading disinformation, lies, or conspiracy theories against
|
||||||
|
a person, group, organisation, project, or community
|
||||||
* Public or private harassment
|
* Public or private harassment
|
||||||
* Publishing others' private information, such as a physical or electronic
|
* Publishing others' private information, such as a physical or electronic
|
||||||
address, without explicit permission
|
address, without explicit permission
|
||||||
* Other conduct which could reasonably be considered inappropriate in a
|
* Other conduct which could reasonably be considered inappropriate
|
||||||
professional setting
|
|
||||||
|
The goal of the standards and moderation guidelines outlined here is to build
|
||||||
|
and maintain a respectful community. We ask that you don’t just aim to be
|
||||||
|
"technically unimpeachable", but rather try to be your best self.
|
||||||
|
|
||||||
|
We value many things beyond technical expertise, including collaboration and
|
||||||
|
supporting others within our community. Providing a positive experience for
|
||||||
|
other community members can have a much more significant impact than simply
|
||||||
|
providing the correct answer.
|
||||||
|
|
||||||
## Our Responsibilities
|
## Our Responsibilities
|
||||||
|
|
||||||
Project maintainers are responsible for clarifying the standards of acceptable
|
Project leaders are responsible for clarifying the standards of acceptable
|
||||||
behavior and are expected to take appropriate and fair corrective action in
|
behavior and are expected to take appropriate and fair corrective action in
|
||||||
response to any instances of unacceptable behavior.
|
response to any instances of unacceptable behavior.
|
||||||
|
|
||||||
Project maintainers have the right and responsibility to remove, edit, or
|
Project leaders have the right and responsibility to remove, edit, or
|
||||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
reject messages, comments, commits, code, issues, and other contributions
|
||||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||||
permanently any contributor for other behaviors that they deem inappropriate,
|
permanently any community member for other behaviors that they deem
|
||||||
threatening, offensive, or harmful.
|
inappropriate, threatening, offensive, or harmful.
|
||||||
|
|
||||||
|
## Moderation
|
||||||
|
|
||||||
|
Instances of behaviors that violate the Adafruit Community Code of Conduct
|
||||||
|
may be reported by any member of the community. Community members are
|
||||||
|
encouraged to report these situations, including situations they witness
|
||||||
|
involving other community members.
|
||||||
|
|
||||||
|
You may report in the following ways:
|
||||||
|
|
||||||
|
In any situation, you may send an email to <support@adafruit.com>.
|
||||||
|
|
||||||
|
On the Adafruit Discord, you may send an open message from any channel
|
||||||
|
to all Community Moderators by tagging @community moderators. You may
|
||||||
|
also send an open message from any channel, or a direct message to
|
||||||
|
@kattni#1507, @tannewt#4653, @danh#1614, @cater#2442,
|
||||||
|
@sommersoft#0222, @Mr. Certainly#0472 or @Andon#8175.
|
||||||
|
|
||||||
|
Email and direct message reports will be kept confidential.
|
||||||
|
|
||||||
|
In situations on Discord where the issue is particularly egregious, possibly
|
||||||
|
illegal, requires immediate action, or violates the Discord terms of service,
|
||||||
|
you should also report the message directly to Discord.
|
||||||
|
|
||||||
|
These are the steps for upholding our community’s standards of conduct.
|
||||||
|
|
||||||
|
1. Any member of the community may report any situation that violates the
|
||||||
|
Adafruit Community Code of Conduct. All reports will be reviewed and
|
||||||
|
investigated.
|
||||||
|
2. If the behavior is an egregious violation, the community member who
|
||||||
|
committed the violation may be banned immediately, without warning.
|
||||||
|
3. Otherwise, moderators will first respond to such behavior with a warning.
|
||||||
|
4. Moderators follow a soft "three strikes" policy - the community member may
|
||||||
|
be given another chance, if they are receptive to the warning and change their
|
||||||
|
behavior.
|
||||||
|
5. If the community member is unreceptive or unreasonable when warned by a
|
||||||
|
moderator, or the warning goes unheeded, they may be banned for a first or
|
||||||
|
second offense. Repeated offenses will result in the community member being
|
||||||
|
banned.
|
||||||
|
|
||||||
## Scope
|
## Scope
|
||||||
|
|
||||||
|
This Code of Conduct and the enforcement policies listed above apply to all
|
||||||
|
Adafruit Community venues. This includes but is not limited to any community
|
||||||
|
spaces (both public and private), the entire Adafruit Discord server, and
|
||||||
|
Adafruit GitHub repositories. Examples of Adafruit Community spaces include
|
||||||
|
but are not limited to meet-ups, audio chats on the Adafruit Discord, or
|
||||||
|
interaction at a conference.
|
||||||
|
|
||||||
This Code of Conduct applies both within project spaces and in public spaces
|
This Code of Conduct applies both within project spaces and in public spaces
|
||||||
when an individual is representing the project or its community. Examples of
|
when an individual is representing the project or its community. As a community
|
||||||
representing a project or community include using an official project e-mail
|
member, you are representing our community, and are expected to behave
|
||||||
address, posting via an official social media account, or acting as an appointed
|
accordingly.
|
||||||
representative at an online or offline event. Representation of a project may be
|
|
||||||
further defined and clarified by project maintainers.
|
|
||||||
|
|
||||||
## Enforcement
|
|
||||||
|
|
||||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
||||||
reported by contacting the project team at support@adafruit.com. All
|
|
||||||
complaints will be reviewed and investigated and will result in a response that
|
|
||||||
is deemed necessary and appropriate to the circumstances. The project team is
|
|
||||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
|
||||||
Further details of specific enforcement policies may be posted separately.
|
|
||||||
|
|
||||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
|
||||||
faith may face temporary or permanent repercussions as determined by other
|
|
||||||
members of the project's leadership.
|
|
||||||
|
|
||||||
## Attribution
|
## Attribution
|
||||||
|
|
||||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||||
available at [http://contributor-covenant.org/version/1/4][version]
|
version 1.4, available at
|
||||||
|
<https://www.contributor-covenant.org/version/1/4/code-of-conduct.html>,
|
||||||
|
and the [Rust Code of Conduct](https://www.rust-lang.org/en-US/conduct.html).
|
||||||
|
|
||||||
[homepage]: http://contributor-covenant.org
|
For other projects adopting the Adafruit Community Code of
|
||||||
[version]: http://contributor-covenant.org/version/1/4/
|
Conduct, please contact the maintainers of those projects for enforcement.
|
||||||
|
If you wish to use this code of conduct for your own project, consider
|
||||||
|
explicitly mentioning your moderation policy or making a copy with your
|
||||||
|
own moderation policy so as to avoid confusion.
|
||||||
|
2
Makefile
2
Makefile
@ -36,7 +36,7 @@ ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(BASEOPTS)
|
|||||||
# the i18n builder cannot share the environment and doctrees with the others
|
# the i18n builder cannot share the environment and doctrees with the others
|
||||||
I18NSPHINXOPTS = $(BASEOPTS)
|
I18NSPHINXOPTS = $(BASEOPTS)
|
||||||
|
|
||||||
TRANSLATE_SOURCES = extmod lib main.c ports/atmel-samd ports/cxd56 ports/mimxrt10xx ports/nrf ports/stm32f4 py shared-bindings shared-module supervisor
|
TRANSLATE_SOURCES = extmod lib main.c ports/atmel-samd ports/cxd56 ports/mimxrt10xx ports/nrf ports/stm py shared-bindings shared-module supervisor
|
||||||
|
|
||||||
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext stubs
|
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext stubs
|
||||||
|
|
||||||
|
40
conf.py
40
conf.py
@ -17,7 +17,7 @@ import json
|
|||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from recommonmark.parser import CommonMarkParser
|
import recommonmark
|
||||||
|
|
||||||
# If extensions (or modules to document with autodoc) are in another directory,
|
# If extensions (or modules to document with autodoc) are in another directory,
|
||||||
# add these directories to sys.path here. If the directory is relative to the
|
# add these directories to sys.path here. If the directory is relative to the
|
||||||
@ -55,16 +55,20 @@ extensions = [
|
|||||||
'sphinx.ext.todo',
|
'sphinx.ext.todo',
|
||||||
'sphinx.ext.coverage',
|
'sphinx.ext.coverage',
|
||||||
'rstjinja',
|
'rstjinja',
|
||||||
'c2rst'
|
'c2rst',
|
||||||
|
'recommonmark',
|
||||||
]
|
]
|
||||||
|
|
||||||
# Add any paths that contain templates here, relative to this directory.
|
# Add any paths that contain templates here, relative to this directory.
|
||||||
templates_path = ['templates']
|
templates_path = ['templates']
|
||||||
|
|
||||||
# The suffix of source filenames.
|
# The suffix of source filenames.
|
||||||
source_suffix = ['.rst', '.md', '.c', '.h']
|
source_suffix = {
|
||||||
|
'.rst': 'restructuredtext',
|
||||||
|
'.md': 'markdown',
|
||||||
|
'.c': ''
|
||||||
|
}
|
||||||
|
|
||||||
source_parsers = {'.md': CommonMarkParser}
|
|
||||||
|
|
||||||
# The encoding of source files.
|
# The encoding of source files.
|
||||||
#source_encoding = 'utf-8-sig'
|
#source_encoding = 'utf-8-sig'
|
||||||
@ -121,16 +125,9 @@ exclude_patterns = ["**/build*",
|
|||||||
"ports/atmel-samd/peripherals",
|
"ports/atmel-samd/peripherals",
|
||||||
"ports/atmel-samd/QTouch",
|
"ports/atmel-samd/QTouch",
|
||||||
"ports/atmel-samd/tools",
|
"ports/atmel-samd/tools",
|
||||||
"ports/bare-arm",
|
|
||||||
"ports/cc3200",
|
|
||||||
"ports/cc3200/FreeRTOS",
|
|
||||||
"ports/cc3200/hal",
|
|
||||||
"ports/cxd56/mkspk",
|
"ports/cxd56/mkspk",
|
||||||
"ports/cxd56/spresense-exported-sdk",
|
"ports/cxd56/spresense-exported-sdk",
|
||||||
"ports/esp32",
|
"ports/litex/hw",
|
||||||
"ports/esp8266/boards",
|
|
||||||
"ports/esp8266/common-hal",
|
|
||||||
"ports/esp8266/modules",
|
|
||||||
"ports/minimal",
|
"ports/minimal",
|
||||||
"ports/mimxrt10xx/peripherals",
|
"ports/mimxrt10xx/peripherals",
|
||||||
"ports/mimxrt10xx/sdk",
|
"ports/mimxrt10xx/sdk",
|
||||||
@ -140,20 +137,11 @@ exclude_patterns = ["**/build*",
|
|||||||
"ports/nrf/nrfx",
|
"ports/nrf/nrfx",
|
||||||
"ports/nrf/peripherals",
|
"ports/nrf/peripherals",
|
||||||
"ports/nrf/usb",
|
"ports/nrf/usb",
|
||||||
"ports/stm32f4/stm32f4",
|
"ports/stm/st_driver",
|
||||||
"ports/stm32f4/peripherals",
|
"ports/stm/packages",
|
||||||
"ports/stm32f4/ref",
|
"ports/stm/peripherals",
|
||||||
"ports/pic16bit",
|
"ports/stm/ref",
|
||||||
"ports/qemu-arm",
|
|
||||||
"ports/stm32",
|
|
||||||
"ports/stm32/hal",
|
|
||||||
"ports/stm32/cmsis",
|
|
||||||
"ports/stm32/usbdev",
|
|
||||||
"ports/stm32/usbhost",
|
|
||||||
"ports/teensy",
|
|
||||||
"ports/unix",
|
"ports/unix",
|
||||||
"ports/windows",
|
|
||||||
"ports/zephyr",
|
|
||||||
"py",
|
"py",
|
||||||
"shared-bindings/util.*",
|
"shared-bindings/util.*",
|
||||||
"shared-module",
|
"shared-module",
|
||||||
@ -374,4 +362,4 @@ intersphinx_mapping = {"cpython": ('https://docs.python.org/3/', None),
|
|||||||
"register": ('https://circuitpython.readthedocs.io/projects/register/en/latest/', None)}
|
"register": ('https://circuitpython.readthedocs.io/projects/register/en/latest/', None)}
|
||||||
|
|
||||||
def setup(app):
|
def setup(app):
|
||||||
app.add_stylesheet("customstyle.css")
|
app.add_css_file("customstyle.css")
|
||||||
|
@ -476,6 +476,8 @@ properties.
|
|||||||
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
||||||
| ``distance`` | float | centimeters |
|
| ``distance`` | float | centimeters |
|
||||||
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
||||||
|
| ``proximity`` | int | non-unit-specifc proximity values (monotonic but not actual distance) |
|
||||||
|
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
||||||
| ``light`` | float | non-unit-specific light levels (should be monotonic but is not lux) |
|
| ``light`` | float | non-unit-specific light levels (should be monotonic but is not lux) |
|
||||||
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
||||||
| ``lux`` | float | SI lux |
|
| ``lux`` | float | SI lux |
|
||||||
@ -504,6 +506,8 @@ properties.
|
|||||||
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
||||||
| ``weight`` | float | grams (g) |
|
| ``weight`` | float | grams (g) |
|
||||||
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
||||||
|
| ``sound_level`` | float | non-unit-specific sound level (monotonic but not actual decibels) |
|
||||||
|
+-----------------------+-----------------------+-------------------------------------------------------------------------+
|
||||||
|
|
||||||
Adding native modules
|
Adding native modules
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
@ -247,7 +247,7 @@ Methods
|
|||||||
nic.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))
|
nic.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))
|
||||||
|
|
||||||
.. method:: wlan.config('param')
|
.. method:: wlan.config('param')
|
||||||
.. method:: wlan.config(param=value, ...)
|
wlan.config(param=value, ...)
|
||||||
|
|
||||||
Get or set general network interface parameters. These methods allow to work
|
Get or set general network interface parameters. These methods allow to work
|
||||||
with additional parameters beyond standard IP configuration (as dealt with by
|
with additional parameters beyond standard IP configuration (as dealt with by
|
||||||
|
@ -10,5 +10,5 @@ and ESP8266.
|
|||||||
../ports/atmel-samd/README
|
../ports/atmel-samd/README
|
||||||
../ports/mimxrt10xx/README
|
../ports/mimxrt10xx/README
|
||||||
../ports/nrf/README
|
../ports/nrf/README
|
||||||
../ports/stm32f4/README
|
../ports/stm/README
|
||||||
../ports/cxd56/README
|
../ports/cxd56/README
|
||||||
|
1
extmod/ulab
Submodule
1
extmod/ulab
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit a746bd8e0953853056ee405e2fa02c8ebca4fb79
|
@ -345,14 +345,21 @@ STATIC mp_obj_t fat_vfs_stat(mp_obj_t vfs_in, mp_obj_t path_in) {
|
|||||||
} else {
|
} else {
|
||||||
mode |= MP_S_IFREG;
|
mode |= MP_S_IFREG;
|
||||||
}
|
}
|
||||||
mp_uint_t seconds = timeutils_seconds_since_epoch(
|
#if MICROPY_LONGINT_IMPL == MICROPY_LONGINT_IMPL_NONE
|
||||||
1980 + ((fno.fdate >> 9) & 0x7f),
|
// On non-longint builds, the number of seconds since 1970 (epoch) is too
|
||||||
(fno.fdate >> 5) & 0x0f,
|
// large to fit in a smallint, so just return 31-DEC-1999 (0).
|
||||||
fno.fdate & 0x1f,
|
mp_obj_t seconds = MP_OBJ_NEW_SMALL_INT(946684800);
|
||||||
(fno.ftime >> 11) & 0x1f,
|
#else
|
||||||
(fno.ftime >> 5) & 0x3f,
|
mp_obj_t seconds = mp_obj_new_int_from_uint(
|
||||||
2 * (fno.ftime & 0x1f)
|
timeutils_seconds_since_epoch(
|
||||||
);
|
1980 + ((fno.fdate >> 9) & 0x7f),
|
||||||
|
(fno.fdate >> 5) & 0x0f,
|
||||||
|
fno.fdate & 0x1f,
|
||||||
|
(fno.ftime >> 11) & 0x1f,
|
||||||
|
(fno.ftime >> 5) & 0x3f,
|
||||||
|
2 * (fno.ftime & 0x1f)
|
||||||
|
));
|
||||||
|
#endif
|
||||||
t->items[0] = MP_OBJ_NEW_SMALL_INT(mode); // st_mode
|
t->items[0] = MP_OBJ_NEW_SMALL_INT(mode); // st_mode
|
||||||
t->items[1] = MP_OBJ_NEW_SMALL_INT(0); // st_ino
|
t->items[1] = MP_OBJ_NEW_SMALL_INT(0); // st_ino
|
||||||
t->items[2] = MP_OBJ_NEW_SMALL_INT(0); // st_dev
|
t->items[2] = MP_OBJ_NEW_SMALL_INT(0); // st_dev
|
||||||
@ -360,9 +367,9 @@ STATIC mp_obj_t fat_vfs_stat(mp_obj_t vfs_in, mp_obj_t path_in) {
|
|||||||
t->items[4] = MP_OBJ_NEW_SMALL_INT(0); // st_uid
|
t->items[4] = MP_OBJ_NEW_SMALL_INT(0); // st_uid
|
||||||
t->items[5] = MP_OBJ_NEW_SMALL_INT(0); // st_gid
|
t->items[5] = MP_OBJ_NEW_SMALL_INT(0); // st_gid
|
||||||
t->items[6] = mp_obj_new_int_from_uint(fno.fsize); // st_size
|
t->items[6] = mp_obj_new_int_from_uint(fno.fsize); // st_size
|
||||||
t->items[7] = mp_obj_new_int_from_uint(seconds); // st_atime
|
t->items[7] = seconds; // st_atime
|
||||||
t->items[8] = mp_obj_new_int_from_uint(seconds); // st_mtime
|
t->items[8] = seconds; // st_mtime
|
||||||
t->items[9] = mp_obj_new_int_from_uint(seconds); // st_ctime
|
t->items[9] = seconds; // st_ctime
|
||||||
|
|
||||||
return MP_OBJ_FROM_PTR(t);
|
return MP_OBJ_FROM_PTR(t);
|
||||||
}
|
}
|
||||||
|
1
frozen/Adafruit_CircuitPython_ESP32SPI
Submodule
1
frozen/Adafruit_CircuitPython_ESP32SPI
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit f523b2316bc3e25220b88c5435868c6a5880dfab
|
1
frozen/Adafruit_CircuitPython_Register
Submodule
1
frozen/Adafruit_CircuitPython_Register
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit c525eedeb0d20c9829febfbf621eab707da71f8a
|
1
frozen/Adafruit_CircuitPython_Requests
Submodule
1
frozen/Adafruit_CircuitPython_Requests
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit e8a759719e94c69a01f9e07d418ca6db39114db3
|
@ -24,6 +24,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "fdlibm.h"
|
#include "fdlibm.h"
|
||||||
|
#pragma GCC diagnostic ignored "-Wfloat-equal"
|
||||||
|
|
||||||
#define __ieee754_logf logf
|
#define __ieee754_logf logf
|
||||||
|
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
|
|
||||||
#include "libm.h"
|
#include "libm.h"
|
||||||
|
|
||||||
|
#pragma GCC diagnostic ignored "-Wfloat-equal"
|
||||||
|
|
||||||
static const float
|
static const float
|
||||||
ln2_hi = 6.9313812256e-01, /* 0x3f317180 */
|
ln2_hi = 6.9313812256e-01, /* 0x3f317180 */
|
||||||
ln2_lo = 9.0580006145e-06, /* 0x3717f7d1 */
|
ln2_lo = 9.0580006145e-06, /* 0x3717f7d1 */
|
||||||
|
@ -50,6 +50,9 @@ float copysignf(float x, float y) {
|
|||||||
|
|
||||||
static const float _M_LN10 = 2.30258509299404; // 0x40135d8e
|
static const float _M_LN10 = 2.30258509299404; // 0x40135d8e
|
||||||
float log10f(float x) { return logf(x) / (float)_M_LN10; }
|
float log10f(float x) { return logf(x) / (float)_M_LN10; }
|
||||||
|
#undef _M_LN2
|
||||||
|
static const float _M_LN2 = 0.6931472;
|
||||||
|
float log2f(float x) { return logf(x) / (float)_M_LN2; }
|
||||||
|
|
||||||
float tanhf(float x) {
|
float tanhf(float x) {
|
||||||
if (isinf(x)) {
|
if (isinf(x)) {
|
||||||
|
@ -206,7 +206,7 @@ int readline_process_char(int c) {
|
|||||||
redraw_step_forward = compl_len;
|
redraw_step_forward = compl_len;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
} else if (32 <= c && c <= 126) {
|
} else if (32 <= c ) {
|
||||||
// printable character
|
// printable character
|
||||||
vstr_ins_char(rl.line, rl.cursor_pos, c);
|
vstr_ins_char(rl.line, rl.cursor_pos, c);
|
||||||
// set redraw parameters
|
// set redraw parameters
|
||||||
|
@ -3382,11 +3382,7 @@ FRESULT f_read (
|
|||||||
if (!sect) ABORT(fs, FR_INT_ERR);
|
if (!sect) ABORT(fs, FR_INT_ERR);
|
||||||
sect += csect;
|
sect += csect;
|
||||||
cc = btr / SS(fs); /* When remaining bytes >= sector size, */
|
cc = btr / SS(fs); /* When remaining bytes >= sector size, */
|
||||||
if (cc
|
if (cc) {/* Read maximum contiguous sectors directly */
|
||||||
#if _FS_DISK_READ_ALIGNED
|
|
||||||
&& (((int)rbuff & 3) == 0)
|
|
||||||
#endif
|
|
||||||
) {/* Read maximum contiguous sectors directly */
|
|
||||||
if (csect + cc > fs->csize) { /* Clip at cluster boundary */
|
if (csect + cc > fs->csize) { /* Clip at cluster boundary */
|
||||||
cc = fs->csize - csect;
|
cc = fs->csize - csect;
|
||||||
}
|
}
|
||||||
|
@ -343,12 +343,6 @@
|
|||||||
/ SemaphoreHandle_t and etc.. A header file for O/S definitions needs to be
|
/ SemaphoreHandle_t and etc.. A header file for O/S definitions needs to be
|
||||||
/ included somewhere in the scope of ff.h. */
|
/ included somewhere in the scope of ff.h. */
|
||||||
|
|
||||||
// Set to nonzero if buffers passed to disk_read have a word alignment
|
|
||||||
// restriction
|
|
||||||
#ifndef _FS_DISK_READ_ALIGNED
|
|
||||||
#define _FS_DISK_READ_ALIGNED 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* #include <windows.h> // O/S definitions */
|
/* #include <windows.h> // O/S definitions */
|
||||||
|
|
||||||
|
|
||||||
|
1
lib/protomatter
Submodule
1
lib/protomatter
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit c411714cbdc05725e80398acb18c3c1fb6fa68a4
|
455
locale/ID.po
455
locale/ID.po
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
455
locale/de_DE.po
455
locale/de_DE.po
File diff suppressed because it is too large
Load Diff
455
locale/en_US.po
455
locale/en_US.po
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
455
locale/es.po
455
locale/es.po
File diff suppressed because it is too large
Load Diff
455
locale/fil.po
455
locale/fil.po
File diff suppressed because it is too large
Load Diff
455
locale/fr.po
455
locale/fr.po
File diff suppressed because it is too large
Load Diff
455
locale/it_IT.po
455
locale/it_IT.po
File diff suppressed because it is too large
Load Diff
455
locale/ko.po
455
locale/ko.po
File diff suppressed because it is too large
Load Diff
455
locale/pl.po
455
locale/pl.po
File diff suppressed because it is too large
Load Diff
455
locale/pt_BR.po
455
locale/pt_BR.po
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1
mpy-cross/.gitignore
vendored
1
mpy-cross/.gitignore
vendored
@ -3,4 +3,5 @@
|
|||||||
/mpy-cross.static
|
/mpy-cross.static
|
||||||
/mpy-cross.static.exe
|
/mpy-cross.static.exe
|
||||||
/mpy-cross.static-raspbian
|
/mpy-cross.static-raspbian
|
||||||
|
/mpy-cross.fuzz
|
||||||
/pitools
|
/pitools
|
||||||
|
6
mpy-cross/Makefile.fuzz
Normal file
6
mpy-cross/Makefile.fuzz
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
PROG=mpy-cross.fuzz
|
||||||
|
BUILD=build-static
|
||||||
|
STATIC_BUILD=1
|
||||||
|
CC=afl-clang-fast
|
||||||
|
include mpy-cross.mk
|
@ -11,6 +11,7 @@ CircuitPython. Supported boards include:
|
|||||||
- Adafruit M0 Bluefruit LE
|
- Adafruit M0 Bluefruit LE
|
||||||
- Arduino Zero
|
- Arduino Zero
|
||||||
- Arduino MKR Zero
|
- Arduino MKR Zero
|
||||||
|
- Arduino Nano 33 IoT
|
||||||
|
|
||||||
|
|
||||||
Pinout
|
Pinout
|
||||||
@ -22,51 +23,51 @@ different names. The table below matches the pin order in
|
|||||||
and omits the pins only available on the largest package because all supported
|
and omits the pins only available on the largest package because all supported
|
||||||
boards use smaller version.
|
boards use smaller version.
|
||||||
|
|
||||||
===================== =================== =============== =========================== ====================== ================ ================== ========================= ================ ================================ ====================== ================
|
===================== =================== =================== =============== =========================== ====================== ================ ================== ========================= ================ ================================ ====================== ================
|
||||||
`microcontroller.pin` `board`
|
`microcontroller.pin` `board`
|
||||||
--------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
--------------------- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
Datasheet arduino_mkrzero arduino_zero circuitplayground_express feather_m0_adalogger feather_m0_basic feather_m0_express gemma_m0 metro_m0_express sparkfun_samd21_mini sparkfun_samd21_dev trinket_m0
|
Datasheet arduino_mkrzero arduino_nano_33_iot arduino_zero circuitplayground_express feather_m0_adalogger feather_m0_basic feather_m0_express gemma_m0 metro_m0_express sparkfun_samd21_mini sparkfun_samd21_dev trinket_m0
|
||||||
===================== =================== =============== =========================== ====================== ================ ================== ========================= ================ ================================ ====================== ================
|
===================== =================== =================== =============== =========================== ====================== ================ ================== ========================= ================ ================================ ====================== ================
|
||||||
PA00 ``ACCELEROMETER_SDA`` ``APA102_MOSI`` ``APA102_MOSI``
|
PA00 ``ACCELEROMETER_SDA`` ``APA102_MOSI`` ``APA102_MOSI``
|
||||||
PA01 ``ACCELEROMETER_SCL`` ``APA102_SCK`` ``APA102_SCK``
|
PA01 ``ACCELEROMETER_SCL`` ``APA102_SCK`` ``APA102_SCK``
|
||||||
PA02 ``A0`` ``A0`` ``A0`` / ``SPEAKER`` ``A0`` ``A0`` ``A0`` ``A0`` / ``D1`` ``A0`` ``A0`` ``A0`` ``D1`` / ``A0``
|
PA02 ``A0`` ``A0`` ``A0`` ``A0`` / ``SPEAKER`` ``A0`` ``A0`` ``A0`` ``A0`` / ``D1`` ``A0`` ``A0`` ``A0`` ``D1`` / ``A0``
|
||||||
PA03
|
PA03
|
||||||
PB08 ``L`` ``A1`` ``A7`` / ``TX`` ``A1`` ``A1`` ``A1`` ``A1`` ``A1`` ``A1``
|
PB08 ``L`` ``A4`` / ``SDA`` ``A1`` ``A7`` / ``TX`` ``A1`` ``A1`` ``A1`` ``A1`` ``A1`` ``A1``
|
||||||
PB09 ``BATTERY`` ``A2`` ``A6`` / ``RX`` ``A2`` ``A2`` ``A2`` ``A2`` ``A2`` ``A2``
|
PB09 ``BATTERY`` ``A5`` / ``SCL`` ``A2`` ``A6`` / ``RX`` ``A2`` ``A2`` ``A2`` ``A2`` ``A2`` ``A2``
|
||||||
PA04 ``A3`` ``A3`` ``IR_PROXIMITY`` ``A3`` ``A3`` ``A3`` ``D0`` / ``TX`` / ``SDA`` ``A3`` ``A3`` ``A3``
|
PA04 ``A3`` ``D6`` ``A3`` ``IR_PROXIMITY`` ``A3`` ``A3`` ``A3`` ``D0`` / ``TX`` / ``SDA`` ``A3`` ``A3`` ``A3``
|
||||||
PA05 ``A4`` ``A4`` ``A1`` ``A4`` ``A4`` ``A4`` ``D2`` / ``RX`` / ``SCL`` ``A4`` ``A4``
|
PA05 ``A4`` ``D5`` ``A4`` ``A1`` ``A4`` ``A4`` ``A4`` ``D2`` / ``RX`` / ``SCL`` ``A4`` ``A4``
|
||||||
PA06 ``A5`` ``D8`` ``A2`` ``D8`` / ``GREEN_LED`` ``NEOPIXEL`` ``D8`` ``D8`` ``D8`` ``D4`` / ``TX``
|
PA06 ``A5`` ``D7`` ``D8`` ``A2`` ``D8`` / ``GREEN_LED`` ``NEOPIXEL`` ``D8`` ``D8`` ``D8`` ``D4`` / ``TX``
|
||||||
PA07 ``A6`` ``D9`` ``A3`` ``D9`` ``D9`` ``D9`` ``D9`` ``D9`` ``D9`` ``D3`` / ``RX``
|
PA07 ``A6`` ``D4`` ``D9`` ``A3`` ``D9`` ``D9`` ``D9`` ``D9`` ``D9`` ``D9`` ``D3`` / ``RX``
|
||||||
PA08 ``D11`` / ``SDA`` ``D4`` ``MICROPHONE_DO`` ``D4`` / ``SD_CS`` ``D4`` ``D4`` ``D4`` ``D0`` / ``SDA``
|
PA08 ``D11`` / ``SDA`` ``ESP_RESET`` ``D4`` ``MICROPHONE_DO`` ``D4`` / ``SD_CS`` ``D4`` ``D4`` ``D4`` ``D0`` / ``SDA``
|
||||||
PA09 ``D12`` / ``SCL`` ``D3`` ``TEMPERATURE`` / ``A9`` ``D3`` ``D3`` ``D3`` ``D2`` / ``SCL``
|
PA09 ``D12`` / ``SCL`` ``A6`` ``D3`` ``TEMPERATURE`` / ``A9`` ``D3`` ``D3`` ``D3`` ``D2`` / ``SCL``
|
||||||
PA10 ``D2`` ``D1`` / ``TX`` ``MICROPHONE_SCK`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D13``
|
PA10 ``D2`` ``A3`` ``D1`` / ``TX`` ``MICROPHONE_SCK`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D1`` / ``TX`` ``D13``
|
||||||
PA11 ``D3`` ``D0`` / ``RX`` ``LIGHT`` / ``A8`` ``D0`` / ``RX`` ``D0`` / ``RX`` ``D0`` / ``RX`` ``D0`` / ``RX`` ``D0`` / ``RX`` ``D0`` / ``RX``
|
PA11 ``D3`` ``A2`` ``D0`` / ``RX`` ``LIGHT`` / ``A8`` ``D0`` / ``RX`` ``D0`` / ``RX`` ``D0`` / ``RX`` ``D0`` / ``RX`` ``D0`` / ``RX`` ``D0`` / ``RX``
|
||||||
PB10 ``D4`` ``MOSI`` ``MOSI`` ``MOSI`` ``MOSI`` ``MOSI`` ``MOSI``
|
PB10 ``D4`` ``D2`` ``MOSI`` ``MOSI`` ``MOSI`` ``MOSI`` ``MOSI`` ``MOSI``
|
||||||
PB11 ``D5`` ``SCK`` ``SCK`` ``SCK`` ``SCK`` ``SCK`` ``SCK``
|
PB11 ``D5`` ``D3`` ``SCK`` ``SCK`` ``SCK`` ``SCK`` ``SCK`` ``SCK``
|
||||||
PA12 ``SD_MOSI`` ``MISO`` ``REMOTEIN`` / ``IR_RX`` ``MISO`` ``MISO`` ``MISO`` ``MISO`` ``MISO``
|
PA12 ``SD_MOSI`` ``ESP_MOSI`` ``MISO`` ``REMOTEIN`` / ``IR_RX`` ``MISO`` ``MISO`` ``MISO`` ``MISO`` ``MISO``
|
||||||
PA13 ``SD_SCK`` ``ACCELEROMETER_INTERRUPT`` ``FLASH_CS`` ``D38``
|
PA13 ``SD_SCK`` ``ESP_MISO`` ``ACCELEROMETER_INTERRUPT`` ``FLASH_CS`` ``D38``
|
||||||
PA14 ``SD_CS`` ``D2`` ``BUTTON_B`` / ``D5`` ``D2`` ``D2`` ``D2``
|
PA14 ``SD_CS`` ``ESP_CS`` ``D2`` ``BUTTON_B`` / ``D5`` ``D2`` ``D2`` ``D2``
|
||||||
PA15 ``SD_MISO`` ``D5`` ``SLIDE_SWITCH`` / ``D7`` ``D5`` ``D5`` ``D5`` ``D5`` ``D5`` ``D5``
|
PA15 ``SD_MISO`` ``ESP_SCK`` ``D5`` ``SLIDE_SWITCH`` / ``D7`` ``D5`` ``D5`` ``D5`` ``D5`` ``D5`` ``D5``
|
||||||
PA16 ``D8`` / ``MOSI`` ``D11`` ``MISO`` ``D11`` ``D11`` ``D11`` ``D11`` ``D11`` / ``MOSI`` ``D11``
|
PA16 ``D8`` / ``MOSI`` ``D11`` / ``MOSI`` ``D11`` ``MISO`` ``D11`` ``D11`` ``D11`` ``D11`` ``D11`` / ``MOSI`` ``D11``
|
||||||
PA17 ``D9`` / ``SCK`` ``D13`` ``D13`` ``D13`` / ``RED_LED`` ``D13`` ``D13`` ``D13`` ``D13`` / ``SCK`` / ``BLUE_LED`` ``D13`` / ``BLUE_LED``
|
PA17 ``D9`` / ``SCK`` ``D13`` / ``SCK`` ``D13`` ``D13`` ``D13`` / ``RED_LED`` ``D13`` ``D13`` ``D13`` ``D13`` / ``SCK`` / ``BLUE_LED`` ``D13`` / ``BLUE_LED``
|
||||||
PA18 ``D10`` ``D10`` ``D10`` ``D10`` ``D10`` ``D10`` ``D10``
|
PA18 ``D8`` ``D10`` ``D10`` ``D10`` ``D10`` ``D10`` ``D10`` ``D10``
|
||||||
PA19 ``D10`` / ``MISO`` ``D12`` ``D12`` ``D12`` ``D12`` ``D12`` ``D12`` / ``MISO`` ``D12``
|
PA19 ``D10`` / ``MISO`` ``D12`` / ``MISO`` ``D12`` ``D12`` ``D12`` ``D12`` ``D12`` ``D12`` / ``MISO`` ``D12``
|
||||||
PA20 ``D6`` ``D6`` ``MOSI`` ``D6`` ``D6`` ``D6`` ``D6`` ``D6`` ``D6``
|
PA20 ``D6`` ``D9`` ``D6`` ``MOSI`` ``D6`` ``D6`` ``D6`` ``D6`` ``D6`` ``D6``
|
||||||
PA21 ``D7`` ``D7`` ``SCK`` ``D7`` / ``SD_CD`` ``D7`` ``D7`` ``D7``
|
PA21 ``D7`` ``D10`` ``D7`` ``SCK`` ``D7`` / ``SD_CD`` ``D7`` ``D7`` ``D7``
|
||||||
PA22 ``D0`` ``SDA`` ``SDA`` ``SDA`` ``SDA`` ``SDA`` ``SDA`` ``SDA``
|
PA22 ``D0`` ``ESP_TX`` ``SDA`` ``SDA`` ``SDA`` ``SDA`` ``SDA`` ``SDA`` ``SDA``
|
||||||
PA23 ``D1`` ``SCL`` ``REMOTEOUT`` / ``IR_TX`` ``SCL`` ``SCL`` ``SCL`` ``L`` / ``D13`` ``SCL`` ``SCL`` ``SCL``
|
PA23 ``D1`` ``ESP_RX`` ``SCL`` ``REMOTEOUT`` / ``IR_TX`` ``SCL`` ``SCL`` ``SCL`` ``L`` / ``D13`` ``SCL`` ``SCL`` ``SCL``
|
||||||
PA24
|
PA24
|
||||||
PA25
|
PA25
|
||||||
PB22 ``D14`` / ``TX`` ``FLASH_CS`` ``D30`` / ``TX1``
|
PB22 ``D14`` / ``TX`` ``D1`` / ``TX`` ``FLASH_CS`` ``D30`` / ``TX1``
|
||||||
PB23 ``D13`` / ``RX`` ``NEOPIXEL`` / ``D8`` ``D31`` / ``RX1``
|
PB23 ``D13`` / ``RX`` ``D0`` / ``RX`` ``NEOPIXEL`` / ``D8`` ``D31`` / ``RX1``
|
||||||
PA27 ``SD_CD`` ``GREEN_LED`` ``GREEN_LED``
|
PA27 ``SD_CD`` ``ESP_GPIO0`` ``GREEN_LED`` ``GREEN_LED``
|
||||||
PA28 ``BUTTON_A`` / ``D4``
|
PA28 ``ESP_BUSY`` ``BUTTON_A`` / ``D4``
|
||||||
PA29
|
PA29
|
||||||
PA30 ``SPEAKER_ENABLE`` ``NEOPIXEL``
|
PA30 ``SPEAKER_ENABLE`` ``NEOPIXEL``
|
||||||
PA31
|
PA31
|
||||||
PB02 ``A1`` ``A5`` ``A5`` / ``SDA`` ``A5`` ``A5`` ``A5`` ``A5`` ``A5``
|
PB02 ``A1`` ``A1`` ``A5`` ``A5`` / ``SDA`` ``A5`` ``A5`` ``A5`` ``A5`` ``A5``
|
||||||
PB03 ``A2`` ``A4`` / ``SCL`` ``YELLOW_LED`` ``YELLOW_LED``
|
PB03 ``A2`` ``A7`` ``A4`` / ``SCL`` ``YELLOW_LED`` ``YELLOW_LED``
|
||||||
===================== =================== =============== =========================== ====================== ================ ================== ========================= ================ ================================ ====================== ================
|
===================== =================== =================== =============== =========================== ====================== ================ ================== ========================= ================ ================================ ====================== ================
|
||||||
|
|
||||||
Here is a table about which pins can do what in CircuitPython terms. However,
|
Here is a table about which pins can do what in CircuitPython terms. However,
|
||||||
just because something is listed, doesn't mean it will always work. Existing use
|
just because something is listed, doesn't mean it will always work. Existing use
|
||||||
|
37
ports/atmel-samd/boards/8086_commander/board.c
Normal file
37
ports/atmel-samd/boards/8086_commander/board.c
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "boards/board.h"
|
||||||
|
|
||||||
|
void board_init(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool board_requests_safe_mode(void) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset_board(void) {
|
||||||
|
}
|
28
ports/atmel-samd/boards/8086_commander/mpconfigboard.h
Normal file
28
ports/atmel-samd/boards/8086_commander/mpconfigboard.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#define MICROPY_HW_BOARD_NAME "8086 Commander"
|
||||||
|
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||||
|
|
||||||
|
#define BOARD_HAS_CRYSTAL 0
|
||||||
|
#define CALIBRATE_CRYSTALLESS 1
|
||||||
|
|
||||||
|
#define MICROPY_HW_LED_STATUS (&pin_PA06)
|
||||||
|
|
||||||
|
#define MICROPY_PORT_A (0)
|
||||||
|
#define MICROPY_PORT_B (0)
|
||||||
|
#define MICROPY_PORT_C (0)
|
||||||
|
|
||||||
|
// USB is always used internally so skip the pin objects for it.
|
||||||
|
#define IGNORE_PIN_PA24 1
|
||||||
|
#define IGNORE_PIN_PA25 1
|
||||||
|
|
||||||
|
#define DEFAULT_I2C_BUS_SCL (&pin_PA23)
|
||||||
|
#define DEFAULT_I2C_BUS_SDA (&pin_PA22)
|
||||||
|
|
||||||
|
#define SPI_FLASH_BAUDRATE (8000000)
|
||||||
|
|
||||||
|
#define SPI_FLASH_MISO_PIN &pin_PA19
|
||||||
|
#define SPI_FLASH_MOSI_PIN &pin_PA16
|
||||||
|
#define SPI_FLASH_SCK_PIN &pin_PA17
|
||||||
|
#define SPI_FLASH_CS_PIN &pin_PA18
|
||||||
|
|
||||||
|
#define DEFAULT_UART_BUS_RX (&pin_PA11)
|
||||||
|
#define DEFAULT_UART_BUS_TX (&pin_PA10)
|
26
ports/atmel-samd/boards/8086_commander/mpconfigboard.mk
Normal file
26
ports/atmel-samd/boards/8086_commander/mpconfigboard.mk
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
USB_VID = 0x3171
|
||||||
|
USB_PID = 0x0101
|
||||||
|
USB_PRODUCT = "Commander"
|
||||||
|
USB_MANUFACTURER = "8086 Consultancy"
|
||||||
|
|
||||||
|
USB_DEVICES= "CDC,MSC,HID"
|
||||||
|
|
||||||
|
CHIP_VARIANT = SAMD21G18A
|
||||||
|
CHIP_FAMILY = samd21
|
||||||
|
|
||||||
|
SPI_FLASH_FILESYSTEM = 1
|
||||||
|
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||||
|
EXTERNAL_FLASH_DEVICES = "W25Q128JV_SQ"
|
||||||
|
|
||||||
|
LONGINT_IMPL = NONE
|
||||||
|
CIRCUITPY_SMALL_BUILD = 1
|
||||||
|
|
||||||
|
SUPEROPT_GC = 0
|
||||||
|
|
||||||
|
CFLAGS_INLINE_LIMIT = 60
|
||||||
|
|
||||||
|
# Include these Python libraries in firmware.
|
||||||
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
||||||
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_HID
|
||||||
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SD
|
||||||
|
#FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_ADXL34x
|
63
ports/atmel-samd/boards/8086_commander/pins.c
Normal file
63
ports/atmel-samd/boards/8086_commander/pins.c
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
#include "shared-bindings/board/__init__.h"
|
||||||
|
|
||||||
|
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||||
|
|
||||||
|
// Serial
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA11) }, // RX
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA11) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA10) }, // TX
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA10) },
|
||||||
|
|
||||||
|
// Buttons
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA20) }, // 1
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_B1), MP_ROM_PTR(&pin_PA20) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA09) }, // 2
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_B2), MP_ROM_PTR(&pin_PA09) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PB09) }, // 3
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_B3), MP_ROM_PTR(&pin_PB09) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PA02) }, // 4
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_B4), MP_ROM_PTR(&pin_PA02) },
|
||||||
|
|
||||||
|
// SD Card / SPI
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA13) }, // CS
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_CS), MP_ROM_PTR(&pin_PA13) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PB10) }, // MOSI
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PB10) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PB11) }, // SCK
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB11) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA12) }, // MISO
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PA12) },
|
||||||
|
|
||||||
|
// LED
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA15) }, // 1A
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_LED1A), MP_ROM_PTR(&pin_PA15) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA14) }, // 1B
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_LED1B), MP_ROM_PTR(&pin_PA14) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA08) }, // 2A
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_LED2A), MP_ROM_PTR(&pin_PA08) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PA07) }, // 2B
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_LED2B), MP_ROM_PTR(&pin_PA07) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_PA06) }, // ALERT
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_ALERT), MP_ROM_PTR(&pin_PA06) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_PA05) }, // 3A
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_LED3A), MP_ROM_PTR(&pin_PA05) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_PA04) }, // 3B
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_LED3B), MP_ROM_PTR(&pin_PA04) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_PB02) }, // 4A
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_LED4A), MP_ROM_PTR(&pin_PB02) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_PB03) }, // 4B
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_LED4B), MP_ROM_PTR(&pin_PB03) },
|
||||||
|
|
||||||
|
// Accelerometer / I2C
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_PA23) }, // SCL
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA23) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D20), MP_ROM_PTR(&pin_PA22) }, // SDA
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA22) },
|
||||||
|
|
||||||
|
// Comm objects
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
|
||||||
|
|
||||||
|
};
|
||||||
|
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
|
40
ports/atmel-samd/boards/arduino_nano_33_iot/board.c
Normal file
40
ports/atmel-samd/boards/arduino_nano_33_iot/board.c
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "boards/board.h"
|
||||||
|
#include "mpconfigboard.h"
|
||||||
|
#include "hal/include/hal_gpio.h"
|
||||||
|
|
||||||
|
void board_init(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool board_requests_safe_mode(void) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset_board(void) {
|
||||||
|
}
|
22
ports/atmel-samd/boards/arduino_nano_33_iot/mpconfigboard.h
Normal file
22
ports/atmel-samd/boards/arduino_nano_33_iot/mpconfigboard.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#define MICROPY_HW_BOARD_NAME "Arduino Nano 33 IoT"
|
||||||
|
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||||
|
|
||||||
|
#define MICROPY_HW_LED_STATUS (&pin_PA17)
|
||||||
|
|
||||||
|
#define MICROPY_PORT_A (0)
|
||||||
|
#define MICROPY_PORT_B (0)
|
||||||
|
#define MICROPY_PORT_C (0)
|
||||||
|
|
||||||
|
#define DEFAULT_I2C_BUS_SCL (&pin_PB09)
|
||||||
|
#define DEFAULT_I2C_BUS_SDA (&pin_PB08)
|
||||||
|
|
||||||
|
#define DEFAULT_SPI_BUS_SCK (&pin_PA17)
|
||||||
|
#define DEFAULT_SPI_BUS_MOSI (&pin_PA16)
|
||||||
|
#define DEFAULT_SPI_BUS_MISO (&pin_PA19)
|
||||||
|
|
||||||
|
#define DEFAULT_UART_BUS_RX (&pin_PB23)
|
||||||
|
#define DEFAULT_UART_BUS_TX (&pin_PB22)
|
||||||
|
|
||||||
|
// USB is always used internally so skip the pin objects for it.
|
||||||
|
#define IGNORE_PIN_PA24 1
|
||||||
|
#define IGNORE_PIN_PA25 1
|
13
ports/atmel-samd/boards/arduino_nano_33_iot/mpconfigboard.mk
Normal file
13
ports/atmel-samd/boards/arduino_nano_33_iot/mpconfigboard.mk
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
USB_VID = 0x2341
|
||||||
|
USB_PID = 0x8057
|
||||||
|
USB_PRODUCT = "Arduino Nano 33 IoT"
|
||||||
|
USB_MANUFACTURER = "Arduino"
|
||||||
|
|
||||||
|
CHIP_VARIANT = SAMD21G18A
|
||||||
|
CHIP_FAMILY = samd21
|
||||||
|
|
||||||
|
INTERNAL_FLASH_FILESYSTEM = 1
|
||||||
|
LONGINT_IMPL = NONE
|
||||||
|
CIRCUITPY_SMALL_BUILD = 1
|
||||||
|
|
||||||
|
SUPEROPT_GC = 0
|
49
ports/atmel-samd/boards/arduino_nano_33_iot/pins.c
Normal file
49
ports/atmel-samd/boards/arduino_nano_33_iot/pins.c
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
#include "shared-bindings/board/__init__.h"
|
||||||
|
|
||||||
|
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PB02) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PA11) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA10) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PB08) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PB08) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PB09) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PB09) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_PA09) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_PB03) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PB23) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PB23) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PB22) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PB22) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PB10) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PB11) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PA07) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PA05) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA04) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PA06) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PA18) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA20) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA21) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA16) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PA16) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA19) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PA19) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PA17) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PA17) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
|
||||||
|
|
||||||
|
// NINA-W102
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_RESET), MP_ROM_PTR(&pin_PA08) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_MOSI), MP_ROM_PTR(&pin_PA12) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_MISO), MP_ROM_PTR(&pin_PA13) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_CS), MP_ROM_PTR(&pin_PA14) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_SCK), MP_ROM_PTR(&pin_PA15) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_TX), MP_ROM_PTR(&pin_PA22) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_RX), MP_ROM_PTR(&pin_PA23) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_GPIO0), MP_ROM_PTR(&pin_PA27) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_BUSY), MP_ROM_PTR(&pin_PA28) },
|
||||||
|
};
|
||||||
|
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
|
48
ports/atmel-samd/boards/bdmicro_vina_m0/board.c
Normal file
48
ports/atmel-samd/boards/bdmicro_vina_m0/board.c
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "boards/board.h"
|
||||||
|
#include "mpconfigboard.h"
|
||||||
|
|
||||||
|
void board_init(void)
|
||||||
|
{
|
||||||
|
// struct port_config pin_conf;
|
||||||
|
// port_get_config_defaults(&pin_conf);
|
||||||
|
//
|
||||||
|
// pin_conf.direction = PORT_PIN_DIR_OUTPUT;
|
||||||
|
// port_pin_set_config(MICROPY_HW_LED_TX, &pin_conf);
|
||||||
|
// port_pin_set_output_level(MICROPY_HW_LED_TX, true);
|
||||||
|
//
|
||||||
|
// port_pin_set_config(MICROPY_HW_LED_RX, &pin_conf);
|
||||||
|
// port_pin_set_output_level(MICROPY_HW_LED_RX, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool board_requests_safe_mode(void) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset_board(void) {
|
||||||
|
}
|
35
ports/atmel-samd/boards/bdmicro_vina_m0/mpconfigboard.h
Normal file
35
ports/atmel-samd/boards/bdmicro_vina_m0/mpconfigboard.h
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#define MICROPY_HW_BOARD_NAME "BDMICRO Vina M0"
|
||||||
|
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||||
|
|
||||||
|
#define MICROPY_HW_LED_STATUS (&pin_PA28)
|
||||||
|
#define MICROPY_HW_LED_TX &pin_PA27
|
||||||
|
#define MICROPY_HW_LED_RX &pin_PA31
|
||||||
|
|
||||||
|
// Clock rates are off: Salae reads 12MHz which is the limit even though we set it to the safer 8MHz.
|
||||||
|
#define SPI_FLASH_BAUDRATE (8000000)
|
||||||
|
|
||||||
|
#define SPI_FLASH_MOSI_PIN &pin_PB22
|
||||||
|
#define SPI_FLASH_MISO_PIN &pin_PB03
|
||||||
|
#define SPI_FLASH_SCK_PIN &pin_PB23
|
||||||
|
#define SPI_FLASH_CS_PIN &pin_PA13
|
||||||
|
|
||||||
|
// These are pins not to reset.
|
||||||
|
#define MICROPY_PORT_A (0)
|
||||||
|
#define MICROPY_PORT_B (0)
|
||||||
|
#define MICROPY_PORT_C (0)
|
||||||
|
|
||||||
|
#define BOARD_HAS_CRYSTAL 0
|
||||||
|
|
||||||
|
#define DEFAULT_I2C_BUS_SCL (&pin_PA23)
|
||||||
|
#define DEFAULT_I2C_BUS_SDA (&pin_PA22)
|
||||||
|
|
||||||
|
#define DEFAULT_SPI_BUS_SCK (&pin_PB11)
|
||||||
|
#define DEFAULT_SPI_BUS_MOSI (&pin_PB10)
|
||||||
|
#define DEFAULT_SPI_BUS_MISO (&pin_PA12)
|
||||||
|
|
||||||
|
#define DEFAULT_UART_BUS_RX (&pin_PA11)
|
||||||
|
#define DEFAULT_UART_BUS_TX (&pin_PA10)
|
||||||
|
|
||||||
|
// USB is always used internally so skip the pin objects for it.
|
||||||
|
#define IGNORE_PIN_PA24 1
|
||||||
|
#define IGNORE_PIN_PA25 1
|
18
ports/atmel-samd/boards/bdmicro_vina_m0/mpconfigboard.mk
Normal file
18
ports/atmel-samd/boards/bdmicro_vina_m0/mpconfigboard.mk
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
USB_VID = 0x31e2
|
||||||
|
USB_PID = 0x2002
|
||||||
|
USB_PRODUCT = "Vina M0"
|
||||||
|
USB_MANUFACTURER = "BDMICRO LLC"
|
||||||
|
|
||||||
|
CHIP_VARIANT = SAMD21G18A
|
||||||
|
CHIP_FAMILY = samd21
|
||||||
|
|
||||||
|
SPI_FLASH_FILESYSTEM = 1
|
||||||
|
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||||
|
EXTERNAL_FLASH_DEVICES = "MX25L51245G"
|
||||||
|
LONGINT_IMPL = MPZ
|
||||||
|
|
||||||
|
CIRCUITPY_BITBANGIO = 0
|
||||||
|
CIRCUITPY_I2CSLAVE = 0
|
||||||
|
|
||||||
|
CFLAGS_INLINE_LIMIT = 60
|
||||||
|
SUPEROPT_GC = 0
|
39
ports/atmel-samd/boards/bdmicro_vina_m0/pins.c
Normal file
39
ports/atmel-samd/boards/bdmicro_vina_m0/pins.c
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#include "shared-bindings/board/__init__.h"
|
||||||
|
|
||||||
|
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RTC_INT), MP_ROM_PTR(&pin_PA00) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RTC_CLK), MP_ROM_PTR(&pin_PA01) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PB08) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PB09) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA04) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PA05) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PB02) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA11) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA11) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA10) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA10) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA14) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RTC_TS), MP_ROM_PTR(&pin_PA14) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA09) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PA08) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PA15) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA20) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PA21) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PA06) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA07) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA18) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA16) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA19) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PA17) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA22) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA23) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_PGM_LED), MP_ROM_PTR(&pin_PA28) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB11) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PB10) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PA12) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
|
||||||
|
};
|
||||||
|
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
|
40
ports/atmel-samd/boards/circuitbrains_basic_m0/board.c
Executable file
40
ports/atmel-samd/boards/circuitbrains_basic_m0/board.c
Executable file
@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Original work copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||||
|
* Modified work copyright (c) 2019 Kevin Neubauer for Null Byte Labs LLC
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "boards/board.h"
|
||||||
|
#include "mpconfigboard.h"
|
||||||
|
#include "hal/include/hal_gpio.h"
|
||||||
|
|
||||||
|
void board_init(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool board_requests_safe_mode(void) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset_board(void) {
|
||||||
|
}
|
35
ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.h
Executable file
35
ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.h
Executable file
@ -0,0 +1,35 @@
|
|||||||
|
#define MICROPY_HW_BOARD_NAME "CircuitBrains Basic"
|
||||||
|
#define MICROPY_HW_MCU_NAME "samd21e18"
|
||||||
|
|
||||||
|
#define CIRCUITPY_MCU_FAMILY samd21
|
||||||
|
|
||||||
|
#define MICROPY_HW_LED_STATUS (&pin_PA14)
|
||||||
|
|
||||||
|
// On-board flash
|
||||||
|
#define SPI_FLASH_MOSI_PIN &pin_PA16
|
||||||
|
#define SPI_FLASH_MISO_PIN &pin_PA18
|
||||||
|
#define SPI_FLASH_SCK_PIN &pin_PA17
|
||||||
|
#define SPI_FLASH_CS_PIN &pin_PA19
|
||||||
|
|
||||||
|
// These are pins not to reset.
|
||||||
|
#define MICROPY_PORT_A (0)
|
||||||
|
#define MICROPY_PORT_B (0)
|
||||||
|
#define MICROPY_PORT_C (0)
|
||||||
|
|
||||||
|
#define SPI_FLASH_BAUDRATE (8000000)
|
||||||
|
|
||||||
|
#define CALIBRATE_CRYSTALLESS 1
|
||||||
|
|
||||||
|
#define DEFAULT_I2C_BUS_SCL (&pin_PA05)
|
||||||
|
#define DEFAULT_I2C_BUS_SDA (&pin_PA04)
|
||||||
|
|
||||||
|
#define DEFAULT_SPI_BUS_SCK (&pin_PA11)
|
||||||
|
#define DEFAULT_SPI_BUS_MOSI (&pin_PA10)
|
||||||
|
#define DEFAULT_SPI_BUS_MISO (&pin_PA09)
|
||||||
|
|
||||||
|
#define DEFAULT_UART_BUS_RX (&pin_PA07)
|
||||||
|
#define DEFAULT_UART_BUS_TX (&pin_PA06)
|
||||||
|
|
||||||
|
// USB is always used internally so skip the pin objects for it.
|
||||||
|
#define IGNORE_PIN_PA24 1
|
||||||
|
#define IGNORE_PIN_PA25 1
|
16
ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.mk
Executable file
16
ports/atmel-samd/boards/circuitbrains_basic_m0/mpconfigboard.mk
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
USB_VID = 0x04D8
|
||||||
|
USB_PID = 0xEC63
|
||||||
|
USB_PRODUCT = "CircuitBrains Basic"
|
||||||
|
USB_MANUFACTURER = "Kevin Neubauer"
|
||||||
|
|
||||||
|
CHIP_VARIANT = SAMD21E18A
|
||||||
|
CHIP_FAMILY = samd21
|
||||||
|
|
||||||
|
SPI_FLASH_FILESYSTEM = 1
|
||||||
|
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||||
|
EXTERNAL_FLASH_DEVICES = "W25Q32JV_IQ"
|
||||||
|
LONGINT_IMPL = MPZ
|
||||||
|
|
||||||
|
CIRCUITPY_BITBANGIO = 0
|
||||||
|
CIRCUITPY_FREQUENCYIO = 0
|
||||||
|
CIRCUITPY_I2CSLAVE = 0
|
35
ports/atmel-samd/boards/circuitbrains_basic_m0/pins.c
Executable file
35
ports/atmel-samd/boards/circuitbrains_basic_m0/pins.c
Executable file
@ -0,0 +1,35 @@
|
|||||||
|
#include "shared-bindings/board/__init__.h"
|
||||||
|
|
||||||
|
// This mapping only includes functional names because pins broken
|
||||||
|
// out on connectors are labeled with their MCU name available from
|
||||||
|
// microcontroller.pin.
|
||||||
|
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PA06) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA06) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PA07) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA07) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA08) },
|
||||||
|
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA00) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA01) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA28) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA27) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PA23) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PA22) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA15) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PA14) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_STATUS_LED),MP_ROM_PTR(&pin_PA14) },
|
||||||
|
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_SDA),MP_ROM_PTR(&pin_PA04) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCL),MP_ROM_PTR(&pin_PA05) },
|
||||||
|
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCK),MP_ROM_PTR(&pin_PA11) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_MOSI),MP_ROM_PTR(&pin_PA10) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_MISO),MP_ROM_PTR(&pin_PA09) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
|
||||||
|
};
|
||||||
|
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
|
40
ports/atmel-samd/boards/circuitbrains_deluxe_m4/board.c
Executable file
40
ports/atmel-samd/boards/circuitbrains_deluxe_m4/board.c
Executable file
@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Original work copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||||
|
* Modified work copyright (c) 2019 Kevin Neubauer for Null Byte Labs LLC
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "boards/board.h"
|
||||||
|
#include "mpconfigboard.h"
|
||||||
|
#include "hal/include/hal_gpio.h"
|
||||||
|
|
||||||
|
void board_init(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool board_requests_safe_mode(void) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset_board(void) {
|
||||||
|
}
|
32
ports/atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.h
Executable file
32
ports/atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.h
Executable file
@ -0,0 +1,32 @@
|
|||||||
|
#define MICROPY_HW_BOARD_NAME "CircuitBrains Deluxe"
|
||||||
|
#define MICROPY_HW_MCU_NAME "samd51j19"
|
||||||
|
|
||||||
|
#define CIRCUITPY_MCU_FAMILY samd51
|
||||||
|
|
||||||
|
#define MICROPY_HW_LED_STATUS (&pin_PB13)
|
||||||
|
|
||||||
|
// These are pins not to reset.
|
||||||
|
// QSPI Data pins
|
||||||
|
#define MICROPY_PORT_A (PORT_PA08 | PORT_PA09 | PORT_PA10 | PORT_PA11)
|
||||||
|
// QSPI CS, QSPI SCK
|
||||||
|
#define MICROPY_PORT_B (PORT_PB10 | PORT_PB11)
|
||||||
|
#define MICROPY_PORT_C (0)
|
||||||
|
#define MICROPY_PORT_D (0)
|
||||||
|
|
||||||
|
#define AUTORESET_DELAY_MS 500
|
||||||
|
|
||||||
|
#define BOARD_HAS_CRYSTAL 1
|
||||||
|
|
||||||
|
#define DEFAULT_I2C_BUS_SCL (&pin_PB03)
|
||||||
|
#define DEFAULT_I2C_BUS_SDA (&pin_PB02)
|
||||||
|
|
||||||
|
#define DEFAULT_SPI_BUS_SCK (&pin_PA13)
|
||||||
|
#define DEFAULT_SPI_BUS_MOSI (&pin_PA12)
|
||||||
|
#define DEFAULT_SPI_BUS_MISO (&pin_PA14)
|
||||||
|
|
||||||
|
#define DEFAULT_UART_BUS_RX (&pin_PA23)
|
||||||
|
#define DEFAULT_UART_BUS_TX (&pin_PA22)
|
||||||
|
|
||||||
|
// USB is always used internally so skip the pin objects for it.
|
||||||
|
#define IGNORE_PIN_PA24 1
|
||||||
|
#define IGNORE_PIN_PA25 1
|
16
ports/atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.mk
Executable file
16
ports/atmel-samd/boards/circuitbrains_deluxe_m4/mpconfigboard.mk
Executable file
@ -0,0 +1,16 @@
|
|||||||
|
USB_VID = 0x04D8
|
||||||
|
USB_PID = 0xEC64
|
||||||
|
USB_PRODUCT = "CircuitBrains Deluxe"
|
||||||
|
USB_MANUFACTURER = "Kevin Neubauer"
|
||||||
|
|
||||||
|
CHIP_VARIANT = SAMD51J19A
|
||||||
|
CHIP_FAMILY = samd51
|
||||||
|
|
||||||
|
QSPI_FLASH_FILESYSTEM = 1
|
||||||
|
EXTERNAL_FLASH_DEVICE_COUNT = 2
|
||||||
|
EXTERNAL_FLASH_DEVICES = "W25Q64JV_IQ, S25FL064L"
|
||||||
|
LONGINT_IMPL = MPZ
|
||||||
|
|
||||||
|
CIRCUITPY_NETWORK = 1
|
||||||
|
MICROPY_PY_WIZNET5K = 5500
|
||||||
|
CIRCUITPY_PS2IO = 1
|
55
ports/atmel-samd/boards/circuitbrains_deluxe_m4/pins.c
Executable file
55
ports/atmel-samd/boards/circuitbrains_deluxe_m4/pins.c
Executable file
@ -0,0 +1,55 @@
|
|||||||
|
#include "shared-bindings/board/__init__.h"
|
||||||
|
|
||||||
|
// This mapping only includes functional names because pins broken
|
||||||
|
// out on connectors are labeled with their MCU name available from
|
||||||
|
// microcontroller.pin.
|
||||||
|
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PB04) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PB05) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PB06) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PB07) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PB08) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_PB09) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_PA04) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A8), MP_ROM_PTR(&pin_PA05) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A9), MP_ROM_PTR(&pin_PA06) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A10), MP_ROM_PTR(&pin_PA07) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A11), MP_ROM_PTR(&pin_PB00) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A12), MP_ROM_PTR(&pin_PB01) },
|
||||||
|
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA23) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA23) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA22) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA22) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA21) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PA20) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PB17) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PB16) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA19) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PA18) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PA17) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA16) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA15) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PB15) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PB14) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PB13) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_STATUS_LED),MP_ROM_PTR(&pin_PB13) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D14), MP_ROM_PTR(&pin_PB12) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D15), MP_ROM_PTR(&pin_PB31) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_PA27) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D17), MP_ROM_PTR(&pin_PB23) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_PB22) },
|
||||||
|
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_SDA),MP_ROM_PTR(&pin_PB02) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCL),MP_ROM_PTR(&pin_PB03) },
|
||||||
|
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCK),MP_ROM_PTR(&pin_PA13) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_MOSI),MP_ROM_PTR(&pin_PA12) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_MISO),MP_ROM_PTR(&pin_PA14) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
|
||||||
|
};
|
||||||
|
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
|
@ -79,7 +79,9 @@ void board_init(void) {
|
|||||||
&pin_PA28, // Command or data
|
&pin_PA28, // Command or data
|
||||||
&pin_PA01, // Chip select
|
&pin_PA01, // Chip select
|
||||||
&pin_PA27, // Reset
|
&pin_PA27, // Reset
|
||||||
12000000);
|
12000000, // Baudrate
|
||||||
|
0, // Polarity
|
||||||
|
0); // Phase
|
||||||
|
|
||||||
displayio_display_obj_t* display = &displays[0].display;
|
displayio_display_obj_t* display = &displays[0].display;
|
||||||
display->base.type = &displayio_display_type;
|
display->base.type = &displayio_display_type;
|
||||||
@ -95,6 +97,7 @@ void board_init(void) {
|
|||||||
false, // Pixels in a byte share a row. Only used for depth < 8
|
false, // Pixels in a byte share a row. Only used for depth < 8
|
||||||
1, // bytes per cell. Only valid for depths < 8
|
1, // bytes per cell. Only valid for depths < 8
|
||||||
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
||||||
|
true, // reverse_pixels_in_word
|
||||||
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
||||||
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
||||||
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
||||||
@ -108,7 +111,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -49,7 +49,7 @@ uint8_t display_init_sequence[] = {
|
|||||||
|
|
||||||
void board_init(void) {
|
void board_init(void) {
|
||||||
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
|
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
|
||||||
common_hal_busio_spi_construct(spi, &pin_PA01, &pin_PA00, mp_const_none);
|
common_hal_busio_spi_construct(spi, &pin_PA01, &pin_PA00, NULL);
|
||||||
common_hal_busio_spi_never_reset(spi);
|
common_hal_busio_spi_never_reset(spi);
|
||||||
|
|
||||||
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
|
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
|
||||||
@ -59,7 +59,9 @@ void board_init(void) {
|
|||||||
&pin_PB31, // TFT_DC Command or data
|
&pin_PB31, // TFT_DC Command or data
|
||||||
&pin_PA27, // TFT_CS Chip select
|
&pin_PA27, // TFT_CS Chip select
|
||||||
&pin_PB30, // TFT_RST Reset
|
&pin_PB30, // TFT_RST Reset
|
||||||
60000000);
|
60000000, // Baudrate
|
||||||
|
0, // Polarity
|
||||||
|
0); // Phase
|
||||||
|
|
||||||
displayio_display_obj_t* display = &displays[0].display;
|
displayio_display_obj_t* display = &displays[0].display;
|
||||||
display->base.type = &displayio_display_type;
|
display->base.type = &displayio_display_type;
|
||||||
@ -75,6 +77,7 @@ void board_init(void) {
|
|||||||
false, // Pixels in a byte share a row. Only used for depth < 8
|
false, // Pixels in a byte share a row. Only used for depth < 8
|
||||||
1, // bytes per cell. Only valid for depths < 8
|
1, // bytes per cell. Only valid for depths < 8
|
||||||
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
||||||
|
true, // reverse_pixels_in_word
|
||||||
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
||||||
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
||||||
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
||||||
@ -88,7 +91,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -11,7 +11,11 @@ LONGINT_IMPL = MPZ
|
|||||||
|
|
||||||
# Not needed.
|
# Not needed.
|
||||||
CIRCUITPY_AUDIOBUSIO = 0
|
CIRCUITPY_AUDIOBUSIO = 0
|
||||||
|
CIRCUITPY_FRAMEBUFFERIO = 0
|
||||||
CIRCUITPY_DISPLAYIO = 0
|
CIRCUITPY_DISPLAYIO = 0
|
||||||
CIRCUITPY_NETWORK = 0
|
CIRCUITPY_NETWORK = 0
|
||||||
|
CIRCUITPY_PROTOMATTER = 0
|
||||||
CIRCUITPY_PS2IO = 0
|
CIRCUITPY_PS2IO = 0
|
||||||
CIRCUITPY_AUDIOMP3 = 0
|
CIRCUITPY_AUDIOMP3 = 0
|
||||||
|
|
||||||
|
CIRCUITPY_ULAB = 0
|
||||||
|
@ -10,3 +10,5 @@ QSPI_FLASH_FILESYSTEM = 1
|
|||||||
EXTERNAL_FLASH_DEVICE_COUNT = 3
|
EXTERNAL_FLASH_DEVICE_COUNT = 3
|
||||||
EXTERNAL_FLASH_DEVICES = "S25FL116K, S25FL216K, GD25Q16C"
|
EXTERNAL_FLASH_DEVICES = "S25FL116K, S25FL216K, GD25Q16C"
|
||||||
LONGINT_IMPL = MPZ
|
LONGINT_IMPL = MPZ
|
||||||
|
|
||||||
|
CIRCUITPY__EVE = 1
|
||||||
|
@ -50,7 +50,7 @@ uint8_t display_init_sequence[] = {
|
|||||||
|
|
||||||
void board_init(void) {
|
void board_init(void) {
|
||||||
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
|
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
|
||||||
common_hal_busio_spi_construct(spi, &pin_PA13, &pin_PA12, mp_const_none);
|
common_hal_busio_spi_construct(spi, &pin_PA13, &pin_PA12, NULL);
|
||||||
common_hal_busio_spi_never_reset(spi);
|
common_hal_busio_spi_never_reset(spi);
|
||||||
|
|
||||||
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
|
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
|
||||||
@ -60,7 +60,9 @@ void board_init(void) {
|
|||||||
&pin_PA07, // TFT_DC Command or data
|
&pin_PA07, // TFT_DC Command or data
|
||||||
&pin_PA06, // TFT_CS Chip select
|
&pin_PA06, // TFT_CS Chip select
|
||||||
&pin_PA04, // TFT_RST Reset
|
&pin_PA04, // TFT_RST Reset
|
||||||
60000000);
|
60000000, // Baudrate
|
||||||
|
0, // Polarity
|
||||||
|
0); // Phase
|
||||||
|
|
||||||
displayio_display_obj_t* display = &displays[0].display;
|
displayio_display_obj_t* display = &displays[0].display;
|
||||||
display->base.type = &displayio_display_type;
|
display->base.type = &displayio_display_type;
|
||||||
@ -76,6 +78,7 @@ void board_init(void) {
|
|||||||
false, // pixels in a byte share a row. Only valid for depths < 8
|
false, // pixels in a byte share a row. Only valid for depths < 8
|
||||||
1, // bytes per cell. Only valid for depths < 8
|
1, // bytes per cell. Only valid for depths < 8
|
||||||
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
||||||
|
true, // reverse_pixels_in_word
|
||||||
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
||||||
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
||||||
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
||||||
@ -89,7 +92,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
38
ports/atmel-samd/boards/nfc_copy_cat/board.c
Normal file
38
ports/atmel-samd/boards/nfc_copy_cat/board.c
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "boards/board.h"
|
||||||
|
|
||||||
|
void board_init(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool board_requests_safe_mode(void) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset_board(void) {
|
||||||
|
}
|
51
ports/atmel-samd/boards/nfc_copy_cat/mpconfigboard.h
Normal file
51
ports/atmel-samd/boards/nfc_copy_cat/mpconfigboard.h
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
#define MICROPY_HW_BOARD_NAME "Electronic Cats NFC Copy Cat"
|
||||||
|
#define MICROPY_HW_MCU_NAME "samd21e18"
|
||||||
|
|
||||||
|
#define MICROPY_HW_LED_STATUS (&pin_PA14)
|
||||||
|
|
||||||
|
#define MICROPY_PORT_A (0)
|
||||||
|
#define MICROPY_PORT_B (0)
|
||||||
|
#define MICROPY_PORT_C (0)
|
||||||
|
|
||||||
|
#define SPI_FLASH_MOSI_PIN &pin_PA08
|
||||||
|
#define SPI_FLASH_MISO_PIN &pin_PA11
|
||||||
|
#define SPI_FLASH_SCK_PIN &pin_PA09
|
||||||
|
#define SPI_FLASH_CS_PIN &pin_PA10
|
||||||
|
|
||||||
|
// No microcontroller.nvm
|
||||||
|
#define CIRCUITPY_INTERNAL_NVM_SIZE 0
|
||||||
|
|
||||||
|
#define DEFAULT_SPI_BUS_SCK (&pin_PA17)
|
||||||
|
#define DEFAULT_SPI_BUS_MOSI (&pin_PA16)
|
||||||
|
#define DEFAULT_SPI_BUS_MISO (&pin_PA19)
|
||||||
|
|
||||||
|
#define IGNORE_PIN_PA03 1
|
||||||
|
#define IGNORE_PIN_PA20 1
|
||||||
|
#define IGNORE_PIN_PA21 1
|
||||||
|
// USB is always used.
|
||||||
|
#define IGNORE_PIN_PA24 1
|
||||||
|
#define IGNORE_PIN_PA25 1
|
||||||
|
#define IGNORE_PIN_PA30 1
|
||||||
|
#define IGNORE_PIN_PA31 1
|
||||||
|
#define IGNORE_PIN_PB01 1
|
||||||
|
#define IGNORE_PIN_PB02 1
|
||||||
|
#define IGNORE_PIN_PB03 1
|
||||||
|
#define IGNORE_PIN_PB04 1
|
||||||
|
#define IGNORE_PIN_PB05 1
|
||||||
|
#define IGNORE_PIN_PB06 1
|
||||||
|
#define IGNORE_PIN_PB07 1
|
||||||
|
#define IGNORE_PIN_PB08 1
|
||||||
|
#define IGNORE_PIN_PB09 1
|
||||||
|
#define IGNORE_PIN_PB10 1
|
||||||
|
#define IGNORE_PIN_PB11 1
|
||||||
|
#define IGNORE_PIN_PB12 1
|
||||||
|
#define IGNORE_PIN_PB13 1
|
||||||
|
#define IGNORE_PIN_PB14 1
|
||||||
|
#define IGNORE_PIN_PB15 1
|
||||||
|
#define IGNORE_PIN_PB16 1
|
||||||
|
#define IGNORE_PIN_PB17 1
|
||||||
|
#define IGNORE_PIN_PB22 1
|
||||||
|
#define IGNORE_PIN_PB23 1
|
||||||
|
#define IGNORE_PIN_PB30 1
|
||||||
|
#define IGNORE_PIN_PB31 1
|
||||||
|
#define IGNORE_PIN_PB00 1
|
14
ports/atmel-samd/boards/nfc_copy_cat/mpconfigboard.mk
Normal file
14
ports/atmel-samd/boards/nfc_copy_cat/mpconfigboard.mk
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
USB_VID = 0x1209
|
||||||
|
USB_PID = 0xBAB8
|
||||||
|
USB_PRODUCT = "NFC Copy Cat"
|
||||||
|
USB_MANUFACTURER = "Electronic Cats"
|
||||||
|
|
||||||
|
CHIP_VARIANT = SAMD21E18A
|
||||||
|
CHIP_FAMILY = samd21
|
||||||
|
|
||||||
|
SPI_FLASH_FILESYSTEM = 1
|
||||||
|
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||||
|
EXTERNAL_FLASH_DEVICES = "GD25Q16C"
|
||||||
|
LONGINT_IMPL = NONE
|
||||||
|
|
||||||
|
CIRCUITPY_SMALL_BUILD = 1
|
20
ports/atmel-samd/boards/nfc_copy_cat/pins.c
Normal file
20
ports/atmel-samd/boards/nfc_copy_cat/pins.c
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#include "shared-bindings/board/__init__.h"
|
||||||
|
|
||||||
|
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PA02) }, // IRQ
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA06) }, // IN_A
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PA07) }, // IN_B
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA05) }, // LED
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA04) }, // LED
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_PA14) }, // LED
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D27), MP_ROM_PTR(&pin_PA27) }, // Switch
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D28), MP_ROM_PTR(&pin_PA28) }, // Switch
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA08) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA09) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PA17) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PA16) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PA19) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D18), MP_ROM_PTR(&pin_PA18) }, // CS
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
|
||||||
|
};
|
||||||
|
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
|
@ -55,7 +55,7 @@ uint8_t stop_sequence[] = {
|
|||||||
|
|
||||||
void board_init(void) {
|
void board_init(void) {
|
||||||
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
|
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
|
||||||
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, mp_const_none);
|
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, NULL);
|
||||||
common_hal_busio_spi_never_reset(spi);
|
common_hal_busio_spi_never_reset(spi);
|
||||||
|
|
||||||
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
|
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
|
||||||
@ -65,7 +65,9 @@ void board_init(void) {
|
|||||||
&pin_PB05, // EPD_DC Command or data
|
&pin_PB05, // EPD_DC Command or data
|
||||||
&pin_PB07, // EPD_CS Chip select
|
&pin_PB07, // EPD_CS Chip select
|
||||||
&pin_PA00, // EPD_RST Reset
|
&pin_PA00, // EPD_RST Reset
|
||||||
1000000);
|
1000000, // Baudrate
|
||||||
|
0, // Polarity
|
||||||
|
0); // Phase
|
||||||
|
|
||||||
displayio_epaperdisplay_obj_t* display = &displays[0].epaper_display;
|
displayio_epaperdisplay_obj_t* display = &displays[0].epaper_display;
|
||||||
display->base.type = &displayio_epaperdisplay_type;
|
display->base.type = &displayio_epaperdisplay_type;
|
||||||
|
@ -97,7 +97,7 @@ uint8_t display_init_sequence[] = {
|
|||||||
|
|
||||||
void board_init(void) {
|
void board_init(void) {
|
||||||
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
|
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
|
||||||
common_hal_busio_spi_construct(spi, &pin_PA13, &pin_PA15, mp_const_none);
|
common_hal_busio_spi_construct(spi, &pin_PA13, &pin_PA15, NULL);
|
||||||
common_hal_busio_spi_never_reset(spi);
|
common_hal_busio_spi_never_reset(spi);
|
||||||
|
|
||||||
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
|
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
|
||||||
@ -107,7 +107,9 @@ void board_init(void) {
|
|||||||
&pin_PA16, // TFT_DC Command or data
|
&pin_PA16, // TFT_DC Command or data
|
||||||
&pin_PA11, // TFT_CS Chip select
|
&pin_PA11, // TFT_CS Chip select
|
||||||
&pin_PA17, // TFT_RST Reset
|
&pin_PA17, // TFT_RST Reset
|
||||||
60000000);
|
60000000, // Baudrate
|
||||||
|
0, // Polarity
|
||||||
|
0); // Phase
|
||||||
|
|
||||||
uint32_t cfg0 = lookupCfg(CFG_DISPLAY_CFG0, 0x000000);
|
uint32_t cfg0 = lookupCfg(CFG_DISPLAY_CFG0, 0x000000);
|
||||||
uint32_t offX = (cfg0 >> 8) & 0xff;
|
uint32_t offX = (cfg0 >> 8) & 0xff;
|
||||||
@ -126,6 +128,7 @@ void board_init(void) {
|
|||||||
false, // pixels in byte share row. only used for depth < 8
|
false, // pixels in byte share row. only used for depth < 8
|
||||||
1, // bytes per cell. Only valid for depths < 8
|
1, // bytes per cell. Only valid for depths < 8
|
||||||
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
||||||
|
true, // reverse_pixels_in_word
|
||||||
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
||||||
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
||||||
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
||||||
@ -139,7 +142,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
false, // auto_refresh
|
false, // auto_refresh
|
||||||
20); // native_frames_per_second
|
20, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -52,7 +52,7 @@ uint8_t display_init_sequence[] = {
|
|||||||
0xc4, 2, 0x8a, 0xee,
|
0xc4, 2, 0x8a, 0xee,
|
||||||
0xc5, 1, 0x0e, // _VMCTR1 VCOMH = 4V, VOML = -1.1V
|
0xc5, 1, 0x0e, // _VMCTR1 VCOMH = 4V, VOML = -1.1V
|
||||||
0x2a, 0, // _INVOFF
|
0x2a, 0, // _INVOFF
|
||||||
0x36, 1, 0x00, // _MADCTL top to bottom refresh in vsync aligned order.
|
0x36, 1, 0b10100000, // _MADCTL for rotation 0
|
||||||
// 1 clk cycle nonoverlap, 2 cycle gate rise, 3 sycle osc equalie,
|
// 1 clk cycle nonoverlap, 2 cycle gate rise, 3 sycle osc equalie,
|
||||||
// fix on VTL
|
// fix on VTL
|
||||||
0x3a, 1, 0x05, // COLMOD - 16bit color
|
0x3a, 1, 0x05, // COLMOD - 16bit color
|
||||||
@ -72,7 +72,7 @@ uint8_t display_init_sequence[] = {
|
|||||||
|
|
||||||
void board_init(void) {
|
void board_init(void) {
|
||||||
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
|
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
|
||||||
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, mp_const_none);
|
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, NULL);
|
||||||
common_hal_busio_spi_never_reset(spi);
|
common_hal_busio_spi_never_reset(spi);
|
||||||
|
|
||||||
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
|
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
|
||||||
@ -82,7 +82,9 @@ void board_init(void) {
|
|||||||
&pin_PB05, // TFT_DC Command or data
|
&pin_PB05, // TFT_DC Command or data
|
||||||
&pin_PB07, // TFT_CS Chip select
|
&pin_PB07, // TFT_CS Chip select
|
||||||
&pin_PA00, // TFT_RST Reset
|
&pin_PA00, // TFT_RST Reset
|
||||||
60000000);
|
60000000, // Baudrate
|
||||||
|
0, // Polarity
|
||||||
|
0); // Phase
|
||||||
|
|
||||||
displayio_display_obj_t* display = &displays[0].display;
|
displayio_display_obj_t* display = &displays[0].display;
|
||||||
display->base.type = &displayio_display_type;
|
display->base.type = &displayio_display_type;
|
||||||
@ -92,12 +94,13 @@ void board_init(void) {
|
|||||||
128, // Height (after rotation)
|
128, // Height (after rotation)
|
||||||
0, // column start
|
0, // column start
|
||||||
0, // row start
|
0, // row start
|
||||||
270, // rotation
|
0, // rotation
|
||||||
16, // Color depth
|
16, // Color depth
|
||||||
false, // grayscale
|
false, // grayscale
|
||||||
false, // pixels in byte share row. only used for depth < 8
|
false, // pixels in byte share row. only used for depth < 8
|
||||||
1, // bytes per cell. Only valid for depths < 8
|
1, // bytes per cell. Only valid for depths < 8
|
||||||
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
||||||
|
true, // reverse_pixels_in_word
|
||||||
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
||||||
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
||||||
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
||||||
@ -111,7 +114,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -50,7 +50,7 @@ uint8_t display_init_sequence[] = {
|
|||||||
|
|
||||||
void board_init(void) {
|
void board_init(void) {
|
||||||
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
|
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
|
||||||
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, mp_const_none);
|
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, NULL);
|
||||||
common_hal_busio_spi_never_reset(spi);
|
common_hal_busio_spi_never_reset(spi);
|
||||||
|
|
||||||
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
|
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
|
||||||
@ -60,7 +60,9 @@ void board_init(void) {
|
|||||||
&pin_PB05, // TFT_DC Command or data
|
&pin_PB05, // TFT_DC Command or data
|
||||||
&pin_PB06, // TFT_CS Chip select
|
&pin_PB06, // TFT_CS Chip select
|
||||||
&pin_PB07, // TFT_RST Reset
|
&pin_PB07, // TFT_RST Reset
|
||||||
60000000);
|
60000000, // Baudrate
|
||||||
|
0, // Polarity
|
||||||
|
0); // Phase
|
||||||
|
|
||||||
displayio_display_obj_t* display = &displays[0].display;
|
displayio_display_obj_t* display = &displays[0].display;
|
||||||
display->base.type = &displayio_display_type;
|
display->base.type = &displayio_display_type;
|
||||||
@ -76,6 +78,7 @@ void board_init(void) {
|
|||||||
false, // pixels in byte share row. Only used for depth < 8
|
false, // pixels in byte share row. Only used for depth < 8
|
||||||
1, // bytes per cell. Only valid for depths < 8
|
1, // bytes per cell. Only valid for depths < 8
|
||||||
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
||||||
|
true, // reverse_pixels_in_word
|
||||||
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
||||||
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
||||||
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
||||||
@ -89,7 +92,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* The MIT License (MIT)
|
* The MIT License (MIT)
|
||||||
*
|
*
|
||||||
* Copyright (c) 2019 Lucian Copeland for Adafruit Industries
|
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
* of this software and associated documentation files (the "Software"), to deal
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
@ -24,32 +24,38 @@
|
|||||||
* THE SOFTWARE.
|
* THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "common-hal/pulseio/PulseOut.h"
|
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "boards/board.h"
|
||||||
#include "py/mpconfig.h"
|
#include "py/mpconfig.h"
|
||||||
#include "py/gc.h"
|
#include "shared-bindings/nvm/ByteArray.h"
|
||||||
#include "py/runtime.h"
|
#include "common-hal/microcontroller/Pin.h"
|
||||||
#include "shared-bindings/pulseio/PulseOut.h"
|
#include "hal/include/hal_gpio.h"
|
||||||
#include "shared-bindings/pulseio/PWMOut.h"
|
#include "shared-bindings/pulseio/PWMOut.h"
|
||||||
#include "supervisor/shared/translate.h"
|
|
||||||
|
nvm_bytearray_obj_t bootcnt = {
|
||||||
|
.base = {
|
||||||
|
.type = &nvm_bytearray_type
|
||||||
|
},
|
||||||
|
.len = ( uint32_t) 8192,
|
||||||
|
.start_address = (uint8_t*) (0x00080000 - 8192)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
void pulseout_reset() {
|
void board_init(void) {
|
||||||
|
pulseio_pwmout_obj_t pwm;
|
||||||
|
common_hal_pulseio_pwmout_construct(&pwm, &pin_PA23, 4096, 2, false);
|
||||||
|
common_hal_pulseio_pwmout_never_reset(&pwm);
|
||||||
}
|
}
|
||||||
|
|
||||||
void common_hal_pulseio_pulseout_construct(pulseio_pulseout_obj_t* self,
|
bool board_requests_safe_mode(void) {
|
||||||
const pulseio_pwmout_obj_t* carrier) {
|
return false;
|
||||||
mp_raise_NotImplementedError(translate("PulseOut not yet supported"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool common_hal_pulseio_pulseout_deinited(pulseio_pulseout_obj_t* self) {
|
void reset_board(void) {
|
||||||
return true;
|
uint8_t value_out = 0;
|
||||||
}
|
common_hal_nvm_bytearray_get_bytes(&bootcnt,0,1,&value_out);
|
||||||
|
++value_out;
|
||||||
void common_hal_pulseio_pulseout_deinit(pulseio_pulseout_obj_t* self) {
|
common_hal_nvm_bytearray_set_bytes(&bootcnt,0,&value_out,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void common_hal_pulseio_pulseout_send(pulseio_pulseout_obj_t* self, uint16_t* pulses, uint16_t length) {
|
|
||||||
}
|
|
34
ports/atmel-samd/boards/pycubed/mpconfigboard.h
Normal file
34
ports/atmel-samd/boards/pycubed/mpconfigboard.h
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
|
||||||
|
#define MICROPY_HW_BOARD_NAME "PyCubedv04"
|
||||||
|
#define MICROPY_HW_MCU_NAME "samd51j19"
|
||||||
|
#define CIRCUITPY_MCU_FAMILY samd51
|
||||||
|
|
||||||
|
#define MICROPY_HW_NEOPIXEL (&pin_PA21)
|
||||||
|
|
||||||
|
#define MICROPY_PORT_A (PORT_PA08 | PORT_PA09 | PORT_PA10 | PORT_PA11)
|
||||||
|
#define MICROPY_PORT_B ( PORT_PB10 | PORT_PB11)
|
||||||
|
#define MICROPY_PORT_C (0)
|
||||||
|
#define MICROPY_PORT_D (0)
|
||||||
|
|
||||||
|
#define AUTORESET_DELAY_MS 500
|
||||||
|
|
||||||
|
#define CIRCUITPY_INTERNAL_NVM_SIZE 8192
|
||||||
|
|
||||||
|
#define BOARD_FLASH_SIZE (FLASH_SIZE - 0x4000 - CIRCUITPY_INTERNAL_NVM_SIZE)
|
||||||
|
|
||||||
|
#define EXTERNAL_FLASH_QSPI_DUAL
|
||||||
|
|
||||||
|
#define BOARD_HAS_CRYSTAL 1
|
||||||
|
|
||||||
|
#define DEFAULT_I2C_BUS_SCL (&pin_PB13)
|
||||||
|
#define DEFAULT_I2C_BUS_SDA (&pin_PB12)
|
||||||
|
|
||||||
|
#define DEFAULT_SPI_BUS_SCK (&pin_PA13)
|
||||||
|
#define DEFAULT_SPI_BUS_MOSI (&pin_PA12)
|
||||||
|
#define DEFAULT_SPI_BUS_MISO (&pin_PA14)
|
||||||
|
|
||||||
|
#define DEFAULT_UART_BUS_TX (&pin_PB02)
|
||||||
|
#define DEFAULT_UART_BUS_RX (&pin_PB03)
|
||||||
|
|
||||||
|
#define IGNORE_PIN_PA24 1
|
||||||
|
#define IGNORE_PIN_PA25 1
|
26
ports/atmel-samd/boards/pycubed/mpconfigboard.mk
Normal file
26
ports/atmel-samd/boards/pycubed/mpconfigboard.mk
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
LD_FILE = boards/samd51x19-bootloader-external-flash.ld
|
||||||
|
USB_VID = 0x04D8
|
||||||
|
USB_PID = 0xEC44
|
||||||
|
USB_PRODUCT = "PyCubed"
|
||||||
|
USB_MANUFACTURER = "maholli"
|
||||||
|
|
||||||
|
CHIP_VARIANT = SAMD51J19A
|
||||||
|
CHIP_FAMILY = samd51
|
||||||
|
|
||||||
|
QSPI_FLASH_FILESYSTEM = 1
|
||||||
|
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||||
|
EXTERNAL_FLASH_DEVICES = W25Q80DV
|
||||||
|
LONGINT_IMPL = MPZ
|
||||||
|
|
||||||
|
# Not needed.
|
||||||
|
CIRCUITPY_AUDIOBUSIO = 0
|
||||||
|
CIRCUITPY_DISPLAYIO = 0
|
||||||
|
CIRCUITPY_FRAMEBUFFERIO = 0
|
||||||
|
CIRCUITPY_GAMEPAD = 0
|
||||||
|
CIRCUITPY_PROTOMATTER = 0
|
||||||
|
CIRCUITPY_PS2IO = 0
|
||||||
|
|
||||||
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
||||||
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
||||||
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_Register
|
||||||
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_SD
|
55
ports/atmel-samd/boards/pycubed/pins.c
Normal file
55
ports/atmel-samd/boards/pycubed/pins.c
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
#include "shared-bindings/board/__init__.h"
|
||||||
|
#include "boards/board.h"
|
||||||
|
|
||||||
|
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PA13) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PA12) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PA14) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_xSDCS), MP_ROM_PTR(&pin_PA27) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RELAY_A), MP_ROM_PTR(&pin_PB15) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_BURN1), MP_ROM_PTR(&pin_PB31) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_BURN2), MP_ROM_PTR(&pin_PA15) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_BATTERY), MP_ROM_PTR(&pin_PA06) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_L1PROG), MP_ROM_PTR(&pin_PA07) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_AIN4), MP_ROM_PTR(&pin_PA04) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_AIN5), MP_ROM_PTR(&pin_PA05) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_CHRG), MP_ROM_PTR(&pin_PB08) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_DAC0), MP_ROM_PTR(&pin_PA02) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_PA17), MP_ROM_PTR(&pin_PA17) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_PA18), MP_ROM_PTR(&pin_PA18) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_PA19), MP_ROM_PTR(&pin_PA19) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_PA20), MP_ROM_PTR(&pin_PA20) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_PA22), MP_ROM_PTR(&pin_PA22) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_PB16), MP_ROM_PTR(&pin_PB16) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_PB17), MP_ROM_PTR(&pin_PB17) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_PB22), MP_ROM_PTR(&pin_PB22) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_PB23), MP_ROM_PTR(&pin_PB23) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RF1_RST), MP_ROM_PTR(&pin_PB00) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RF1_CS), MP_ROM_PTR(&pin_PB30) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RF1_IO0), MP_ROM_PTR(&pin_PB05) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RF1_IO4), MP_ROM_PTR(&pin_PB04) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RF2_RST), MP_ROM_PTR(&pin_PB14) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RF2_CS), MP_ROM_PTR(&pin_PB09) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RF2_IO1), MP_ROM_PTR(&pin_PB06) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RF2_BSY), MP_ROM_PTR(&pin_PB07) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_EN_GPS), MP_ROM_PTR(&pin_PB01) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PB02) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PB03) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PB12) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PB13) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_WDT_WDI), MP_ROM_PTR(&pin_PA23) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_NEOPIXEL), MP_ROM_PTR(&pin_PA21) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
|
||||||
|
|
||||||
|
};
|
||||||
|
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
|
@ -52,7 +52,7 @@ uint8_t display_init_sequence[] = {
|
|||||||
0xc4, 2, 0x8a, 0xee,
|
0xc4, 2, 0x8a, 0xee,
|
||||||
0xc5, 1, 0x0e, // _VMCTR1 VCOMH = 4V, VOML = -1.1V
|
0xc5, 1, 0x0e, // _VMCTR1 VCOMH = 4V, VOML = -1.1V
|
||||||
0x2a, 0, // _INVOFF
|
0x2a, 0, // _INVOFF
|
||||||
0x36, 1, 0x00, // _MADCTL top to bottom refresh in vsync aligned order.
|
0x36, 1, 0b10100000, // _MADCTL for rotation 0
|
||||||
// 1 clk cycle nonoverlap, 2 cycle gate rise, 3 sycle osc equalie,
|
// 1 clk cycle nonoverlap, 2 cycle gate rise, 3 sycle osc equalie,
|
||||||
// fix on VTL
|
// fix on VTL
|
||||||
0x3a, 1, 0x05, // COLMOD - 16bit color
|
0x3a, 1, 0x05, // COLMOD - 16bit color
|
||||||
@ -72,7 +72,7 @@ uint8_t display_init_sequence[] = {
|
|||||||
|
|
||||||
void board_init(void) {
|
void board_init(void) {
|
||||||
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
|
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
|
||||||
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, mp_const_none);
|
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB15, NULL);
|
||||||
common_hal_busio_spi_never_reset(spi);
|
common_hal_busio_spi_never_reset(spi);
|
||||||
|
|
||||||
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
|
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
|
||||||
@ -82,7 +82,9 @@ void board_init(void) {
|
|||||||
&pin_PB05, // TFT_DC Command or data
|
&pin_PB05, // TFT_DC Command or data
|
||||||
&pin_PB12, // TFT_CS Chip select
|
&pin_PB12, // TFT_CS Chip select
|
||||||
&pin_PA00, // TFT_RST Reset
|
&pin_PA00, // TFT_RST Reset
|
||||||
60000000);
|
60000000, // Baudrate
|
||||||
|
0, // Polarity
|
||||||
|
0); // Phase
|
||||||
|
|
||||||
displayio_display_obj_t* display = &displays[0].display;
|
displayio_display_obj_t* display = &displays[0].display;
|
||||||
display->base.type = &displayio_display_type;
|
display->base.type = &displayio_display_type;
|
||||||
@ -92,12 +94,13 @@ void board_init(void) {
|
|||||||
128, // Height
|
128, // Height
|
||||||
0, // column start
|
0, // column start
|
||||||
0, // row start
|
0, // row start
|
||||||
270, // rotation
|
0, // rotation
|
||||||
16, // Color depth
|
16, // Color depth
|
||||||
false, // Grayscale
|
false, // Grayscale
|
||||||
false, // pixels in a byte share a row. Only valid for depths < 8
|
false, // pixels in a byte share a row. Only valid for depths < 8
|
||||||
1, // bytes per cell. Only valid for depths < 8
|
1, // bytes per cell. Only valid for depths < 8
|
||||||
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
||||||
|
true, // reverse_pixels_in_word
|
||||||
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
||||||
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
||||||
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
||||||
@ -111,7 +114,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -50,7 +50,7 @@ uint8_t display_init_sequence[] = {
|
|||||||
|
|
||||||
void board_init(void) {
|
void board_init(void) {
|
||||||
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
|
busio_spi_obj_t* spi = &displays[0].fourwire_bus.inline_bus;
|
||||||
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB12, mp_const_none);
|
common_hal_busio_spi_construct(spi, &pin_PB13, &pin_PB12, NULL);
|
||||||
common_hal_busio_spi_never_reset(spi);
|
common_hal_busio_spi_never_reset(spi);
|
||||||
|
|
||||||
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
|
displayio_fourwire_obj_t* bus = &displays[0].fourwire_bus;
|
||||||
@ -60,7 +60,9 @@ void board_init(void) {
|
|||||||
&pin_PA00, // TFT_DC Command or data
|
&pin_PA00, // TFT_DC Command or data
|
||||||
&pin_PB15, // TFT_CS Chip select
|
&pin_PB15, // TFT_CS Chip select
|
||||||
&pin_PB05, // TFT_RST Reset
|
&pin_PB05, // TFT_RST Reset
|
||||||
60000000);
|
60000000, // Baudrate
|
||||||
|
0, // Polarity
|
||||||
|
0); // Phase
|
||||||
|
|
||||||
displayio_display_obj_t* display = &displays[0].display;
|
displayio_display_obj_t* display = &displays[0].display;
|
||||||
display->base.type = &displayio_display_type;
|
display->base.type = &displayio_display_type;
|
||||||
@ -76,6 +78,7 @@ void board_init(void) {
|
|||||||
false, // pixels in a byte share a row. Only valid for depths < 8
|
false, // pixels in a byte share a row. Only valid for depths < 8
|
||||||
1, // bytes per cell. Only valid for depths < 8
|
1, // bytes per cell. Only valid for depths < 8
|
||||||
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
||||||
|
true, // reverse_pixels_in_word
|
||||||
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
||||||
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
||||||
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
||||||
@ -89,7 +92,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -87,6 +87,7 @@ void board_init(void) {
|
|||||||
false, // pixels_in_byte_share_row (unused for depths > 8)
|
false, // pixels_in_byte_share_row (unused for depths > 8)
|
||||||
1, // bytes per cell. Only valid for depths < 8
|
1, // bytes per cell. Only valid for depths < 8
|
||||||
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
||||||
|
true, // reverse_pixels_in_word
|
||||||
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
||||||
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
||||||
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
||||||
@ -100,7 +101,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -104,6 +104,7 @@ void board_init(void) {
|
|||||||
false, // pixels_in_byte_share_row (unused for depths > 8)
|
false, // pixels_in_byte_share_row (unused for depths > 8)
|
||||||
1, // bytes per cell. Only valid for depths < 8
|
1, // bytes per cell. Only valid for depths < 8
|
||||||
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
||||||
|
true, // reverse_pixels_in_word
|
||||||
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
||||||
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
||||||
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
||||||
@ -117,7 +118,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -17,7 +17,9 @@ LONGINT_IMPL = MPZ
|
|||||||
CIRCUITPY_AUDIOBUSIO = 0
|
CIRCUITPY_AUDIOBUSIO = 0
|
||||||
# Make room for more stuff
|
# Make room for more stuff
|
||||||
CIRCUITPY_DISPLAYIO = 0
|
CIRCUITPY_DISPLAYIO = 0
|
||||||
|
CIRCUITPY_FRAMEBUFFERIO = 0
|
||||||
CIRCUITPY_FREQUENCYIO = 0
|
CIRCUITPY_FREQUENCYIO = 0
|
||||||
|
CIRCUITPY_PROTOMATTER = 0
|
||||||
|
|
||||||
# Include these Python libraries in firmware.
|
# Include these Python libraries in firmware.
|
||||||
#FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
#FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
||||||
|
@ -1,23 +1,22 @@
|
|||||||
|
#define MICROPY_HW_BOARD_NAME "SAM32v26"
|
||||||
#define MICROPY_HW_BOARD_NAME "SAM32v2a"
|
|
||||||
#define MICROPY_HW_MCU_NAME "samd51j20"
|
#define MICROPY_HW_MCU_NAME "samd51j20"
|
||||||
#define CIRCUITPY_MCU_FAMILY samd51
|
#define CIRCUITPY_MCU_FAMILY samd51
|
||||||
|
|
||||||
#define MICROPY_HW_LED_STATUS (&pin_PA27)
|
#define MICROPY_HW_LED_STATUS (&pin_PA27)
|
||||||
#define MICROPY_HW_NEOPIXEL (&pin_PA15)
|
#define MICROPY_HW_NEOPIXEL (&pin_PA15)
|
||||||
|
|
||||||
#define MICROPY_PORT_A (PORT_PA24 | PORT_PA25)
|
#define MICROPY_PORT_A (PORT_PA24 | PORT_PA25)
|
||||||
#define MICROPY_PORT_B (0)
|
#define MICROPY_PORT_B (0)
|
||||||
#define MICROPY_PORT_C (0)
|
#define MICROPY_PORT_C (0)
|
||||||
#define MICROPY_PORT_D (0)
|
#define MICROPY_PORT_D (0)
|
||||||
|
|
||||||
// No microcontroller.nvm
|
|
||||||
#define CIRCUITPY_INTERNAL_NVM_SIZE 0
|
#define CIRCUITPY_INTERNAL_NVM_SIZE 0
|
||||||
|
#define CIRCUITPY_INTERNAL_FLASH_FILESYSTEM_SIZE (128*1024)
|
||||||
|
|
||||||
#define BOARD_HAS_CRYSTAL 1
|
#define BOARD_HAS_CRYSTAL 1
|
||||||
|
|
||||||
#define DEFAULT_I2C_BUS_SCL (&pin_PA04)
|
#define DEFAULT_I2C_BUS_SCL (&pin_PA09)
|
||||||
#define DEFAULT_I2C_BUS_SDA (&pin_PA07)
|
#define DEFAULT_I2C_BUS_SDA (&pin_PA08)
|
||||||
|
|
||||||
#define DEFAULT_SPI_BUS_SCK (&pin_PB13)
|
#define DEFAULT_SPI_BUS_SCK (&pin_PB13)
|
||||||
#define DEFAULT_SPI_BUS_MOSI (&pin_PB12)
|
#define DEFAULT_SPI_BUS_MOSI (&pin_PB12)
|
||||||
|
@ -8,3 +8,10 @@ CHIP_FAMILY = samd51
|
|||||||
|
|
||||||
INTERNAL_FLASH_FILESYSTEM = 1
|
INTERNAL_FLASH_FILESYSTEM = 1
|
||||||
LONGINT_IMPL = MPZ
|
LONGINT_IMPL = MPZ
|
||||||
|
|
||||||
|
# No I2S on SAMD51
|
||||||
|
CIRCUITPY_AUDIOBUSIO = 0
|
||||||
|
CIRCUITPY_USTACK = 1
|
||||||
|
|
||||||
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
||||||
|
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_NeoPixel
|
@ -1,10 +1,8 @@
|
|||||||
#include "shared-bindings/board/__init__.h"
|
#include "shared-bindings/board/__init__.h"
|
||||||
|
|
||||||
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||||
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PB08) },
|
{ MP_ROM_QSTR(MP_QSTR_IO39), MP_ROM_PTR(&pin_PB08) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PB09) },
|
{ MP_ROM_QSTR(MP_QSTR_IO36), MP_ROM_PTR(&pin_PB09) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PA08) },
|
|
||||||
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA09) },
|
|
||||||
{ MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_PB04) },
|
{ MP_ROM_QSTR(MP_QSTR_A6), MP_ROM_PTR(&pin_PB04) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_PB05) },
|
{ MP_ROM_QSTR(MP_QSTR_A7), MP_ROM_PTR(&pin_PB05) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_A8), MP_ROM_PTR(&pin_PB06) },
|
{ MP_ROM_QSTR(MP_QSTR_A8), MP_ROM_PTR(&pin_PB06) },
|
||||||
@ -13,15 +11,14 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
|||||||
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB13) },
|
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB13) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PB12) },
|
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PB12) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PB14) },
|
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PB14) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_xSDCS),MP_ROM_PTR(&pin_PB15) },
|
{ MP_ROM_QSTR(MP_QSTR_xSDCS),MP_ROM_PTR(&pin_PA04) },
|
||||||
|
|
||||||
{ MP_ROM_QSTR(MP_QSTR_DAC0), MP_ROM_PTR(&pin_PA02) },
|
{ MP_ROM_QSTR(MP_QSTR_DAC0), MP_ROM_PTR(&pin_PA02) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_DAC1), MP_ROM_PTR(&pin_PA05) },
|
{ MP_ROM_QSTR(MP_QSTR_DAC1), MP_ROM_PTR(&pin_PA05) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D16), MP_ROM_PTR(&pin_PA07) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_PA10) },
|
{ MP_ROM_QSTR(MP_QSTR_D19), MP_ROM_PTR(&pin_PA10) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_D20), MP_ROM_PTR(&pin_PA11) },
|
{ MP_ROM_QSTR(MP_QSTR_D20), MP_ROM_PTR(&pin_PA11) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_D29), MP_ROM_PTR(&pin_PA12) },
|
|
||||||
{ MP_ROM_QSTR(MP_QSTR_D30), MP_ROM_PTR(&pin_PA13) },
|
|
||||||
{ MP_ROM_QSTR(MP_QSTR_D31), MP_ROM_PTR(&pin_PA14) },
|
{ MP_ROM_QSTR(MP_QSTR_D31), MP_ROM_PTR(&pin_PA14) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_PA16) },
|
{ MP_ROM_QSTR(MP_QSTR_D35), MP_ROM_PTR(&pin_PA16) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_D36), MP_ROM_PTR(&pin_PA17) },
|
{ MP_ROM_QSTR(MP_QSTR_D36), MP_ROM_PTR(&pin_PA17) },
|
||||||
@ -35,12 +32,24 @@ STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
|||||||
{ MP_ROM_QSTR(MP_QSTR_D50), MP_ROM_PTR(&pin_PB23) },
|
{ MP_ROM_QSTR(MP_QSTR_D50), MP_ROM_PTR(&pin_PB23) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_D59), MP_ROM_PTR(&pin_PB30) },
|
{ MP_ROM_QSTR(MP_QSTR_D59), MP_ROM_PTR(&pin_PB30) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_D60), MP_ROM_PTR(&pin_PB31) },
|
{ MP_ROM_QSTR(MP_QSTR_D60), MP_ROM_PTR(&pin_PB31) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_D64), MP_ROM_PTR(&pin_PB03) },
|
{ MP_ROM_QSTR(MP_QSTR_D61), MP_ROM_PTR(&pin_PB00) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_IO13), MP_ROM_PTR(&pin_PB01) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_IO12), MP_ROM_PTR(&pin_PB02) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_IO14), MP_ROM_PTR(&pin_PB03) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_TCK), MP_ROM_PTR(&pin_PB01) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_TDI), MP_ROM_PTR(&pin_PB02) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_TMS), MP_ROM_PTR(&pin_PB03) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_ESP_CS),MP_ROM_PTR(&pin_PB15) },
|
||||||
|
|
||||||
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PB16) },
|
{ MP_ROM_QSTR(MP_QSTR_TX1), MP_ROM_PTR(&pin_PA12) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PB17) },
|
{ MP_ROM_QSTR(MP_QSTR_RX1), MP_ROM_PTR(&pin_PA13) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA07) },
|
{ MP_ROM_QSTR(MP_QSTR_TX2), MP_ROM_PTR(&pin_PB16) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA04) },
|
{ MP_ROM_QSTR(MP_QSTR_RX2), MP_ROM_PTR(&pin_PB17) },
|
||||||
|
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA08) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA09) },
|
||||||
|
|
||||||
{ MP_ROM_QSTR(MP_QSTR_RTS), MP_ROM_PTR(&pin_PB11) },
|
{ MP_ROM_QSTR(MP_QSTR_RTS), MP_ROM_PTR(&pin_PB11) },
|
||||||
{ MP_ROM_QSTR(MP_QSTR_DTR), MP_ROM_PTR(&pin_PB10) },
|
{ MP_ROM_QSTR(MP_QSTR_DTR), MP_ROM_PTR(&pin_PB10) },
|
||||||
|
38
ports/atmel-samd/boards/sparkfun_samd51_thing_plus/board.c
Normal file
38
ports/atmel-samd/boards/sparkfun_samd51_thing_plus/board.c
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "boards/board.h"
|
||||||
|
#include "mpconfigboard.h"
|
||||||
|
|
||||||
|
void board_init(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool board_requests_safe_mode(void) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset_board(void) {
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
#define MICROPY_HW_BOARD_NAME "SparkFun Thing Plus - SAMD51"
|
||||||
|
#define MICROPY_HW_MCU_NAME "samd51j20"
|
||||||
|
|
||||||
|
#define CIRCUITPY_MCU_FAMILY samd51
|
||||||
|
|
||||||
|
// On-board flash
|
||||||
|
#define SPI_FLASH_MOSI_PIN &pin_PA08
|
||||||
|
#define SPI_FLASH_MISO_PIN &pin_PA11
|
||||||
|
#define SPI_FLASH_SCK_PIN &pin_PA09
|
||||||
|
#define SPI_FLASH_CS_PIN &pin_PA10
|
||||||
|
|
||||||
|
// These are pins not to reset.
|
||||||
|
// SPI Data pins
|
||||||
|
#define MICROPY_PORT_A (PORT_PA08 | PORT_PA09 | PORT_PA10 | PORT_PA11)
|
||||||
|
#define MICROPY_PORT_B (0)
|
||||||
|
#define MICROPY_PORT_C (0)
|
||||||
|
#define MICROPY_PORT_D (0)
|
||||||
|
|
||||||
|
#define BOARD_HAS_CRYSTAL 1
|
||||||
|
|
||||||
|
#define DEFAULT_I2C_BUS_SCL (&pin_PA22)
|
||||||
|
#define DEFAULT_I2C_BUS_SDA (&pin_PA23)
|
||||||
|
|
||||||
|
#define DEFAULT_SPI_BUS_SCK (&pin_PB13)
|
||||||
|
#define DEFAULT_SPI_BUS_MOSI (&pin_PB12)
|
||||||
|
#define DEFAULT_SPI_BUS_MISO (&pin_PB11)
|
||||||
|
|
||||||
|
#define DEFAULT_UART_BUS_RX (&pin_PA13)
|
||||||
|
#define DEFAULT_UART_BUS_TX (&pin_PA12)
|
||||||
|
|
||||||
|
// USB is always used internally so skip the pin objects for it.
|
||||||
|
#define IGNORE_PIN_PA24 1
|
||||||
|
#define IGNORE_PIN_PA25 1
|
@ -0,0 +1,17 @@
|
|||||||
|
LD_FILE = boards/samd51x20-bootloader-external-flash.ld
|
||||||
|
USB_VID = 0x1b4f
|
||||||
|
USB_PID = 0x0016 # Used by uf2 bootloader
|
||||||
|
USB_PRODUCT = "SparkFun SAMD51 Thing+"
|
||||||
|
USB_MANUFACTURER = "SparkFun Electronics"
|
||||||
|
|
||||||
|
CHIP_VARIANT = SAMD51J20A
|
||||||
|
CHIP_FAMILY = samd51
|
||||||
|
|
||||||
|
SPI_FLASH_FILESYSTEM = 1
|
||||||
|
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||||
|
EXTERNAL_FLASH_DEVICES = AT25SF041A
|
||||||
|
LONGINT_IMPL = MPZ
|
||||||
|
|
||||||
|
CIRCUITPY_NETWORK = 1
|
||||||
|
MICROPY_PY_WIZNET5K = 5500
|
||||||
|
CIRCUITPY_PS2IO = 1
|
37
ports/atmel-samd/boards/sparkfun_samd51_thing_plus/pins.c
Normal file
37
ports/atmel-samd/boards/sparkfun_samd51_thing_plus/pins.c
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#include "shared-bindings/board/__init__.h"
|
||||||
|
|
||||||
|
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PB08) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PB09) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PA04) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PA05) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PB02) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SCK), MP_ROM_PTR(&pin_PB13) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D24), MP_ROM_PTR(&pin_PB13) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_MOSI), MP_ROM_PTR(&pin_PB12) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D23), MP_ROM_PTR(&pin_PB12) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_MISO), MP_ROM_PTR(&pin_PB11) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D22), MP_ROM_PTR(&pin_PB11) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA13) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA12) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA13) }, // D0 == RX
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA12) }, // D1 == TX
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PA06) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SDA), MP_ROM_PTR(&pin_PA22) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D20), MP_ROM_PTR(&pin_PA22) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SCL), MP_ROM_PTR(&pin_PA23) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D21), MP_ROM_PTR(&pin_PA23) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PA15) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PA20) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA07) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA18) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA16) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA19) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_D13), MP_ROM_PTR(&pin_PA17) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_LED), MP_ROM_PTR(&pin_PA17) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
|
||||||
|
};
|
||||||
|
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
|
39
ports/atmel-samd/boards/uartlogger2/board.c
Normal file
39
ports/atmel-samd/boards/uartlogger2/board.c
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "boards/board.h"
|
||||||
|
#include "mpconfigboard.h"
|
||||||
|
#include "hal/include/hal_gpio.h"
|
||||||
|
|
||||||
|
void board_init(void) {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool board_requests_safe_mode(void) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset_board(void) {
|
||||||
|
}
|
35
ports/atmel-samd/boards/uartlogger2/mpconfigboard.h
Normal file
35
ports/atmel-samd/boards/uartlogger2/mpconfigboard.h
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#define MICROPY_HW_BOARD_NAME "UARTLogger II"
|
||||||
|
#define MICROPY_HW_MCU_NAME "samd51j19"
|
||||||
|
|
||||||
|
#define CIRCUITPY_MCU_FAMILY samd51
|
||||||
|
|
||||||
|
#define MICROPY_HW_LED_TX (&pin_PB07)
|
||||||
|
#define MICROPY_HW_LED_RX (&pin_PB06)
|
||||||
|
|
||||||
|
#define MICROPY_HW_LED_STATUS (&pin_PA16)
|
||||||
|
|
||||||
|
#define MICROPY_HW_NEOPIXEL (&pin_PB22)
|
||||||
|
|
||||||
|
// These are pins not to reset.
|
||||||
|
// QSPI Data pins
|
||||||
|
#define MICROPY_PORT_A (PORT_PA08 | PORT_PA09 | PORT_PA10 | PORT_PA11)
|
||||||
|
// QSPI CS, QSPI SCK and NeoPixel pin
|
||||||
|
#define MICROPY_PORT_B (PORT_PB11 | PORT_PB10 | PORT_PB22)
|
||||||
|
#define MICROPY_PORT_C (0)
|
||||||
|
#define MICROPY_PORT_D (0)
|
||||||
|
|
||||||
|
#define BOARD_HAS_CRYSTAL 1
|
||||||
|
|
||||||
|
#define DEFAULT_I2C_BUS_SCL (&pin_PB03)
|
||||||
|
#define DEFAULT_I2C_BUS_SDA (&pin_PB02)
|
||||||
|
|
||||||
|
#define DEFAULT_SPI_BUS_SCK (&pin_PA13)
|
||||||
|
#define DEFAULT_SPI_BUS_MOSI (&pin_PA12)
|
||||||
|
#define DEFAULT_SPI_BUS_MISO (&pin_PA14)
|
||||||
|
|
||||||
|
#define DEFAULT_UART_BUS_RX (&pin_PA23)
|
||||||
|
#define DEFAULT_UART_BUS_TX (&pin_PA22)
|
||||||
|
|
||||||
|
// USB is always used internally so skip the pin objects for it.
|
||||||
|
#define IGNORE_PIN_PA24 1
|
||||||
|
#define IGNORE_PIN_PA25 1
|
12
ports/atmel-samd/boards/uartlogger2/mpconfigboard.mk
Normal file
12
ports/atmel-samd/boards/uartlogger2/mpconfigboard.mk
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
USB_VID = 0x239A
|
||||||
|
USB_PID = 0x8096
|
||||||
|
USB_PRODUCT = "UARTLogger II"
|
||||||
|
USB_MANUFACTURER = "Szymon Klause"
|
||||||
|
|
||||||
|
CHIP_VARIANT = SAMD51J19A
|
||||||
|
CHIP_FAMILY = samd51
|
||||||
|
|
||||||
|
QSPI_FLASH_FILESYSTEM = 1
|
||||||
|
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||||
|
EXTERNAL_FLASH_DEVICES = "W25Q32JV_IQ"
|
||||||
|
LONGINT_IMPL = MPZ
|
55
ports/atmel-samd/boards/uartlogger2/pins.c
Normal file
55
ports/atmel-samd/boards/uartlogger2/pins.c
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
#include "shared-bindings/board/__init__.h"
|
||||||
|
|
||||||
|
// This mapping only includes functional names because pins broken
|
||||||
|
// out on connectors are labeled with their MCU name available from
|
||||||
|
// microcontroller.pin.
|
||||||
|
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A0), MP_ROM_PTR(&pin_PA02) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A1), MP_ROM_PTR(&pin_PA05) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A2), MP_ROM_PTR(&pin_PA06) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A3), MP_ROM_PTR(&pin_PB00) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A4), MP_ROM_PTR(&pin_PB08) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_A5), MP_ROM_PTR(&pin_PB09) },
|
||||||
|
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D0), MP_ROM_PTR(&pin_PA23) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_RX), MP_ROM_PTR(&pin_PA23) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D1), MP_ROM_PTR(&pin_PA22) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_TX), MP_ROM_PTR(&pin_PA22) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D2), MP_ROM_PTR(&pin_PB17) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D3), MP_ROM_PTR(&pin_PB16) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D4), MP_ROM_PTR(&pin_PB13) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D5), MP_ROM_PTR(&pin_PB14) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D6), MP_ROM_PTR(&pin_PB15) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D7), MP_ROM_PTR(&pin_PB12) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D8), MP_ROM_PTR(&pin_PA21) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D9), MP_ROM_PTR(&pin_PA20) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D10), MP_ROM_PTR(&pin_PA18) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D11), MP_ROM_PTR(&pin_PA19) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D12), MP_ROM_PTR(&pin_PA17) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_D13),MP_ROM_PTR(&pin_PA16) },
|
||||||
|
|
||||||
|
// ESP control
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_CS), MP_ROM_PTR(&pin_PA15) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_GPIO0), MP_ROM_PTR(&pin_PB01) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_BUSY), MP_ROM_PTR(&pin_PB04) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_RESET), MP_ROM_PTR(&pin_PB05) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_RTS), MP_ROM_PTR(&pin_PB23) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_TX), MP_ROM_PTR(&pin_PA04) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_ESP_RX), MP_ROM_PTR(&pin_PA07) },
|
||||||
|
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_SDA),MP_ROM_PTR(&pin_PB02) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCL),MP_ROM_PTR(&pin_PB03) },
|
||||||
|
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_NEOPIXEL),MP_ROM_PTR(&pin_PB22) },
|
||||||
|
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_SCK),MP_ROM_PTR(&pin_PA13) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_MOSI),MP_ROM_PTR(&pin_PA12) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_MISO),MP_ROM_PTR(&pin_PA14) },
|
||||||
|
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_LED_RX),MP_ROM_PTR(&pin_PB06) },
|
||||||
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_LED_TX),MP_ROM_PTR(&pin_PB07) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_I2C), MP_ROM_PTR(&board_i2c_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_SPI), MP_ROM_PTR(&board_spi_obj) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_UART), MP_ROM_PTR(&board_uart_obj) },
|
||||||
|
};
|
||||||
|
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
|
@ -79,7 +79,9 @@ void board_init(void) {
|
|||||||
&pin_PA09, // Command or data
|
&pin_PA09, // Command or data
|
||||||
&pin_PA08, // Chip select
|
&pin_PA08, // Chip select
|
||||||
NULL, // Reset
|
NULL, // Reset
|
||||||
24000000);
|
24000000, // Baudrate
|
||||||
|
0, // Polarity
|
||||||
|
0); // Phase
|
||||||
|
|
||||||
displayio_display_obj_t* display = &displays[0].display;
|
displayio_display_obj_t* display = &displays[0].display;
|
||||||
display->base.type = &displayio_display_type;
|
display->base.type = &displayio_display_type;
|
||||||
@ -95,6 +97,7 @@ void board_init(void) {
|
|||||||
false, // pixels in byte share row. Only used with depth < 8
|
false, // pixels in byte share row. Only used with depth < 8
|
||||||
1, // bytes per cell. Only valid for depths < 8
|
1, // bytes per cell. Only valid for depths < 8
|
||||||
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
false, // reverse_pixels_in_byte. Only valid for depths < 8
|
||||||
|
true, // reverse_pixels_in_word
|
||||||
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
MIPI_COMMAND_SET_COLUMN_ADDRESS, // Set column command
|
||||||
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
MIPI_COMMAND_SET_PAGE_ADDRESS, // Set row command
|
||||||
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
MIPI_COMMAND_WRITE_MEMORY_START, // Write memory command
|
||||||
@ -108,7 +111,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data as commands
|
false, // data as commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the MicroPython project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 Scott Shawcroft for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "boards/board.h"
|
||||||
|
|
||||||
|
void board_init(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool board_requests_safe_mode(void) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset_board(void) {
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
#define MICROPY_HW_BOARD_NAME "Winterbloom Big Honking Button"
|
||||||
|
#define MICROPY_HW_MCU_NAME "samd21g18"
|
||||||
|
|
||||||
|
#define MICROPY_HW_LED_STATUS (&pin_PA17)
|
||||||
|
|
||||||
|
#define SPI_FLASH_MOSI_PIN &pin_PB22
|
||||||
|
#define SPI_FLASH_MISO_PIN &pin_PB03
|
||||||
|
#define SPI_FLASH_SCK_PIN &pin_PB23
|
||||||
|
#define SPI_FLASH_CS_PIN &pin_PA27
|
||||||
|
|
||||||
|
// These are pins not to reset.
|
||||||
|
#define MICROPY_PORT_A (PORT_PA00 | PORT_PA01)
|
||||||
|
#define MICROPY_PORT_B ( 0 )
|
||||||
|
#define MICROPY_PORT_C ( 0 )
|
||||||
|
|
||||||
|
#define BOARD_HAS_CRYSTAL 0
|
||||||
|
|
||||||
|
// USB is always used internally so skip the pin objects for it.
|
||||||
|
#define IGNORE_PIN_PA24 1
|
||||||
|
#define IGNORE_PIN_PA25 1
|
@ -0,0 +1,34 @@
|
|||||||
|
# Adafruit
|
||||||
|
USB_VID = 0x239A
|
||||||
|
# Allocated for Big Honking Button at https://github.com/adafruit/circuitpython/issues/2715
|
||||||
|
USB_PID = 0x6005
|
||||||
|
USB_PRODUCT = "Big Honking Button"
|
||||||
|
USB_MANUFACTURER = "Winterbloom"
|
||||||
|
USB_DEVICES = "CDC,MSC"
|
||||||
|
|
||||||
|
CHIP_VARIANT = SAMD21G18A
|
||||||
|
CHIP_FAMILY = samd21
|
||||||
|
|
||||||
|
SPI_FLASH_FILESYSTEM = 1
|
||||||
|
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
||||||
|
EXTERNAL_FLASH_DEVICES = "GD25Q16C"
|
||||||
|
LONGINT_IMPL = MPZ
|
||||||
|
|
||||||
|
CIRCUITPY_AUDIOIO = 1
|
||||||
|
|
||||||
|
# Disable modules that are unusable on this special-purpose board.
|
||||||
|
CIRCUITPY_BITBANGIO = 0
|
||||||
|
CIRCUITPY_FRAMEBUFFERIO = 0
|
||||||
|
CIRCUITPY_FREQUENCYIO = 0
|
||||||
|
CIRCUITPY_I2CSLAVE = 0
|
||||||
|
CIRCUITPY_AUDIOBUSIO = 0
|
||||||
|
CIRCUITPY_BLEIO = 0
|
||||||
|
CIRCUITPY_DISPLAYIO = 0
|
||||||
|
CIRCUITPY_GAMEPAD = 0
|
||||||
|
CIRCUITPY_I2CSLAVE = 0
|
||||||
|
CIRCUITPY_NETWORK = 0
|
||||||
|
CIRCUITPY_TOUCHIO = 0
|
||||||
|
CIRCUITPY_PROTOMATTER = 0
|
||||||
|
CIRCUITPY_PS2IO = 0
|
||||||
|
CIRCUITPY_USB_HID = 0
|
||||||
|
CIRCUITPY_RTC = 0
|
@ -0,0 +1,10 @@
|
|||||||
|
#include "shared-bindings/board/__init__.h"
|
||||||
|
|
||||||
|
STATIC const mp_rom_map_elem_t board_global_dict_table[] = {
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_BUTTON), MP_ROM_PTR(&pin_PA07) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_HONK_OUT), MP_ROM_PTR(&pin_PA02) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GATE_OUT), MP_ROM_PTR(&pin_PA11) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_GATE_IN), MP_ROM_PTR(&pin_PA14) },
|
||||||
|
{ MP_ROM_QSTR(MP_QSTR_PITCH_IN), MP_ROM_PTR(&pin_PB08) },
|
||||||
|
};
|
||||||
|
MP_DEFINE_CONST_DICT(board_module_globals, board_global_dict_table);
|
@ -6,13 +6,14 @@ USB_PID = 0x8062
|
|||||||
USB_PRODUCT = "Sol"
|
USB_PRODUCT = "Sol"
|
||||||
USB_MANUFACTURER = "Winterbloom"
|
USB_MANUFACTURER = "Winterbloom"
|
||||||
USB_INTERFACE_NAME = "Sol"
|
USB_INTERFACE_NAME = "Sol"
|
||||||
|
USB_DEVICES = "CDC,MSC,AUDIO"
|
||||||
|
|
||||||
CHIP_VARIANT = SAMD51J20A
|
CHIP_VARIANT = SAMD51J20A
|
||||||
CHIP_FAMILY = samd51
|
CHIP_FAMILY = samd51
|
||||||
|
|
||||||
QSPI_FLASH_FILESYSTEM = 1
|
QSPI_FLASH_FILESYSTEM = 1
|
||||||
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
EXTERNAL_FLASH_DEVICE_COUNT = 2
|
||||||
EXTERNAL_FLASH_DEVICES = W25Q32JV_IQ
|
EXTERNAL_FLASH_DEVICES = "GD25Q64C, W25Q32JV_IQ"
|
||||||
LONGINT_IMPL = MPZ
|
LONGINT_IMPL = MPZ
|
||||||
|
|
||||||
# Disable modules that are unusable on this special-purpose board.
|
# Disable modules that are unusable on this special-purpose board.
|
||||||
@ -20,11 +21,14 @@ CIRCUITPY_AUDIOBUSIO = 0
|
|||||||
CIRCUITPY_AUDIOIO = 0
|
CIRCUITPY_AUDIOIO = 0
|
||||||
CIRCUITPY_BLEIO = 0
|
CIRCUITPY_BLEIO = 0
|
||||||
CIRCUITPY_DISPLAYIO = 0
|
CIRCUITPY_DISPLAYIO = 0
|
||||||
|
CIRCUITPY_FRAMEBUFFERIO = 0
|
||||||
CIRCUITPY_GAMEPAD = 0
|
CIRCUITPY_GAMEPAD = 0
|
||||||
CIRCUITPY_I2CSLAVE = 0
|
CIRCUITPY_I2CSLAVE = 0
|
||||||
CIRCUITPY_NETWORK = 0
|
CIRCUITPY_NETWORK = 0
|
||||||
CIRCUITPY_TOUCHIO = 0
|
CIRCUITPY_TOUCHIO = 0
|
||||||
|
CIRCUITPY_PROTOMATTER = 0
|
||||||
CIRCUITPY_PS2IO = 0
|
CIRCUITPY_PS2IO = 0
|
||||||
|
CIRCUITPY_USB_HID = 0
|
||||||
|
|
||||||
# Enable micropython.native
|
# Enable micropython.native
|
||||||
CIRCUITPY_ENABLE_MPY_NATIVE = 1
|
CIRCUITPY_ENABLE_MPY_NATIVE = 1
|
||||||
|
78
ports/atmel-samd/common-hal/_protomatter/Protomatter.c
Normal file
78
ports/atmel-samd/common-hal/_protomatter/Protomatter.c
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the Micro Python project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 Jeff Epler for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#include "common-hal/_protomatter/Protomatter.h"
|
||||||
|
|
||||||
|
#include "samd/timers.h"
|
||||||
|
#include "timer_handler.h"
|
||||||
|
|
||||||
|
void *common_hal_protomatter_timer_allocate() {
|
||||||
|
uint8_t timer_index = find_free_timer();
|
||||||
|
if (timer_index == 0xff) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
timer_never_reset(timer_index, true);
|
||||||
|
return tc_insts[timer_index];
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint8_t tc_index_from_ptr(void* ptr) {
|
||||||
|
for (uint8_t i = TC_INST_NUM; i > 0; i--) {
|
||||||
|
if (tc_insts[i] == ptr) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0xff;
|
||||||
|
}
|
||||||
|
|
||||||
|
void common_hal_protomatter_timer_enable(void* ptr) {
|
||||||
|
uint8_t timer_index = tc_index_from_ptr(ptr);
|
||||||
|
if (timer_index == 0xff) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
set_timer_handler(true, timer_index, TC_HANDLER_PROTOMATTER);
|
||||||
|
turn_on_clocks(true, timer_index, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void common_hal_protomatter_timer_disable(void* ptr) {
|
||||||
|
uint8_t timer_index = tc_index_from_ptr(ptr);
|
||||||
|
if (timer_index == 0xff) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
set_timer_handler(true, timer_index, TC_HANDLER_NO_INTERRUPT);
|
||||||
|
tc_set_enable(ptr, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void common_hal_protomatter_timer_free(void* ptr) {
|
||||||
|
uint8_t timer_index = tc_index_from_ptr(ptr);
|
||||||
|
if (timer_index == 0xff) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
tc_set_enable(ptr, false);
|
||||||
|
tc_reset(ptr);
|
||||||
|
timer_reset_ok(timer_index, true);
|
||||||
|
}
|
35
ports/atmel-samd/common-hal/_protomatter/Protomatter.h
Normal file
35
ports/atmel-samd/common-hal/_protomatter/Protomatter.h
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of the Micro Python project, http://micropython.org/
|
||||||
|
*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2020 Jeff Epler for Adafruit Industries
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
* THE SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_PROTOMATTER_PROTOMATTER_H
|
||||||
|
#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_PROTOMATTER_PROTOMATTER_H
|
||||||
|
|
||||||
|
void *common_hal_protomatter_timer_allocate(void);
|
||||||
|
void common_hal_protomatter_timer_enable(void*);
|
||||||
|
void common_hal_protomatter_timer_disable(void*);
|
||||||
|
void common_hal_protomatter_timer_free(void*);
|
||||||
|
|
||||||
|
#endif
|
0
ports/atmel-samd/common-hal/_protomatter/__init__.c
Normal file
0
ports/atmel-samd/common-hal/_protomatter/__init__.c
Normal file
@ -73,7 +73,7 @@ void common_hal_analogio_analogin_construct(analogio_analogin_obj_t* self,
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool common_hal_analogio_analogin_deinited(analogio_analogin_obj_t *self) {
|
bool common_hal_analogio_analogin_deinited(analogio_analogin_obj_t *self) {
|
||||||
return self->pin == mp_const_none;
|
return self->pin == NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void common_hal_analogio_analogin_deinit(analogio_analogin_obj_t *self) {
|
void common_hal_analogio_analogin_deinit(analogio_analogin_obj_t *self) {
|
||||||
@ -81,7 +81,7 @@ void common_hal_analogio_analogin_deinit(analogio_analogin_obj_t *self) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
reset_pin_number(self->pin->number);
|
reset_pin_number(self->pin->number);
|
||||||
self->pin = mp_const_none;
|
self->pin = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void analogin_reset() {
|
void analogin_reset() {
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user