Het FLWSB Main Board is een microcontroller bord gebaseerd op de ATSAM D21 in de vormfactor vergelijkbaar met een Arduino Nano. Het moet gemakkelijk zijn om dit bord in een breadboard te prikken en zo testen uit te voeren of schakelingen te bouwen.
PDF versie van de pinout diagram
Het is handig om een printplaat te kunnen ontwikkelen waar de SAMDaaNo21 opgeprikt kan worden.
Om dit proces te vergemakkelijken is er een KiCad bibliotheek ontwikkeld, die bevat een symbol, footprint en 3D-model.
Het is aangeraden om bibliotheken die niet standaard in KiCad zitten mee in de projectmap te steken en te importeren als projectbibliotheek. Als je je projectmap dan deelt met derden zullen zij meteen beschikken over alle nodige bibliotheken.
Tutorial: How to import into KiCad V6 & later?
SAMDaaNo21 bibliotheek bestanden
Het elektrisch schema van dit bord ziet er als volgt uit:
Alle onderdelen worden verder toegelicht.
Er zijn verschillende testpunten toegevoegd om op een gemakkelijke en toegankelijke manier verschillende parameters op het bord te kunnen meten.
Er is gekozen voor through hole testpunten zodat het gemakkelijk is om deze met een probe te meten. Alle testpunten zijn te vinden nabij de USB-poort.
Testpunt nummer | Verbinding |
---|---|
TP1 | VBUS: 5 V afkomstig van USB |
TP2 | VDD: 3,3 V gereguleerde spanning |
TP3 | VIN: Ingangsspanning voordat het naar de lineaire regelaar gaat |
Er is een RN2483 module mee geïmplementeerd op de printplaat. Deze is aangesloten op de UART bus van SERCOM 2.
De RN2483 bevindt zich aan het uiteinde. Er kan een antenne aangesloten worden via een U.FL connector.
Het schema voor de USB-interface is gebaseerd op een voorbeeld uit een Atmel handleiding. De zener diodes die zichtbaar zijn zorgen ervoor dat de kans op schade door elektrostatische ontlading (ESD) beperkt wordt.
De Schottky diode (D6) is er om de USB-poort van je laptop te beschermen wanneer het bord van stroom wordt voorzien via de VIN pin. Het zou kunnen dat aan de VIN pin een hogere spanning wordt geleverd dan 5 V waardoor dit potentiaalverschil ongewenste stroom kan laten vloeien. Hetzelfde principe wordt toegepast bij de ESP32 DEVKIT.
TP3
is een testpunt dat aanwezig is om op een toegankelijke manier de VIN-spanning te meten.
Het bordje kan voorzien worden van stroom via de USB-C poort. Een LDO (Low Dropout regelaar) zal de spanning afkomstig van de computer reguleren naar een stabiele 3,3 V.
De LDO is een LD1117S33 en ondersteunt een minimale ingangsspanning van 4,3 V en een maximale van 15 V. Dat kan worden aangelegd via de VIN pin. Er is een Schottky diode voorzien om ervoor te zorgen dat de spanning van VIN niet op de USB-poort komt te staan.
Let op dat je met een lineaire regelaar te maken hebt. Hoe hoger de ingangsspanning, hoe warmer de LDO zal worden!
Het is ook mogelijk om de regelaar over te slaan en rechtstreeks 3,3 V te leveren via de 3V3 pin. Dit kan handig zijn bij een situatie waarin we zo zuinig mogelijk willen zijn en een efficiëntere 3,3 V regelaar gebruiken van een andere pcb. Belangrijk is dat deze spanning niet te hard mag afwijken van 3,3 V!
De reset knop is opgebouwd zoals in de datasheet van de ATSAM D21 wordt weergegeven onder "Schematic Checklist Figure 45-4. External Reset Circuit Schematic".
Als er nog geen bootloader op de ATSAMD staat of als we een bare metal installatie gebruiken zullen we gebruik moeten maken van de program en debug header. Dat zijn de 3 pinnen centraal op de printplaat voor de LoRaWAN module. De pinout van links naar recht is: RESET, SWDIO, SWCLK.
De ATSAMD maakt gebruik van Serial Wire Debugging (SWD), dat maakt het mogelijk om via fuses in te stellen, binaries in te laden en zelfs break-points aan je code toe te voegen.
In dit geval wordt er een LD1117 3,3 V regelaar gebruikt. Deze regelaar kan met een vrij groot ingangsbereik (tot 15 V) een uitgangsspanning van 3,3 V leveren.
TP2
is een testpunt dat aanwezig is om op een toegankelijke manier de 3.3 V gereguleerde spanning te meten.
Het schema voor de ontkoppelcondensatoren en spoel voor de ATSAM D21 komt ook rechtstreeks uit de datasheet. Wat belangrijk is bij deze componenten is dat alles rechts van de blauwe stippellijn zo dicht mogelijk bij de vermelde pinnen staat. Deze condensatoren vangen kleine storingen en rimpels op die zich voordoen in de bronspanning.
Dit zijn alle GPIO, SERCOM en power aansluitingen die via pinheaders naar buiten worden gebracht. De SERCOM poorten zijn alvast gedefinieerd zodat onder andere de pull-up weerstanden geplaatst kunnen worden. Alle andere poorten zijn voor algemeen gebruik. In de datasheet van de ATSAM D21 onder 7. I/O Multiplexing and Considerations kunnen alle verschillende mogelijkheden van deze aansluitingen gevonden worden (AC, ADC, DAC, PTC, DAC, IO, ...).
PA12 en PA13 zijn onderdeel van de I²C bus en hebben al een pull-up weerstand van 4,7 K voorzien. Bij het plaatsen van nog externe pull-up weerstanden zullen zij in parallel staan en zal de weerstandswaarde te laag worden.
I/O Pin | Pin | SERCOM | SERCOM-ALT | External Interrupt | ADC, DAC, AC, REF | Peripheral Touch Controller | TC/TCC | TCC | COM | Generic Clock Generator |
---|---|---|---|---|---|---|---|---|---|---|
GND | PowerPin | Ground Reference | ||||||||
PA02 | 3 | EXTINT:2 | ADC:0 VOUT |
Y:0 | TCC3/ WO:0 |
|||||
PA03 | 4 | EXTINT:3 | ADC:1 VREFA |
Y:1 | TCC3/ WO:1 |
|||||
PB08 | 7 | SCOM4/ PAD:0 |
EXTINT:8 | ADC:2 | Y:14 | TC4/ WO:0 |
TCC3/ WO:6 |
|||
PB09 | 8 | SCOM4/ PAD:1 |
EXTINT:9 | ADC:3 | Y:15 | TC4/ WO:1 |
TCC3/ WO:7 |
|||
PA04 | 9 | SCOM0/ PAD:0 |
EXTINT:4 | ADC:4 AC:0 VREFB |
Y:2 | TCC0/ WO:0 |
TCC3/ WO:2 |
|||
PA05 | 10 | SCOM0/ PAD:1 |
EXTINT:5 | ADC:5 AC:1 |
Y:3 | TCC0/ WO:1 |
TCC3/ WO:3 |
|||
PA06 | 11 | SCOM0/ PAD:2 |
EXTINT:6 | ADC:6 AC:2 |
Y:4 | TCC1/ WO:0 |
TCC3/ WO:4 |
|||
PA07 | 12 | SCOM0/ PAD:3 |
EXTINT:7 | ADC:7 AC:3 |
Y:5 | TCC1/ WO:1 |
TCC3/ WO:5 |
I2S/ SD:0 |
||
PA08 | 13 | SCOM0/ PAD:0 |
SCOM2/ PAD:0 |
NMI | ADC:16 | X:0 | TCC0/ WO:0 |
TCC1/ WO:2 |
I2S/ SD:1 |
|
PA09 | 14 | SCOM0/ PAD:1 |
SCOM2/ PAD:1 |
EXTINT:9 | ADC:17 | X:1 | TCC0/ WO:1 |
TCC1/ WO:3 |
I2S/ MCK:0 |
|
PA10 | 15 | SCOM0/ PAD:2 |
SCOM2/ PAD:2 |
EXTINT:10 | ADC:18 | X:2 | TCC1/ WO:0 |
TCC0/ WO:2 |
I2S/ SCK:0 |
GCLK:4 |
PA11 | 16 | SCOM0/ PAD:3 |
SCOM2/ PAD:3 |
EXTINT:11 | ADC:19 | X:3 | TCC1/ WO:1 |
TCC0/ WO:3 |
I2S/ FS:0 |
GCLK:5 |
PA12 | 21 | SCOM2/ PAD:0 |
SCOM4/ PAD:0 |
EXTINT:12 | AC:0 | TCC2/ WO:0 |
TCC0/ WO:6 |
|||
PA13 | 22 | SCOM2/ PAD:1 |
SCOM4/ PAD:1 |
EXTINT:13 | AC:1 | TCC2/ WO:1 |
TCC0/ WO:7 |
|||
VIN | PowerPin | LDL1117S33 4.3 V - 15 V | ||||||||
3V3 | PowerPin | 3.3V LDO output | ||||||||
GND | PowerPin | Ground Reference | ||||||||
PB03 | 48 | SCOM5/ PAD:1 |
EXTINT:3 | ADC:11 | Y:9 | TC6/ WO:1 |
TCC3/ WO:3 |
|||
PB22 | 37 | SCOM5/ PAD:2 |
EXTINT:6 | TC7/ WO:0 |
TCC3/ WO:0 |
GCLK:0 | ||||
PA23 | 32 | SCOM3/ PAD:1 |
SCOM5/ PAD:1 |
EXTINT:7 | X:11 | TC4/ WO:0 |
TCC0/ WO:5 |
USB/ SOF 1KhZ |
GCLK:7 | |
PA22 | 31 | SCOM3/ PAD:0 |
SCOM5/ PAD:0 |
EXTINT:6 | X:10 | TC4/ WO:1 |
TCC0/ WO:4 |
GCLK:6 | ||
PA21 | 30 | SCOM5/ PAD:3 |
SCOM3/ PAD:3 |
EXTINT:5 | X:9 | TC7/ WO:1 |
TCC0/ WO:7 |
I2S/ FS:0 |
GCLK:5 | |
PA20 | 29 | SCOM5/ PAD:2 |
SCOM3/ PAD:2 |
EXTINT:4 | X:8 | TC7/ WO:0 |
TCC0/ WO:6 |
I2S/ SCK:0 |
GCLK:4 | |
PA19 | 28 | SCOM1/ PAD:3 |
SCOM3/ PAD:3 |
EXTINT:3 | AC:1 | X:7 | TC3/ WO:1 |
TCC0/ WO:3 |
I2S/ SD:0 |
|
PA18 | 27 | SCOM1/ PAD:2 |
SCOM3/ PAD:2 |
EXTINT:2 | AC:0 | X:6 | TC3/ WO:0 |
TCC0/ WO:2 |
||
PA17 | 26 | SCOM1/ PAD:1 |
SCOM3/ PAD:1 |
EXTINT:1 | X:5 | TCC2/ WO:1 |
TCC0/ WO:7 |
GCLK:3 | ||
PA16 | 25 | SCOM1/ PAD:0 |
SCOM3/ PAD:0 |
EXTINT:0 | X:4 | TCC2/ WO:0 |
TCC0/ WO:6 |
GCLK:2 | ||
PA15 | 24 | SCOM2/ PAD:3 |
SCOM4/ PAD:3 |
EXTINT:15 | TC3/ WO:1 |
TCC0/ WO:5 |
GCLK:1 | |||
PA14 | 23 | SCOM2/ PAD:2 |
SCOM4/ PAD:2 |
EXTINT:14 | TC3/ WO:0 |
TCC0/ WO:4 |
GCLK:0 |
SERCOM
: Serial Communication, keuze tussen: USART, I²C, SPI of SMBus
EXTINT[n]
: External Interrupts
AIN[n]
: ADC Analog Inputs
X[n]
, Y[n]
: Peripheral Touch Controller - PTC Input
TC4/WO[n]
, TC6/WO[n]
: Waveform/PWM Outputs
TCC3/WO[n]
: Waveform/PWM Outputs/ Capture Inputs
AC/CMP[n]
: AC Comparator Outputs
I2S/FS[n]
: Inter-IC Sound Controller, I²S Word Select or TDM Frame Sync
GCLK_IO[n]
: Generic Clock (source clock or generic clock generator output)
- Momenteel zijn er geen mounting holes aanwezig, dat vonden we nog niet prioritair.
- Mouning holes of inkepingen aan de randen van de printplaat zijn dus nog mogelijk en kunnen ook zeker van pas komen.
- De impedantie van het pad naar de antenne-aansluiting is niet theoretisch berekend. Dit is iets waar in een volgende versie over kan worden nagedacht.
- Er is geen LED aanwezig.
- Op het silkscreen staat een fout,
PA07
staat op het silkscreen alsPA09
. - Het schema bevat een fout die de LoRaWAN module onbruikbaar maakt. RX en TX van de UART-verbinding moeten omgewisseld worden.
Een UART-verbinding heeft een TX (transmit) en RX (receive) aansluiting nodig. Logischerwijze zal je dus, bij een verbinding tussen twee apparaten, RX en TX met elkaar verbinden. Bij het ontwerpen van dit schema is door onoplettendheid TX met TX verbonden en RX met RX verbonden.
De PINMUX van de ATSAM D21 kan iedere SERCOM pin als RX instellen, maar niet iedere pin als TX schakelen. Dit maakt het onmogelijk om de oplossing geheel softwarematig te zoeken. Enkel PAD0 en PAD2 van een SERCOM poort kan je instellen als TX.
Wij hebben PA8
(S2TX
op het silkscreen) ingesteld als RX omdat deze verbonden is met de TX van de LoRaWAN module. PA09
(S2RX
op het silkscreen) hebben we hoog impedant gezet (INPUT
) en kortgesloten met PA10
. PA10
is PAD2 van SERCOM2 dus kan ingesteld worden als nieuwe TX.
Het resultaat is dat we nu het baantje naar de RESET pin van de LoRaWAN module moeten onderbreken, omdat PA10
verbonden is met deze pin. Die onderbreking is het gemakkelijkste te maken met een mesje of platte schroevendraaier net op de plek waar deze richting het pad van de module gaat.
De aanpassingen van deze pinnen is gemaakt in de ArduinoCore dus er hoeft in de code niets gewijzigd te worden.
Er is geen manier meer om de module te resetten vanaf de MCU, moest dat nodig zijn, dan kan er een kabeltje gesoldeerd worden naar een van de vrije GPIO pinnen.