Skip to content

Commit 7c28b40

Browse files
committed
Added MattairTech Xeno support (64-pin D21/L21/C21)
1 parent 9bb5076 commit 7c28b40

Some content is hidden

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

52 files changed

+4746
-71
lines changed

CHANGELOG

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,20 @@
1+
1.6.16: (identical to beta version 1.6.8-beta-b3)
2+
1.6.8-beta-b3:
3+
* Changed version numbering to match Arduino SAMD core to indicate which upstream changes have been merged in.
4+
Release version 1.6.7 then skips to 1.6.16. Beta version 1.6.8-beta-b3 became release version 1.6.16.
5+
* Added MattairTech Xeno support (64-pin D21, L21, and C21)
6+
* Merged in changes from upstream SAMD CORE 1.6.17 (not released yet):
7+
* Fix changing trigger mode (RISING/FALLING/...) in attachInterrupt(..) during runtime. Thanks @joverbee
8+
* Improved ISR response time. Thanks @joverbee
9+
* Merged in changes from upstream SAMD CORE 1.6.16 2017.08.23:
10+
* PWMs now can perform real 16-bit resolution if analogWriteResolution(16) is set. Thanks @Adminius
11+
* USB CDC: fixed issue of available() getting stuck when receiving ZLP's
12+
* Serial (UART) tx is now buffered.
13+
* Updated Stream and Print class
14+
* Native USB now supports USB Serial Number
15+
* Fixed pgm_read_ptr compatibility macro. Thanks @nkrkv
16+
* Documentation updates
17+
118
1.6.8-beta-b2:
219
* Added SD Card firmware loading support to the bootloader (4KB and 8KB)
320
* Removed SDU library, as the bootloader now supports SD cards directly

README.md

