Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Duet3D/RepRapFirmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Crocker <dcrocker@eschertech.com>2022-05-18 18:19:55 +0300
committerDavid Crocker <dcrocker@eschertech.com>2022-05-18 18:19:55 +0300
commita63451632e48388da8cfe5b0861a6a0461cc9d02 (patch)
tree2ab1248cda6dfc6c86b9f2c02ad11c9766435566 /src
parent32b9f715fdca487125cd77a57c458512929c78a2 (diff)
Added build configuration for FMDC v0.3
Diffstat (limited to 'src')
-rw-r--r--src/Config/Pins.h2
-rw-r--r--src/Config/Pins_FMDC.h101
-rw-r--r--src/Hardware/SAME5x/Devices.cpp12
-rw-r--r--src/Networking/Network.cpp2
-rw-r--r--src/Platform/Platform.cpp6
-rw-r--r--src/Platform/Platform.h2
6 files changed, 95 insertions, 30 deletions
diff --git a/src/Config/Pins.h b/src/Config/Pins.h
index 90703344..efa86e7f 100644
--- a/src/Config/Pins.h
+++ b/src/Config/Pins.h
@@ -23,7 +23,7 @@
# elif defined(DUET3MINI_V04)
# define DUET3MINI 1
# define PLATFORM Duet3Mini
-# elif defined(FMDC_V02)
+# elif defined(FMDC_V02) || defined(FMDC_V03)
# define DUET3MINI 1
# define PLATFORM FMDC
# elif defined(__LPC17xx__)
diff --git a/src/Config/Pins_FMDC.h b/src/Config/Pins_FMDC.h
index bcaa82e3..10bdc652 100644
--- a/src/Config/Pins_FMDC.h
+++ b/src/Config/Pins_FMDC.h
@@ -118,7 +118,12 @@ PortGroup * const StepPio = &(PORT->Group[2]); // The PIO that all the step pin
constexpr Pin STEP_PINS[NumDirectDrivers] = { PortCPin(26), PortCPin(25), PortCPin(24), PortCPin(20) };
constexpr Pin DIRECTION_PINS[NumDirectDrivers] = { PortBPin(3), PortAPin(27), PortBPin(1), PortBPin(2) };
+
+#if defined(FMDC_V03)
+constexpr Pin DriverDiagPins[NumDirectDrivers] = { PortCPin(28), PortBPin(8), PortCPin(27), PortCPin(21) };
+#elif defined(FMDC_V02)
constexpr Pin DriverDiagPins[NumDirectDrivers] = { PortAPin(10), PortBPin(8), PortCPin(27), PortCPin(21) };
+#endif
// CCL inputs that the DIAG inputs use. Bits 0-1 are the CCL LUT number. Bits 8-19 are the value to OR in to the control register for that LUT.
// LUT 0 is kept free for other uses.
@@ -189,16 +194,31 @@ constexpr Pin ActLedPin = NoPin; // Activity LED pin (not present)
constexpr bool DiagOnPolarity = false;
constexpr bool ActOnPolarity = false;
-// SD cards
+// SD cards and beeper
constexpr size_t NumSdCards = 2;
-constexpr Pin SdCardDetectPins[NumSdCards] = { PortBPin(16), /*PortBPin(0)*/ NoPin };
constexpr Pin SdWriteProtectPins[NumSdCards] = { NoPin, NoPin };
-constexpr Pin SdSpiCSPins[NumSdCards - HAS_HIGH_SPEED_SD] = { PortCPin(14) };
+
+#if defined(FMDC_V03)
+
+constexpr Pin SdCardDetectPins[NumSdCards] = { PortBPin(12), /*PortBPin(0)*/ NoPin };
+constexpr Pin SdMciPins[] = { PortAPin(8), PortAPin(9), PortAPin(10), PortAPin(11), PortBPin(10), PortBPin(11) };
+constexpr GpioPinFunction SdMciPinsFunction = GpioPinFunction::I;
+Sdhc * const SdhcDevice = SDHC0;
+constexpr IRQn_Type SdhcIRQn = SDHC0_IRQn;
+constexpr Pin BeeperPins[2] = { PortBPin(18), PortBPin(19) };
+
+#elif defined(FMDC_V02)
+
+constexpr Pin SdCardDetectPins[NumSdCards] = { PortBPin(16), /*PortBPin(0)*/ NoPin };
constexpr Pin SdMciPins[] = { PortAPin(20), PortAPin(21), PortBPin(18), PortBPin(19), PortBPin(20), PortBPin(21) };
constexpr GpioPinFunction SdMciPinsFunction = GpioPinFunction::I;
-Sdhc * const SdhcDevice = SDHC1;
constexpr IRQn_Type SdhcIRQn = SDHC1_IRQn;
+constexpr Pin BeeperPins[2] = { PortAPin(8), PortAPin(9) };
+
+#endif
+
+constexpr Pin SdSpiCSPins[NumSdCards - HAS_HIGH_SPEED_SD] = { PortCPin(14) };
constexpr uint32_t ExpectedSdCardSpeed = 15000000;
// LCD interface
@@ -213,20 +233,27 @@ constexpr Pin LcdSpiCsPin = PortAPin(6);
constexpr Pin LcdRtpPenPin = PortAPin(3);
constexpr Pin LcdDcPin = PortCPin(5);
constexpr Pin LcdResetPin = PortCPin(6);
+
+#if defined(FMDC_V03)
+constexpr Pin LcdFlashCsPin = PortAPin(20);
+constexpr Pin LcdBacklightPin = PortBPin(16);
+#elif defined(FMDC_V02)
constexpr Pin LcdFlashCsPin = PortBPin(10);
+constexpr Pin LcdBacklightPin = PortBPin(12);
+#endif
+
constexpr Pin LcdFlashWpPin = PortAPin(2);
constexpr Pin LcdFlashHoldPin = PortCPin(7);
// Touch screen interface (when not shared with SharedSpi)
-constexpr unsigned int RtpSercomNumber = 6;
-constexpr Pin RtpSpiMosiPin = PortCPin(16);
-constexpr Pin RtpSpiMisoPin = PortCPin(19);
-constexpr Pin RtpSpiSclkPin = PortCPin(17);
-constexpr Pin RtpSpiCsPin = PortCPin(18);
-constexpr GpioPinFunction RtpSpiPinFunction = GpioPinFunction::C;
+//constexpr unsigned int RtpSercomNumber = 6;
+//constexpr Pin RtpSpiMosiPin = PortCPin(16);
+//constexpr Pin RtpSpiMisoPin = PortCPin(19);
+//constexpr Pin RtpSpiSclkPin = PortCPin(17);
+//constexpr GpioPinFunction RtpSpiPinFunction = GpioPinFunction::C;
-// Beeper
-constexpr Pin BeeperPins[2] = { PortAPin(8), PortAPin(9) };
+constexpr Pin RtpSpiCsPin = PortCPin(18);
+constexpr Pin RtpPenPin = PortAPin(3);
// Shared SPI definitions
constexpr uint8_t SharedSpiSercomNumber = 7;
@@ -296,10 +323,17 @@ constexpr PinDescription PinTable[] =
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA05 LCD SCLK
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA06 LCD CS
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA07 LCD MOSI
+#if defined(FMDC_V03)
+ { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA08 SDHC CMD
+ { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA09 SDHC DAT0
+ { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA10 SDHC DAT1
+ { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA11 SDHC DAT2
+#elif defined(FMDC_V02)
{ TcOutput::none, TccOutput::tcc0_0F, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA08 Buzzer A
{ TcOutput::none, TccOutput::tcc0_1F, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA09 Buzzer B
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, 10, PinCapability::none, "ate.d0.diag" }, // PA10 driver 0 diag
{ TcOutput::tc1_1, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::wpwm, "out4" }, // PA11 OUT4
+#endif
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA12 WiFi SCLK (SERCOM4.1)
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA13 WiFi MISO (SERCOM4.0)
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA14 WiFi SS (SERCOM4.2)
@@ -308,8 +342,13 @@ constexpr PinDescription PinTable[] =
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA17 WiFi TxD (SERCOM3.0)
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, 2, PinCapability::none, nullptr }, // PA18 WiFi ESP_DATA_RDY
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA19 WiFi SAM_TRANSFER_RDY
+#if defined(FMDC_V03)
+ { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, "ate.lcd.flashcs" }, // PA20 Flash CS
+ { TcOutput::tc7_1, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::wpwm, "out4" }, // PA21 OUT4
+#elif defined(FMDC_V02)
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA20 SDHC CMD
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA21 SDHC CLK
+#endif
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA22 unused
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA23 unused
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PA24 USB
@@ -332,18 +371,36 @@ constexpr PinDescription PinTable[] =
{ TcOutput::none, TccOutput::none, AdcInput::adc1_9, SercomIo::none, SercomIo::none, 7, PinCapability::ainr, "io0.in" }, // PB07 IO0_IN
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, 8, PinCapability::none, "ate.d1.diag" }, // PB08 driver 1 diag
{ TcOutput::none, TccOutput::none, AdcInput::adc1_1, SercomIo::none, SercomIo::none, 9, PinCapability::none, "io2.in" }, // PB09 IO2_IN
+#if defined(FMDC_V03)
+ { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PB10 SDHC DAT3
+ { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::wpwm, nullptr }, // PB11 SDHC CLK
+ { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, "ate.cd" }, // PB12 SDHC card detect
+#elif defined(FMDC_V02)
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, "ate.lcd.flashcs" }, // PB10 LCD flash CS
{ TcOutput::tc5_1, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::wpwm, "out3" }, // PB11 OUT3
- { TcOutput::none, TccOutput::tcc3_0F, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, "ate.lcd.backlight" }, // PB12 LCD backlight control
+ { TcOutput::none, TccOutput::tcc3_0F, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::wpwm, "ate.lcd.backlight" }, // PB12 LCD backlight
+#endif
{ TcOutput::tc4_1, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::wpwm, "out2" }, // PB13 OUT2
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::wpwm, nullptr }, // PB14 WiFi ESP reset
+#if defined(FMDC_V03)
+ { TcOutput::tc5_1, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::wpwm, "out3" }, // PB15 OUT3
+ { TcOutput::none, TccOutput::tcc3_0F, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::wpwm, "ate.lcd.backlight" }, // PB16 LCD backlight
+#elif defined(FMDC_V02)
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, "ate.lcd.fontcs" }, // PB15 LCD font CS
- { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, "ate.cd" }, // PB16 SD CD
+ { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, "ate.cd" }, // PB16 SDHC card detect
+#endif
{ TcOutput::tc6_1, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::wpwm, "out0" }, // PB17 OUT0
- { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PB18 SD DAT0
- { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PB19 SD DAT1
- { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PB20 SD DAT2
- { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PB21 SD DAT3
+#if defined(FMDC_V03)
+ { TcOutput::none, TccOutput::tcc1_0F, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PB18 Buzz A
+ { TcOutput::none, TccOutput::tcc1_1F, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PB19 Buzz B
+ { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PB20 Font CS
+ { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PB21 Driver ENN
+#elif defined(FMDC_V02)
+ { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PB18 SDHC DAT0
+ { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PB19 SDHC DAT1
+ { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PB20 SDHC DAT2
+ { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PB21 SDHC DAT3
+#endif
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PB22 crystal XIN1
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PB23 crystal XOUT1
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PB24 unused (spare UART Sercom2)
@@ -366,7 +423,11 @@ constexpr PinDescription PinTable[] =
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, "ate.lcd.flashhold" }, // PC07 LCD flash hold
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PC08 not on chip
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PC09 not on chip
+#if defined(FMDC_V03)
+ { TcOutput::none, TccOutput::tcc0_0F, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::wpwm, "out1" }, // PC10 OUT1
+#elif defined(FMDC_V02)
{ TcOutput::none, TccOutput::tcc1_4G, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::wpwm, "out1" }, // PC10 OUT1
+#endif
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PC11 WiFi ESP enable
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PC12 SPI MOSI
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PC13 SPI SCK
@@ -384,7 +445,11 @@ constexpr PinDescription PinTable[] =
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, "ate.d1.step" }, // PC25 driver 1 step
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, "ate.d0.step" }, // PC26 driver 0 step
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, 11, PinCapability::none, "ate.d2.diag" }, // PC27 driver 2 diag
+#if defined(FMDC_V03)
+ { TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, 12, PinCapability::none, "ate.d0.diag" }, // PC28 driver 0 diag
+#elif defined(FMDC_V02)
{ TcOutput::none, TccOutput::none, AdcInput::none, SercomIo::none, SercomIo::none, Nx, PinCapability::none, nullptr }, // PC28 driver ENN
+#endif
};
constexpr unsigned int NumNamedPins = ARRAY_SIZE(PinTable);
diff --git a/src/Hardware/SAME5x/Devices.cpp b/src/Hardware/SAME5x/Devices.cpp
index 30d4dbbd..689dc8b4 100644
--- a/src/Hardware/SAME5x/Devices.cpp
+++ b/src/Hardware/SAME5x/Devices.cpp
@@ -122,16 +122,16 @@ static void UsbInit() noexcept
static void SdhcInit() noexcept
{
// Set up SDHC clock
-#if defined(DUET3MINI_V04)
+#if defined(DUET3MINI_V04) || defined(FMDC_V02)
// Using SDHC 1
hri_mclk_set_AHBMASK_SDHC1_bit(MCLK);
hri_gclk_write_PCHCTRL_reg(GCLK, SDHC1_GCLK_ID, GCLK_PCHCTRL_GEN(GclkNum90MHz) | GCLK_PCHCTRL_CHEN);
hri_gclk_write_PCHCTRL_reg(GCLK, SDHC1_GCLK_ID_SLOW, GCLK_PCHCTRL_GEN(GclkNum31KHz) | GCLK_PCHCTRL_CHEN);
-#elif defined(FMDC_V02)
- // Using SDHC 1 on v0.2 board
- hri_mclk_set_AHBMASK_SDHC1_bit(MCLK);
- hri_gclk_write_PCHCTRL_reg(GCLK, SDHC1_GCLK_ID, GCLK_PCHCTRL_GEN(GclkNum90MHz) | GCLK_PCHCTRL_CHEN);
- hri_gclk_write_PCHCTRL_reg(GCLK, SDHC1_GCLK_ID_SLOW, GCLK_PCHCTRL_GEN(GclkNum31KHz) | GCLK_PCHCTRL_CHEN);
+#elif defined(FMDC_V03)
+ // Using SDHC 0 on v0.3 board
+ hri_mclk_set_AHBMASK_SDHC0_bit(MCLK);
+ hri_gclk_write_PCHCTRL_reg(GCLK, SDHC0_GCLK_ID, GCLK_PCHCTRL_GEN(GclkNum90MHz) | GCLK_PCHCTRL_CHEN);
+ hri_gclk_write_PCHCTRL_reg(GCLK, SDHC0_GCLK_ID_SLOW, GCLK_PCHCTRL_GEN(GclkNum31KHz) | GCLK_PCHCTRL_CHEN);
#else
# error Unknown board
#endif
diff --git a/src/Networking/Network.cpp b/src/Networking/Network.cpp
index 45e20058..f80f18bf 100644
--- a/src/Networking/Network.cpp
+++ b/src/Networking/Network.cpp
@@ -87,7 +87,7 @@ Network::Network(Platform& p) noexcept : platform(p)
interfaces[0] = new LwipEthernetInterface(p);
#elif defined(DUET_NG) || defined(DUET3MINI_V04)
interfaces[0] = nullptr; // we set this up in Init()
-#elif defined(FMDC_V02)
+#elif defined(FMDC_V02) || defined(FMDC_V03)
interfaces[0] = new WiFiInterface(p);
#elif defined(DUET_M)
interfaces[0] = new W5500Interface(p);
diff --git a/src/Platform/Platform.cpp b/src/Platform/Platform.cpp
index 1e6a0855..fc1afd3f 100644
--- a/src/Platform/Platform.cpp
+++ b/src/Platform/Platform.cpp
@@ -3799,7 +3799,7 @@ void Platform::SetBoardType(BoardType bt) noexcept
board = (digitalRead(DIRECTION_PINS[0])) ? BoardType::Duet3_6HC_v101 : BoardType::Duet3_6HC_v06_100;
#elif defined(DUET3_MB6XD)
board = BoardType::Duet3_6XD;
-#elif defined(FMDC_V02)
+#elif defined(FMDC_V02) || defined(FMDC_V03)
board = BoardType::FMDC;
#elif defined(SAME70XPLD)
board = BoardType::SAME70XPLD_0;
@@ -3879,7 +3879,7 @@ const char *_ecv_array Platform::GetElectronicsString() const noexcept
case BoardType::Duet3_6HC_v101: return "Duet 3 " BOARD_SHORT_NAME " v1.01 or later";
#elif defined(DUET3_MB6XD)
case BoardType::Duet3_6XD: return "Duet 3 " BOARD_SHORT_NAME; // we have only one version at present
-#elif defined(FMDC_V02)
+#elif defined(FMDC_V02) || defined(FMDC_V03)
case BoardType::FMDC: return "Duet 3 " BOARD_SHORT_NAME;
#elif defined(SAME70XPLD)
case BoardType::SAME70XPLD_0: return "SAME70-XPLD";
@@ -3918,7 +3918,7 @@ const char *_ecv_array Platform::GetBoardString() const noexcept
case BoardType::Duet3_6HC_v101: return "duet3mb6hc101";
#elif defined(DUET3_MB6XD)
case BoardType::Duet3_6XD: return "duet3mb6xd"; // we have only one version at present
-#elif defined(FMDC_V02)
+#elif defined(FMDC_V02) || defined(FMDC_V03)
case BoardType::FMDC: return "fmdc";
#elif defined(SAME70XPLD)
case BoardType::SAME70XPLD_0: return "same70xpld";
diff --git a/src/Platform/Platform.h b/src/Platform/Platform.h
index 960a3406..b38533a5 100644
--- a/src/Platform/Platform.h
+++ b/src/Platform/Platform.h
@@ -128,7 +128,7 @@ enum class BoardType : uint8_t
Duet3_6HC_v101 = 2,
#elif defined(DUET3_MB6XD)
Duet3_6XD = 1,
-#elif defined(FMDC_V02)
+#elif defined(FMDC_V02) || defined(FMDC_V03)
FMDC,
#elif defined(SAME70XPLD)
SAME70XPLD_0 = 1