2
2
3
3
The MattairTech SAM M0+ Core is a fork from arduino/ArduinoCore-samd on GitHub, which will
4
4
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.
6
6
7
7
* Supports the SAMD21, SAMD11, SAML21, and SAMC21.
8
8
* Supports four clock sources (two crystals, internal oscillator, and USB calibrated).
@@ -11,14 +11,35 @@ https://www.mattairtech.com/) as well as "Generic" boards.
11
11
* This core is intended to be installed using Boards Manager (see below). To update from a*
12
12
* previous version, click on MattairTech SAM M0+ Boards in Boards Manager, then click Update.*
13
13
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 .
17
17
18
18
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)
20
38
** See Beta Builds section for installation instructions.**
21
39
40
+ ** 1.6.8-beta-b3:**
41
+ * Beta version 1.6.8-beta-b3 became release version 1.6.16. See above*
42
+
22
43
** 1.6.8-beta-b2:**
23
44
* Added SD Card firmware loading support to the bootloader (4KB and 8KB)
24
45
* 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
57
78
* Merged in all changes from upstream through SAMD CORE 1.6.14 (April 2017)
58
79
59
80
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
-
78
81
## Features Summary
79
82
80
83
Feature | 21J (64 pin) | 21G (48 pin) | 21E (32 pin) | D11 (24, 20, or 14 pin)
81
84
----------------|---------------------------------------|---------------------------------------|---------------------------------------|---------------------------------------
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
83
86
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+
84
87
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)
85
88
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
86
89
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)
88
91
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
89
92
PWM Outputs | 18 | 14 | 14 | 8 (6 for 14-pin)
90
93
Interrupts | 16 | 16 | 16 | 8 (7 for 14-pin)
91
94
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
92
95
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
96
99
I2S | Present on the D21 only | Present on the D21 only | Present on the D21 only | Not present
97
100
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
98
101
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
99
102
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.*
101
104
102
105
103
106
@@ -106,6 +109,8 @@ I/O Pin Current | D21: 7mA, L21: 5mA, C21: 6mA@5V | D21: 7mA, L21: 5mA, C21: 6mA
106
109
Pin configuration and peripheral assignment information is now in the README.md for each board variant.
107
110
README.md also now includes technical information on the new PinDescription table format.
108
111
112
+ * [ MattairTech Xeno (SAMx21Jxxx)] ( https://github.com/mattairtech/ArduinoCore-samd/tree/master/variants/Xeno/README.md )
113
+
109
114
* [ MattairTech MT-D21E Rev B (SAMx21Exxx)] ( https://github.com/mattairtech/ArduinoCore-samd/tree/master/variants/MT_D21E_revB/README.md )
110
115
111
116
* [ 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
114
119
115
120
* [ MattairTech Generic D11C14A] ( https://github.com/mattairtech/ArduinoCore-samd/tree/master/variants/Generic_D11C14A/README.md )
116
121
117
- * MattairTech x21J based board (coming July)
118
-
119
- * MattairTech Generic D11D14AS (coming soon)
122
+ * MattairTech Generic D11D14AS (future)
120
123
121
- * MattairTech Generic D11D14AM (coming soon )
124
+ * MattairTech Generic D11D14AM (future )
122
125
123
- * MattairTech Generic x21E (coming soon )
126
+ * MattairTech Generic x21E (future )
124
127
125
- * MattairTech Generic x21G (coming soon )
128
+ * MattairTech Generic x21G (future )
126
129
127
- * MattairTech Generic x21J (coming soon )
130
+ * MattairTech Generic x21J (future )
128
131
129
132
* [ Arduino Zero (arduino.cc)] ( https://github.com/mattairtech/ArduinoCore-samd/tree/master/variants/arduino_zero/README.md )
130
133
@@ -207,19 +210,19 @@ and SRAM usage by allowing CDC to be disabled (or USB completely disabled).
207
210
There are up to four clock source choices, depending on board features and microcontroller. Since currently
208
211
the cpu must run at 48MHz, the PLL or DFLL must be used (the SAMC can use OSC48M).
209
212
210
- ### 32KHZ_CRYSTAL (default)
213
+ #### 32KHZ_CRYSTAL (default)
211
214
* Uses both XOSC32K and FDPLL96M
212
215
* High long-term accuracy, slow startup, medium current (PLL)
213
216
214
- ### HIGH_SPEED_CRYSTAL
217
+ #### HIGH_SPEED_CRYSTAL
215
218
* Uses both XOSC and FDPLL96M
216
219
* High accuracy, medium startup, high current (XOSC and PLL)
217
220
218
- ### INTERNAL_OSCILLATOR
221
+ #### INTERNAL_OSCILLATOR
219
222
* Uses DFLL48M in open-loop mode (SAMC uses OSC48M)
220
223
* Low accuracy, fast startup, medium-low current (low current with SAMC)
221
224
222
- ### INTERNAL_USB_CALIBRATED_OSCILLATOR (not available with SAMC)
225
+ #### INTERNAL_USB_CALIBRATED_OSCILLATOR (not available with SAMC)
223
226
* Uses DFLL48M in closed-loop mode
224
227
* High accuracy, medium-fast startup, medium current
225
228
@@ -346,10 +349,10 @@ AR_EXTERNAL_REFB | REFB | AR_INTREF_1V25 | 1.25V | AR_IN
346
349
347
350
### Common Settings
348
351
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
353
356
354
357
* When using AR_INTERNAL2V23 or AR_INTERNAL1V65, these voltages are correct only when Vcc = 3.3V)*
355
358
406
409
407
410
## Differences Between MattairTech and Arduino Cores (TODO)
408
411
409
- * Table summarizing which core files are modified and by how much
410
412
* 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
412
414
* All pins (digital and analog) setup in STARTUP mode (enable INEN and set default pull direction to pullup (pullup will not be enabled))
413
415
* INEN enabled for both input and output (but not analog)
414
416
* pinPeripheral now handles disabling the DAC (if active). Note that on the L21, the DAC output would
419
421
detected (even with a pullup on A31 (SWCLK)), which would change the peripheral mux of A31 to COM.
420
422
This might not normally be a problem, but one strange effect is that Serial2 loses characters if pin A31 is not set as INPUT.
421
423
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
422
426
423
427
424
428
## Serial Monitor
@@ -754,12 +758,13 @@ from the MT-D11 variant.
754
758
### Under Development
755
759
756
760
* PlatformIO support
761
+ * SAM D51 (M4F) support (pin compatible with D21, similar peripherals and pin mapping)
757
762
* Fix programming port for Arduino Zero and M0 board variants
758
763
* Reduce SRAM usage by USB endpoint buffers by only allocating endpoints actually used (D11 especially)
759
764
760
765
### Possible Future
761
766
762
- * Features for lower power consumption (library?) Summer 2017?
767
+ * Features for lower power consumption (library?) Fall 2017?
763
768
* Reliability and security enhancements
764
769
* USB Host mode CDC ACM (partially complete; BSD-like license?)
765
770
* SD card library? Port of FatFS and/or Petit FatFS?
0 commit comments