Difference between revisions of "M0dularis+"
Konnekting (talk | contribs) |
Konnekting (talk | contribs) |
||
(29 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{| class="wikitable" style="float:right;margin-left: 15px;margin-top: 15px; margin-bottom: 15px;" | {| class="wikitable" style="float:right;margin-left: 15px;margin-top: 15px; margin-bottom: 15px;" | ||
− | ! colspan="2"|M0dularis | + | ! colspan="2"|M0dularis+ |
|- | |- | ||
− | ! colspan="2"|[[File:M0dularisM Plus.jpg|300px|thumb|center| | + | ! colspan="2"|[[File:M0dularisM Plus.jpg|300px|thumb|center|M0dularis+ Controller with µBCU]] |
|- | |- | ||
! Developer | ! Developer | ||
Line 8: | Line 8: | ||
|- | |- | ||
! Status/Current Version | ! Status/Current Version | ||
− | | Version 1. | + | | Working and stable / Version 1.1 |
|- | |- | ||
! µC | ! µC | ||
Line 26: | Line 26: | ||
== Hardware == | == Hardware == | ||
+ | |||
+ | This controller uses the same microcontroller IC as the Arduino Zero (https://store.arduino.cc/usa/arduino-zero). So you can use it almost the same way. The only difference: | ||
+ | |||
+ | * no EDBG connector | ||
+ | * different formfactor and connectors | ||
+ | * and therefore, partially different pins | ||
+ | |||
+ | === Features === | ||
+ | |||
+ | The design principle was: Get the most of out of the Arduino Zero (wrt Pins and Features) and fit into the modular concept of KONNEKTING. Everything that is not available, can be added via I2C or SPI or UART. So even if there are not much PWM capable pins available (which won't let you build a 16 channel PWM dimmer), you can add PWM via I2C. Same counts for general purpose IO pins. | ||
+ | |||
+ | * 11 pins with external interrupt | ||
+ | * 8 pins with PWM up to 10bit (more pins and up to 16bit when using this library [https://github.com/Adminius/DimmerZero/blob/master/readme.md]) | ||
+ | * up to 3x SPI | ||
+ | * up to 3x UART | ||
+ | * up to 3x I2C | ||
=== Application Connector === | === Application Connector === | ||
Line 35: | Line 51: | ||
! scope="col"| | ! scope="col"| | ||
! scope="col"|Description | ! scope="col"|Description | ||
− | ! scope="col" | + | ! scope="col" colspan="2"|Pin |
− | |||
! scope="col"|Description | ! scope="col"|Description | ||
! scope="col"| | ! scope="col"| | ||
Line 60: | Line 75: | ||
| | | | ||
| | | | ||
− | | | + | |SJ: 3.3V or 5V |
| style="background-color: red;"|VCC | | style="background-color: red;"|VCC | ||
|3 | |3 | ||
Line 73: | Line 88: | ||
|TX3 | |TX3 | ||
| | | | ||
− | |PA22 / SDA | + | |PA22/SDA# |
| style="background-color: yellow;"|SDA / IO0 | | style="background-color: yellow;"|SDA / IO0 | ||
|5 | |5 | ||
|6 | |6 | ||
| style="background-color: limegreen;"|IO3 | | style="background-color: limegreen;"|IO3 | ||
− | |SJ: PA19/D12 | + | |SJ: PA19/D12*# or PA02/A0 |
|MISO1 | |MISO1 | ||
|RX1 | |RX1 | ||
Line 86: | Line 101: | ||
|RX3 | |RX3 | ||
| | | | ||
− | |PA23 / SCL | + | |PA23/SCL# |
| style="background-color: yellow;"|SCL / IO1 | | style="background-color: yellow;"|SCL / IO1 | ||
|7 | |7 | ||
|8 | |8 | ||
| style="background-color: lightblue;"|ExtINT Application / IO2 | | style="background-color: lightblue;"|ExtINT Application / IO2 | ||
− | |SJ: PA18/D10 | + | |SJ: PA18/D10*# or PB09/A2 |
|SS1 | |SS1 | ||
|TX1 | |TX1 | ||
Line 99: | Line 114: | ||
|RX2 | |RX2 | ||
|MISO2 | |MISO2 | ||
− | |PA09 / D3 | + | |PA09/D3*# |
| style="background-color: mediumseagreen;"|Option0 | | style="background-color: mediumseagreen;"|Option0 | ||
|9 | |9 | ||
|10 | |10 | ||
| style="background-color: mediumseagreen;"|Option7 | | style="background-color: mediumseagreen;"|Option7 | ||
− | |PA17 / D13 | + | |PA17/D13*# |
|SCK1 | |SCK1 | ||
|RX1 | |RX1 | ||
Line 112: | Line 127: | ||
|TX2 | |TX2 | ||
|MOSI2 | |MOSI2 | ||
− | |PA08 / D4 | + | |PA08/D4* |
| style="background-color: mediumseagreen;"|Option1 | | style="background-color: mediumseagreen;"|Option1 | ||
|11 | |11 | ||
|12 | |12 | ||
| style="background-color: mediumseagreen;"|Option6 | | style="background-color: mediumseagreen;"|Option6 | ||
− | |PA16 / D11 | + | |PA16/D11*# |
|MOSI1 | |MOSI1 | ||
|TX1 | |TX1 | ||
Line 125: | Line 140: | ||
| | | | ||
|SCK2 | |SCK2 | ||
− | |PA15 / D5 | + | |PA15/D5*# |
| style="background-color: mediumseagreen;"|Option2 | | style="background-color: mediumseagreen;"|Option2 | ||
|13 | |13 | ||
|14 | |14 | ||
| style="background-color: mediumseagreen;"|Option5 | | style="background-color: mediumseagreen;"|Option5 | ||
− | |PA20 / D6 | + | |PA20/D6*# |
| | | | ||
| | | | ||
Line 138: | Line 153: | ||
| | | | ||
|SS2 | |SS2 | ||
− | |PA14 / D2 | + | |PA14/D2# |
| style="background-color: mediumseagreen;"|Option3 | | style="background-color: mediumseagreen;"|Option3 | ||
|15 | |15 | ||
|16 | |16 | ||
| style="background-color: mediumseagreen;"|Option4 | | style="background-color: mediumseagreen;"|Option4 | ||
− | |PA21 / D7 | + | |PA21/D7# |
| | | | ||
| | | | ||
| | | | ||
|} | |} | ||
+ | |||
+ | ''<nowiki>SJ</nowiki> = solder jumper''<br/> | ||
+ | ''<nowiki>*</nowiki> = PWM capable''<br/> | ||
+ | ''<nowiki>#</nowiki> = INT capable'' | ||
+ | |||
+ | See [https://github.com/arduino/ArduinoCore-samd/blob/master/variants/arduino_zero/variant.cpp] for more details | ||
− | You can | + | You can configure different settings via solder-jumper (SJ): |
* IO3: D12 or A0 | * IO3: D12 or A0 | ||
* IO2: D10 or A2 | * IO2: D10 or A2 | ||
− | * Application connector: 5V | + | * Application connector: 5V or 3.3V |
− | * Frontend connector: 5V | + | * Frontend connector: 5V or 3.3V |
− | * I2C (on IO0/IO1): PullUp or | + | * I2C (on IO0/IO1): PullUp or NoPullUp |
− | |||
− | |||
=== OnBoard Connections === | === OnBoard Connections === | ||
− | * '''ProgButton*''': D15 / A1 [EIC8] | + | * '''ProgButton*''': D15 (/ A1 [EIC8]) |
− | * '''ProgLED''': D19 / A5 | + | * '''ProgLED''': D19 (/ A5) |
− | * '''BCU Save | + | * '''BCU Save''': D17 (/ A3 [EIC4]) |
− | * '''BCU Reset | + | * '''BCU Reset''': Solder jumper for connecting SAMD-RESET and BCU-RESET Pin |
− | * '''ExtInt TOP*''': D38 [EIC13] | + | * '''ExtInt TOP*''': D38 ([EIC13]) |
* '''SPI Flash''' | * '''SPI Flash''' | ||
** '''CS''': D9 | ** '''CS''': D9 | ||
Line 173: | Line 192: | ||
** '''CLK''': PB11 / D24 SCK | ** '''CLK''': PB11 / D24 SCK | ||
− | + | ''<nowiki>*</nowiki> = PWM capable'' | |
+ | == Version Changelog == | ||
− | == | + | === v1.0 === |
+ | |||
+ | initial Version | ||
+ | |||
+ | === v1.1 === | ||
+ | |||
+ | * improved silk-screen on top. no change in drills, vias or traces. Electrically identical to v1.0 | ||
== Developer Documentation == | == Developer Documentation == | ||
+ | |||
+ | === How to use SPI Flash === | ||
+ | |||
+ | I recommend to use this SPI Flash Library: https://github.com/Marzogh/SPIFlash | ||
+ | |||
+ | You need to explicitly tell the library the CS-Pin: | ||
+ | |||
+ | <syntaxhighlight lang=c++ line> | ||
+ | // set CS pin to D9 | ||
+ | SPIFlash flash(9); | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | For testing, you can use https://github.com/Marzogh/SPIFlash/tree/development/examples/TestFlash and modify the said line to use the custom CS pin D9. | ||
== Build It == | == Build It == |
Latest revision as of 05:56, 18 October 2019
M0dularis+ | |
---|---|
Developer | Alexander Christian |
Status/Current Version | Working and stable / Version 1.1 |
µC | Atmel/Microchip SAMD21G18J |
KNX | Siemens BCU / Micro BCU |
Description
Controller-Board, mainly designed for OKW 4TE REG case, but also useable with anything else that fits. Can be used with Siemens BCU and Eugen's µBCU. Uses the powerful SAMD21 microcontroller from Microchip/Atmel and has optional I²C EEPROM and SPI Flash.
Hardware
This controller uses the same microcontroller IC as the Arduino Zero (https://store.arduino.cc/usa/arduino-zero). So you can use it almost the same way. The only difference:
- no EDBG connector
- different formfactor and connectors
- and therefore, partially different pins
Features
The design principle was: Get the most of out of the Arduino Zero (wrt Pins and Features) and fit into the modular concept of KONNEKTING. Everything that is not available, can be added via I2C or SPI or UART. So even if there are not much PWM capable pins available (which won't let you build a 16 channel PWM dimmer), you can add PWM via I2C. Same counts for general purpose IO pins.
- 11 pins with external interrupt
- 8 pins with PWM up to 10bit (more pins and up to 16bit when using this library [1])
- up to 3x SPI
- up to 3x UART
- up to 3x I2C
Application Connector
Description | Pin | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
GND / KNX GND | 1 | 2 | GND from 24V Input | ||||||||
SJ: 3.3V or 5V | VCC | 3 | 4 | 24V from 24V Input | |||||||
TX3 | PA22/SDA# | SDA / IO0 | 5 | 6 | IO3 | SJ: PA19/D12*# or PA02/A0 | MISO1 | RX1 | |||
RX3 | PA23/SCL# | SCL / IO1 | 7 | 8 | ExtINT Application / IO2 | SJ: PA18/D10*# or PB09/A2 | SS1 | TX1 | |||
SDA2 | RX2 | MISO2 | PA09/D3*# | Option0 | 9 | 10 | Option7 | PA17/D13*# | SCK1 | RX1 | SCL1 |
SCL2 | TX2 | MOSI2 | PA08/D4* | Option1 | 11 | 12 | Option6 | PA16/D11*# | MOSI1 | TX1 | SDA1 |
SCK2 | PA15/D5*# | Option2 | 13 | 14 | Option5 | PA20/D6*# | |||||
SS2 | PA14/D2# | Option3 | 15 | 16 | Option4 | PA21/D7# |
SJ = solder jumper
* = PWM capable
# = INT capable
See [2] for more details
You can configure different settings via solder-jumper (SJ):
- IO3: D12 or A0
- IO2: D10 or A2
- Application connector: 5V or 3.3V
- Frontend connector: 5V or 3.3V
- I2C (on IO0/IO1): PullUp or NoPullUp
OnBoard Connections
- ProgButton*: D15 (/ A1 [EIC8])
- ProgLED: D19 (/ A5)
- BCU Save: D17 (/ A3 [EIC4])
- BCU Reset: Solder jumper for connecting SAMD-RESET and BCU-RESET Pin
- ExtInt TOP*: D38 ([EIC13])
- SPI Flash
- CS: D9
- DO/IO1: PA12 / D22 MISO
- DI/IO0: PB10 / D23 MOSI
- CLK: PB11 / D24 SCK
* = PWM capable
Version Changelog
v1.0
initial Version
v1.1
- improved silk-screen on top. no change in drills, vias or traces. Electrically identical to v1.0
Developer Documentation
How to use SPI Flash
I recommend to use this SPI Flash Library: https://github.com/Marzogh/SPIFlash
You need to explicitly tell the library the CS-Pin:
1// set CS pin to D9
2SPIFlash flash(9);
For testing, you can use https://github.com/Marzogh/SPIFlash/tree/development/examples/TestFlash and modify the said line to use the custom CS pin D9.