Difference between revisions of "M0dularis+"

From KONNEKTING Wiki
Jump to navigation Jump to search
 
(19 intermediate revisions by the same user not shown)
Line 2: Line 2:
 
! colspan="2"|M0dularis+
 
! colspan="2"|M0dularis+
 
|-
 
|-
! colspan="2"|[[File:M0dularisM Plus.jpg|300px|thumb|center|M0dularisM+ Controller with µBCU]]
+
! 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.0 already works
+
| Working and stable / Version 1.1
 
|-
 
|-
 
! µC
 
! µC
Line 27: Line 27:
 
== Hardware ==
 
== Hardware ==
  
This controller uses 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:
+
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
 
* no EDBG connector
 
* different formfactor and connectors
 
* different formfactor and connectors
* and therefore, not all pins available
+
* 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.  
+
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 44: Line 51:
 
! scope="col"|
 
! scope="col"|
 
! scope="col"|Description
 
! scope="col"|Description
! scope="col"|Pin
+
! scope="col" colspan="2"|Pin
! scope="col"|Pin
 
 
! scope="col"|Description
 
! scope="col"|Description
 
! scope="col"|
 
! scope="col"|
Line 82: 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* or PA02/A0
+
|SJ: PA19/D12*# or PA02/A0
 
|MISO1
 
|MISO1
 
|RX1
 
|RX1
Line 95: 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* or PB09/A2
+
|SJ: PA18/D10*# or PB09/A2
 
|SS1
 
|SS1
 
|TX1
 
|TX1
Line 108: 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 126: Line 132:
 
|12
 
|12
 
| style="background-color: mediumseagreen;"|Option6
 
| style="background-color: mediumseagreen;"|Option6
|PA16/D11*
+
|PA16/D11*#
 
|MOSI1
 
|MOSI1
 
|TX1
 
|TX1
Line 134: 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 147: 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
  
  
Line 166: Line 178:
 
* Frontend connector: 5V or 3.3V
 
* Frontend connector: 5V or 3.3V
 
* I2C (on IO0/IO1): PullUp or NoPullUp
 
* I2C (on IO0/IO1): PullUp or NoPullUp
 
<nowiki>*</nowiki> = PWM capable<br/>
 
<nowiki>#</nowiki> = INT capable
 
  
 
=== OnBoard Connections ===
 
=== OnBoard Connections ===
  
* '''ProgButton*''': D15 / A1 [EIC8]
+
* '''ProgButton*''': D15 (/ A1 [EIC8])
* '''ProgLED''': D19 / A5
+
* '''ProgLED''': D19 (/ A5)
* '''BCU Save*''': D17 / A3 [EIC4]
+
* '''BCU Save''': D17 (/ A3 [EIC4])
* '''BCU Reset*''': Solder jumper for connecting SAMD-RESET and BCU-RESET Pin
+
* '''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 184: Line 193:
  
 
''<nowiki>*</nowiki> = PWM capable''
 
''<nowiki>*</nowiki> = PWM capable''
''<nowiki>#</nowiki> = INT 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 ==

Latest revision as of 05:56, 18 October 2019

M0dularis+
M0dularis+ Controller with µBCU
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.

Build It