Lines changed: 52 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
The MattairTech SAM M0+ Core is a fork from arduino/ArduinoCore-samd on GitHub, which will
44
be used to maintain Arduino support for MattairTech branded boards (see
5-
https://www.mattairtech.com/) as well as "Generic" boards.
5+
https://www.mattairtech.com/) as well as for "Generic" boards.
66

77
* Supports the SAMD21, SAMD11, SAML21, and SAMC21.
88
* Supports four clock sources (two crystals, internal oscillator, and USB calibrated).
@@ -11,14 +11,35 @@ https://www.mattairtech.com/) as well as "Generic" boards.
1111
*This core is intended to be installed using Boards Manager (see below). To update from a*
1212
*previous version, click on MattairTech SAM M0+ Boards in Boards Manager, then click Update.*
1313

14-
**Differences from Arduino in Versioning** The MattairTech version number does not
15-
correspond to either the IDE version or to the upstream ArduinoCore-samd version. See the
16-
CHANGELOG for details on which upstream commits have been merged in to the MattairTech core.
14+
**New Version Numbering** The MattairTech version number will now track with the Arduino
15+
version number, to better understand which upstream changes have been merged in. See the
16+
CHANGELOG for details on upstream commits and MattairTech additions that have been merged.
1717

1818

19-
## What's New Beta (1.6.8-beta)
19+
## What's New - Release Version (1.6.16)
20+
21+
* Changed version numbering to match Arduino SAMD core to indicate which upstream changes have been merged in.
22+
Release version 1.6.7 then skips to 1.6.16. Beta version 1.6.8-beta-b3 became 1.6.16.
23+
* Added MattairTech Xeno support (64-pin D21, L21, and C21)
24+
* Merged in changes from upstream SAMD CORE 1.6.17 (not released yet):
25+
* Fix changing trigger mode (RISING/FALLING/...) in attachInterrupt(..) during runtime. Thanks @joverbee
26+
* Improved ISR response time. Thanks @joverbee
27+
* Merged in changes from upstream SAMD CORE 1.6.16 2017.08.23:
28+
* PWMs now can perform real 16-bit resolution if analogWriteResolution(16) is set. Thanks @Adminius
29+
* USB CDC: fixed issue of available() getting stuck when receiving ZLP's
30+
* Serial (UART) tx is now buffered.
31+
* Updated Stream and Print class
32+
* Native USB now supports USB Serial Number
33+
* Fixed pgm_read_ptr compatibility macro. Thanks @nkrkv
34+
* Documentation updates
35+
36+
37+
## What's New - Beta Version (1.6.8-beta)
2038
**See Beta Builds section for installation instructions.**
2139

40+
**1.6.8-beta-b3:**
41+
*Beta version 1.6.8-beta-b3 became release version 1.6.16. See above*
42+
2243
**1.6.8-beta-b2:**
2344
* Added SD Card firmware loading support to the bootloader (4KB and 8KB)
2445
* Removed SDU library, as the bootloader now supports SD cards directly
@@ -57,47 +78,29 @@ CHANGELOG for details on which upstream commits have been merged in to the Matta
5778
* Merged in all changes from upstream through SAMD CORE 1.6.14 (April 2017)
5879

5980

60-
## What's New Release (1.6.6)
61-
**This is out of date, use the beta for now.**
62-
63-
* 1.6.6-mt3:
64-
* Fixes compilation with CDC_UART and CDC_ONLY settings
65-
66-
* 1.6.6-mt2:
67-
* Changes the default Communication setting to CDC_UART (from CDC_HID_UART)
68-
69-
* 1.6.6-mt1:
70-
* New documentation section 'Special Notes'. Please read!
71-
* Updated ASCII pinouts to be more readable and less ambiguous.
72-
* Updated the Signed driver for Windows (extras directory) (see CHANGELOG for details)
73-
* Merged in changes from upstream (see CHANGELOG for details)
74-
* Fix warnings about deprecated recipe.ar.pattern
75-
* Merged in changes from upstream SAMD CORE 1.6.2 2015.11.03 (see CHANGELOG for details)
76-
77-
7881
## Features Summary
7982

8083
Feature | 21J (64 pin) | 21G (48 pin) | 21E (32 pin) | D11 (24, 20, or 14 pin)
8184
----------------|---------------------------------------|---------------------------------------|---------------------------------------|---------------------------------------
82-
Board Variants | New board coming June, Generic 21J | Arduino Zero, Arduino M0, Generic 21G | MT-D21E, Generic 21E | MT-D11, Generic D11D14AM, Generic D11D14AS, Generic D11C14A
85+
Board Variants | MattairTech Xeno, Generic 21J | Arduino Zero, Arduino M0, Generic 21G | MT-D21E, Generic 21E | MT-D11, Generic D11D14AM, Generic D11D14AS, Generic D11C14A
8386
Processor | 48 MHz 32-bit ARM Cortex M0+ | 48 MHz 32-bit ARM Cortex M0+ | 48 MHz 32-bit ARM Cortex M0+ | 48 MHz 32-bit ARM Cortex M0+
8487
Flash Memory | Up to 256KB (L21/C21 have RWW) | Up to 256KB (L21/C21 have RWW) | Up to 256KB (L21/C21 have RWW) | 16 KB (4KB used by bootloader)
8588
SRAM | Up to 32KB (plus <=8KB LPSRAM on L21) | Up to 32KB (plus <=8KB LPSRAM on L21) | Up to 32KB (plus <=8KB LPSRAM on L21) | 4 KB
8689
Digital Pins | 52 (51 for L21) | 38 (37 for L21) | 26 (25 for L21) | 24-pin: 21, 20-pin: 17, 14-pin: 11
87-
Analog Inputs | 20 channels, 12-bit | 14 channels, 12-bit | 10 channels, 12-bit | 24-pin: 10, 20-pin: 8, 14-pin: 5 (12-bit)
90+
Analog Inputs | 18 channels, 12-bit | 14 channels, 12-bit | 10 channels, 12-bit | 24-pin: 10, 20-pin: 8, 14-pin: 5 (12-bit)
8891
Analog Outputs | One 10-bit (two 12-bit on L21) | One 10-bit (two 12-bit on L21) | One 10-bit (two 12-bit on L21) | One 10-bit
8992
PWM Outputs | 18 | 14 | 14 | 8 (6 for 14-pin)
9093
Interrupts | 16 | 16 | 16 | 8 (7 for 14-pin)
9194
USB | Full Speed Device and Host (not C21) | Full Speed Device and Host (not C21) | Full Speed Device and Host (not C21) | Full Speed Device
9295
SERCOM* | 6 | 6 | 4 (6 for L21) | 3 (2 for 14-pin)
93-
UART (Serial)* | Up to 6 | Up to 6 | Up to 4 (up to 6 for L21) | Up to 2
94-
SPI* | Up to 3 | Up to 2 | Up to 2 | Up to 1
95-
I2C (WIRE)* | Up to 3 | Up to 2 | Up to 2 | Up to 1
96+
UART (Serial)* | Up to 3 (will add more later) | Up to 6 | Up to 4 (up to 6 for L21) | Up to 2
97+
SPI* | Up to 2 (will add more later) | Up to 2 | Up to 2 | Up to 1
98+
I2C (WIRE)* | Up to 2 (will add more later) | Up to 2 | Up to 2 | Up to 1
9699
I2S | Present on the D21 only | Present on the D21 only | Present on the D21 only | Not present
97100
Voltage | 1.62V-3.63V (2.7V-5.5V for the C21) | 1.62V-3.63V (2.7V-5.5V for the C21) | 1.62V-3.63V (2.7V-5.5V for the C21) | 1.62V-3.63V
98101
I/O Pin Current | D21: 7mA, L21: 5mA, C21: 6mA@5V | D21: 7mA, L21: 5mA, C21: 6mA@5V | D21: 7mA, L21: 5mA, C21: 6mA@5V | 7 mA
99102

100-
*Note that the maximum number of UART/SPI/I2C is the number of SERCOM. The number listed above for UART/SPI/I2C indicated how many are configurable through the Arduino IDE menu.*
103+
*Note that the maximum number of UART/SPI/I2C is the number of SERCOM. The number listed above for UART/SPI/I2C indicated how many are currently configurable through the Arduino IDE menu.*
101104

102105

103106

@@ -106,6 +109,8 @@ I/O Pin Current | D21: 7mA, L21: 5mA, C21: 6mA@5V | D21: 7mA, L21: 5mA, C21: 6mA
106109
Pin configuration and peripheral assignment information is now in the README.md for each board variant.
107110
README.md also now includes technical information on the new PinDescription table format.
108111

112+
* [MattairTech Xeno (SAMx21Jxxx)](https://github.com/mattairtech/ArduinoCore-samd/tree/master/variants/Xeno/README.md)
113+
109114
* [MattairTech MT-D21E Rev B (SAMx21Exxx)](https://github.com/mattairtech/ArduinoCore-samd/tree/master/variants/MT_D21E_revB/README.md)
110115

111116
* [MattairTech MT-D21E Rev A (SAMD21ExxA)](https://github.com/mattairtech/ArduinoCore-samd/tree/master/variants/MT_D21E/README.md)
@@ -114,17 +119,15 @@ README.md also now includes technical information on the new PinDescription tabl
114119

115120
* [MattairTech Generic D11C14A](https://github.com/mattairtech/ArduinoCore-samd/tree/master/variants/Generic_D11C14A/README.md)
116121

117-
* MattairTech x21J based board (coming July)
118-
119-
* MattairTech Generic D11D14AS (coming soon)
122+
* MattairTech Generic D11D14AS (future)
120123

121-
* MattairTech Generic D11D14AM (coming soon)
124+
* MattairTech Generic D11D14AM (future)
122125

123-
* MattairTech Generic x21E (coming soon)
126+
* MattairTech Generic x21E (future)
124127

125-
* MattairTech Generic x21G (coming soon)
128+
* MattairTech Generic x21G (future)
126129

127-
* MattairTech Generic x21J (coming soon)
130+
* MattairTech Generic x21J (future)
128131

129132
* [Arduino Zero (arduino.cc)](https://github.com/mattairtech/ArduinoCore-samd/tree/master/variants/arduino_zero/README.md)
130133

@@ -207,19 +210,19 @@ and SRAM usage by allowing CDC to be disabled (or USB completely disabled).
207210
There are up to four clock source choices, depending on board features and microcontroller. Since currently
208211
the cpu must run at 48MHz, the PLL or DFLL must be used (the SAMC can use OSC48M).
209212

210-
### 32KHZ_CRYSTAL (default)
213+
#### 32KHZ_CRYSTAL (default)
211214
* Uses both XOSC32K and FDPLL96M
212215
* High long-term accuracy, slow startup, medium current (PLL)
213216

214-
### HIGH_SPEED_CRYSTAL
217+
#### HIGH_SPEED_CRYSTAL
215218
* Uses both XOSC and FDPLL96M
216219
* High accuracy, medium startup, high current (XOSC and PLL)
217220

218-
### INTERNAL_OSCILLATOR
221+
#### INTERNAL_OSCILLATOR
219222
* Uses DFLL48M in open-loop mode (SAMC uses OSC48M)
220223
* Low accuracy, fast startup, medium-low current (low current with SAMC)
221224

222-
### INTERNAL_USB_CALIBRATED_OSCILLATOR (not available with SAMC)
225+
#### INTERNAL_USB_CALIBRATED_OSCILLATOR (not available with SAMC)
223226
* Uses DFLL48M in closed-loop mode
224227
* High accuracy, medium-fast startup, medium current
225228

@@ -346,10 +349,10 @@ AR_EXTERNAL_REFB | REFB | AR_INTREF_1V25 | 1.25V | AR_IN
346349

347350
### Common Settings
348351

349-
AR_INTERNAL = AR_INTERNAL_INTVCC0
350-
AR_INTERNAL2V23 = AR_INTERNAL_INTVCC0
351-
AR_INTERNAL1V65 = AR_INTERNAL_INTVCC1
352-
AR_EXTERNAL = AR_EXTERNAL_REFA
352+
* AR_INTERNAL = AR_INTERNAL_INTVCC0
353+
* AR_INTERNAL2V23 = AR_INTERNAL_INTVCC0
354+
* AR_INTERNAL1V65 = AR_INTERNAL_INTVCC1
355+
* AR_EXTERNAL = AR_EXTERNAL_REFA
353356

354357
*When using AR_INTERNAL2V23 or AR_INTERNAL1V65, these voltages are correct only when Vcc = 3.3V)*
355358

@@ -406,9 +409,8 @@ TODO
406409

407410
## Differences Between MattairTech and Arduino Cores (TODO)
408411

409-
* Table summarizing which core files are modified and by how much
410412
* Communications interfaces are mostly unchanged, including USB
411-
* Changes due to adding/changing features vs porting to new chip
413+
* All pins have high drive strength enabled by default
412414
* All pins (digital and analog) setup in STARTUP mode (enable INEN and set default pull direction to pullup (pullup will not be enabled))
413415
* INEN enabled for both input and output (but not analog)
414416
* pinPeripheral now handles disabling the DAC (if active). Note that on the L21, the DAC output would
@@ -419,6 +421,8 @@ TODO
419421
detected (even with a pullup on A31 (SWCLK)), which would change the peripheral mux of A31 to COM.
420422
This might not normally be a problem, but one strange effect is that Serial2 loses characters if pin A31 is not set as INPUT.
421423
So, the startup code calls pinMode(31, INPUT).
424+
* Todo: Table summarizing which core files are modified and by how much
425+
* Todo: List changes due to adding/changing features vs porting to new chip
422426

423427

424428
## Serial Monitor
@@ -754,12 +758,13 @@ from the MT-D11 variant.
754758
### Under Development
755759

756760
* PlatformIO support
761+
* SAM D51 (M4F) support (pin compatible with D21, similar peripherals and pin mapping)
757762
* Fix programming port for Arduino Zero and M0 board variants
758763
* Reduce SRAM usage by USB endpoint buffers by only allocating endpoints actually used (D11 especially)
759764

760765
### Possible Future
761766

762-
* Features for lower power consumption (library?) Summer 2017?
767+
* Features for lower power consumption (library?) Fall 2017?
763768
* Reliability and security enhancements
764769
* USB Host mode CDC ACM (partially complete; BSD-like license?)
765770
* SD card library? Port of FatFS and/or Petit FatFS?

0 commit comments

Comments
 (0)