<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://www.raspibo.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aggaz</id>
	<title>raspibo - Contributi utente [it]</title>
	<link rel="self" type="application/atom+xml" href="https://www.raspibo.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aggaz"/>
	<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php/Speciale:Contributi/Aggaz"/>
	<updated>2026-04-08T06:38:20Z</updated>
	<subtitle>Contributi utente</subtitle>
	<generator>MediaWiki 1.35.5</generator>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6855</id>
		<title>STM32-407 DIY-MORE</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6855"/>
		<updated>2019-03-12T14:35:18Z</updated>

		<summary type="html">&lt;p&gt;Aggaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:STM32-407_DIY-MORE.png|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
= Introduzione =&lt;br /&gt;
&lt;br /&gt;
La scheda “STM32-407” prodotta da “DIY MORE” è una &amp;quot;development board&amp;quot; oscura ed economica. Si può ordinare dalla Cina per pochi euro ma sono poche le informazioni che si possono trovare in rete. È una scheda piuttosto minimale e può essere considerata come una &amp;quot;breakout board&amp;quot; del microcontrollore STM32F407. Questo microcontrollore è abbastanza comune ed usato anche in altre schede, di conseguenza è possibile utilizzare la &amp;quot;STM32-407 DIY-MORE&amp;quot; con [https://github.com/micropython/micropython/ Micropython]. Inoltre questa stessa scheda è anche supportata da [https://github.com/insane-adding-machines/frosted Frosted].&lt;br /&gt;
&lt;br /&gt;
= La scheda =&lt;br /&gt;
&lt;br /&gt;
Oltre al microcontrollore stesso la scheda fornisce:&lt;br /&gt;
* una porta USB micro B;&lt;br /&gt;
* 2 pulsanti (uno di reset ed uno programmabile);&lt;br /&gt;
* 2 led (uno di accensione ed uno programmabile);&lt;br /&gt;
* 92 pin (inclusi quelli di alimentazione);&lt;br /&gt;
* svariati componenti accessori necessari al corretto funzionamento del microcontrollore. &lt;br /&gt;
&lt;br /&gt;
== Pulsanti ==&lt;br /&gt;
&lt;br /&gt;
Il pulsante vicino la porta USB ha una funzione di &amp;quot;reset&amp;quot;. L'altro pulsante invece è programmabile ed è configurato in &amp;quot;pull-up&amp;quot; al pin PD15 con una resistenza da 10kΩ.&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
&lt;br /&gt;
LED1, situato vicino la porta USB, è utilizzato per segnalare lo stato di alimentazione. LED2 è programmabile ed è collegato al pin PE0 da una resistenza da 1kΩ. Il pin abbassato equivale ad un LED acceso.&lt;br /&gt;
&lt;br /&gt;
== Boot pin ==&lt;br /&gt;
&lt;br /&gt;
La scheda è provvista di due &amp;quot;boot pin&amp;quot; la cui configurazione all'accensione determina lo stato del microcontrollore. I pin si trovano in un angolo sul lato opposto rispetto alla porta USB e sono denominati &amp;quot;BOOT0&amp;quot; e &amp;quot;BOOT1&amp;quot;. Entrambi sono in una configurazione normalmente &amp;quot;up&amp;quot; e sono adiacenti a dei pin collegati a massa. Pertanto si può facilmente controllare lo stato di questi pin per mezzo di un &amp;quot;jumper&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Come mostrato nella tabella in basso, sono tre le configurazioni utili che si possono ottenere dalle combinazioni degli stati dei due &amp;quot;boot pin&amp;quot;:&lt;br /&gt;
* In modalità &amp;quot;Flash&amp;quot;, assumendo che MicroPython sia correttamente installato, è possibile montare la memoria flash del microcontrollore via USB per copiare i file degli script da eseguire. Allo stesso tempo è anche possibile accedere alla &amp;quot;REPL&amp;quot; di MicroPython attraverso una porta seriale fornita dalla stessa porta USB (la quale utilizza i pin PA11 e PA12);&lt;br /&gt;
* In modalità DFU è possibile programmare il microcontrollore e caricare il firmware. Questa è la modalità che viene generalmente usata per caricare MicroPython nel microcontrollore;&lt;br /&gt;
* La modalità SRAM non l'ho mai usata ed onestamente non so a cosa serve.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin BOOT0''' || '''Pin BOOT1''' || '''Modalità'''&lt;br /&gt;
|-&lt;br /&gt;
|   Giù || Su/Giù || Flash&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Giù || DFU&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Su || SRAM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ST-LINK ==&lt;br /&gt;
&lt;br /&gt;
La scheda di per sé è priva di un dispositivo ST-LINK per la programmazione, ma un dispositivo di questo tipo può essere collegato utilizzando il seguente schema.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin della scheda''' || '''Pin ST-LINK'''&lt;br /&gt;
|-&lt;br /&gt;
|   PA13 || SWDIO&lt;br /&gt;
|-&lt;br /&gt;
|   PA14 || SWCLK&lt;br /&gt;
|-&lt;br /&gt;
|   3v3 || 3v3&lt;br /&gt;
|-&lt;br /&gt;
|   GND || GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pin degni di nota ==&lt;br /&gt;
&lt;br /&gt;
I pin della scheda corrispondono ai pin del microcontrollore STM32F407. Si può consultare il datasheet del componente per conoscere le funzionalità speciali dei vari pin (UART, I2C, SPI, eccetera). Ad ogni modo bisogna tenere in considerazione alcune peculiarità dell'implementazione della scheda:&lt;br /&gt;
&lt;br /&gt;
* PD15 è collegato in &amp;quot;pull-up&amp;quot; al pulsante.&lt;br /&gt;
&lt;br /&gt;
* PE0 è collegato al LED2 (pin abbassato equivale a LED acceso).&lt;br /&gt;
&lt;br /&gt;
* PA11 e PA12 sono usati dalla porta USB. Sebbene corrispondano anche ai pin CTS ed RTS della UART1, è meglio non usarli se si vuole usare la porta USB.&lt;br /&gt;
&lt;br /&gt;
* Altre informazioni sui pin possono essere lette nel file &amp;quot;mpconfigboard.h&amp;quot; riportato più in basso.&lt;br /&gt;
&lt;br /&gt;
= Micropython =&lt;br /&gt;
&lt;br /&gt;
Per utilizzare correttamente questa scheda è necessario compilare manualmente il codice di MicroPython. Inoltre è necessario impostare delle configurazioni ad-hoc per poter gestire in maniera corretta la mappatura dei &amp;quot;pin&amp;quot;. Di seguito sono esposti i passaggi per compiere questa operazione su un sistema GNU/Linux. Si assume che il sistema del lettore sia  già configurato per l'utilizzo di &amp;quot;git&amp;quot; e la &amp;quot;cross-compilazione&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Ottenere MicroPython  ==&lt;br /&gt;
&lt;br /&gt;
 $ git clone &amp;quot;https://github.com/micropython/micropython.git&amp;quot;&lt;br /&gt;
 $ git submodule update --init&lt;br /&gt;
&lt;br /&gt;
== Aggiungere la configurazione per la scheda  ==&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/ports/stm32/boards/&lt;br /&gt;
 $ cp -R STM32F4DISC STM32F4DIYMORE&lt;br /&gt;
 $ cd STM32F4DIYMORE&lt;br /&gt;
 $ rm staccel.py&lt;br /&gt;
&lt;br /&gt;
Sostituire il contenuto del file &amp;quot;mpconfigboard.h&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 #define MICROPY_HW_BOARD_NAME       &amp;quot;F4DIYMORE&amp;quot;&lt;br /&gt;
 #define MICROPY_HW_MCU_NAME         &amp;quot;STM32F407&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_HAS_SWITCH       (1)&lt;br /&gt;
 #define MICROPY_HW_HAS_FLASH        (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RNG       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RTC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_DAC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_USB       (1)&lt;br /&gt;
 &lt;br /&gt;
 // HSE is 8MHz&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLM (8)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLN (336)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV2)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLQ (7)&lt;br /&gt;
 &lt;br /&gt;
 // UART config&lt;br /&gt;
 //PA11 and PA12 pins are used by USB&lt;br /&gt;
 //#define MICROPY_HW_UART1_TX     (pin_A9)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RX     (pin_A10)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RTS    (pin_A12)&lt;br /&gt;
 //#define MICROPY_HW_UART1_CTS    (pin_A11)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART2_TX     (pin_A2)&lt;br /&gt;
 #define MICROPY_HW_UART2_RX     (pin_A3)&lt;br /&gt;
 #define MICROPY_HW_UART2_RTS    (pin_A1)&lt;br /&gt;
 #define MICROPY_HW_UART2_CTS    (pin_A0)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART3_TX     (pin_D8)&lt;br /&gt;
 #define MICROPY_HW_UART3_RX     (pin_D9)&lt;br /&gt;
 #define MICROPY_HW_UART3_RTS    (pin_D12)&lt;br /&gt;
 #define MICROPY_HW_UART3_CTS    (pin_D11)&lt;br /&gt;
 &lt;br /&gt;
 //PA0 and PA1 pins are used by UART2&lt;br /&gt;
 //#define MICROPY_HW_UART4_TX     (pin_A0)&lt;br /&gt;
 //#define MICROPY_HW_UART4_RX     (pin_A1)&lt;br /&gt;
 &lt;br /&gt;
 //I do not really need it&lt;br /&gt;
 //#define MICROPY_HW_UART6_TX     (pin_C6)&lt;br /&gt;
 //#define MICROPY_HW_UART6_RX     (pin_C7)&lt;br /&gt;
 &lt;br /&gt;
 // I2C busses&lt;br /&gt;
 #define MICROPY_HW_I2C1_SCL (pin_B6)&lt;br /&gt;
 #define MICROPY_HW_I2C1_SDA (pin_B7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_I2C2_SCL (pin_B10)&lt;br /&gt;
 #define MICROPY_HW_I2C2_SDA (pin_B11)&lt;br /&gt;
 &lt;br /&gt;
 // SPI busses&lt;br /&gt;
 #define MICROPY_HW_SPI1_NSS  (pin_A4)&lt;br /&gt;
 #define MICROPY_HW_SPI1_SCK  (pin_A5)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MISO (pin_A6)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MOSI (pin_A7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_SPI2_NSS  (pin_B12)&lt;br /&gt;
 #define MICROPY_HW_SPI2_SCK  (pin_B13)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MISO (pin_B14)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MOSI (pin_B15)&lt;br /&gt;
 &lt;br /&gt;
 // CAN busses&lt;br /&gt;
 //#define MICROPY_HW_CAN1_TX (pin_B9)&lt;br /&gt;
 //#define MICROPY_HW_CAN1_RX (pin_B8)&lt;br /&gt;
 &lt;br /&gt;
 //PB12 and PB13 pins are used by SPI2&lt;br /&gt;
 //#define MICROPY_HW_CAN2_TX (pin_B13)&lt;br /&gt;
 //#define MICROPY_HW_CAN2_RX (pin_B12)&lt;br /&gt;
 &lt;br /&gt;
 // USRSW is pulled up. Pressing the button makes the input go low.&lt;br /&gt;
 #define MICROPY_HW_USRSW_PIN        (pin_D15)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PULL       (GPIO_PULLUP)&lt;br /&gt;
 #define MICROPY_HW_USRSW_EXTI_MODE  (GPIO_MODE_IT_FALLING)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PRESSED    (0)&lt;br /&gt;
 &lt;br /&gt;
 // LEDs&lt;br /&gt;
 #define MICROPY_HW_LED_INVERTED     (1) // LEDs are on when pin is driven low&lt;br /&gt;
 #define MICROPY_HW_LED1             (pin_E0)&lt;br /&gt;
 #define MICROPY_HW_LED_ON(pin)      (mp_hal_pin_low(pin))&lt;br /&gt;
 #define MICROPY_HW_LED_OFF(pin)     (mp_hal_pin_high(pin))&lt;br /&gt;
 &lt;br /&gt;
 // USB config&lt;br /&gt;
 #define MICROPY_HW_USB_FS              (1)&lt;br /&gt;
 &lt;br /&gt;
 // Show IDLE on UART1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL        PYB_UART_1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL_BAUD   115200&lt;br /&gt;
 &lt;br /&gt;
Sostituire il contenuto del file &amp;quot;pins.csv&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 PA0,PA0&lt;br /&gt;
 PA1,PA1&lt;br /&gt;
 PA2,PA2&lt;br /&gt;
 PA3,PA3&lt;br /&gt;
 PA4,PA4&lt;br /&gt;
 PA5,PA5&lt;br /&gt;
 PA6,PA6&lt;br /&gt;
 PA7,PA7&lt;br /&gt;
 PA8,PA8&lt;br /&gt;
 PA9,PA9&lt;br /&gt;
 PA10,PA10&lt;br /&gt;
 PA11,PA11&lt;br /&gt;
 PA12,PA12&lt;br /&gt;
 PA13,PA13&lt;br /&gt;
 PA14,PA14&lt;br /&gt;
 PA15,PA15&lt;br /&gt;
 PB0,PB0&lt;br /&gt;
 PB1,PB1&lt;br /&gt;
 PB2,PB2&lt;br /&gt;
 PB3,PB3&lt;br /&gt;
 PB4,PB4&lt;br /&gt;
 PB5,PB5&lt;br /&gt;
 PB6,PB6&lt;br /&gt;
 PB7,PB7&lt;br /&gt;
 PB8,PB8&lt;br /&gt;
 PB9,PB9&lt;br /&gt;
 PB10,PB10&lt;br /&gt;
 PB11,PB11&lt;br /&gt;
 PB12,PB12&lt;br /&gt;
 PB13,PB13&lt;br /&gt;
 PB14,PB14&lt;br /&gt;
 PB15,PB15&lt;br /&gt;
 PC0,PC0&lt;br /&gt;
 PC1,PC1&lt;br /&gt;
 PC2,PC2&lt;br /&gt;
 PC3,PC3&lt;br /&gt;
 PC4,PC4&lt;br /&gt;
 PC5,PC5&lt;br /&gt;
 PC6,PC6&lt;br /&gt;
 PC7,PC7&lt;br /&gt;
 PC8,PC8&lt;br /&gt;
 PC9,PC9&lt;br /&gt;
 PC10,PC10&lt;br /&gt;
 PC11,PC11&lt;br /&gt;
 PC12,PC12&lt;br /&gt;
 PC13,PC13&lt;br /&gt;
 PD0,PD0&lt;br /&gt;
 PD1,PD1&lt;br /&gt;
 PD2,PD2&lt;br /&gt;
 PD3,PD3&lt;br /&gt;
 PD4,PD4&lt;br /&gt;
 PD5,PD5&lt;br /&gt;
 PD6,PD6&lt;br /&gt;
 PD7,PD7&lt;br /&gt;
 PD8,PD8&lt;br /&gt;
 PD9,PD9&lt;br /&gt;
 PD10,PD10&lt;br /&gt;
 PD11,PD11&lt;br /&gt;
 PD12,PD12&lt;br /&gt;
 PD13,PD13&lt;br /&gt;
 PD14,PD14&lt;br /&gt;
 PD15,PD15&lt;br /&gt;
 PE0,PE0&lt;br /&gt;
 PE1,PE1&lt;br /&gt;
 PE2,PE2&lt;br /&gt;
 PE3,PE3&lt;br /&gt;
 PE4,PE4&lt;br /&gt;
 PE5,PE5&lt;br /&gt;
 PE6,PE6&lt;br /&gt;
 PE7,PE7&lt;br /&gt;
 PE8,PE8&lt;br /&gt;
 PE9,PE9&lt;br /&gt;
 PE10,PE10&lt;br /&gt;
 PE11,PE11&lt;br /&gt;
 PE12,PE12&lt;br /&gt;
 PE13,PE13&lt;br /&gt;
 PE14,PE14&lt;br /&gt;
 PE15,PE15&lt;br /&gt;
 LED,PE0&lt;br /&gt;
 SW,PD15&lt;br /&gt;
&lt;br /&gt;
== Compilare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per istruzioni di compilazione dettagliate si faccia riferimento al file:&lt;br /&gt;
&lt;br /&gt;
 micropython/ports/stm32/README.md&lt;br /&gt;
&lt;br /&gt;
In breve, di seguito i comandi necessari per compilare MicroPython usando la configurazione esposta precedentemente.&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/&lt;br /&gt;
 $ make -C mpy-cross&lt;br /&gt;
 $ cd micropython/ports/stm32/&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE&lt;br /&gt;
&lt;br /&gt;
== Installare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware sulla scheda impostarla in modalità &amp;quot;DFU&amp;quot; prima di accenderla. Poi collegarla al computer via USB. In un sistema GNU/Linux sarà possibile verificare che la scheda sia effettivamente in modalità DFU con il comando:&lt;br /&gt;
&lt;br /&gt;
 $ lsusb&lt;br /&gt;
 Bus 002 Device 005: ID 0483:df11 STMicroelectronics STM Device in DFU Mode&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware:&lt;br /&gt;
&lt;br /&gt;
 # apt install python3-usb&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE deploy&lt;br /&gt;
&lt;br /&gt;
Se si dispone di un adattatore ST-LINK esterno (la scheda di per sé ne è sprovvista) questo si può utilizzare per la programmazione del firmware in alternativa alla modalità DFU. La corretta configurazione dei pin è stata già mostrata nella sezione dedicata all'hardware di questa pagina. Per quanto riguarda il versante software si faccia riferimento al file &amp;quot;README.md&amp;quot; di cui sopra.&lt;br /&gt;
&lt;br /&gt;
== Eseguire codice ==&lt;br /&gt;
&lt;br /&gt;
Quando la scheda viene avviata in modalità &amp;quot;flash&amp;quot; (si veda la sezione &amp;quot;Boot pin&amp;quot;) è possibile accedere al REPL di MicroPython attraverso una porta seriale fornita direttamente dalla porta USB.&lt;br /&gt;
&lt;br /&gt;
 $ screen /dev/ttyACM0 115200&lt;br /&gt;
 MicroPython v1.10-194-g41e7ad647 on 2019-03-11; F4DIYMORE with STM32F407&lt;br /&gt;
 Type &amp;quot;help()&amp;quot; for more information.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dalla stessa porta USB e con la scheda avviata con la stessa modalità è anche possibile accedere alla memoria flash del microcontrollore, dentro la quale si possono copiare i file &amp;quot;.py&amp;quot; da far eseguire a MicroPython.&lt;br /&gt;
&lt;br /&gt;
 $ pmount /dev/sdb1&lt;br /&gt;
 $ ls /media/sdb1/&lt;br /&gt;
 README.txt  boot.py  main.py  pybcdc.inf&lt;br /&gt;
&lt;br /&gt;
= Frosted =&lt;br /&gt;
&lt;br /&gt;
[https://github.com/insane-adding-machines/frosted Frosted] è un sistema opertivo libero e conforme a POSIX per sistemi integrati. Può risultare interessante a chi preferirebbe programmare questa board usando C (o addirittura sh) pittosto che Micropython. La conformità a POSIX rende il porting di applicazioni sulla piattaforma relativamente semplice. Frosted di suo fornisce anche MicroPython, il supporto però è limitato.&lt;br /&gt;
La scheda &amp;quot;STM32-407 DIY-MORE&amp;quot; è supportata da Frosted e maggiori informazioni possono essere trovate nel relativo [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 commit] sul github del progetto.&lt;br /&gt;
&lt;br /&gt;
= Note finali =&lt;br /&gt;
Si tenga presente che questa scheda è poco documentata e supportata. È molto economica rispetto alle alternative, ma non è detto che le procedure descritte in questa pagina funzioneranno correttamente nel presente o nel futuro. Tutto ciò che è stato scritto è frutto di sperimentazioni ed &amp;quot;hackeraggi&amp;quot; da considerare assolutamente inaffidabili.&lt;br /&gt;
&lt;br /&gt;
= Link e risorse utili = &lt;br /&gt;
* [http://dubstylee.net/v/diy-more-stm32f407vgt6/ DIY More STM32F407VGT6 ボード] Pagina di un blog in giapponese che contiene alcune informazioni utili sulla scheda, tra cui lo schema elettrico.&lt;br /&gt;
* [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 Added support for STM32-F407 DIYMORE from diymore.cc] Commit di supporto della scheda su Frosted.&lt;br /&gt;
* [https://www.carminenoviello.com/it/2015/08/11/compilare-micropython-una-scheda-stm32nucleo-f4/ Compilare micropython per una scheda STM32Nucleo-F4] Guida sulla compilazione di MicroPython in italiano.&lt;br /&gt;
* [https://github.com/BLavery/STM32F407VG-Arduino STM32F407VG &amp;amp; Arduino] Linee guida per programmare questa scheda con arduino, in inglese.&lt;/div&gt;</summary>
		<author><name>Aggaz</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6854</id>
		<title>STM32-407 DIY-MORE</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6854"/>
		<updated>2019-03-12T14:26:37Z</updated>

		<summary type="html">&lt;p&gt;Aggaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:STM32-407_DIY-MORE.png|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
= Introduzione =&lt;br /&gt;
&lt;br /&gt;
La scheda “STM32-407” prodotta da “DIY MORE” è una &amp;quot;development board&amp;quot; oscura ed economica. Si può ordinare dalla Cina per pochi euro ma sono poche le informazioni che si possono trovare in rete. È una scheda piuttosto minimale e può essere considerata come una &amp;quot;breakout board&amp;quot; del microcontrollore STM32F407. Questo microcontrollore è abbastanza comune ed usato anche in altre schede, di conseguenza è possibile utilizzare la &amp;quot;STM32-407 DIY-MORE&amp;quot; con [https://github.com/micropython/micropython/ Micropython]. Inoltre questa stessa scheda è anche supportata da [https://github.com/insane-adding-machines/frosted Frosted].&lt;br /&gt;
&lt;br /&gt;
= La scheda =&lt;br /&gt;
&lt;br /&gt;
Oltre al microcontrollore stesso la scheda fornisce:&lt;br /&gt;
* una porta USB micro B;&lt;br /&gt;
* 2 pulsanti (uno di reset ed uno programmabile);&lt;br /&gt;
* 2 led (uno di accensione ed uno programmabile);&lt;br /&gt;
* 92 pin (inclusi quelli di alimentazione);&lt;br /&gt;
* svariati componenti accessori necessari al corretto funzionamento del microcontrollore. &lt;br /&gt;
&lt;br /&gt;
== Pulsanti ==&lt;br /&gt;
&lt;br /&gt;
Il pulsante vicino la porta USB ha una funzione di &amp;quot;reset&amp;quot;. L'altro pulsante invece è programmabile ed è configurato in &amp;quot;pull-up&amp;quot; al pin PD15 con una resistenza da 10kΩ.&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
&lt;br /&gt;
LED1, situato vicino la porta USB, è utilizzato per segnalare lo stato di alimentazione. LED2 è programmabile ed è collegato al pin PE0 da una resistenza da 1kΩ. Il pin abbassato equivale ad un LED acceso.&lt;br /&gt;
&lt;br /&gt;
== Boot pin ==&lt;br /&gt;
&lt;br /&gt;
La scheda è provvista di due &amp;quot;boot pin&amp;quot; la cui configurazione all'accensione determina lo stato del microcontrollore. I pin si trovano in un angolo sul lato opposto rispetto alla porta USB e sono denominati &amp;quot;BOOT0&amp;quot; e &amp;quot;BOOT1&amp;quot;. Entrambi sono in una configurazione normalmente &amp;quot;up&amp;quot; e sono adiacenti a dei pin collegati a massa. Pertanto si può facilmente controllare lo stato di questi pin per mezzo di un &amp;quot;jumper&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Come mostrato nella tabella in basso, sono tre le configurazioni utili che si possono ottenere dalle combinazioni degli stati dei due &amp;quot;boot pin&amp;quot;:&lt;br /&gt;
* In modalità &amp;quot;Flash&amp;quot;, assumendo che MicroPython sia correttamente installato, è possibile montare la memoria flash del microcontrollore via USB per copiare i file degli script da eseguire. Allo stesso tempo è anche possibile accedere alla &amp;quot;REPL&amp;quot; di MicroPython attraverso una porta seriale fornita dalla stessa porta USB (la quale utilizza i pin PA11 e PA12);&lt;br /&gt;
* In modalità DFU è possibile programmare il microcontrollore e caricare il firmware. Questa è la modalità che viene generalmente usata per caricare MicroPython nel microcontrollore;&lt;br /&gt;
* La modalità SRAM non l'ho mai usata ed onestamente non so a cosa serve.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin BOOT0''' || '''Pin BOOT1''' || '''Modalità'''&lt;br /&gt;
|-&lt;br /&gt;
|   Giù || Su/Giù || Flash&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Giù || DFU&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Su || SRAM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ST-LINK ==&lt;br /&gt;
&lt;br /&gt;
La scheda di per sé è priva di un dispositivo ST-LINK per la programmazione, ma un dispositivo di questo tipo può essere collegato utilizzando il seguente schema.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin della scheda''' || '''Pin ST-LINK'''&lt;br /&gt;
|-&lt;br /&gt;
|   PA13 || SWDIO&lt;br /&gt;
|-&lt;br /&gt;
|   PA14 || SWCLK&lt;br /&gt;
|-&lt;br /&gt;
|   3v3 || 3v3&lt;br /&gt;
|-&lt;br /&gt;
|   GND || GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pin degni di nota ==&lt;br /&gt;
&lt;br /&gt;
I pin della scheda corrispondono ai pin del microcontrollore STM32F407. Si può consultare il datasheet del componente per conoscere le funzionalità speciali dei vari pin (UART, I2C, SPI, eccetera). Ad ogni modo bisogna tenere in considerazione alcune peculiarità dell'implementazione della scheda:&lt;br /&gt;
&lt;br /&gt;
* PD15 è collegato in &amp;quot;pull-up&amp;quot; al pulsante.&lt;br /&gt;
&lt;br /&gt;
* PE0 è collegato al LED2 (pin abbassato equivale a LED acceso).&lt;br /&gt;
&lt;br /&gt;
* PA11 e PA12 sono usati dalla porta USB. Sebbene corrispondano anche ai pin CTS ed RTS della UART1, è meglio non usarli se si vuole usare la porta USB.&lt;br /&gt;
&lt;br /&gt;
* Altre informazioni sui pin possono essere lette nel file &amp;quot;mpconfigboard.h&amp;quot; riportato più in basso.&lt;br /&gt;
&lt;br /&gt;
= Micropython =&lt;br /&gt;
&lt;br /&gt;
Per utilizzare correttamente questa scheda è necessario compilare manualmente il codice di MicroPython. Inoltre è necessario impostare delle configurazioni ad-hoc per poter gestire in maniera corretta la mappatura dei &amp;quot;pin&amp;quot;. Di seguito sono esposti i passaggi per compiere questa operazione su un sistema GNU/Linux. Si assume che il sistema del lettore sia  già configurato per l'utilizzo di &amp;quot;git&amp;quot; e la &amp;quot;cross-compilazione&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Ottenere MicroPython  ==&lt;br /&gt;
&lt;br /&gt;
 $ git clone &amp;quot;https://github.com/micropython/micropython.git&amp;quot;&lt;br /&gt;
 $ git submodule update --init&lt;br /&gt;
&lt;br /&gt;
== Aggiungere la configurazione per la scheda  ==&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/ports/stm32/boards/&lt;br /&gt;
 $ cp -R STM32F4DISC STM32F4DIYMORE&lt;br /&gt;
 $ cd STM32F4DIYMORE&lt;br /&gt;
 $ rm staccel.py&lt;br /&gt;
&lt;br /&gt;
Sostituire il contenuto del file &amp;quot;mpconfigboard.h&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 #define MICROPY_HW_BOARD_NAME       &amp;quot;F4DIYMORE&amp;quot;&lt;br /&gt;
 #define MICROPY_HW_MCU_NAME         &amp;quot;STM32F407&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_HAS_SWITCH       (1)&lt;br /&gt;
 #define MICROPY_HW_HAS_FLASH        (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RNG       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RTC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_DAC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_USB       (1)&lt;br /&gt;
 &lt;br /&gt;
 // HSE is 8MHz&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLM (8)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLN (336)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV2)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLQ (7)&lt;br /&gt;
 &lt;br /&gt;
 // UART config&lt;br /&gt;
 //PA11 and PA12 pins are used by USB&lt;br /&gt;
 //#define MICROPY_HW_UART1_TX     (pin_A9)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RX     (pin_A10)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RTS    (pin_A12)&lt;br /&gt;
 //#define MICROPY_HW_UART1_CTS    (pin_A11)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART2_TX     (pin_A2)&lt;br /&gt;
 #define MICROPY_HW_UART2_RX     (pin_A3)&lt;br /&gt;
 #define MICROPY_HW_UART2_RTS    (pin_A1)&lt;br /&gt;
 #define MICROPY_HW_UART2_CTS    (pin_A0)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART3_TX     (pin_D8)&lt;br /&gt;
 #define MICROPY_HW_UART3_RX     (pin_D9)&lt;br /&gt;
 #define MICROPY_HW_UART3_RTS    (pin_D12)&lt;br /&gt;
 #define MICROPY_HW_UART3_CTS    (pin_D11)&lt;br /&gt;
 &lt;br /&gt;
 //PA0 and PA1 pins are used by UART2&lt;br /&gt;
 //#define MICROPY_HW_UART4_TX     (pin_A0)&lt;br /&gt;
 //#define MICROPY_HW_UART4_RX     (pin_A1)&lt;br /&gt;
 &lt;br /&gt;
 //I do not really need it&lt;br /&gt;
 //#define MICROPY_HW_UART6_TX     (pin_C6)&lt;br /&gt;
 //#define MICROPY_HW_UART6_RX     (pin_C7)&lt;br /&gt;
 &lt;br /&gt;
 // I2C busses&lt;br /&gt;
 #define MICROPY_HW_I2C1_SCL (pin_B6)&lt;br /&gt;
 #define MICROPY_HW_I2C1_SDA (pin_B7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_I2C2_SCL (pin_B10)&lt;br /&gt;
 #define MICROPY_HW_I2C2_SDA (pin_B11)&lt;br /&gt;
 &lt;br /&gt;
 // SPI busses&lt;br /&gt;
 #define MICROPY_HW_SPI1_NSS  (pin_A4)&lt;br /&gt;
 #define MICROPY_HW_SPI1_SCK  (pin_A5)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MISO (pin_A6)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MOSI (pin_A7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_SPI2_NSS  (pin_B12)&lt;br /&gt;
 #define MICROPY_HW_SPI2_SCK  (pin_B13)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MISO (pin_B14)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MOSI (pin_B15)&lt;br /&gt;
 &lt;br /&gt;
 // CAN busses&lt;br /&gt;
 //#define MICROPY_HW_CAN1_TX (pin_B9)&lt;br /&gt;
 //#define MICROPY_HW_CAN1_RX (pin_B8)&lt;br /&gt;
 &lt;br /&gt;
 //PB12 and PB13 pins are used by SPI2&lt;br /&gt;
 //#define MICROPY_HW_CAN2_TX (pin_B13)&lt;br /&gt;
 //#define MICROPY_HW_CAN2_RX (pin_B12)&lt;br /&gt;
 &lt;br /&gt;
 // USRSW is pulled up. Pressing the button makes the input go low.&lt;br /&gt;
 #define MICROPY_HW_USRSW_PIN        (pin_D15)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PULL       (GPIO_PULLUP)&lt;br /&gt;
 #define MICROPY_HW_USRSW_EXTI_MODE  (GPIO_MODE_IT_FALLING)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PRESSED    (0)&lt;br /&gt;
 &lt;br /&gt;
 // LEDs&lt;br /&gt;
 #define MICROPY_HW_LED_INVERTED     (1) // LEDs are on when pin is driven low&lt;br /&gt;
 #define MICROPY_HW_LED1             (pin_E0)&lt;br /&gt;
 #define MICROPY_HW_LED_ON(pin)      (mp_hal_pin_low(pin))&lt;br /&gt;
 #define MICROPY_HW_LED_OFF(pin)     (mp_hal_pin_high(pin))&lt;br /&gt;
 &lt;br /&gt;
 // USB config&lt;br /&gt;
 #define MICROPY_HW_USB_FS              (1)&lt;br /&gt;
 &lt;br /&gt;
 // Show IDLE on UART1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL        PYB_UART_1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL_BAUD   115200&lt;br /&gt;
 &lt;br /&gt;
Sostituire il contenuto del file &amp;quot;pins.csv&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 PA0,PA0&lt;br /&gt;
 PA1,PA1&lt;br /&gt;
 PA2,PA2&lt;br /&gt;
 PA3,PA3&lt;br /&gt;
 PA4,PA4&lt;br /&gt;
 PA5,PA5&lt;br /&gt;
 PA6,PA6&lt;br /&gt;
 PA7,PA7&lt;br /&gt;
 PA8,PA8&lt;br /&gt;
 PA9,PA9&lt;br /&gt;
 PA10,PA10&lt;br /&gt;
 PA11,PA11&lt;br /&gt;
 PA12,PA12&lt;br /&gt;
 PA13,PA13&lt;br /&gt;
 PA14,PA14&lt;br /&gt;
 PA15,PA15&lt;br /&gt;
 PB0,PB0&lt;br /&gt;
 PB1,PB1&lt;br /&gt;
 PB2,PB2&lt;br /&gt;
 PB3,PB3&lt;br /&gt;
 PB4,PB4&lt;br /&gt;
 PB5,PB5&lt;br /&gt;
 PB6,PB6&lt;br /&gt;
 PB7,PB7&lt;br /&gt;
 PB8,PB8&lt;br /&gt;
 PB9,PB9&lt;br /&gt;
 PB10,PB10&lt;br /&gt;
 PB11,PB11&lt;br /&gt;
 PB12,PB12&lt;br /&gt;
 PB13,PB13&lt;br /&gt;
 PB14,PB14&lt;br /&gt;
 PB15,PB15&lt;br /&gt;
 PC0,PC0&lt;br /&gt;
 PC1,PC1&lt;br /&gt;
 PC2,PC2&lt;br /&gt;
 PC3,PC3&lt;br /&gt;
 PC4,PC4&lt;br /&gt;
 PC5,PC5&lt;br /&gt;
 PC6,PC6&lt;br /&gt;
 PC7,PC7&lt;br /&gt;
 PC8,PC8&lt;br /&gt;
 PC9,PC9&lt;br /&gt;
 PC10,PC10&lt;br /&gt;
 PC11,PC11&lt;br /&gt;
 PC12,PC12&lt;br /&gt;
 PC13,PC13&lt;br /&gt;
 PD0,PD0&lt;br /&gt;
 PD1,PD1&lt;br /&gt;
 PD2,PD2&lt;br /&gt;
 PD3,PD3&lt;br /&gt;
 PD4,PD4&lt;br /&gt;
 PD5,PD5&lt;br /&gt;
 PD6,PD6&lt;br /&gt;
 PD7,PD7&lt;br /&gt;
 PD8,PD8&lt;br /&gt;
 PD9,PD9&lt;br /&gt;
 PD10,PD10&lt;br /&gt;
 PD11,PD11&lt;br /&gt;
 PD12,PD12&lt;br /&gt;
 PD13,PD13&lt;br /&gt;
 PD14,PD14&lt;br /&gt;
 PD15,PD15&lt;br /&gt;
 PE0,PE0&lt;br /&gt;
 PE1,PE1&lt;br /&gt;
 PE2,PE2&lt;br /&gt;
 PE3,PE3&lt;br /&gt;
 PE4,PE4&lt;br /&gt;
 PE5,PE5&lt;br /&gt;
 PE6,PE6&lt;br /&gt;
 PE7,PE7&lt;br /&gt;
 PE8,PE8&lt;br /&gt;
 PE9,PE9&lt;br /&gt;
 PE10,PE10&lt;br /&gt;
 PE11,PE11&lt;br /&gt;
 PE12,PE12&lt;br /&gt;
 PE13,PE13&lt;br /&gt;
 PE14,PE14&lt;br /&gt;
 PE15,PE15&lt;br /&gt;
 LED,PE0&lt;br /&gt;
 SW,PD15&lt;br /&gt;
&lt;br /&gt;
== Compilare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per istruzioni di compilazione dettagliate si faccia riferimento al file:&lt;br /&gt;
&lt;br /&gt;
 micropython/ports/stm32/README.md&lt;br /&gt;
&lt;br /&gt;
In breve, di seguito i comandi necessari per compilare MicroPython usando la configurazione esposta precedentemente.&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/&lt;br /&gt;
 $ make -C mpy-cross&lt;br /&gt;
 $ cd micropython/ports/stm32/&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE&lt;br /&gt;
&lt;br /&gt;
== Installare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware sulla scheda impostarla in modalità &amp;quot;DFU&amp;quot; prima di accenderla. Poi collegarla al computer via USB. In un sistema GNU/Linux sarà possibile verificare che la scheda sia effettivamente in modalità DFU con il comando:&lt;br /&gt;
&lt;br /&gt;
 $ lsusb&lt;br /&gt;
 Bus 002 Device 005: ID 0483:df11 STMicroelectronics STM Device in DFU Mode&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware:&lt;br /&gt;
&lt;br /&gt;
 # apt install python3-usb&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE deploy&lt;br /&gt;
&lt;br /&gt;
Se si dispone di un adattatore ST-LINK esterno (la scheda di per sé ne è sprovvista) questo si può utilizzare per la programmazione del firmware in alternativa alla modalità DFU. La corretta configurazione dei pin è stata già mostrata nella sezione dedicata all'hardware di questa pagina. Per quanto riguarda il versante software si faccia riferimento al file &amp;quot;README.md&amp;quot; di cui sopra.&lt;br /&gt;
&lt;br /&gt;
== Eseguire codice ==&lt;br /&gt;
&lt;br /&gt;
Quando la scheda viene avviata in modalità &amp;quot;flash&amp;quot; (si veda la sezione &amp;quot;Boot pin&amp;quot;) è possibile accedere al REPL di MicroPython attraverso una porta seriale fornita direttamente dalla porta USB.&lt;br /&gt;
&lt;br /&gt;
 $ screen /dev/ttyACM0 115200&lt;br /&gt;
 MicroPython v1.10-194-g41e7ad647 on 2019-03-11; F4DIYMORE with STM32F407&lt;br /&gt;
 Type &amp;quot;help()&amp;quot; for more information.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dalla stessa porta USB e con la scheda avviata con la stessa modalità è anche possibile accedere alla memoria flash del microcontrollore, dentro la quale si possono copiare i file &amp;quot;.py&amp;quot; da far eseguire a MicroPython.&lt;br /&gt;
&lt;br /&gt;
 $ pmount /dev/sdb1&lt;br /&gt;
 $ ls /media/sdb1/&lt;br /&gt;
 README.txt  boot.py  main.py  pybcdc.inf&lt;br /&gt;
&lt;br /&gt;
= Frosted =&lt;br /&gt;
&lt;br /&gt;
[https://github.com/insane-adding-machines/frosted Frosted] è un sistema opertivo libero e conforme a POSIX per sistemi integrati. Può risultare interessante a chi preferirebbe programmare questa board usando C (o addirittura sh) pittosto che Micropython. La conformità a POSIX rende il porting di applicazioni sulla piattaforma relativamente semplice. Frosted di suo fornisce anche MicroPython, il supporto però è limitato.&lt;br /&gt;
La scheda &amp;quot;STM32-407 DIY-MORE&amp;quot; è supportata da Frosted e maggiori informazioni possono essere trovate nel relativo [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 commit] sul github del progetto.&lt;br /&gt;
&lt;br /&gt;
= Note finali =&lt;br /&gt;
Si tenga presente che questa scheda è poco documentata e supportata. È molto economica rispetto alle alternative, ma non è detto che le procedure descritte in questa pagina funzioneranno correttamente nel presente o nel futuro. Tutto ciò che è stato scritto è frutto di sperimentazioni ed &amp;quot;hackeraggi&amp;quot; da considerare assolutamente inaffidabili.&lt;br /&gt;
&lt;br /&gt;
= Link e risorse utili = &lt;br /&gt;
* [http://dubstylee.net/v/diy-more-stm32f407vgt6/ DIY More STM32F407VGT6 ボード] Pagina di un blog in giapponese che contiene alcune informazioni utili sulla scheda, tra cui lo schema elettrico.&lt;br /&gt;
* [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 Added support for STM32-F407 DIYMORE from diymore.cc] Commit di supporto della scheda su Frosted.&lt;br /&gt;
* [https://www.carminenoviello.com/it/2015/08/11/compilare-micropython-una-scheda-stm32nucleo-f4/ Compilare micropython per una scheda STM32Nucleo-F4] Guida sulla compilazione di MicroPython in italiano.&lt;/div&gt;</summary>
		<author><name>Aggaz</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=File:STM32-407_DIY-MORE.png&amp;diff=6853</id>
		<title>File:STM32-407 DIY-MORE.png</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=File:STM32-407_DIY-MORE.png&amp;diff=6853"/>
		<updated>2019-03-12T14:24:15Z</updated>

		<summary type="html">&lt;p&gt;Aggaz: Scheda di sviluppo STM32-407 della marca DIY-MORE.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Scheda di sviluppo STM32-407 della marca DIY-MORE.&lt;/div&gt;</summary>
		<author><name>Aggaz</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6852</id>
		<title>STM32-407 DIY-MORE</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6852"/>
		<updated>2019-03-12T13:35:00Z</updated>

		<summary type="html">&lt;p&gt;Aggaz: /* Link e risorse utili */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduzione =&lt;br /&gt;
&lt;br /&gt;
La scheda “STM32-407” prodotta da “DIY MORE” è una &amp;quot;development board&amp;quot; oscura ed economica. Si può ordinare dalla Cina per pochi euro ma sono poche le informazioni che si possono trovare in rete. È una scheda piuttosto minimale e può essere considerata come una &amp;quot;breakout board&amp;quot; del microcontrollore STM32F407. Questo microcontrollore è abbastanza comune ed usato anche in altre schede, di conseguenza è possibile utilizzare la &amp;quot;STM32-407 DIY-MORE&amp;quot; con [https://github.com/micropython/micropython/ Micropython]. Inoltre questa stessa scheda è anche supportata da [https://github.com/insane-adding-machines/frosted Frosted].&lt;br /&gt;
&lt;br /&gt;
= La scheda =&lt;br /&gt;
&lt;br /&gt;
Oltre al microcontrollore stesso la scheda fornisce:&lt;br /&gt;
* una porta USB micro B;&lt;br /&gt;
* 2 pulsanti (uno di reset ed uno programmabile);&lt;br /&gt;
* 2 led (uno di accensione ed uno programmabile);&lt;br /&gt;
* 92 pin (inclusi quelli di alimentazione);&lt;br /&gt;
* svariati componenti accessori necessari al corretto funzionamento del microcontrollore. &lt;br /&gt;
&lt;br /&gt;
== Pulsanti ==&lt;br /&gt;
&lt;br /&gt;
Il pulsante vicino la porta USB ha una funzione di &amp;quot;reset&amp;quot;. L'altro pulsante invece è programmabile ed è configurato in &amp;quot;pull-up&amp;quot; al pin PD15 con una resistenza da 10kΩ.&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
&lt;br /&gt;
LED1, situato vicino la porta USB, è utilizzato per segnalare lo stato di alimentazione. LED2 è programmabile ed è collegato al pin PE0 da una resistenza da 1kΩ. Il pin abbassato equivale ad un LED acceso.&lt;br /&gt;
&lt;br /&gt;
== Boot pin ==&lt;br /&gt;
&lt;br /&gt;
La scheda è provvista di due &amp;quot;boot pin&amp;quot; la cui configurazione all'accensione determina lo stato del microcontrollore. I pin si trovano in un angolo sul lato opposto rispetto alla porta USB e sono denominati &amp;quot;BOOT0&amp;quot; e &amp;quot;BOOT1&amp;quot;. Entrambi sono in una configurazione normalmente &amp;quot;up&amp;quot; e sono adiacenti a dei pin collegati a massa. Pertanto si può facilmente controllare lo stato di questi pin per mezzo di un &amp;quot;jumper&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Come mostrato nella tabella in basso, sono tre le configurazioni utili che si possono ottenere dalle combinazioni degli stati dei due &amp;quot;boot pin&amp;quot;:&lt;br /&gt;
* In modalità &amp;quot;Flash&amp;quot;, assumendo che MicroPython sia correttamente installato, è possibile montare la memoria flash del microcontrollore via USB per copiare i file degli script da eseguire. Allo stesso tempo è anche possibile accedere alla &amp;quot;REPL&amp;quot; di MicroPython attraverso una porta seriale fornita dalla stessa porta USB (la quale utilizza i pin PA11 e PA12);&lt;br /&gt;
* In modalità DFU è possibile programmare il microcontrollore e caricare il firmware. Questa è la modalità che viene generalmente usata per caricare MicroPython nel microcontrollore;&lt;br /&gt;
* La modalità SRAM non l'ho mai usata ed onestamente non so a cosa serve.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin BOOT0''' || '''Pin BOOT1''' || '''Modalità'''&lt;br /&gt;
|-&lt;br /&gt;
|   Giù || Su/Giù || Flash&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Giù || DFU&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Su || SRAM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ST-LINK ==&lt;br /&gt;
&lt;br /&gt;
La scheda di per sé è priva di un dispositivo ST-LINK per la programmazione, ma un dispositivo di questo tipo può essere collegato utilizzando il seguente schema.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin della scheda''' || '''Pin ST-LINK'''&lt;br /&gt;
|-&lt;br /&gt;
|   PA13 || SWDIO&lt;br /&gt;
|-&lt;br /&gt;
|   PA14 || SWCLK&lt;br /&gt;
|-&lt;br /&gt;
|   3v3 || 3v3&lt;br /&gt;
|-&lt;br /&gt;
|   GND || GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pin degni di nota ==&lt;br /&gt;
&lt;br /&gt;
I pin della scheda corrispondono ai pin del microcontrollore STM32F407. Si può consultare il datasheet del componente per conoscere le funzionalità speciali dei vari pin (UART, I2C, SPI, eccetera). Ad ogni modo bisogna tenere in considerazione alcune peculiarità dell'implementazione della scheda:&lt;br /&gt;
&lt;br /&gt;
* PD15 è collegato in &amp;quot;pull-up&amp;quot; al pulsante.&lt;br /&gt;
&lt;br /&gt;
* PE0 è collegato al LED2 (pin abbassato equivale a LED acceso).&lt;br /&gt;
&lt;br /&gt;
* PA11 e PA12 sono usati dalla porta USB. Sebbene corrispondano anche ai pin CTS ed RTS della UART1, è meglio non usarli se si vuole usare la porta USB.&lt;br /&gt;
&lt;br /&gt;
* Altre informazioni sui pin possono essere lette nel file &amp;quot;mpconfigboard.h&amp;quot; riportato più in basso.&lt;br /&gt;
&lt;br /&gt;
= Micropython =&lt;br /&gt;
&lt;br /&gt;
Per utilizzare correttamente questa scheda è necessario compilare manualmente il codice di MicroPython. Inoltre è necessario impostare delle configurazioni ad-hoc per poter gestire in maniera corretta la mappatura dei &amp;quot;pin&amp;quot;. Di seguito sono esposti i passaggi per compiere questa operazione su un sistema GNU/Linux. Si assume che il sistema del lettore sia  già configurato per l'utilizzo di &amp;quot;git&amp;quot; e la &amp;quot;cross-compilazione&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Ottenere MicroPython  ==&lt;br /&gt;
&lt;br /&gt;
 $ git clone &amp;quot;https://github.com/micropython/micropython.git&amp;quot;&lt;br /&gt;
 $ git submodule update --init&lt;br /&gt;
&lt;br /&gt;
== Aggiungere la configurazione per la scheda  ==&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/ports/stm32/boards/&lt;br /&gt;
 $ cp -R STM32F4DISC STM32F4DIYMORE&lt;br /&gt;
 $ cd STM32F4DIYMORE&lt;br /&gt;
 $ rm staccel.py&lt;br /&gt;
&lt;br /&gt;
Sostituire il contenuto del file &amp;quot;mpconfigboard.h&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 #define MICROPY_HW_BOARD_NAME       &amp;quot;F4DIYMORE&amp;quot;&lt;br /&gt;
 #define MICROPY_HW_MCU_NAME         &amp;quot;STM32F407&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_HAS_SWITCH       (1)&lt;br /&gt;
 #define MICROPY_HW_HAS_FLASH        (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RNG       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RTC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_DAC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_USB       (1)&lt;br /&gt;
 &lt;br /&gt;
 // HSE is 8MHz&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLM (8)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLN (336)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV2)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLQ (7)&lt;br /&gt;
 &lt;br /&gt;
 // UART config&lt;br /&gt;
 //PA11 and PA12 pins are used by USB&lt;br /&gt;
 //#define MICROPY_HW_UART1_TX     (pin_A9)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RX     (pin_A10)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RTS    (pin_A12)&lt;br /&gt;
 //#define MICROPY_HW_UART1_CTS    (pin_A11)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART2_TX     (pin_A2)&lt;br /&gt;
 #define MICROPY_HW_UART2_RX     (pin_A3)&lt;br /&gt;
 #define MICROPY_HW_UART2_RTS    (pin_A1)&lt;br /&gt;
 #define MICROPY_HW_UART2_CTS    (pin_A0)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART3_TX     (pin_D8)&lt;br /&gt;
 #define MICROPY_HW_UART3_RX     (pin_D9)&lt;br /&gt;
 #define MICROPY_HW_UART3_RTS    (pin_D12)&lt;br /&gt;
 #define MICROPY_HW_UART3_CTS    (pin_D11)&lt;br /&gt;
 &lt;br /&gt;
 //PA0 and PA1 pins are used by UART2&lt;br /&gt;
 //#define MICROPY_HW_UART4_TX     (pin_A0)&lt;br /&gt;
 //#define MICROPY_HW_UART4_RX     (pin_A1)&lt;br /&gt;
 &lt;br /&gt;
 //I do not really need it&lt;br /&gt;
 //#define MICROPY_HW_UART6_TX     (pin_C6)&lt;br /&gt;
 //#define MICROPY_HW_UART6_RX     (pin_C7)&lt;br /&gt;
 &lt;br /&gt;
 // I2C busses&lt;br /&gt;
 #define MICROPY_HW_I2C1_SCL (pin_B6)&lt;br /&gt;
 #define MICROPY_HW_I2C1_SDA (pin_B7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_I2C2_SCL (pin_B10)&lt;br /&gt;
 #define MICROPY_HW_I2C2_SDA (pin_B11)&lt;br /&gt;
 &lt;br /&gt;
 // SPI busses&lt;br /&gt;
 #define MICROPY_HW_SPI1_NSS  (pin_A4)&lt;br /&gt;
 #define MICROPY_HW_SPI1_SCK  (pin_A5)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MISO (pin_A6)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MOSI (pin_A7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_SPI2_NSS  (pin_B12)&lt;br /&gt;
 #define MICROPY_HW_SPI2_SCK  (pin_B13)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MISO (pin_B14)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MOSI (pin_B15)&lt;br /&gt;
 &lt;br /&gt;
 // CAN busses&lt;br /&gt;
 //#define MICROPY_HW_CAN1_TX (pin_B9)&lt;br /&gt;
 //#define MICROPY_HW_CAN1_RX (pin_B8)&lt;br /&gt;
 &lt;br /&gt;
 //PB12 and PB13 pins are used by SPI2&lt;br /&gt;
 //#define MICROPY_HW_CAN2_TX (pin_B13)&lt;br /&gt;
 //#define MICROPY_HW_CAN2_RX (pin_B12)&lt;br /&gt;
 &lt;br /&gt;
 // USRSW is pulled up. Pressing the button makes the input go low.&lt;br /&gt;
 #define MICROPY_HW_USRSW_PIN        (pin_D15)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PULL       (GPIO_PULLUP)&lt;br /&gt;
 #define MICROPY_HW_USRSW_EXTI_MODE  (GPIO_MODE_IT_FALLING)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PRESSED    (0)&lt;br /&gt;
 &lt;br /&gt;
 // LEDs&lt;br /&gt;
 #define MICROPY_HW_LED_INVERTED     (1) // LEDs are on when pin is driven low&lt;br /&gt;
 #define MICROPY_HW_LED1             (pin_E0)&lt;br /&gt;
 #define MICROPY_HW_LED_ON(pin)      (mp_hal_pin_low(pin))&lt;br /&gt;
 #define MICROPY_HW_LED_OFF(pin)     (mp_hal_pin_high(pin))&lt;br /&gt;
 &lt;br /&gt;
 // USB config&lt;br /&gt;
 #define MICROPY_HW_USB_FS              (1)&lt;br /&gt;
 &lt;br /&gt;
 // Show IDLE on UART1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL        PYB_UART_1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL_BAUD   115200&lt;br /&gt;
 &lt;br /&gt;
Sostituire il contenuto del file &amp;quot;pins.csv&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 PA0,PA0&lt;br /&gt;
 PA1,PA1&lt;br /&gt;
 PA2,PA2&lt;br /&gt;
 PA3,PA3&lt;br /&gt;
 PA4,PA4&lt;br /&gt;
 PA5,PA5&lt;br /&gt;
 PA6,PA6&lt;br /&gt;
 PA7,PA7&lt;br /&gt;
 PA8,PA8&lt;br /&gt;
 PA9,PA9&lt;br /&gt;
 PA10,PA10&lt;br /&gt;
 PA11,PA11&lt;br /&gt;
 PA12,PA12&lt;br /&gt;
 PA13,PA13&lt;br /&gt;
 PA14,PA14&lt;br /&gt;
 PA15,PA15&lt;br /&gt;
 PB0,PB0&lt;br /&gt;
 PB1,PB1&lt;br /&gt;
 PB2,PB2&lt;br /&gt;
 PB3,PB3&lt;br /&gt;
 PB4,PB4&lt;br /&gt;
 PB5,PB5&lt;br /&gt;
 PB6,PB6&lt;br /&gt;
 PB7,PB7&lt;br /&gt;
 PB8,PB8&lt;br /&gt;
 PB9,PB9&lt;br /&gt;
 PB10,PB10&lt;br /&gt;
 PB11,PB11&lt;br /&gt;
 PB12,PB12&lt;br /&gt;
 PB13,PB13&lt;br /&gt;
 PB14,PB14&lt;br /&gt;
 PB15,PB15&lt;br /&gt;
 PC0,PC0&lt;br /&gt;
 PC1,PC1&lt;br /&gt;
 PC2,PC2&lt;br /&gt;
 PC3,PC3&lt;br /&gt;
 PC4,PC4&lt;br /&gt;
 PC5,PC5&lt;br /&gt;
 PC6,PC6&lt;br /&gt;
 PC7,PC7&lt;br /&gt;
 PC8,PC8&lt;br /&gt;
 PC9,PC9&lt;br /&gt;
 PC10,PC10&lt;br /&gt;
 PC11,PC11&lt;br /&gt;
 PC12,PC12&lt;br /&gt;
 PC13,PC13&lt;br /&gt;
 PD0,PD0&lt;br /&gt;
 PD1,PD1&lt;br /&gt;
 PD2,PD2&lt;br /&gt;
 PD3,PD3&lt;br /&gt;
 PD4,PD4&lt;br /&gt;
 PD5,PD5&lt;br /&gt;
 PD6,PD6&lt;br /&gt;
 PD7,PD7&lt;br /&gt;
 PD8,PD8&lt;br /&gt;
 PD9,PD9&lt;br /&gt;
 PD10,PD10&lt;br /&gt;
 PD11,PD11&lt;br /&gt;
 PD12,PD12&lt;br /&gt;
 PD13,PD13&lt;br /&gt;
 PD14,PD14&lt;br /&gt;
 PD15,PD15&lt;br /&gt;
 PE0,PE0&lt;br /&gt;
 PE1,PE1&lt;br /&gt;
 PE2,PE2&lt;br /&gt;
 PE3,PE3&lt;br /&gt;
 PE4,PE4&lt;br /&gt;
 PE5,PE5&lt;br /&gt;
 PE6,PE6&lt;br /&gt;
 PE7,PE7&lt;br /&gt;
 PE8,PE8&lt;br /&gt;
 PE9,PE9&lt;br /&gt;
 PE10,PE10&lt;br /&gt;
 PE11,PE11&lt;br /&gt;
 PE12,PE12&lt;br /&gt;
 PE13,PE13&lt;br /&gt;
 PE14,PE14&lt;br /&gt;
 PE15,PE15&lt;br /&gt;
 LED,PE0&lt;br /&gt;
 SW,PD15&lt;br /&gt;
&lt;br /&gt;
== Compilare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per istruzioni di compilazione dettagliate si faccia riferimento al file:&lt;br /&gt;
&lt;br /&gt;
 micropython/ports/stm32/README.md&lt;br /&gt;
&lt;br /&gt;
In breve, di seguito i comandi necessari per compilare MicroPython usando la configurazione esposta precedentemente.&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/&lt;br /&gt;
 $ make -C mpy-cross&lt;br /&gt;
 $ cd micropython/ports/stm32/&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE&lt;br /&gt;
&lt;br /&gt;
== Installare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware sulla scheda impostarla in modalità &amp;quot;DFU&amp;quot; prima di accenderla. Poi collegarla al computer via USB. In un sistema GNU/Linux sarà possibile verificare che la scheda sia effettivamente in modalità DFU con il comando:&lt;br /&gt;
&lt;br /&gt;
 $ lsusb&lt;br /&gt;
 Bus 002 Device 005: ID 0483:df11 STMicroelectronics STM Device in DFU Mode&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware:&lt;br /&gt;
&lt;br /&gt;
 # apt install python3-usb&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE deploy&lt;br /&gt;
&lt;br /&gt;
Se si dispone di un adattatore ST-LINK esterno (la scheda di per sé ne è sprovvista) questo si può utilizzare per la programmazione del firmware in alternativa alla modalità DFU. La corretta configurazione dei pin è stata già mostrata nella sezione dedicata all'hardware di questa pagina. Per quanto riguarda il versante software si faccia riferimento al file &amp;quot;README.md&amp;quot; di cui sopra.&lt;br /&gt;
&lt;br /&gt;
== Eseguire codice ==&lt;br /&gt;
&lt;br /&gt;
Quando la scheda viene avviata in modalità &amp;quot;flash&amp;quot; (si veda la sezione &amp;quot;Boot pin&amp;quot;) è possibile accedere al REPL di MicroPython attraverso una porta seriale fornita direttamente dalla porta USB.&lt;br /&gt;
&lt;br /&gt;
 $ screen /dev/ttyACM0 115200&lt;br /&gt;
 MicroPython v1.10-194-g41e7ad647 on 2019-03-11; F4DIYMORE with STM32F407&lt;br /&gt;
 Type &amp;quot;help()&amp;quot; for more information.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dalla stessa porta USB e con la scheda avviata con la stessa modalità è anche possibile accedere alla memoria flash del microcontrollore, dentro la quale si possono copiare i file &amp;quot;.py&amp;quot; da far eseguire a MicroPython.&lt;br /&gt;
&lt;br /&gt;
 $ pmount /dev/sdb1&lt;br /&gt;
 $ ls /media/sdb1/&lt;br /&gt;
 README.txt  boot.py  main.py  pybcdc.inf&lt;br /&gt;
&lt;br /&gt;
= Frosted =&lt;br /&gt;
&lt;br /&gt;
[https://github.com/insane-adding-machines/frosted Frosted] è un sistema opertivo libero e conforme a POSIX per sistemi integrati. Può risultare interessante a chi preferirebbe programmare questa board usando C (o addirittura sh) pittosto che Micropython. La conformità a POSIX rende il porting di applicazioni sulla piattaforma relativamente semplice. Frosted di suo fornisce anche MicroPython, il supporto però è limitato.&lt;br /&gt;
La scheda &amp;quot;STM32-407 DIY-MORE&amp;quot; è supportata da Frosted e maggiori informazioni possono essere trovate nel relativo [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 commit] sul github del progetto.&lt;br /&gt;
&lt;br /&gt;
= Note finali =&lt;br /&gt;
Si tenga presente che questa scheda è poco documentata e supportata. È molto economica rispetto alle alternative, ma non è detto che le procedure descritte in questa pagina funzioneranno correttamente nel presente o nel futuro. Tutto ciò che è stato scritto è frutto di sperimentazioni ed &amp;quot;hackeraggi&amp;quot; da considerare assolutamente inaffidabili.&lt;br /&gt;
&lt;br /&gt;
= Link e risorse utili = &lt;br /&gt;
* [http://dubstylee.net/v/diy-more-stm32f407vgt6/ DIY More STM32F407VGT6 ボード] Pagina di un blog in giapponese che contiene alcune informazioni utili sulla scheda, tra cui lo schema elettrico.&lt;br /&gt;
* [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 Added support for STM32-F407 DIYMORE from diymore.cc] Commit di supporto della scheda su Frosted.&lt;br /&gt;
* [https://www.carminenoviello.com/it/2015/08/11/compilare-micropython-una-scheda-stm32nucleo-f4/ Compilare micropython per una scheda STM32Nucleo-F4] Guida sulla compilazione di MicroPython in italiano.&lt;/div&gt;</summary>
		<author><name>Aggaz</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6851</id>
		<title>STM32-407 DIY-MORE</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6851"/>
		<updated>2019-03-12T13:33:46Z</updated>

		<summary type="html">&lt;p&gt;Aggaz: /* Frosted */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduzione =&lt;br /&gt;
&lt;br /&gt;
La scheda “STM32-407” prodotta da “DIY MORE” è una &amp;quot;development board&amp;quot; oscura ed economica. Si può ordinare dalla Cina per pochi euro ma sono poche le informazioni che si possono trovare in rete. È una scheda piuttosto minimale e può essere considerata come una &amp;quot;breakout board&amp;quot; del microcontrollore STM32F407. Questo microcontrollore è abbastanza comune ed usato anche in altre schede, di conseguenza è possibile utilizzare la &amp;quot;STM32-407 DIY-MORE&amp;quot; con [https://github.com/micropython/micropython/ Micropython]. Inoltre questa stessa scheda è anche supportata da [https://github.com/insane-adding-machines/frosted Frosted].&lt;br /&gt;
&lt;br /&gt;
= La scheda =&lt;br /&gt;
&lt;br /&gt;
Oltre al microcontrollore stesso la scheda fornisce:&lt;br /&gt;
* una porta USB micro B;&lt;br /&gt;
* 2 pulsanti (uno di reset ed uno programmabile);&lt;br /&gt;
* 2 led (uno di accensione ed uno programmabile);&lt;br /&gt;
* 92 pin (inclusi quelli di alimentazione);&lt;br /&gt;
* svariati componenti accessori necessari al corretto funzionamento del microcontrollore. &lt;br /&gt;
&lt;br /&gt;
== Pulsanti ==&lt;br /&gt;
&lt;br /&gt;
Il pulsante vicino la porta USB ha una funzione di &amp;quot;reset&amp;quot;. L'altro pulsante invece è programmabile ed è configurato in &amp;quot;pull-up&amp;quot; al pin PD15 con una resistenza da 10kΩ.&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
&lt;br /&gt;
LED1, situato vicino la porta USB, è utilizzato per segnalare lo stato di alimentazione. LED2 è programmabile ed è collegato al pin PE0 da una resistenza da 1kΩ. Il pin abbassato equivale ad un LED acceso.&lt;br /&gt;
&lt;br /&gt;
== Boot pin ==&lt;br /&gt;
&lt;br /&gt;
La scheda è provvista di due &amp;quot;boot pin&amp;quot; la cui configurazione all'accensione determina lo stato del microcontrollore. I pin si trovano in un angolo sul lato opposto rispetto alla porta USB e sono denominati &amp;quot;BOOT0&amp;quot; e &amp;quot;BOOT1&amp;quot;. Entrambi sono in una configurazione normalmente &amp;quot;up&amp;quot; e sono adiacenti a dei pin collegati a massa. Pertanto si può facilmente controllare lo stato di questi pin per mezzo di un &amp;quot;jumper&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Come mostrato nella tabella in basso, sono tre le configurazioni utili che si possono ottenere dalle combinazioni degli stati dei due &amp;quot;boot pin&amp;quot;:&lt;br /&gt;
* In modalità &amp;quot;Flash&amp;quot;, assumendo che MicroPython sia correttamente installato, è possibile montare la memoria flash del microcontrollore via USB per copiare i file degli script da eseguire. Allo stesso tempo è anche possibile accedere alla &amp;quot;REPL&amp;quot; di MicroPython attraverso una porta seriale fornita dalla stessa porta USB (la quale utilizza i pin PA11 e PA12);&lt;br /&gt;
* In modalità DFU è possibile programmare il microcontrollore e caricare il firmware. Questa è la modalità che viene generalmente usata per caricare MicroPython nel microcontrollore;&lt;br /&gt;
* La modalità SRAM non l'ho mai usata ed onestamente non so a cosa serve.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin BOOT0''' || '''Pin BOOT1''' || '''Modalità'''&lt;br /&gt;
|-&lt;br /&gt;
|   Giù || Su/Giù || Flash&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Giù || DFU&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Su || SRAM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ST-LINK ==&lt;br /&gt;
&lt;br /&gt;
La scheda di per sé è priva di un dispositivo ST-LINK per la programmazione, ma un dispositivo di questo tipo può essere collegato utilizzando il seguente schema.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin della scheda''' || '''Pin ST-LINK'''&lt;br /&gt;
|-&lt;br /&gt;
|   PA13 || SWDIO&lt;br /&gt;
|-&lt;br /&gt;
|   PA14 || SWCLK&lt;br /&gt;
|-&lt;br /&gt;
|   3v3 || 3v3&lt;br /&gt;
|-&lt;br /&gt;
|   GND || GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pin degni di nota ==&lt;br /&gt;
&lt;br /&gt;
I pin della scheda corrispondono ai pin del microcontrollore STM32F407. Si può consultare il datasheet del componente per conoscere le funzionalità speciali dei vari pin (UART, I2C, SPI, eccetera). Ad ogni modo bisogna tenere in considerazione alcune peculiarità dell'implementazione della scheda:&lt;br /&gt;
&lt;br /&gt;
* PD15 è collegato in &amp;quot;pull-up&amp;quot; al pulsante.&lt;br /&gt;
&lt;br /&gt;
* PE0 è collegato al LED2 (pin abbassato equivale a LED acceso).&lt;br /&gt;
&lt;br /&gt;
* PA11 e PA12 sono usati dalla porta USB. Sebbene corrispondano anche ai pin CTS ed RTS della UART1, è meglio non usarli se si vuole usare la porta USB.&lt;br /&gt;
&lt;br /&gt;
* Altre informazioni sui pin possono essere lette nel file &amp;quot;mpconfigboard.h&amp;quot; riportato più in basso.&lt;br /&gt;
&lt;br /&gt;
= Micropython =&lt;br /&gt;
&lt;br /&gt;
Per utilizzare correttamente questa scheda è necessario compilare manualmente il codice di MicroPython. Inoltre è necessario impostare delle configurazioni ad-hoc per poter gestire in maniera corretta la mappatura dei &amp;quot;pin&amp;quot;. Di seguito sono esposti i passaggi per compiere questa operazione su un sistema GNU/Linux. Si assume che il sistema del lettore sia  già configurato per l'utilizzo di &amp;quot;git&amp;quot; e la &amp;quot;cross-compilazione&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Ottenere MicroPython  ==&lt;br /&gt;
&lt;br /&gt;
 $ git clone &amp;quot;https://github.com/micropython/micropython.git&amp;quot;&lt;br /&gt;
 $ git submodule update --init&lt;br /&gt;
&lt;br /&gt;
== Aggiungere la configurazione per la scheda  ==&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/ports/stm32/boards/&lt;br /&gt;
 $ cp -R STM32F4DISC STM32F4DIYMORE&lt;br /&gt;
 $ cd STM32F4DIYMORE&lt;br /&gt;
 $ rm staccel.py&lt;br /&gt;
&lt;br /&gt;
Sostituire il contenuto del file &amp;quot;mpconfigboard.h&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 #define MICROPY_HW_BOARD_NAME       &amp;quot;F4DIYMORE&amp;quot;&lt;br /&gt;
 #define MICROPY_HW_MCU_NAME         &amp;quot;STM32F407&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_HAS_SWITCH       (1)&lt;br /&gt;
 #define MICROPY_HW_HAS_FLASH        (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RNG       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RTC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_DAC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_USB       (1)&lt;br /&gt;
 &lt;br /&gt;
 // HSE is 8MHz&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLM (8)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLN (336)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV2)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLQ (7)&lt;br /&gt;
 &lt;br /&gt;
 // UART config&lt;br /&gt;
 //PA11 and PA12 pins are used by USB&lt;br /&gt;
 //#define MICROPY_HW_UART1_TX     (pin_A9)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RX     (pin_A10)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RTS    (pin_A12)&lt;br /&gt;
 //#define MICROPY_HW_UART1_CTS    (pin_A11)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART2_TX     (pin_A2)&lt;br /&gt;
 #define MICROPY_HW_UART2_RX     (pin_A3)&lt;br /&gt;
 #define MICROPY_HW_UART2_RTS    (pin_A1)&lt;br /&gt;
 #define MICROPY_HW_UART2_CTS    (pin_A0)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART3_TX     (pin_D8)&lt;br /&gt;
 #define MICROPY_HW_UART3_RX     (pin_D9)&lt;br /&gt;
 #define MICROPY_HW_UART3_RTS    (pin_D12)&lt;br /&gt;
 #define MICROPY_HW_UART3_CTS    (pin_D11)&lt;br /&gt;
 &lt;br /&gt;
 //PA0 and PA1 pins are used by UART2&lt;br /&gt;
 //#define MICROPY_HW_UART4_TX     (pin_A0)&lt;br /&gt;
 //#define MICROPY_HW_UART4_RX     (pin_A1)&lt;br /&gt;
 &lt;br /&gt;
 //I do not really need it&lt;br /&gt;
 //#define MICROPY_HW_UART6_TX     (pin_C6)&lt;br /&gt;
 //#define MICROPY_HW_UART6_RX     (pin_C7)&lt;br /&gt;
 &lt;br /&gt;
 // I2C busses&lt;br /&gt;
 #define MICROPY_HW_I2C1_SCL (pin_B6)&lt;br /&gt;
 #define MICROPY_HW_I2C1_SDA (pin_B7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_I2C2_SCL (pin_B10)&lt;br /&gt;
 #define MICROPY_HW_I2C2_SDA (pin_B11)&lt;br /&gt;
 &lt;br /&gt;
 // SPI busses&lt;br /&gt;
 #define MICROPY_HW_SPI1_NSS  (pin_A4)&lt;br /&gt;
 #define MICROPY_HW_SPI1_SCK  (pin_A5)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MISO (pin_A6)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MOSI (pin_A7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_SPI2_NSS  (pin_B12)&lt;br /&gt;
 #define MICROPY_HW_SPI2_SCK  (pin_B13)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MISO (pin_B14)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MOSI (pin_B15)&lt;br /&gt;
 &lt;br /&gt;
 // CAN busses&lt;br /&gt;
 //#define MICROPY_HW_CAN1_TX (pin_B9)&lt;br /&gt;
 //#define MICROPY_HW_CAN1_RX (pin_B8)&lt;br /&gt;
 &lt;br /&gt;
 //PB12 and PB13 pins are used by SPI2&lt;br /&gt;
 //#define MICROPY_HW_CAN2_TX (pin_B13)&lt;br /&gt;
 //#define MICROPY_HW_CAN2_RX (pin_B12)&lt;br /&gt;
 &lt;br /&gt;
 // USRSW is pulled up. Pressing the button makes the input go low.&lt;br /&gt;
 #define MICROPY_HW_USRSW_PIN        (pin_D15)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PULL       (GPIO_PULLUP)&lt;br /&gt;
 #define MICROPY_HW_USRSW_EXTI_MODE  (GPIO_MODE_IT_FALLING)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PRESSED    (0)&lt;br /&gt;
 &lt;br /&gt;
 // LEDs&lt;br /&gt;
 #define MICROPY_HW_LED_INVERTED     (1) // LEDs are on when pin is driven low&lt;br /&gt;
 #define MICROPY_HW_LED1             (pin_E0)&lt;br /&gt;
 #define MICROPY_HW_LED_ON(pin)      (mp_hal_pin_low(pin))&lt;br /&gt;
 #define MICROPY_HW_LED_OFF(pin)     (mp_hal_pin_high(pin))&lt;br /&gt;
 &lt;br /&gt;
 // USB config&lt;br /&gt;
 #define MICROPY_HW_USB_FS              (1)&lt;br /&gt;
 &lt;br /&gt;
 // Show IDLE on UART1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL        PYB_UART_1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL_BAUD   115200&lt;br /&gt;
 &lt;br /&gt;
Sostituire il contenuto del file &amp;quot;pins.csv&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 PA0,PA0&lt;br /&gt;
 PA1,PA1&lt;br /&gt;
 PA2,PA2&lt;br /&gt;
 PA3,PA3&lt;br /&gt;
 PA4,PA4&lt;br /&gt;
 PA5,PA5&lt;br /&gt;
 PA6,PA6&lt;br /&gt;
 PA7,PA7&lt;br /&gt;
 PA8,PA8&lt;br /&gt;
 PA9,PA9&lt;br /&gt;
 PA10,PA10&lt;br /&gt;
 PA11,PA11&lt;br /&gt;
 PA12,PA12&lt;br /&gt;
 PA13,PA13&lt;br /&gt;
 PA14,PA14&lt;br /&gt;
 PA15,PA15&lt;br /&gt;
 PB0,PB0&lt;br /&gt;
 PB1,PB1&lt;br /&gt;
 PB2,PB2&lt;br /&gt;
 PB3,PB3&lt;br /&gt;
 PB4,PB4&lt;br /&gt;
 PB5,PB5&lt;br /&gt;
 PB6,PB6&lt;br /&gt;
 PB7,PB7&lt;br /&gt;
 PB8,PB8&lt;br /&gt;
 PB9,PB9&lt;br /&gt;
 PB10,PB10&lt;br /&gt;
 PB11,PB11&lt;br /&gt;
 PB12,PB12&lt;br /&gt;
 PB13,PB13&lt;br /&gt;
 PB14,PB14&lt;br /&gt;
 PB15,PB15&lt;br /&gt;
 PC0,PC0&lt;br /&gt;
 PC1,PC1&lt;br /&gt;
 PC2,PC2&lt;br /&gt;
 PC3,PC3&lt;br /&gt;
 PC4,PC4&lt;br /&gt;
 PC5,PC5&lt;br /&gt;
 PC6,PC6&lt;br /&gt;
 PC7,PC7&lt;br /&gt;
 PC8,PC8&lt;br /&gt;
 PC9,PC9&lt;br /&gt;
 PC10,PC10&lt;br /&gt;
 PC11,PC11&lt;br /&gt;
 PC12,PC12&lt;br /&gt;
 PC13,PC13&lt;br /&gt;
 PD0,PD0&lt;br /&gt;
 PD1,PD1&lt;br /&gt;
 PD2,PD2&lt;br /&gt;
 PD3,PD3&lt;br /&gt;
 PD4,PD4&lt;br /&gt;
 PD5,PD5&lt;br /&gt;
 PD6,PD6&lt;br /&gt;
 PD7,PD7&lt;br /&gt;
 PD8,PD8&lt;br /&gt;
 PD9,PD9&lt;br /&gt;
 PD10,PD10&lt;br /&gt;
 PD11,PD11&lt;br /&gt;
 PD12,PD12&lt;br /&gt;
 PD13,PD13&lt;br /&gt;
 PD14,PD14&lt;br /&gt;
 PD15,PD15&lt;br /&gt;
 PE0,PE0&lt;br /&gt;
 PE1,PE1&lt;br /&gt;
 PE2,PE2&lt;br /&gt;
 PE3,PE3&lt;br /&gt;
 PE4,PE4&lt;br /&gt;
 PE5,PE5&lt;br /&gt;
 PE6,PE6&lt;br /&gt;
 PE7,PE7&lt;br /&gt;
 PE8,PE8&lt;br /&gt;
 PE9,PE9&lt;br /&gt;
 PE10,PE10&lt;br /&gt;
 PE11,PE11&lt;br /&gt;
 PE12,PE12&lt;br /&gt;
 PE13,PE13&lt;br /&gt;
 PE14,PE14&lt;br /&gt;
 PE15,PE15&lt;br /&gt;
 LED,PE0&lt;br /&gt;
 SW,PD15&lt;br /&gt;
&lt;br /&gt;
== Compilare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per istruzioni di compilazione dettagliate si faccia riferimento al file:&lt;br /&gt;
&lt;br /&gt;
 micropython/ports/stm32/README.md&lt;br /&gt;
&lt;br /&gt;
In breve, di seguito i comandi necessari per compilare MicroPython usando la configurazione esposta precedentemente.&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/&lt;br /&gt;
 $ make -C mpy-cross&lt;br /&gt;
 $ cd micropython/ports/stm32/&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE&lt;br /&gt;
&lt;br /&gt;
== Installare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware sulla scheda impostarla in modalità &amp;quot;DFU&amp;quot; prima di accenderla. Poi collegarla al computer via USB. In un sistema GNU/Linux sarà possibile verificare che la scheda sia effettivamente in modalità DFU con il comando:&lt;br /&gt;
&lt;br /&gt;
 $ lsusb&lt;br /&gt;
 Bus 002 Device 005: ID 0483:df11 STMicroelectronics STM Device in DFU Mode&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware:&lt;br /&gt;
&lt;br /&gt;
 # apt install python3-usb&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE deploy&lt;br /&gt;
&lt;br /&gt;
Se si dispone di un adattatore ST-LINK esterno (la scheda di per sé ne è sprovvista) questo si può utilizzare per la programmazione del firmware in alternativa alla modalità DFU. La corretta configurazione dei pin è stata già mostrata nella sezione dedicata all'hardware di questa pagina. Per quanto riguarda il versante software si faccia riferimento al file &amp;quot;README.md&amp;quot; di cui sopra.&lt;br /&gt;
&lt;br /&gt;
== Eseguire codice ==&lt;br /&gt;
&lt;br /&gt;
Quando la scheda viene avviata in modalità &amp;quot;flash&amp;quot; (si veda la sezione &amp;quot;Boot pin&amp;quot;) è possibile accedere al REPL di MicroPython attraverso una porta seriale fornita direttamente dalla porta USB.&lt;br /&gt;
&lt;br /&gt;
 $ screen /dev/ttyACM0 115200&lt;br /&gt;
 MicroPython v1.10-194-g41e7ad647 on 2019-03-11; F4DIYMORE with STM32F407&lt;br /&gt;
 Type &amp;quot;help()&amp;quot; for more information.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dalla stessa porta USB e con la scheda avviata con la stessa modalità è anche possibile accedere alla memoria flash del microcontrollore, dentro la quale si possono copiare i file &amp;quot;.py&amp;quot; da far eseguire a MicroPython.&lt;br /&gt;
&lt;br /&gt;
 $ pmount /dev/sdb1&lt;br /&gt;
 $ ls /media/sdb1/&lt;br /&gt;
 README.txt  boot.py  main.py  pybcdc.inf&lt;br /&gt;
&lt;br /&gt;
= Frosted =&lt;br /&gt;
&lt;br /&gt;
[https://github.com/insane-adding-machines/frosted Frosted] è un sistema opertivo libero e conforme a POSIX per sistemi integrati. Può risultare interessante a chi preferirebbe programmare questa board usando C (o addirittura sh) pittosto che Micropython. La conformità a POSIX rende il porting di applicazioni sulla piattaforma relativamente semplice. Frosted di suo fornisce anche MicroPython, il supporto però è limitato.&lt;br /&gt;
La scheda &amp;quot;STM32-407 DIY-MORE&amp;quot; è supportata da Frosted e maggiori informazioni possono essere trovate nel relativo [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 commit] sul github del progetto.&lt;br /&gt;
&lt;br /&gt;
= Note finali =&lt;br /&gt;
Si tenga presente che questa scheda è poco documentata e supportata. È molto economica rispetto alle alternative, ma non è detto che le procedure descritte in questa pagina funzioneranno correttamente nel presente o nel futuro. Tutto ciò che è stato scritto è frutto di sperimentazioni ed &amp;quot;hackeraggi&amp;quot; da considerare assolutamente inaffidabili.&lt;br /&gt;
&lt;br /&gt;
= Link e risorse utili = &lt;br /&gt;
* [http://dubstylee.net/v/diy-more-stm32f407vgt6/ DIY More STM32F407VGT6 ボード] Pagina di un blog in giapponese che contiene alcune informazioni utili sulla scheda tra cui lo schema elettrico.&lt;br /&gt;
* [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 Added support for STM32-F407 DIYMORE from diymore.cc] Commit di supporto della scheda su Frosted.&lt;br /&gt;
* [https://www.carminenoviello.com/it/2015/08/11/compilare-micropython-una-scheda-stm32nucleo-f4/ Compilare micropython per una scheda STM32Nucleo-F4] Guida sulla compilazione di MicroPython in italiano.&lt;/div&gt;</summary>
		<author><name>Aggaz</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6850</id>
		<title>STM32-407 DIY-MORE</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6850"/>
		<updated>2019-03-12T13:31:18Z</updated>

		<summary type="html">&lt;p&gt;Aggaz: /* Installare MicroPython */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduzione =&lt;br /&gt;
&lt;br /&gt;
La scheda “STM32-407” prodotta da “DIY MORE” è una &amp;quot;development board&amp;quot; oscura ed economica. Si può ordinare dalla Cina per pochi euro ma sono poche le informazioni che si possono trovare in rete. È una scheda piuttosto minimale e può essere considerata come una &amp;quot;breakout board&amp;quot; del microcontrollore STM32F407. Questo microcontrollore è abbastanza comune ed usato anche in altre schede, di conseguenza è possibile utilizzare la &amp;quot;STM32-407 DIY-MORE&amp;quot; con [https://github.com/micropython/micropython/ Micropython]. Inoltre questa stessa scheda è anche supportata da [https://github.com/insane-adding-machines/frosted Frosted].&lt;br /&gt;
&lt;br /&gt;
= La scheda =&lt;br /&gt;
&lt;br /&gt;
Oltre al microcontrollore stesso la scheda fornisce:&lt;br /&gt;
* una porta USB micro B;&lt;br /&gt;
* 2 pulsanti (uno di reset ed uno programmabile);&lt;br /&gt;
* 2 led (uno di accensione ed uno programmabile);&lt;br /&gt;
* 92 pin (inclusi quelli di alimentazione);&lt;br /&gt;
* svariati componenti accessori necessari al corretto funzionamento del microcontrollore. &lt;br /&gt;
&lt;br /&gt;
== Pulsanti ==&lt;br /&gt;
&lt;br /&gt;
Il pulsante vicino la porta USB ha una funzione di &amp;quot;reset&amp;quot;. L'altro pulsante invece è programmabile ed è configurato in &amp;quot;pull-up&amp;quot; al pin PD15 con una resistenza da 10kΩ.&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
&lt;br /&gt;
LED1, situato vicino la porta USB, è utilizzato per segnalare lo stato di alimentazione. LED2 è programmabile ed è collegato al pin PE0 da una resistenza da 1kΩ. Il pin abbassato equivale ad un LED acceso.&lt;br /&gt;
&lt;br /&gt;
== Boot pin ==&lt;br /&gt;
&lt;br /&gt;
La scheda è provvista di due &amp;quot;boot pin&amp;quot; la cui configurazione all'accensione determina lo stato del microcontrollore. I pin si trovano in un angolo sul lato opposto rispetto alla porta USB e sono denominati &amp;quot;BOOT0&amp;quot; e &amp;quot;BOOT1&amp;quot;. Entrambi sono in una configurazione normalmente &amp;quot;up&amp;quot; e sono adiacenti a dei pin collegati a massa. Pertanto si può facilmente controllare lo stato di questi pin per mezzo di un &amp;quot;jumper&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Come mostrato nella tabella in basso, sono tre le configurazioni utili che si possono ottenere dalle combinazioni degli stati dei due &amp;quot;boot pin&amp;quot;:&lt;br /&gt;
* In modalità &amp;quot;Flash&amp;quot;, assumendo che MicroPython sia correttamente installato, è possibile montare la memoria flash del microcontrollore via USB per copiare i file degli script da eseguire. Allo stesso tempo è anche possibile accedere alla &amp;quot;REPL&amp;quot; di MicroPython attraverso una porta seriale fornita dalla stessa porta USB (la quale utilizza i pin PA11 e PA12);&lt;br /&gt;
* In modalità DFU è possibile programmare il microcontrollore e caricare il firmware. Questa è la modalità che viene generalmente usata per caricare MicroPython nel microcontrollore;&lt;br /&gt;
* La modalità SRAM non l'ho mai usata ed onestamente non so a cosa serve.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin BOOT0''' || '''Pin BOOT1''' || '''Modalità'''&lt;br /&gt;
|-&lt;br /&gt;
|   Giù || Su/Giù || Flash&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Giù || DFU&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Su || SRAM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ST-LINK ==&lt;br /&gt;
&lt;br /&gt;
La scheda di per sé è priva di un dispositivo ST-LINK per la programmazione, ma un dispositivo di questo tipo può essere collegato utilizzando il seguente schema.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin della scheda''' || '''Pin ST-LINK'''&lt;br /&gt;
|-&lt;br /&gt;
|   PA13 || SWDIO&lt;br /&gt;
|-&lt;br /&gt;
|   PA14 || SWCLK&lt;br /&gt;
|-&lt;br /&gt;
|   3v3 || 3v3&lt;br /&gt;
|-&lt;br /&gt;
|   GND || GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pin degni di nota ==&lt;br /&gt;
&lt;br /&gt;
I pin della scheda corrispondono ai pin del microcontrollore STM32F407. Si può consultare il datasheet del componente per conoscere le funzionalità speciali dei vari pin (UART, I2C, SPI, eccetera). Ad ogni modo bisogna tenere in considerazione alcune peculiarità dell'implementazione della scheda:&lt;br /&gt;
&lt;br /&gt;
* PD15 è collegato in &amp;quot;pull-up&amp;quot; al pulsante.&lt;br /&gt;
&lt;br /&gt;
* PE0 è collegato al LED2 (pin abbassato equivale a LED acceso).&lt;br /&gt;
&lt;br /&gt;
* PA11 e PA12 sono usati dalla porta USB. Sebbene corrispondano anche ai pin CTS ed RTS della UART1, è meglio non usarli se si vuole usare la porta USB.&lt;br /&gt;
&lt;br /&gt;
* Altre informazioni sui pin possono essere lette nel file &amp;quot;mpconfigboard.h&amp;quot; riportato più in basso.&lt;br /&gt;
&lt;br /&gt;
= Micropython =&lt;br /&gt;
&lt;br /&gt;
Per utilizzare correttamente questa scheda è necessario compilare manualmente il codice di MicroPython. Inoltre è necessario impostare delle configurazioni ad-hoc per poter gestire in maniera corretta la mappatura dei &amp;quot;pin&amp;quot;. Di seguito sono esposti i passaggi per compiere questa operazione su un sistema GNU/Linux. Si assume che il sistema del lettore sia  già configurato per l'utilizzo di &amp;quot;git&amp;quot; e la &amp;quot;cross-compilazione&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Ottenere MicroPython  ==&lt;br /&gt;
&lt;br /&gt;
 $ git clone &amp;quot;https://github.com/micropython/micropython.git&amp;quot;&lt;br /&gt;
 $ git submodule update --init&lt;br /&gt;
&lt;br /&gt;
== Aggiungere la configurazione per la scheda  ==&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/ports/stm32/boards/&lt;br /&gt;
 $ cp -R STM32F4DISC STM32F4DIYMORE&lt;br /&gt;
 $ cd STM32F4DIYMORE&lt;br /&gt;
 $ rm staccel.py&lt;br /&gt;
&lt;br /&gt;
Sostituire il contenuto del file &amp;quot;mpconfigboard.h&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 #define MICROPY_HW_BOARD_NAME       &amp;quot;F4DIYMORE&amp;quot;&lt;br /&gt;
 #define MICROPY_HW_MCU_NAME         &amp;quot;STM32F407&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_HAS_SWITCH       (1)&lt;br /&gt;
 #define MICROPY_HW_HAS_FLASH        (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RNG       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RTC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_DAC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_USB       (1)&lt;br /&gt;
 &lt;br /&gt;
 // HSE is 8MHz&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLM (8)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLN (336)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV2)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLQ (7)&lt;br /&gt;
 &lt;br /&gt;
 // UART config&lt;br /&gt;
 //PA11 and PA12 pins are used by USB&lt;br /&gt;
 //#define MICROPY_HW_UART1_TX     (pin_A9)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RX     (pin_A10)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RTS    (pin_A12)&lt;br /&gt;
 //#define MICROPY_HW_UART1_CTS    (pin_A11)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART2_TX     (pin_A2)&lt;br /&gt;
 #define MICROPY_HW_UART2_RX     (pin_A3)&lt;br /&gt;
 #define MICROPY_HW_UART2_RTS    (pin_A1)&lt;br /&gt;
 #define MICROPY_HW_UART2_CTS    (pin_A0)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART3_TX     (pin_D8)&lt;br /&gt;
 #define MICROPY_HW_UART3_RX     (pin_D9)&lt;br /&gt;
 #define MICROPY_HW_UART3_RTS    (pin_D12)&lt;br /&gt;
 #define MICROPY_HW_UART3_CTS    (pin_D11)&lt;br /&gt;
 &lt;br /&gt;
 //PA0 and PA1 pins are used by UART2&lt;br /&gt;
 //#define MICROPY_HW_UART4_TX     (pin_A0)&lt;br /&gt;
 //#define MICROPY_HW_UART4_RX     (pin_A1)&lt;br /&gt;
 &lt;br /&gt;
 //I do not really need it&lt;br /&gt;
 //#define MICROPY_HW_UART6_TX     (pin_C6)&lt;br /&gt;
 //#define MICROPY_HW_UART6_RX     (pin_C7)&lt;br /&gt;
 &lt;br /&gt;
 // I2C busses&lt;br /&gt;
 #define MICROPY_HW_I2C1_SCL (pin_B6)&lt;br /&gt;
 #define MICROPY_HW_I2C1_SDA (pin_B7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_I2C2_SCL (pin_B10)&lt;br /&gt;
 #define MICROPY_HW_I2C2_SDA (pin_B11)&lt;br /&gt;
 &lt;br /&gt;
 // SPI busses&lt;br /&gt;
 #define MICROPY_HW_SPI1_NSS  (pin_A4)&lt;br /&gt;
 #define MICROPY_HW_SPI1_SCK  (pin_A5)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MISO (pin_A6)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MOSI (pin_A7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_SPI2_NSS  (pin_B12)&lt;br /&gt;
 #define MICROPY_HW_SPI2_SCK  (pin_B13)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MISO (pin_B14)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MOSI (pin_B15)&lt;br /&gt;
 &lt;br /&gt;
 // CAN busses&lt;br /&gt;
 //#define MICROPY_HW_CAN1_TX (pin_B9)&lt;br /&gt;
 //#define MICROPY_HW_CAN1_RX (pin_B8)&lt;br /&gt;
 &lt;br /&gt;
 //PB12 and PB13 pins are used by SPI2&lt;br /&gt;
 //#define MICROPY_HW_CAN2_TX (pin_B13)&lt;br /&gt;
 //#define MICROPY_HW_CAN2_RX (pin_B12)&lt;br /&gt;
 &lt;br /&gt;
 // USRSW is pulled up. Pressing the button makes the input go low.&lt;br /&gt;
 #define MICROPY_HW_USRSW_PIN        (pin_D15)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PULL       (GPIO_PULLUP)&lt;br /&gt;
 #define MICROPY_HW_USRSW_EXTI_MODE  (GPIO_MODE_IT_FALLING)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PRESSED    (0)&lt;br /&gt;
 &lt;br /&gt;
 // LEDs&lt;br /&gt;
 #define MICROPY_HW_LED_INVERTED     (1) // LEDs are on when pin is driven low&lt;br /&gt;
 #define MICROPY_HW_LED1             (pin_E0)&lt;br /&gt;
 #define MICROPY_HW_LED_ON(pin)      (mp_hal_pin_low(pin))&lt;br /&gt;
 #define MICROPY_HW_LED_OFF(pin)     (mp_hal_pin_high(pin))&lt;br /&gt;
 &lt;br /&gt;
 // USB config&lt;br /&gt;
 #define MICROPY_HW_USB_FS              (1)&lt;br /&gt;
 &lt;br /&gt;
 // Show IDLE on UART1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL        PYB_UART_1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL_BAUD   115200&lt;br /&gt;
 &lt;br /&gt;
Sostituire il contenuto del file &amp;quot;pins.csv&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 PA0,PA0&lt;br /&gt;
 PA1,PA1&lt;br /&gt;
 PA2,PA2&lt;br /&gt;
 PA3,PA3&lt;br /&gt;
 PA4,PA4&lt;br /&gt;
 PA5,PA5&lt;br /&gt;
 PA6,PA6&lt;br /&gt;
 PA7,PA7&lt;br /&gt;
 PA8,PA8&lt;br /&gt;
 PA9,PA9&lt;br /&gt;
 PA10,PA10&lt;br /&gt;
 PA11,PA11&lt;br /&gt;
 PA12,PA12&lt;br /&gt;
 PA13,PA13&lt;br /&gt;
 PA14,PA14&lt;br /&gt;
 PA15,PA15&lt;br /&gt;
 PB0,PB0&lt;br /&gt;
 PB1,PB1&lt;br /&gt;
 PB2,PB2&lt;br /&gt;
 PB3,PB3&lt;br /&gt;
 PB4,PB4&lt;br /&gt;
 PB5,PB5&lt;br /&gt;
 PB6,PB6&lt;br /&gt;
 PB7,PB7&lt;br /&gt;
 PB8,PB8&lt;br /&gt;
 PB9,PB9&lt;br /&gt;
 PB10,PB10&lt;br /&gt;
 PB11,PB11&lt;br /&gt;
 PB12,PB12&lt;br /&gt;
 PB13,PB13&lt;br /&gt;
 PB14,PB14&lt;br /&gt;
 PB15,PB15&lt;br /&gt;
 PC0,PC0&lt;br /&gt;
 PC1,PC1&lt;br /&gt;
 PC2,PC2&lt;br /&gt;
 PC3,PC3&lt;br /&gt;
 PC4,PC4&lt;br /&gt;
 PC5,PC5&lt;br /&gt;
 PC6,PC6&lt;br /&gt;
 PC7,PC7&lt;br /&gt;
 PC8,PC8&lt;br /&gt;
 PC9,PC9&lt;br /&gt;
 PC10,PC10&lt;br /&gt;
 PC11,PC11&lt;br /&gt;
 PC12,PC12&lt;br /&gt;
 PC13,PC13&lt;br /&gt;
 PD0,PD0&lt;br /&gt;
 PD1,PD1&lt;br /&gt;
 PD2,PD2&lt;br /&gt;
 PD3,PD3&lt;br /&gt;
 PD4,PD4&lt;br /&gt;
 PD5,PD5&lt;br /&gt;
 PD6,PD6&lt;br /&gt;
 PD7,PD7&lt;br /&gt;
 PD8,PD8&lt;br /&gt;
 PD9,PD9&lt;br /&gt;
 PD10,PD10&lt;br /&gt;
 PD11,PD11&lt;br /&gt;
 PD12,PD12&lt;br /&gt;
 PD13,PD13&lt;br /&gt;
 PD14,PD14&lt;br /&gt;
 PD15,PD15&lt;br /&gt;
 PE0,PE0&lt;br /&gt;
 PE1,PE1&lt;br /&gt;
 PE2,PE2&lt;br /&gt;
 PE3,PE3&lt;br /&gt;
 PE4,PE4&lt;br /&gt;
 PE5,PE5&lt;br /&gt;
 PE6,PE6&lt;br /&gt;
 PE7,PE7&lt;br /&gt;
 PE8,PE8&lt;br /&gt;
 PE9,PE9&lt;br /&gt;
 PE10,PE10&lt;br /&gt;
 PE11,PE11&lt;br /&gt;
 PE12,PE12&lt;br /&gt;
 PE13,PE13&lt;br /&gt;
 PE14,PE14&lt;br /&gt;
 PE15,PE15&lt;br /&gt;
 LED,PE0&lt;br /&gt;
 SW,PD15&lt;br /&gt;
&lt;br /&gt;
== Compilare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per istruzioni di compilazione dettagliate si faccia riferimento al file:&lt;br /&gt;
&lt;br /&gt;
 micropython/ports/stm32/README.md&lt;br /&gt;
&lt;br /&gt;
In breve, di seguito i comandi necessari per compilare MicroPython usando la configurazione esposta precedentemente.&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/&lt;br /&gt;
 $ make -C mpy-cross&lt;br /&gt;
 $ cd micropython/ports/stm32/&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE&lt;br /&gt;
&lt;br /&gt;
== Installare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware sulla scheda impostarla in modalità &amp;quot;DFU&amp;quot; prima di accenderla. Poi collegarla al computer via USB. In un sistema GNU/Linux sarà possibile verificare che la scheda sia effettivamente in modalità DFU con il comando:&lt;br /&gt;
&lt;br /&gt;
 $ lsusb&lt;br /&gt;
 Bus 002 Device 005: ID 0483:df11 STMicroelectronics STM Device in DFU Mode&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware:&lt;br /&gt;
&lt;br /&gt;
 # apt install python3-usb&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE deploy&lt;br /&gt;
&lt;br /&gt;
Se si dispone di un adattatore ST-LINK esterno (la scheda di per sé ne è sprovvista) questo si può utilizzare per la programmazione del firmware in alternativa alla modalità DFU. La corretta configurazione dei pin è stata già mostrata nella sezione dedicata all'hardware di questa pagina. Per quanto riguarda il versante software si faccia riferimento al file &amp;quot;README.md&amp;quot; di cui sopra.&lt;br /&gt;
&lt;br /&gt;
== Eseguire codice ==&lt;br /&gt;
&lt;br /&gt;
Quando la scheda viene avviata in modalità &amp;quot;flash&amp;quot; (si veda la sezione &amp;quot;Boot pin&amp;quot;) è possibile accedere al REPL di MicroPython attraverso una porta seriale fornita direttamente dalla porta USB.&lt;br /&gt;
&lt;br /&gt;
 $ screen /dev/ttyACM0 115200&lt;br /&gt;
 MicroPython v1.10-194-g41e7ad647 on 2019-03-11; F4DIYMORE with STM32F407&lt;br /&gt;
 Type &amp;quot;help()&amp;quot; for more information.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dalla stessa porta USB e con la scheda avviata con la stessa modalità è anche possibile accedere alla memoria flash del microcontrollore, dentro la quale si possono copiare i file &amp;quot;.py&amp;quot; da far eseguire a MicroPython.&lt;br /&gt;
&lt;br /&gt;
 $ pmount /dev/sdb1&lt;br /&gt;
 $ ls /media/sdb1/&lt;br /&gt;
 README.txt  boot.py  main.py  pybcdc.inf&lt;br /&gt;
&lt;br /&gt;
= Frosted =&lt;br /&gt;
&lt;br /&gt;
[https://github.com/insane-adding-machines/frosted Frosted] è un sistema opertivo libero e conforme a POSIX per sistemi integrati. Può risultare interessante a chi preferirebbe programmare questa board usando C pittosto che Micropython. La conformità a POSIX rende il porting di applicazioni sulla piattaforma relativamente semplice. Frosted di suo fornisce anche MicroPython, il supporto però è limitato.&lt;br /&gt;
La scheda &amp;quot;STM32-407 DIY-MORE&amp;quot; è supportata da Frosted e maggiori informazioni possono essere trovate nel relativo [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 commit] sul github del progetto.&lt;br /&gt;
&lt;br /&gt;
= Note finali =&lt;br /&gt;
Si tenga presente che questa scheda è poco documentata e supportata. È molto economica rispetto alle alternative, ma non è detto che le procedure descritte in questa pagina funzioneranno correttamente nel presente o nel futuro. Tutto ciò che è stato scritto è frutto di sperimentazioni ed &amp;quot;hackeraggi&amp;quot; da considerare assolutamente inaffidabili.&lt;br /&gt;
&lt;br /&gt;
= Link e risorse utili = &lt;br /&gt;
* [http://dubstylee.net/v/diy-more-stm32f407vgt6/ DIY More STM32F407VGT6 ボード] Pagina di un blog in giapponese che contiene alcune informazioni utili sulla scheda tra cui lo schema elettrico.&lt;br /&gt;
* [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 Added support for STM32-F407 DIYMORE from diymore.cc] Commit di supporto della scheda su Frosted.&lt;br /&gt;
* [https://www.carminenoviello.com/it/2015/08/11/compilare-micropython-una-scheda-stm32nucleo-f4/ Compilare micropython per una scheda STM32Nucleo-F4] Guida sulla compilazione di MicroPython in italiano.&lt;/div&gt;</summary>
		<author><name>Aggaz</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6849</id>
		<title>STM32-407 DIY-MORE</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6849"/>
		<updated>2019-03-12T13:30:47Z</updated>

		<summary type="html">&lt;p&gt;Aggaz: /* Pin degni di nota */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduzione =&lt;br /&gt;
&lt;br /&gt;
La scheda “STM32-407” prodotta da “DIY MORE” è una &amp;quot;development board&amp;quot; oscura ed economica. Si può ordinare dalla Cina per pochi euro ma sono poche le informazioni che si possono trovare in rete. È una scheda piuttosto minimale e può essere considerata come una &amp;quot;breakout board&amp;quot; del microcontrollore STM32F407. Questo microcontrollore è abbastanza comune ed usato anche in altre schede, di conseguenza è possibile utilizzare la &amp;quot;STM32-407 DIY-MORE&amp;quot; con [https://github.com/micropython/micropython/ Micropython]. Inoltre questa stessa scheda è anche supportata da [https://github.com/insane-adding-machines/frosted Frosted].&lt;br /&gt;
&lt;br /&gt;
= La scheda =&lt;br /&gt;
&lt;br /&gt;
Oltre al microcontrollore stesso la scheda fornisce:&lt;br /&gt;
* una porta USB micro B;&lt;br /&gt;
* 2 pulsanti (uno di reset ed uno programmabile);&lt;br /&gt;
* 2 led (uno di accensione ed uno programmabile);&lt;br /&gt;
* 92 pin (inclusi quelli di alimentazione);&lt;br /&gt;
* svariati componenti accessori necessari al corretto funzionamento del microcontrollore. &lt;br /&gt;
&lt;br /&gt;
== Pulsanti ==&lt;br /&gt;
&lt;br /&gt;
Il pulsante vicino la porta USB ha una funzione di &amp;quot;reset&amp;quot;. L'altro pulsante invece è programmabile ed è configurato in &amp;quot;pull-up&amp;quot; al pin PD15 con una resistenza da 10kΩ.&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
&lt;br /&gt;
LED1, situato vicino la porta USB, è utilizzato per segnalare lo stato di alimentazione. LED2 è programmabile ed è collegato al pin PE0 da una resistenza da 1kΩ. Il pin abbassato equivale ad un LED acceso.&lt;br /&gt;
&lt;br /&gt;
== Boot pin ==&lt;br /&gt;
&lt;br /&gt;
La scheda è provvista di due &amp;quot;boot pin&amp;quot; la cui configurazione all'accensione determina lo stato del microcontrollore. I pin si trovano in un angolo sul lato opposto rispetto alla porta USB e sono denominati &amp;quot;BOOT0&amp;quot; e &amp;quot;BOOT1&amp;quot;. Entrambi sono in una configurazione normalmente &amp;quot;up&amp;quot; e sono adiacenti a dei pin collegati a massa. Pertanto si può facilmente controllare lo stato di questi pin per mezzo di un &amp;quot;jumper&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Come mostrato nella tabella in basso, sono tre le configurazioni utili che si possono ottenere dalle combinazioni degli stati dei due &amp;quot;boot pin&amp;quot;:&lt;br /&gt;
* In modalità &amp;quot;Flash&amp;quot;, assumendo che MicroPython sia correttamente installato, è possibile montare la memoria flash del microcontrollore via USB per copiare i file degli script da eseguire. Allo stesso tempo è anche possibile accedere alla &amp;quot;REPL&amp;quot; di MicroPython attraverso una porta seriale fornita dalla stessa porta USB (la quale utilizza i pin PA11 e PA12);&lt;br /&gt;
* In modalità DFU è possibile programmare il microcontrollore e caricare il firmware. Questa è la modalità che viene generalmente usata per caricare MicroPython nel microcontrollore;&lt;br /&gt;
* La modalità SRAM non l'ho mai usata ed onestamente non so a cosa serve.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin BOOT0''' || '''Pin BOOT1''' || '''Modalità'''&lt;br /&gt;
|-&lt;br /&gt;
|   Giù || Su/Giù || Flash&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Giù || DFU&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Su || SRAM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ST-LINK ==&lt;br /&gt;
&lt;br /&gt;
La scheda di per sé è priva di un dispositivo ST-LINK per la programmazione, ma un dispositivo di questo tipo può essere collegato utilizzando il seguente schema.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin della scheda''' || '''Pin ST-LINK'''&lt;br /&gt;
|-&lt;br /&gt;
|   PA13 || SWDIO&lt;br /&gt;
|-&lt;br /&gt;
|   PA14 || SWCLK&lt;br /&gt;
|-&lt;br /&gt;
|   3v3 || 3v3&lt;br /&gt;
|-&lt;br /&gt;
|   GND || GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pin degni di nota ==&lt;br /&gt;
&lt;br /&gt;
I pin della scheda corrispondono ai pin del microcontrollore STM32F407. Si può consultare il datasheet del componente per conoscere le funzionalità speciali dei vari pin (UART, I2C, SPI, eccetera). Ad ogni modo bisogna tenere in considerazione alcune peculiarità dell'implementazione della scheda:&lt;br /&gt;
&lt;br /&gt;
* PD15 è collegato in &amp;quot;pull-up&amp;quot; al pulsante.&lt;br /&gt;
&lt;br /&gt;
* PE0 è collegato al LED2 (pin abbassato equivale a LED acceso).&lt;br /&gt;
&lt;br /&gt;
* PA11 e PA12 sono usati dalla porta USB. Sebbene corrispondano anche ai pin CTS ed RTS della UART1, è meglio non usarli se si vuole usare la porta USB.&lt;br /&gt;
&lt;br /&gt;
* Altre informazioni sui pin possono essere lette nel file &amp;quot;mpconfigboard.h&amp;quot; riportato più in basso.&lt;br /&gt;
&lt;br /&gt;
= Micropython =&lt;br /&gt;
&lt;br /&gt;
Per utilizzare correttamente questa scheda è necessario compilare manualmente il codice di MicroPython. Inoltre è necessario impostare delle configurazioni ad-hoc per poter gestire in maniera corretta la mappatura dei &amp;quot;pin&amp;quot;. Di seguito sono esposti i passaggi per compiere questa operazione su un sistema GNU/Linux. Si assume che il sistema del lettore sia  già configurato per l'utilizzo di &amp;quot;git&amp;quot; e la &amp;quot;cross-compilazione&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Ottenere MicroPython  ==&lt;br /&gt;
&lt;br /&gt;
 $ git clone &amp;quot;https://github.com/micropython/micropython.git&amp;quot;&lt;br /&gt;
 $ git submodule update --init&lt;br /&gt;
&lt;br /&gt;
== Aggiungere la configurazione per la scheda  ==&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/ports/stm32/boards/&lt;br /&gt;
 $ cp -R STM32F4DISC STM32F4DIYMORE&lt;br /&gt;
 $ cd STM32F4DIYMORE&lt;br /&gt;
 $ rm staccel.py&lt;br /&gt;
&lt;br /&gt;
Sostituire il contenuto del file &amp;quot;mpconfigboard.h&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 #define MICROPY_HW_BOARD_NAME       &amp;quot;F4DIYMORE&amp;quot;&lt;br /&gt;
 #define MICROPY_HW_MCU_NAME         &amp;quot;STM32F407&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_HAS_SWITCH       (1)&lt;br /&gt;
 #define MICROPY_HW_HAS_FLASH        (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RNG       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RTC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_DAC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_USB       (1)&lt;br /&gt;
 &lt;br /&gt;
 // HSE is 8MHz&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLM (8)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLN (336)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV2)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLQ (7)&lt;br /&gt;
 &lt;br /&gt;
 // UART config&lt;br /&gt;
 //PA11 and PA12 pins are used by USB&lt;br /&gt;
 //#define MICROPY_HW_UART1_TX     (pin_A9)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RX     (pin_A10)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RTS    (pin_A12)&lt;br /&gt;
 //#define MICROPY_HW_UART1_CTS    (pin_A11)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART2_TX     (pin_A2)&lt;br /&gt;
 #define MICROPY_HW_UART2_RX     (pin_A3)&lt;br /&gt;
 #define MICROPY_HW_UART2_RTS    (pin_A1)&lt;br /&gt;
 #define MICROPY_HW_UART2_CTS    (pin_A0)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART3_TX     (pin_D8)&lt;br /&gt;
 #define MICROPY_HW_UART3_RX     (pin_D9)&lt;br /&gt;
 #define MICROPY_HW_UART3_RTS    (pin_D12)&lt;br /&gt;
 #define MICROPY_HW_UART3_CTS    (pin_D11)&lt;br /&gt;
 &lt;br /&gt;
 //PA0 and PA1 pins are used by UART2&lt;br /&gt;
 //#define MICROPY_HW_UART4_TX     (pin_A0)&lt;br /&gt;
 //#define MICROPY_HW_UART4_RX     (pin_A1)&lt;br /&gt;
 &lt;br /&gt;
 //I do not really need it&lt;br /&gt;
 //#define MICROPY_HW_UART6_TX     (pin_C6)&lt;br /&gt;
 //#define MICROPY_HW_UART6_RX     (pin_C7)&lt;br /&gt;
 &lt;br /&gt;
 // I2C busses&lt;br /&gt;
 #define MICROPY_HW_I2C1_SCL (pin_B6)&lt;br /&gt;
 #define MICROPY_HW_I2C1_SDA (pin_B7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_I2C2_SCL (pin_B10)&lt;br /&gt;
 #define MICROPY_HW_I2C2_SDA (pin_B11)&lt;br /&gt;
 &lt;br /&gt;
 // SPI busses&lt;br /&gt;
 #define MICROPY_HW_SPI1_NSS  (pin_A4)&lt;br /&gt;
 #define MICROPY_HW_SPI1_SCK  (pin_A5)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MISO (pin_A6)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MOSI (pin_A7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_SPI2_NSS  (pin_B12)&lt;br /&gt;
 #define MICROPY_HW_SPI2_SCK  (pin_B13)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MISO (pin_B14)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MOSI (pin_B15)&lt;br /&gt;
 &lt;br /&gt;
 // CAN busses&lt;br /&gt;
 //#define MICROPY_HW_CAN1_TX (pin_B9)&lt;br /&gt;
 //#define MICROPY_HW_CAN1_RX (pin_B8)&lt;br /&gt;
 &lt;br /&gt;
 //PB12 and PB13 pins are used by SPI2&lt;br /&gt;
 //#define MICROPY_HW_CAN2_TX (pin_B13)&lt;br /&gt;
 //#define MICROPY_HW_CAN2_RX (pin_B12)&lt;br /&gt;
 &lt;br /&gt;
 // USRSW is pulled up. Pressing the button makes the input go low.&lt;br /&gt;
 #define MICROPY_HW_USRSW_PIN        (pin_D15)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PULL       (GPIO_PULLUP)&lt;br /&gt;
 #define MICROPY_HW_USRSW_EXTI_MODE  (GPIO_MODE_IT_FALLING)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PRESSED    (0)&lt;br /&gt;
 &lt;br /&gt;
 // LEDs&lt;br /&gt;
 #define MICROPY_HW_LED_INVERTED     (1) // LEDs are on when pin is driven low&lt;br /&gt;
 #define MICROPY_HW_LED1             (pin_E0)&lt;br /&gt;
 #define MICROPY_HW_LED_ON(pin)      (mp_hal_pin_low(pin))&lt;br /&gt;
 #define MICROPY_HW_LED_OFF(pin)     (mp_hal_pin_high(pin))&lt;br /&gt;
 &lt;br /&gt;
 // USB config&lt;br /&gt;
 #define MICROPY_HW_USB_FS              (1)&lt;br /&gt;
 &lt;br /&gt;
 // Show IDLE on UART1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL        PYB_UART_1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL_BAUD   115200&lt;br /&gt;
 &lt;br /&gt;
Sostituire il contenuto del file &amp;quot;pins.csv&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 PA0,PA0&lt;br /&gt;
 PA1,PA1&lt;br /&gt;
 PA2,PA2&lt;br /&gt;
 PA3,PA3&lt;br /&gt;
 PA4,PA4&lt;br /&gt;
 PA5,PA5&lt;br /&gt;
 PA6,PA6&lt;br /&gt;
 PA7,PA7&lt;br /&gt;
 PA8,PA8&lt;br /&gt;
 PA9,PA9&lt;br /&gt;
 PA10,PA10&lt;br /&gt;
 PA11,PA11&lt;br /&gt;
 PA12,PA12&lt;br /&gt;
 PA13,PA13&lt;br /&gt;
 PA14,PA14&lt;br /&gt;
 PA15,PA15&lt;br /&gt;
 PB0,PB0&lt;br /&gt;
 PB1,PB1&lt;br /&gt;
 PB2,PB2&lt;br /&gt;
 PB3,PB3&lt;br /&gt;
 PB4,PB4&lt;br /&gt;
 PB5,PB5&lt;br /&gt;
 PB6,PB6&lt;br /&gt;
 PB7,PB7&lt;br /&gt;
 PB8,PB8&lt;br /&gt;
 PB9,PB9&lt;br /&gt;
 PB10,PB10&lt;br /&gt;
 PB11,PB11&lt;br /&gt;
 PB12,PB12&lt;br /&gt;
 PB13,PB13&lt;br /&gt;
 PB14,PB14&lt;br /&gt;
 PB15,PB15&lt;br /&gt;
 PC0,PC0&lt;br /&gt;
 PC1,PC1&lt;br /&gt;
 PC2,PC2&lt;br /&gt;
 PC3,PC3&lt;br /&gt;
 PC4,PC4&lt;br /&gt;
 PC5,PC5&lt;br /&gt;
 PC6,PC6&lt;br /&gt;
 PC7,PC7&lt;br /&gt;
 PC8,PC8&lt;br /&gt;
 PC9,PC9&lt;br /&gt;
 PC10,PC10&lt;br /&gt;
 PC11,PC11&lt;br /&gt;
 PC12,PC12&lt;br /&gt;
 PC13,PC13&lt;br /&gt;
 PD0,PD0&lt;br /&gt;
 PD1,PD1&lt;br /&gt;
 PD2,PD2&lt;br /&gt;
 PD3,PD3&lt;br /&gt;
 PD4,PD4&lt;br /&gt;
 PD5,PD5&lt;br /&gt;
 PD6,PD6&lt;br /&gt;
 PD7,PD7&lt;br /&gt;
 PD8,PD8&lt;br /&gt;
 PD9,PD9&lt;br /&gt;
 PD10,PD10&lt;br /&gt;
 PD11,PD11&lt;br /&gt;
 PD12,PD12&lt;br /&gt;
 PD13,PD13&lt;br /&gt;
 PD14,PD14&lt;br /&gt;
 PD15,PD15&lt;br /&gt;
 PE0,PE0&lt;br /&gt;
 PE1,PE1&lt;br /&gt;
 PE2,PE2&lt;br /&gt;
 PE3,PE3&lt;br /&gt;
 PE4,PE4&lt;br /&gt;
 PE5,PE5&lt;br /&gt;
 PE6,PE6&lt;br /&gt;
 PE7,PE7&lt;br /&gt;
 PE8,PE8&lt;br /&gt;
 PE9,PE9&lt;br /&gt;
 PE10,PE10&lt;br /&gt;
 PE11,PE11&lt;br /&gt;
 PE12,PE12&lt;br /&gt;
 PE13,PE13&lt;br /&gt;
 PE14,PE14&lt;br /&gt;
 PE15,PE15&lt;br /&gt;
 LED,PE0&lt;br /&gt;
 SW,PD15&lt;br /&gt;
&lt;br /&gt;
== Compilare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per istruzioni di compilazione dettagliate si faccia riferimento al file:&lt;br /&gt;
&lt;br /&gt;
 micropython/ports/stm32/README.md&lt;br /&gt;
&lt;br /&gt;
In breve, di seguito i comandi necessari per compilare MicroPython usando la configurazione esposta precedentemente.&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/&lt;br /&gt;
 $ make -C mpy-cross&lt;br /&gt;
 $ cd micropython/ports/stm32/&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE&lt;br /&gt;
&lt;br /&gt;
== Installare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware sulla scheda impostarla in modalità &amp;quot;DFU&amp;quot; prima di accenderla. Poi collearla al computer via USB. In un sistema GNU/Linux sarà possibile verificare che la scheda sia effettivamente in modalità DFU con il comamndo:&lt;br /&gt;
&lt;br /&gt;
 $ lsusb&lt;br /&gt;
 Bus 002 Device 005: ID 0483:df11 STMicroelectronics STM Device in DFU Mode&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware:&lt;br /&gt;
&lt;br /&gt;
 # apt install python3-usb&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE deploy&lt;br /&gt;
&lt;br /&gt;
Se si dispone di un adattatore ST-LINK esterno (la scheda di per sé ne è sprovvista) questo si può utilizzare per la programmazione del firmware in alternativa alla modalità DFU. La corretta configurazione dei pin è stata già mostrata nella sezione dedicata all'hardware di questa pagina. Per quanto riguarda il versante software si faccia riferimento al file &amp;quot;README.md&amp;quot; di cui sopra.&lt;br /&gt;
&lt;br /&gt;
== Eseguire codice ==&lt;br /&gt;
&lt;br /&gt;
Quando la scheda viene avviata in modalità &amp;quot;flash&amp;quot; (si veda la sezione &amp;quot;Boot pin&amp;quot;) è possibile accedere al REPL di MicroPython attraverso una porta seriale fornita direttamente dalla porta USB.&lt;br /&gt;
&lt;br /&gt;
 $ screen /dev/ttyACM0 115200&lt;br /&gt;
 MicroPython v1.10-194-g41e7ad647 on 2019-03-11; F4DIYMORE with STM32F407&lt;br /&gt;
 Type &amp;quot;help()&amp;quot; for more information.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dalla stessa porta USB e con la scheda avviata con la stessa modalità è anche possibile accedere alla memoria flash del microcontrollore, dentro la quale si possono copiare i file &amp;quot;.py&amp;quot; da far eseguire a MicroPython.&lt;br /&gt;
&lt;br /&gt;
 $ pmount /dev/sdb1&lt;br /&gt;
 $ ls /media/sdb1/&lt;br /&gt;
 README.txt  boot.py  main.py  pybcdc.inf&lt;br /&gt;
&lt;br /&gt;
= Frosted =&lt;br /&gt;
&lt;br /&gt;
[https://github.com/insane-adding-machines/frosted Frosted] è un sistema opertivo libero e conforme a POSIX per sistemi integrati. Può risultare interessante a chi preferirebbe programmare questa board usando C pittosto che Micropython. La conformità a POSIX rende il porting di applicazioni sulla piattaforma relativamente semplice. Frosted di suo fornisce anche MicroPython, il supporto però è limitato.&lt;br /&gt;
La scheda &amp;quot;STM32-407 DIY-MORE&amp;quot; è supportata da Frosted e maggiori informazioni possono essere trovate nel relativo [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 commit] sul github del progetto.&lt;br /&gt;
&lt;br /&gt;
= Note finali =&lt;br /&gt;
Si tenga presente che questa scheda è poco documentata e supportata. È molto economica rispetto alle alternative, ma non è detto che le procedure descritte in questa pagina funzioneranno correttamente nel presente o nel futuro. Tutto ciò che è stato scritto è frutto di sperimentazioni ed &amp;quot;hackeraggi&amp;quot; da considerare assolutamente inaffidabili.&lt;br /&gt;
&lt;br /&gt;
= Link e risorse utili = &lt;br /&gt;
* [http://dubstylee.net/v/diy-more-stm32f407vgt6/ DIY More STM32F407VGT6 ボード] Pagina di un blog in giapponese che contiene alcune informazioni utili sulla scheda tra cui lo schema elettrico.&lt;br /&gt;
* [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 Added support for STM32-F407 DIYMORE from diymore.cc] Commit di supporto della scheda su Frosted.&lt;br /&gt;
* [https://www.carminenoviello.com/it/2015/08/11/compilare-micropython-una-scheda-stm32nucleo-f4/ Compilare micropython per una scheda STM32Nucleo-F4] Guida sulla compilazione di MicroPython in italiano.&lt;/div&gt;</summary>
		<author><name>Aggaz</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=Gruppo_%C2%B5Python&amp;diff=6848</id>
		<title>Gruppo µPython</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=Gruppo_%C2%B5Python&amp;diff=6848"/>
		<updated>2019-03-11T21:37:41Z</updated>

		<summary type="html">&lt;p&gt;Aggaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Gruppo&lt;br /&gt;
|nome=MicroPython&lt;br /&gt;
|descrizione=Proviamo il MicroPython https://micropython.org/&lt;br /&gt;
|iscritti=Oloturia&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Il linguaggio più bello del mondo approda anche ai microcontrollori. Ecco qui le nostre esperienze.&lt;br /&gt;
&lt;br /&gt;
=== Micro:Bit ===&lt;br /&gt;
&lt;br /&gt;
Il Micro:Bit è una piattaforma educational che si può programmare anche in MicroPython. https://microbit.org/guide/python/&lt;br /&gt;
&lt;br /&gt;
=== NUCLEO-F401RE ===&lt;br /&gt;
&lt;br /&gt;
Sulla scheda NUCLEO-F401RE della STMicroelectronics è possibile installare MicroPython, con alcuni accorgimenti. Leggi la [[Installare MicroPython su NUCLEO-F401RE|guida]] qui.&lt;br /&gt;
&lt;br /&gt;
=== STM32-407 DIY-MORE ===&lt;br /&gt;
&lt;br /&gt;
Installare MicroPython su una &amp;quot;development board&amp;quot; cinese, oscura ed economica: [http://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE STM32-407 DIY-MORE].&lt;/div&gt;</summary>
		<author><name>Aggaz</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6847</id>
		<title>STM32-407 DIY-MORE</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6847"/>
		<updated>2019-03-11T16:58:33Z</updated>

		<summary type="html">&lt;p&gt;Aggaz: /* Eseguire codice */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduzione =&lt;br /&gt;
&lt;br /&gt;
La scheda “STM32-407” prodotta da “DIY MORE” è una &amp;quot;development board&amp;quot; oscura ed economica. Si può ordinare dalla Cina per pochi euro ma sono poche le informazioni che si possono trovare in rete. È una scheda piuttosto minimale e può essere considerata come una &amp;quot;breakout board&amp;quot; del microcontrollore STM32F407. Questo microcontrollore è abbastanza comune ed usato anche in altre schede, di conseguenza è possibile utilizzare la &amp;quot;STM32-407 DIY-MORE&amp;quot; con [https://github.com/micropython/micropython/ Micropython]. Inoltre questa stessa scheda è anche supportata da [https://github.com/insane-adding-machines/frosted Frosted].&lt;br /&gt;
&lt;br /&gt;
= La scheda =&lt;br /&gt;
&lt;br /&gt;
Oltre al microcontrollore stesso la scheda fornisce:&lt;br /&gt;
* una porta USB micro B;&lt;br /&gt;
* 2 pulsanti (uno di reset ed uno programmabile);&lt;br /&gt;
* 2 led (uno di accensione ed uno programmabile);&lt;br /&gt;
* 92 pin (inclusi quelli di alimentazione);&lt;br /&gt;
* svariati componenti accessori necessari al corretto funzionamento del microcontrollore. &lt;br /&gt;
&lt;br /&gt;
== Pulsanti ==&lt;br /&gt;
&lt;br /&gt;
Il pulsante vicino la porta USB ha una funzione di &amp;quot;reset&amp;quot;. L'altro pulsante invece è programmabile ed è configurato in &amp;quot;pull-up&amp;quot; al pin PD15 con una resistenza da 10kΩ.&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
&lt;br /&gt;
LED1, situato vicino la porta USB, è utilizzato per segnalare lo stato di alimentazione. LED2 è programmabile ed è collegato al pin PE0 da una resistenza da 1kΩ. Il pin abbassato equivale ad un LED acceso.&lt;br /&gt;
&lt;br /&gt;
== Boot pin ==&lt;br /&gt;
&lt;br /&gt;
La scheda è provvista di due &amp;quot;boot pin&amp;quot; la cui configurazione all'accensione determina lo stato del microcontrollore. I pin si trovano in un angolo sul lato opposto rispetto alla porta USB e sono denominati &amp;quot;BOOT0&amp;quot; e &amp;quot;BOOT1&amp;quot;. Entrambi sono in una configurazione normalmente &amp;quot;up&amp;quot; e sono adiacenti a dei pin collegati a massa. Pertanto si può facilmente controllare lo stato di questi pin per mezzo di un &amp;quot;jumper&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Come mostrato nella tabella in basso, sono tre le configurazioni utili che si possono ottenere dalle combinazioni degli stati dei due &amp;quot;boot pin&amp;quot;:&lt;br /&gt;
* In modalità &amp;quot;Flash&amp;quot;, assumendo che MicroPython sia correttamente installato, è possibile montare la memoria flash del microcontrollore via USB per copiare i file degli script da eseguire. Allo stesso tempo è anche possibile accedere alla &amp;quot;REPL&amp;quot; di MicroPython attraverso una porta seriale fornita dalla stessa porta USB (la quale utilizza i pin PA11 e PA12);&lt;br /&gt;
* In modalità DFU è possibile programmare il microcontrollore e caricare il firmware. Questa è la modalità che viene generalmente usata per caricare MicroPython nel microcontrollore;&lt;br /&gt;
* La modalità SRAM non l'ho mai usata ed onestamente non so a cosa serve.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin BOOT0''' || '''Pin BOOT1''' || '''Modalità'''&lt;br /&gt;
|-&lt;br /&gt;
|   Giù || Su/Giù || Flash&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Giù || DFU&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Su || SRAM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ST-LINK ==&lt;br /&gt;
&lt;br /&gt;
La scheda di per sé è priva di un dispositivo ST-LINK per la programmazione, ma un dispositivo di questo tipo può essere collegato utilizzando il seguente schema.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin della scheda''' || '''Pin ST-LINK'''&lt;br /&gt;
|-&lt;br /&gt;
|   PA13 || SWDIO&lt;br /&gt;
|-&lt;br /&gt;
|   PA14 || SWCLK&lt;br /&gt;
|-&lt;br /&gt;
|   3v3 || 3v3&lt;br /&gt;
|-&lt;br /&gt;
|   GND || GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pin degni di nota ==&lt;br /&gt;
&lt;br /&gt;
I pin della scheda corrispondono ai pin del microcontrollore STM32F407. Si può consultare il datasheet del componente per conoscere le funzionalità speciali dei vari pin (UART, I2C, SPI, eccetera). Ad ogni modo bisogna tenere in considerazione alcune peculiarità dell'implementazione della scheda:&lt;br /&gt;
&lt;br /&gt;
* PD15 è collegato in &amp;quot;pull-up&amp;quot; al pulsante.&lt;br /&gt;
&lt;br /&gt;
* PE0 è collegato al LED2 (Pin abbassato equivale a LED acceso).&lt;br /&gt;
&lt;br /&gt;
* PA11 e PA12 sono usati dalla porta USB. Sebbene corrispondano anche ai pin CTS ed RTS della UART1, è meglio non usarli se si vuole usare la porta USB.&lt;br /&gt;
&lt;br /&gt;
* Altre informazioni sui pin possono essere lette nel file &amp;quot;mpconfigboard.h&amp;quot; riportato più in basso.&lt;br /&gt;
&lt;br /&gt;
= Micropython =&lt;br /&gt;
&lt;br /&gt;
Per utilizzare correttamente questa scheda è necessario compilare manualmente il codice di MicroPython. Inoltre è necessario impostare delle configurazioni ad-hoc per poter gestire in maniera corretta la mappatura dei &amp;quot;pin&amp;quot;. Di seguito sono esposti i passaggi per compiere questa operazione su un sistema GNU/Linux. Si assume che il sistema del lettore sia  già configurato per l'utilizzo di &amp;quot;git&amp;quot; e la &amp;quot;cross-compilazione&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Ottenere MicroPython  ==&lt;br /&gt;
&lt;br /&gt;
 $ git clone &amp;quot;https://github.com/micropython/micropython.git&amp;quot;&lt;br /&gt;
 $ git submodule update --init&lt;br /&gt;
&lt;br /&gt;
== Aggiungere la configurazione per la scheda  ==&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/ports/stm32/boards/&lt;br /&gt;
 $ cp -R STM32F4DISC STM32F4DIYMORE&lt;br /&gt;
 $ cd STM32F4DIYMORE&lt;br /&gt;
 $ rm staccel.py&lt;br /&gt;
&lt;br /&gt;
Sostituire il contenuto del file &amp;quot;mpconfigboard.h&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 #define MICROPY_HW_BOARD_NAME       &amp;quot;F4DIYMORE&amp;quot;&lt;br /&gt;
 #define MICROPY_HW_MCU_NAME         &amp;quot;STM32F407&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_HAS_SWITCH       (1)&lt;br /&gt;
 #define MICROPY_HW_HAS_FLASH        (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RNG       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RTC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_DAC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_USB       (1)&lt;br /&gt;
 &lt;br /&gt;
 // HSE is 8MHz&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLM (8)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLN (336)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV2)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLQ (7)&lt;br /&gt;
 &lt;br /&gt;
 // UART config&lt;br /&gt;
 //PA11 and PA12 pins are used by USB&lt;br /&gt;
 //#define MICROPY_HW_UART1_TX     (pin_A9)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RX     (pin_A10)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RTS    (pin_A12)&lt;br /&gt;
 //#define MICROPY_HW_UART1_CTS    (pin_A11)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART2_TX     (pin_A2)&lt;br /&gt;
 #define MICROPY_HW_UART2_RX     (pin_A3)&lt;br /&gt;
 #define MICROPY_HW_UART2_RTS    (pin_A1)&lt;br /&gt;
 #define MICROPY_HW_UART2_CTS    (pin_A0)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART3_TX     (pin_D8)&lt;br /&gt;
 #define MICROPY_HW_UART3_RX     (pin_D9)&lt;br /&gt;
 #define MICROPY_HW_UART3_RTS    (pin_D12)&lt;br /&gt;
 #define MICROPY_HW_UART3_CTS    (pin_D11)&lt;br /&gt;
 &lt;br /&gt;
 //PA0 and PA1 pins are used by UART2&lt;br /&gt;
 //#define MICROPY_HW_UART4_TX     (pin_A0)&lt;br /&gt;
 //#define MICROPY_HW_UART4_RX     (pin_A1)&lt;br /&gt;
 &lt;br /&gt;
 //I do not really need it&lt;br /&gt;
 //#define MICROPY_HW_UART6_TX     (pin_C6)&lt;br /&gt;
 //#define MICROPY_HW_UART6_RX     (pin_C7)&lt;br /&gt;
 &lt;br /&gt;
 // I2C busses&lt;br /&gt;
 #define MICROPY_HW_I2C1_SCL (pin_B6)&lt;br /&gt;
 #define MICROPY_HW_I2C1_SDA (pin_B7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_I2C2_SCL (pin_B10)&lt;br /&gt;
 #define MICROPY_HW_I2C2_SDA (pin_B11)&lt;br /&gt;
 &lt;br /&gt;
 // SPI busses&lt;br /&gt;
 #define MICROPY_HW_SPI1_NSS  (pin_A4)&lt;br /&gt;
 #define MICROPY_HW_SPI1_SCK  (pin_A5)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MISO (pin_A6)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MOSI (pin_A7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_SPI2_NSS  (pin_B12)&lt;br /&gt;
 #define MICROPY_HW_SPI2_SCK  (pin_B13)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MISO (pin_B14)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MOSI (pin_B15)&lt;br /&gt;
 &lt;br /&gt;
 // CAN busses&lt;br /&gt;
 //#define MICROPY_HW_CAN1_TX (pin_B9)&lt;br /&gt;
 //#define MICROPY_HW_CAN1_RX (pin_B8)&lt;br /&gt;
 &lt;br /&gt;
 //PB12 and PB13 pins are used by SPI2&lt;br /&gt;
 //#define MICROPY_HW_CAN2_TX (pin_B13)&lt;br /&gt;
 //#define MICROPY_HW_CAN2_RX (pin_B12)&lt;br /&gt;
 &lt;br /&gt;
 // USRSW is pulled up. Pressing the button makes the input go low.&lt;br /&gt;
 #define MICROPY_HW_USRSW_PIN        (pin_D15)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PULL       (GPIO_PULLUP)&lt;br /&gt;
 #define MICROPY_HW_USRSW_EXTI_MODE  (GPIO_MODE_IT_FALLING)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PRESSED    (0)&lt;br /&gt;
 &lt;br /&gt;
 // LEDs&lt;br /&gt;
 #define MICROPY_HW_LED_INVERTED     (1) // LEDs are on when pin is driven low&lt;br /&gt;
 #define MICROPY_HW_LED1             (pin_E0)&lt;br /&gt;
 #define MICROPY_HW_LED_ON(pin)      (mp_hal_pin_low(pin))&lt;br /&gt;
 #define MICROPY_HW_LED_OFF(pin)     (mp_hal_pin_high(pin))&lt;br /&gt;
 &lt;br /&gt;
 // USB config&lt;br /&gt;
 #define MICROPY_HW_USB_FS              (1)&lt;br /&gt;
 &lt;br /&gt;
 // Show IDLE on UART1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL        PYB_UART_1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL_BAUD   115200&lt;br /&gt;
 &lt;br /&gt;
Sostituire il contenuto del file &amp;quot;pins.csv&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 PA0,PA0&lt;br /&gt;
 PA1,PA1&lt;br /&gt;
 PA2,PA2&lt;br /&gt;
 PA3,PA3&lt;br /&gt;
 PA4,PA4&lt;br /&gt;
 PA5,PA5&lt;br /&gt;
 PA6,PA6&lt;br /&gt;
 PA7,PA7&lt;br /&gt;
 PA8,PA8&lt;br /&gt;
 PA9,PA9&lt;br /&gt;
 PA10,PA10&lt;br /&gt;
 PA11,PA11&lt;br /&gt;
 PA12,PA12&lt;br /&gt;
 PA13,PA13&lt;br /&gt;
 PA14,PA14&lt;br /&gt;
 PA15,PA15&lt;br /&gt;
 PB0,PB0&lt;br /&gt;
 PB1,PB1&lt;br /&gt;
 PB2,PB2&lt;br /&gt;
 PB3,PB3&lt;br /&gt;
 PB4,PB4&lt;br /&gt;
 PB5,PB5&lt;br /&gt;
 PB6,PB6&lt;br /&gt;
 PB7,PB7&lt;br /&gt;
 PB8,PB8&lt;br /&gt;
 PB9,PB9&lt;br /&gt;
 PB10,PB10&lt;br /&gt;
 PB11,PB11&lt;br /&gt;
 PB12,PB12&lt;br /&gt;
 PB13,PB13&lt;br /&gt;
 PB14,PB14&lt;br /&gt;
 PB15,PB15&lt;br /&gt;
 PC0,PC0&lt;br /&gt;
 PC1,PC1&lt;br /&gt;
 PC2,PC2&lt;br /&gt;
 PC3,PC3&lt;br /&gt;
 PC4,PC4&lt;br /&gt;
 PC5,PC5&lt;br /&gt;
 PC6,PC6&lt;br /&gt;
 PC7,PC7&lt;br /&gt;
 PC8,PC8&lt;br /&gt;
 PC9,PC9&lt;br /&gt;
 PC10,PC10&lt;br /&gt;
 PC11,PC11&lt;br /&gt;
 PC12,PC12&lt;br /&gt;
 PC13,PC13&lt;br /&gt;
 PD0,PD0&lt;br /&gt;
 PD1,PD1&lt;br /&gt;
 PD2,PD2&lt;br /&gt;
 PD3,PD3&lt;br /&gt;
 PD4,PD4&lt;br /&gt;
 PD5,PD5&lt;br /&gt;
 PD6,PD6&lt;br /&gt;
 PD7,PD7&lt;br /&gt;
 PD8,PD8&lt;br /&gt;
 PD9,PD9&lt;br /&gt;
 PD10,PD10&lt;br /&gt;
 PD11,PD11&lt;br /&gt;
 PD12,PD12&lt;br /&gt;
 PD13,PD13&lt;br /&gt;
 PD14,PD14&lt;br /&gt;
 PD15,PD15&lt;br /&gt;
 PE0,PE0&lt;br /&gt;
 PE1,PE1&lt;br /&gt;
 PE2,PE2&lt;br /&gt;
 PE3,PE3&lt;br /&gt;
 PE4,PE4&lt;br /&gt;
 PE5,PE5&lt;br /&gt;
 PE6,PE6&lt;br /&gt;
 PE7,PE7&lt;br /&gt;
 PE8,PE8&lt;br /&gt;
 PE9,PE9&lt;br /&gt;
 PE10,PE10&lt;br /&gt;
 PE11,PE11&lt;br /&gt;
 PE12,PE12&lt;br /&gt;
 PE13,PE13&lt;br /&gt;
 PE14,PE14&lt;br /&gt;
 PE15,PE15&lt;br /&gt;
 LED,PE0&lt;br /&gt;
 SW,PD15&lt;br /&gt;
&lt;br /&gt;
== Compilare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per istruzioni di compilazione dettagliate si faccia riferimento al file:&lt;br /&gt;
&lt;br /&gt;
 micropython/ports/stm32/README.md&lt;br /&gt;
&lt;br /&gt;
In breve, di seguito i comandi necessari per compilare MicroPython usando la configurazione esposta precedentemente.&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/&lt;br /&gt;
 $ make -C mpy-cross&lt;br /&gt;
 $ cd micropython/ports/stm32/&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE&lt;br /&gt;
&lt;br /&gt;
== Installare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware sulla scheda impostarla in modalità &amp;quot;DFU&amp;quot; prima di accenderla. Poi collearla al computer via USB. In un sistema GNU/Linux sarà possibile verificare che la scheda sia effettivamente in modalità DFU con il comamndo:&lt;br /&gt;
&lt;br /&gt;
 $ lsusb&lt;br /&gt;
 Bus 002 Device 005: ID 0483:df11 STMicroelectronics STM Device in DFU Mode&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware:&lt;br /&gt;
&lt;br /&gt;
 # apt install python3-usb&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE deploy&lt;br /&gt;
&lt;br /&gt;
Se si dispone di un adattatore ST-LINK esterno (la scheda di per sé ne è sprovvista) questo si può utilizzare per la programmazione del firmware in alternativa alla modalità DFU. La corretta configurazione dei pin è stata già mostrata nella sezione dedicata all'hardware di questa pagina. Per quanto riguarda il versante software si faccia riferimento al file &amp;quot;README.md&amp;quot; di cui sopra.&lt;br /&gt;
&lt;br /&gt;
== Eseguire codice ==&lt;br /&gt;
&lt;br /&gt;
Quando la scheda viene avviata in modalità &amp;quot;flash&amp;quot; (si veda la sezione &amp;quot;Boot pin&amp;quot;) è possibile accedere al REPL di MicroPython attraverso una porta seriale fornita direttamente dalla porta USB.&lt;br /&gt;
&lt;br /&gt;
 $ screen /dev/ttyACM0 115200&lt;br /&gt;
 MicroPython v1.10-194-g41e7ad647 on 2019-03-11; F4DIYMORE with STM32F407&lt;br /&gt;
 Type &amp;quot;help()&amp;quot; for more information.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dalla stessa porta USB e con la scheda avviata con la stessa modalità è anche possibile accedere alla memoria flash del microcontrollore, dentro la quale si possono copiare i file &amp;quot;.py&amp;quot; da far eseguire a MicroPython.&lt;br /&gt;
&lt;br /&gt;
 $ pmount /dev/sdb1&lt;br /&gt;
 $ ls /media/sdb1/&lt;br /&gt;
 README.txt  boot.py  main.py  pybcdc.inf&lt;br /&gt;
&lt;br /&gt;
= Frosted =&lt;br /&gt;
&lt;br /&gt;
[https://github.com/insane-adding-machines/frosted Frosted] è un sistema opertivo libero e conforme a POSIX per sistemi integrati. Può risultare interessante a chi preferirebbe programmare questa board usando C pittosto che Micropython. La conformità a POSIX rende il porting di applicazioni sulla piattaforma relativamente semplice. Frosted di suo fornisce anche MicroPython, il supporto però è limitato.&lt;br /&gt;
La scheda &amp;quot;STM32-407 DIY-MORE&amp;quot; è supportata da Frosted e maggiori informazioni possono essere trovate nel relativo [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 commit] sul github del progetto.&lt;br /&gt;
&lt;br /&gt;
= Note finali =&lt;br /&gt;
Si tenga presente che questa scheda è poco documentata e supportata. È molto economica rispetto alle alternative, ma non è detto che le procedure descritte in questa pagina funzioneranno correttamente nel presente o nel futuro. Tutto ciò che è stato scritto è frutto di sperimentazioni ed &amp;quot;hackeraggi&amp;quot; da considerare assolutamente inaffidabili.&lt;br /&gt;
&lt;br /&gt;
= Link e risorse utili = &lt;br /&gt;
* [http://dubstylee.net/v/diy-more-stm32f407vgt6/ DIY More STM32F407VGT6 ボード] Pagina di un blog in giapponese che contiene alcune informazioni utili sulla scheda tra cui lo schema elettrico.&lt;br /&gt;
* [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 Added support for STM32-F407 DIYMORE from diymore.cc] Commit di supporto della scheda su Frosted.&lt;br /&gt;
* [https://www.carminenoviello.com/it/2015/08/11/compilare-micropython-una-scheda-stm32nucleo-f4/ Compilare micropython per una scheda STM32Nucleo-F4] Guida sulla compilazione di MicroPython in italiano.&lt;/div&gt;</summary>
		<author><name>Aggaz</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6846</id>
		<title>STM32-407 DIY-MORE</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6846"/>
		<updated>2019-03-11T13:39:58Z</updated>

		<summary type="html">&lt;p&gt;Aggaz: /* Introduzione */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduzione =&lt;br /&gt;
&lt;br /&gt;
La scheda “STM32-407” prodotta da “DIY MORE” è una &amp;quot;development board&amp;quot; oscura ed economica. Si può ordinare dalla Cina per pochi euro ma sono poche le informazioni che si possono trovare in rete. È una scheda piuttosto minimale e può essere considerata come una &amp;quot;breakout board&amp;quot; del microcontrollore STM32F407. Questo microcontrollore è abbastanza comune ed usato anche in altre schede, di conseguenza è possibile utilizzare la &amp;quot;STM32-407 DIY-MORE&amp;quot; con [https://github.com/micropython/micropython/ Micropython]. Inoltre questa stessa scheda è anche supportata da [https://github.com/insane-adding-machines/frosted Frosted].&lt;br /&gt;
&lt;br /&gt;
= La scheda =&lt;br /&gt;
&lt;br /&gt;
Oltre al microcontrollore stesso la scheda fornisce:&lt;br /&gt;
* una porta USB micro B;&lt;br /&gt;
* 2 pulsanti (uno di reset ed uno programmabile);&lt;br /&gt;
* 2 led (uno di accensione ed uno programmabile);&lt;br /&gt;
* 92 pin (inclusi quelli di alimentazione);&lt;br /&gt;
* svariati componenti accessori necessari al corretto funzionamento del microcontrollore. &lt;br /&gt;
&lt;br /&gt;
== Pulsanti ==&lt;br /&gt;
&lt;br /&gt;
Il pulsante vicino la porta USB ha una funzione di &amp;quot;reset&amp;quot;. L'altro pulsante invece è programmabile ed è configurato in &amp;quot;pull-up&amp;quot; al pin PD15 con una resistenza da 10kΩ.&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
&lt;br /&gt;
LED1, situato vicino la porta USB, è utilizzato per segnalare lo stato di alimentazione. LED2 è programmabile ed è collegato al pin PE0 da una resistenza da 1kΩ. Il pin abbassato equivale ad un LED acceso.&lt;br /&gt;
&lt;br /&gt;
== Boot pin ==&lt;br /&gt;
&lt;br /&gt;
La scheda è provvista di due &amp;quot;boot pin&amp;quot; la cui configurazione all'accensione determina lo stato del microcontrollore. I pin si trovano in un angolo sul lato opposto rispetto alla porta USB e sono denominati &amp;quot;BOOT0&amp;quot; e &amp;quot;BOOT1&amp;quot;. Entrambi sono in una configurazione normalmente &amp;quot;up&amp;quot; e sono adiacenti a dei pin collegati a massa. Pertanto si può facilmente controllare lo stato di questi pin per mezzo di un &amp;quot;jumper&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Come mostrato nella tabella in basso, sono tre le configurazioni utili che si possono ottenere dalle combinazioni degli stati dei due &amp;quot;boot pin&amp;quot;:&lt;br /&gt;
* In modalità &amp;quot;Flash&amp;quot;, assumendo che MicroPython sia correttamente installato, è possibile montare la memoria flash del microcontrollore via USB per copiare i file degli script da eseguire. Allo stesso tempo è anche possibile accedere alla &amp;quot;REPL&amp;quot; di MicroPython attraverso una porta seriale fornita dalla stessa porta USB (la quale utilizza i pin PA11 e PA12);&lt;br /&gt;
* In modalità DFU è possibile programmare il microcontrollore e caricare il firmware. Questa è la modalità che viene generalmente usata per caricare MicroPython nel microcontrollore;&lt;br /&gt;
* La modalità SRAM non l'ho mai usata ed onestamente non so a cosa serve.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin BOOT0''' || '''Pin BOOT1''' || '''Modalità'''&lt;br /&gt;
|-&lt;br /&gt;
|   Giù || Su/Giù || Flash&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Giù || DFU&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Su || SRAM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ST-LINK ==&lt;br /&gt;
&lt;br /&gt;
La scheda di per sé è priva di un dispositivo ST-LINK per la programmazione, ma un dispositivo di questo tipo può essere collegato utilizzando il seguente schema.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin della scheda''' || '''Pin ST-LINK'''&lt;br /&gt;
|-&lt;br /&gt;
|   PA13 || SWDIO&lt;br /&gt;
|-&lt;br /&gt;
|   PA14 || SWCLK&lt;br /&gt;
|-&lt;br /&gt;
|   3v3 || 3v3&lt;br /&gt;
|-&lt;br /&gt;
|   GND || GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pin degni di nota ==&lt;br /&gt;
&lt;br /&gt;
I pin della scheda corrispondono ai pin del microcontrollore STM32F407. Si può consultare il datasheet del componente per conoscere le funzionalità speciali dei vari pin (UART, I2C, SPI, eccetera). Ad ogni modo bisogna tenere in considerazione alcune peculiarità dell'implementazione della scheda:&lt;br /&gt;
&lt;br /&gt;
* PD15 è collegato in &amp;quot;pull-up&amp;quot; al pulsante.&lt;br /&gt;
&lt;br /&gt;
* PE0 è collegato al LED2 (Pin abbassato equivale a LED acceso).&lt;br /&gt;
&lt;br /&gt;
* PA11 e PA12 sono usati dalla porta USB. Sebbene corrispondano anche ai pin CTS ed RTS della UART1, è meglio non usarli se si vuole usare la porta USB.&lt;br /&gt;
&lt;br /&gt;
* Altre informazioni sui pin possono essere lette nel file &amp;quot;mpconfigboard.h&amp;quot; riportato più in basso.&lt;br /&gt;
&lt;br /&gt;
= Micropython =&lt;br /&gt;
&lt;br /&gt;
Per utilizzare correttamente questa scheda è necessario compilare manualmente il codice di MicroPython. Inoltre è necessario impostare delle configurazioni ad-hoc per poter gestire in maniera corretta la mappatura dei &amp;quot;pin&amp;quot;. Di seguito sono esposti i passaggi per compiere questa operazione su un sistema GNU/Linux. Si assume che il sistema del lettore sia  già configurato per l'utilizzo di &amp;quot;git&amp;quot; e la &amp;quot;cross-compilazione&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Ottenere MicroPython  ==&lt;br /&gt;
&lt;br /&gt;
 $ git clone &amp;quot;https://github.com/micropython/micropython.git&amp;quot;&lt;br /&gt;
 $ git submodule update --init&lt;br /&gt;
&lt;br /&gt;
== Aggiungere la configurazione per la scheda  ==&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/ports/stm32/boards/&lt;br /&gt;
 $ cp -R STM32F4DISC STM32F4DIYMORE&lt;br /&gt;
 $ cd STM32F4DIYMORE&lt;br /&gt;
 $ rm staccel.py&lt;br /&gt;
&lt;br /&gt;
Sostituire il contenuto del file &amp;quot;mpconfigboard.h&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 #define MICROPY_HW_BOARD_NAME       &amp;quot;F4DIYMORE&amp;quot;&lt;br /&gt;
 #define MICROPY_HW_MCU_NAME         &amp;quot;STM32F407&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_HAS_SWITCH       (1)&lt;br /&gt;
 #define MICROPY_HW_HAS_FLASH        (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RNG       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RTC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_DAC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_USB       (1)&lt;br /&gt;
 &lt;br /&gt;
 // HSE is 8MHz&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLM (8)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLN (336)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV2)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLQ (7)&lt;br /&gt;
 &lt;br /&gt;
 // UART config&lt;br /&gt;
 //PA11 and PA12 pins are used by USB&lt;br /&gt;
 //#define MICROPY_HW_UART1_TX     (pin_A9)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RX     (pin_A10)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RTS    (pin_A12)&lt;br /&gt;
 //#define MICROPY_HW_UART1_CTS    (pin_A11)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART2_TX     (pin_A2)&lt;br /&gt;
 #define MICROPY_HW_UART2_RX     (pin_A3)&lt;br /&gt;
 #define MICROPY_HW_UART2_RTS    (pin_A1)&lt;br /&gt;
 #define MICROPY_HW_UART2_CTS    (pin_A0)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART3_TX     (pin_D8)&lt;br /&gt;
 #define MICROPY_HW_UART3_RX     (pin_D9)&lt;br /&gt;
 #define MICROPY_HW_UART3_RTS    (pin_D12)&lt;br /&gt;
 #define MICROPY_HW_UART3_CTS    (pin_D11)&lt;br /&gt;
 &lt;br /&gt;
 //PA0 and PA1 pins are used by UART2&lt;br /&gt;
 //#define MICROPY_HW_UART4_TX     (pin_A0)&lt;br /&gt;
 //#define MICROPY_HW_UART4_RX     (pin_A1)&lt;br /&gt;
 &lt;br /&gt;
 //I do not really need it&lt;br /&gt;
 //#define MICROPY_HW_UART6_TX     (pin_C6)&lt;br /&gt;
 //#define MICROPY_HW_UART6_RX     (pin_C7)&lt;br /&gt;
 &lt;br /&gt;
 // I2C busses&lt;br /&gt;
 #define MICROPY_HW_I2C1_SCL (pin_B6)&lt;br /&gt;
 #define MICROPY_HW_I2C1_SDA (pin_B7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_I2C2_SCL (pin_B10)&lt;br /&gt;
 #define MICROPY_HW_I2C2_SDA (pin_B11)&lt;br /&gt;
 &lt;br /&gt;
 // SPI busses&lt;br /&gt;
 #define MICROPY_HW_SPI1_NSS  (pin_A4)&lt;br /&gt;
 #define MICROPY_HW_SPI1_SCK  (pin_A5)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MISO (pin_A6)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MOSI (pin_A7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_SPI2_NSS  (pin_B12)&lt;br /&gt;
 #define MICROPY_HW_SPI2_SCK  (pin_B13)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MISO (pin_B14)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MOSI (pin_B15)&lt;br /&gt;
 &lt;br /&gt;
 // CAN busses&lt;br /&gt;
 //#define MICROPY_HW_CAN1_TX (pin_B9)&lt;br /&gt;
 //#define MICROPY_HW_CAN1_RX (pin_B8)&lt;br /&gt;
 &lt;br /&gt;
 //PB12 and PB13 pins are used by SPI2&lt;br /&gt;
 //#define MICROPY_HW_CAN2_TX (pin_B13)&lt;br /&gt;
 //#define MICROPY_HW_CAN2_RX (pin_B12)&lt;br /&gt;
 &lt;br /&gt;
 // USRSW is pulled up. Pressing the button makes the input go low.&lt;br /&gt;
 #define MICROPY_HW_USRSW_PIN        (pin_D15)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PULL       (GPIO_PULLUP)&lt;br /&gt;
 #define MICROPY_HW_USRSW_EXTI_MODE  (GPIO_MODE_IT_FALLING)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PRESSED    (0)&lt;br /&gt;
 &lt;br /&gt;
 // LEDs&lt;br /&gt;
 #define MICROPY_HW_LED_INVERTED     (1) // LEDs are on when pin is driven low&lt;br /&gt;
 #define MICROPY_HW_LED1             (pin_E0)&lt;br /&gt;
 #define MICROPY_HW_LED_ON(pin)      (mp_hal_pin_low(pin))&lt;br /&gt;
 #define MICROPY_HW_LED_OFF(pin)     (mp_hal_pin_high(pin))&lt;br /&gt;
 &lt;br /&gt;
 // USB config&lt;br /&gt;
 #define MICROPY_HW_USB_FS              (1)&lt;br /&gt;
 &lt;br /&gt;
 // Show IDLE on UART1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL        PYB_UART_1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL_BAUD   115200&lt;br /&gt;
 &lt;br /&gt;
Sostituire il contenuto del file &amp;quot;pins.csv&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 PA0,PA0&lt;br /&gt;
 PA1,PA1&lt;br /&gt;
 PA2,PA2&lt;br /&gt;
 PA3,PA3&lt;br /&gt;
 PA4,PA4&lt;br /&gt;
 PA5,PA5&lt;br /&gt;
 PA6,PA6&lt;br /&gt;
 PA7,PA7&lt;br /&gt;
 PA8,PA8&lt;br /&gt;
 PA9,PA9&lt;br /&gt;
 PA10,PA10&lt;br /&gt;
 PA11,PA11&lt;br /&gt;
 PA12,PA12&lt;br /&gt;
 PA13,PA13&lt;br /&gt;
 PA14,PA14&lt;br /&gt;
 PA15,PA15&lt;br /&gt;
 PB0,PB0&lt;br /&gt;
 PB1,PB1&lt;br /&gt;
 PB2,PB2&lt;br /&gt;
 PB3,PB3&lt;br /&gt;
 PB4,PB4&lt;br /&gt;
 PB5,PB5&lt;br /&gt;
 PB6,PB6&lt;br /&gt;
 PB7,PB7&lt;br /&gt;
 PB8,PB8&lt;br /&gt;
 PB9,PB9&lt;br /&gt;
 PB10,PB10&lt;br /&gt;
 PB11,PB11&lt;br /&gt;
 PB12,PB12&lt;br /&gt;
 PB13,PB13&lt;br /&gt;
 PB14,PB14&lt;br /&gt;
 PB15,PB15&lt;br /&gt;
 PC0,PC0&lt;br /&gt;
 PC1,PC1&lt;br /&gt;
 PC2,PC2&lt;br /&gt;
 PC3,PC3&lt;br /&gt;
 PC4,PC4&lt;br /&gt;
 PC5,PC5&lt;br /&gt;
 PC6,PC6&lt;br /&gt;
 PC7,PC7&lt;br /&gt;
 PC8,PC8&lt;br /&gt;
 PC9,PC9&lt;br /&gt;
 PC10,PC10&lt;br /&gt;
 PC11,PC11&lt;br /&gt;
 PC12,PC12&lt;br /&gt;
 PC13,PC13&lt;br /&gt;
 PD0,PD0&lt;br /&gt;
 PD1,PD1&lt;br /&gt;
 PD2,PD2&lt;br /&gt;
 PD3,PD3&lt;br /&gt;
 PD4,PD4&lt;br /&gt;
 PD5,PD5&lt;br /&gt;
 PD6,PD6&lt;br /&gt;
 PD7,PD7&lt;br /&gt;
 PD8,PD8&lt;br /&gt;
 PD9,PD9&lt;br /&gt;
 PD10,PD10&lt;br /&gt;
 PD11,PD11&lt;br /&gt;
 PD12,PD12&lt;br /&gt;
 PD13,PD13&lt;br /&gt;
 PD14,PD14&lt;br /&gt;
 PD15,PD15&lt;br /&gt;
 PE0,PE0&lt;br /&gt;
 PE1,PE1&lt;br /&gt;
 PE2,PE2&lt;br /&gt;
 PE3,PE3&lt;br /&gt;
 PE4,PE4&lt;br /&gt;
 PE5,PE5&lt;br /&gt;
 PE6,PE6&lt;br /&gt;
 PE7,PE7&lt;br /&gt;
 PE8,PE8&lt;br /&gt;
 PE9,PE9&lt;br /&gt;
 PE10,PE10&lt;br /&gt;
 PE11,PE11&lt;br /&gt;
 PE12,PE12&lt;br /&gt;
 PE13,PE13&lt;br /&gt;
 PE14,PE14&lt;br /&gt;
 PE15,PE15&lt;br /&gt;
 LED,PE0&lt;br /&gt;
 SW,PD15&lt;br /&gt;
&lt;br /&gt;
== Compilare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per istruzioni di compilazione dettagliate si faccia riferimento al file:&lt;br /&gt;
&lt;br /&gt;
 micropython/ports/stm32/README.md&lt;br /&gt;
&lt;br /&gt;
In breve, di seguito i comandi necessari per compilare MicroPython usando la configurazione esposta precedentemente.&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/&lt;br /&gt;
 $ make -C mpy-cross&lt;br /&gt;
 $ cd micropython/ports/stm32/&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE&lt;br /&gt;
&lt;br /&gt;
== Installare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware sulla scheda impostarla in modalità &amp;quot;DFU&amp;quot; prima di accenderla. Poi collearla al computer via USB. In un sistema GNU/Linux sarà possibile verificare che la scheda sia effettivamente in modalità DFU con il comamndo:&lt;br /&gt;
&lt;br /&gt;
 $ lsusb&lt;br /&gt;
 Bus 002 Device 005: ID 0483:df11 STMicroelectronics STM Device in DFU Mode&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware:&lt;br /&gt;
&lt;br /&gt;
 # apt install python3-usb&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE deploy&lt;br /&gt;
&lt;br /&gt;
Se si dispone di un adattatore ST-LINK esterno (la scheda di per sé ne è sprovvista) questo si può utilizzare per la programmazione del firmware in alternativa alla modalità DFU. La corretta configurazione dei pin è stata già mostrata nella sezione dedicata all'hardware di questa pagina. Per quanto riguarda il versante software si faccia riferimento al file &amp;quot;README.md&amp;quot; di cui sopra.&lt;br /&gt;
&lt;br /&gt;
== Eseguire codice ==&lt;br /&gt;
&lt;br /&gt;
Quando la scheda viene avviata in modalità &amp;quot;flash&amp;quot; (si veda a sezione &amp;quot;Boot pin&amp;quot;) è possibile accedere al REPL di MicroPython attraverso una porta seriale fornita direttamente dalla porta USB.&lt;br /&gt;
&lt;br /&gt;
 $ screen /dev/ttyACM0 115200&lt;br /&gt;
 MicroPython v1.10-194-g41e7ad647 on 2019-03-11; F4DIYMORE with STM32F407&lt;br /&gt;
 Type &amp;quot;help()&amp;quot; for more information.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dalla stessa porta USB e con la scheda avviata con la stessa modalità è anche possibile accedere alla memoria flash del microcontrollore, dentro la quale si possono copiare i file &amp;quot;.py&amp;quot; da far eseguire a MicroPython.&lt;br /&gt;
&lt;br /&gt;
 $ pmount /dev/sdb1&lt;br /&gt;
 $ ls /media/sdb1/&lt;br /&gt;
 README.txt  boot.py  main.py  pybcdc.inf&lt;br /&gt;
&lt;br /&gt;
= Frosted =&lt;br /&gt;
&lt;br /&gt;
[https://github.com/insane-adding-machines/frosted Frosted] è un sistema opertivo libero e conforme a POSIX per sistemi integrati. Può risultare interessante a chi preferirebbe programmare questa board usando C pittosto che Micropython. La conformità a POSIX rende il porting di applicazioni sulla piattaforma relativamente semplice. Frosted di suo fornisce anche MicroPython, il supporto però è limitato.&lt;br /&gt;
La scheda &amp;quot;STM32-407 DIY-MORE&amp;quot; è supportata da Frosted e maggiori informazioni possono essere trovate nel relativo [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 commit] sul github del progetto.&lt;br /&gt;
&lt;br /&gt;
= Note finali =&lt;br /&gt;
Si tenga presente che questa scheda è poco documentata e supportata. È molto economica rispetto alle alternative, ma non è detto che le procedure descritte in questa pagina funzioneranno correttamente nel presente o nel futuro. Tutto ciò che è stato scritto è frutto di sperimentazioni ed &amp;quot;hackeraggi&amp;quot; da considerare assolutamente inaffidabili.&lt;br /&gt;
&lt;br /&gt;
= Link e risorse utili = &lt;br /&gt;
* [http://dubstylee.net/v/diy-more-stm32f407vgt6/ DIY More STM32F407VGT6 ボード] Pagina di un blog in giapponese che contiene alcune informazioni utili sulla scheda tra cui lo schema elettrico.&lt;br /&gt;
* [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 Added support for STM32-F407 DIYMORE from diymore.cc] Commit di supporto della scheda su Frosted.&lt;br /&gt;
* [https://www.carminenoviello.com/it/2015/08/11/compilare-micropython-una-scheda-stm32nucleo-f4/ Compilare micropython per una scheda STM32Nucleo-F4] Guida sulla compilazione di MicroPython in italiano.&lt;/div&gt;</summary>
		<author><name>Aggaz</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6845</id>
		<title>STM32-407 DIY-MORE</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6845"/>
		<updated>2019-03-11T13:37:48Z</updated>

		<summary type="html">&lt;p&gt;Aggaz: /* Link e risorse utili */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduzione =&lt;br /&gt;
&lt;br /&gt;
La scheda “STM32-407” prodotta da “DIY MORE” è una &amp;quot;development board&amp;quot; oscura ed economica. Si può ordinare dalla Cina per pochi euro ma sono poche le informazioni che si possono trovare in rete. È una scheda piuttosto minimale e può essere considerata come una &amp;quot;breakout board&amp;quot; del microcontrollore STM32F407. Questo microcontrollore è abbastanza comune ed usato anche in altre schede, di conseguenza è possibile utilizzare la &amp;quot;STM32-407 DIY-MORE&amp;quot; con Micropython. Inoltre questa stessa scheda è anche supportata da [https://github.com/insane-adding-machines/frosted Frosted].&lt;br /&gt;
&lt;br /&gt;
= La scheda =&lt;br /&gt;
&lt;br /&gt;
Oltre al microcontrollore stesso la scheda fornisce:&lt;br /&gt;
* una porta USB micro B;&lt;br /&gt;
* 2 pulsanti (uno di reset ed uno programmabile);&lt;br /&gt;
* 2 led (uno di accensione ed uno programmabile);&lt;br /&gt;
* 92 pin (inclusi quelli di alimentazione);&lt;br /&gt;
* svariati componenti accessori necessari al corretto funzionamento del microcontrollore. &lt;br /&gt;
&lt;br /&gt;
== Pulsanti ==&lt;br /&gt;
&lt;br /&gt;
Il pulsante vicino la porta USB ha una funzione di &amp;quot;reset&amp;quot;. L'altro pulsante invece è programmabile ed è configurato in &amp;quot;pull-up&amp;quot; al pin PD15 con una resistenza da 10kΩ.&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
&lt;br /&gt;
LED1, situato vicino la porta USB, è utilizzato per segnalare lo stato di alimentazione. LED2 è programmabile ed è collegato al pin PE0 da una resistenza da 1kΩ. Il pin abbassato equivale ad un LED acceso.&lt;br /&gt;
&lt;br /&gt;
== Boot pin ==&lt;br /&gt;
&lt;br /&gt;
La scheda è provvista di due &amp;quot;boot pin&amp;quot; la cui configurazione all'accensione determina lo stato del microcontrollore. I pin si trovano in un angolo sul lato opposto rispetto alla porta USB e sono denominati &amp;quot;BOOT0&amp;quot; e &amp;quot;BOOT1&amp;quot;. Entrambi sono in una configurazione normalmente &amp;quot;up&amp;quot; e sono adiacenti a dei pin collegati a massa. Pertanto si può facilmente controllare lo stato di questi pin per mezzo di un &amp;quot;jumper&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Come mostrato nella tabella in basso, sono tre le configurazioni utili che si possono ottenere dalle combinazioni degli stati dei due &amp;quot;boot pin&amp;quot;:&lt;br /&gt;
* In modalità &amp;quot;Flash&amp;quot;, assumendo che MicroPython sia correttamente installato, è possibile montare la memoria flash del microcontrollore via USB per copiare i file degli script da eseguire. Allo stesso tempo è anche possibile accedere alla &amp;quot;REPL&amp;quot; di MicroPython attraverso una porta seriale fornita dalla stessa porta USB (la quale utilizza i pin PA11 e PA12);&lt;br /&gt;
* In modalità DFU è possibile programmare il microcontrollore e caricare il firmware. Questa è la modalità che viene generalmente usata per caricare MicroPython nel microcontrollore;&lt;br /&gt;
* La modalità SRAM non l'ho mai usata ed onestamente non so a cosa serve.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin BOOT0''' || '''Pin BOOT1''' || '''Modalità'''&lt;br /&gt;
|-&lt;br /&gt;
|   Giù || Su/Giù || Flash&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Giù || DFU&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Su || SRAM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ST-LINK ==&lt;br /&gt;
&lt;br /&gt;
La scheda di per sé è priva di un dispositivo ST-LINK per la programmazione, ma un dispositivo di questo tipo può essere collegato utilizzando il seguente schema.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin della scheda''' || '''Pin ST-LINK'''&lt;br /&gt;
|-&lt;br /&gt;
|   PA13 || SWDIO&lt;br /&gt;
|-&lt;br /&gt;
|   PA14 || SWCLK&lt;br /&gt;
|-&lt;br /&gt;
|   3v3 || 3v3&lt;br /&gt;
|-&lt;br /&gt;
|   GND || GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pin degni di nota ==&lt;br /&gt;
&lt;br /&gt;
I pin della scheda corrispondono ai pin del microcontrollore STM32F407. Si può consultare il datasheet del componente per conoscere le funzionalità speciali dei vari pin (UART, I2C, SPI, eccetera). Ad ogni modo bisogna tenere in considerazione alcune peculiarità dell'implementazione della scheda:&lt;br /&gt;
&lt;br /&gt;
* PD15 è collegato in &amp;quot;pull-up&amp;quot; al pulsante.&lt;br /&gt;
&lt;br /&gt;
* PE0 è collegato al LED2 (Pin abbassato equivale a LED acceso).&lt;br /&gt;
&lt;br /&gt;
* PA11 e PA12 sono usati dalla porta USB. Sebbene corrispondano anche ai pin CTS ed RTS della UART1, è meglio non usarli se si vuole usare la porta USB.&lt;br /&gt;
&lt;br /&gt;
* Altre informazioni sui pin possono essere lette nel file &amp;quot;mpconfigboard.h&amp;quot; riportato più in basso.&lt;br /&gt;
&lt;br /&gt;
= Micropython =&lt;br /&gt;
&lt;br /&gt;
Per utilizzare correttamente questa scheda è necessario compilare manualmente il codice di MicroPython. Inoltre è necessario impostare delle configurazioni ad-hoc per poter gestire in maniera corretta la mappatura dei &amp;quot;pin&amp;quot;. Di seguito sono esposti i passaggi per compiere questa operazione su un sistema GNU/Linux. Si assume che il sistema del lettore sia  già configurato per l'utilizzo di &amp;quot;git&amp;quot; e la &amp;quot;cross-compilazione&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Ottenere MicroPython  ==&lt;br /&gt;
&lt;br /&gt;
 $ git clone &amp;quot;https://github.com/micropython/micropython.git&amp;quot;&lt;br /&gt;
 $ git submodule update --init&lt;br /&gt;
&lt;br /&gt;
== Aggiungere la configurazione per la scheda  ==&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/ports/stm32/boards/&lt;br /&gt;
 $ cp -R STM32F4DISC STM32F4DIYMORE&lt;br /&gt;
 $ cd STM32F4DIYMORE&lt;br /&gt;
 $ rm staccel.py&lt;br /&gt;
&lt;br /&gt;
Sostituire il contenuto del file &amp;quot;mpconfigboard.h&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 #define MICROPY_HW_BOARD_NAME       &amp;quot;F4DIYMORE&amp;quot;&lt;br /&gt;
 #define MICROPY_HW_MCU_NAME         &amp;quot;STM32F407&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_HAS_SWITCH       (1)&lt;br /&gt;
 #define MICROPY_HW_HAS_FLASH        (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RNG       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RTC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_DAC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_USB       (1)&lt;br /&gt;
 &lt;br /&gt;
 // HSE is 8MHz&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLM (8)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLN (336)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV2)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLQ (7)&lt;br /&gt;
 &lt;br /&gt;
 // UART config&lt;br /&gt;
 //PA11 and PA12 pins are used by USB&lt;br /&gt;
 //#define MICROPY_HW_UART1_TX     (pin_A9)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RX     (pin_A10)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RTS    (pin_A12)&lt;br /&gt;
 //#define MICROPY_HW_UART1_CTS    (pin_A11)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART2_TX     (pin_A2)&lt;br /&gt;
 #define MICROPY_HW_UART2_RX     (pin_A3)&lt;br /&gt;
 #define MICROPY_HW_UART2_RTS    (pin_A1)&lt;br /&gt;
 #define MICROPY_HW_UART2_CTS    (pin_A0)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART3_TX     (pin_D8)&lt;br /&gt;
 #define MICROPY_HW_UART3_RX     (pin_D9)&lt;br /&gt;
 #define MICROPY_HW_UART3_RTS    (pin_D12)&lt;br /&gt;
 #define MICROPY_HW_UART3_CTS    (pin_D11)&lt;br /&gt;
 &lt;br /&gt;
 //PA0 and PA1 pins are used by UART2&lt;br /&gt;
 //#define MICROPY_HW_UART4_TX     (pin_A0)&lt;br /&gt;
 //#define MICROPY_HW_UART4_RX     (pin_A1)&lt;br /&gt;
 &lt;br /&gt;
 //I do not really need it&lt;br /&gt;
 //#define MICROPY_HW_UART6_TX     (pin_C6)&lt;br /&gt;
 //#define MICROPY_HW_UART6_RX     (pin_C7)&lt;br /&gt;
 &lt;br /&gt;
 // I2C busses&lt;br /&gt;
 #define MICROPY_HW_I2C1_SCL (pin_B6)&lt;br /&gt;
 #define MICROPY_HW_I2C1_SDA (pin_B7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_I2C2_SCL (pin_B10)&lt;br /&gt;
 #define MICROPY_HW_I2C2_SDA (pin_B11)&lt;br /&gt;
 &lt;br /&gt;
 // SPI busses&lt;br /&gt;
 #define MICROPY_HW_SPI1_NSS  (pin_A4)&lt;br /&gt;
 #define MICROPY_HW_SPI1_SCK  (pin_A5)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MISO (pin_A6)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MOSI (pin_A7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_SPI2_NSS  (pin_B12)&lt;br /&gt;
 #define MICROPY_HW_SPI2_SCK  (pin_B13)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MISO (pin_B14)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MOSI (pin_B15)&lt;br /&gt;
 &lt;br /&gt;
 // CAN busses&lt;br /&gt;
 //#define MICROPY_HW_CAN1_TX (pin_B9)&lt;br /&gt;
 //#define MICROPY_HW_CAN1_RX (pin_B8)&lt;br /&gt;
 &lt;br /&gt;
 //PB12 and PB13 pins are used by SPI2&lt;br /&gt;
 //#define MICROPY_HW_CAN2_TX (pin_B13)&lt;br /&gt;
 //#define MICROPY_HW_CAN2_RX (pin_B12)&lt;br /&gt;
 &lt;br /&gt;
 // USRSW is pulled up. Pressing the button makes the input go low.&lt;br /&gt;
 #define MICROPY_HW_USRSW_PIN        (pin_D15)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PULL       (GPIO_PULLUP)&lt;br /&gt;
 #define MICROPY_HW_USRSW_EXTI_MODE  (GPIO_MODE_IT_FALLING)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PRESSED    (0)&lt;br /&gt;
 &lt;br /&gt;
 // LEDs&lt;br /&gt;
 #define MICROPY_HW_LED_INVERTED     (1) // LEDs are on when pin is driven low&lt;br /&gt;
 #define MICROPY_HW_LED1             (pin_E0)&lt;br /&gt;
 #define MICROPY_HW_LED_ON(pin)      (mp_hal_pin_low(pin))&lt;br /&gt;
 #define MICROPY_HW_LED_OFF(pin)     (mp_hal_pin_high(pin))&lt;br /&gt;
 &lt;br /&gt;
 // USB config&lt;br /&gt;
 #define MICROPY_HW_USB_FS              (1)&lt;br /&gt;
 &lt;br /&gt;
 // Show IDLE on UART1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL        PYB_UART_1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL_BAUD   115200&lt;br /&gt;
 &lt;br /&gt;
Sostituire il contenuto del file &amp;quot;pins.csv&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 PA0,PA0&lt;br /&gt;
 PA1,PA1&lt;br /&gt;
 PA2,PA2&lt;br /&gt;
 PA3,PA3&lt;br /&gt;
 PA4,PA4&lt;br /&gt;
 PA5,PA5&lt;br /&gt;
 PA6,PA6&lt;br /&gt;
 PA7,PA7&lt;br /&gt;
 PA8,PA8&lt;br /&gt;
 PA9,PA9&lt;br /&gt;
 PA10,PA10&lt;br /&gt;
 PA11,PA11&lt;br /&gt;
 PA12,PA12&lt;br /&gt;
 PA13,PA13&lt;br /&gt;
 PA14,PA14&lt;br /&gt;
 PA15,PA15&lt;br /&gt;
 PB0,PB0&lt;br /&gt;
 PB1,PB1&lt;br /&gt;
 PB2,PB2&lt;br /&gt;
 PB3,PB3&lt;br /&gt;
 PB4,PB4&lt;br /&gt;
 PB5,PB5&lt;br /&gt;
 PB6,PB6&lt;br /&gt;
 PB7,PB7&lt;br /&gt;
 PB8,PB8&lt;br /&gt;
 PB9,PB9&lt;br /&gt;
 PB10,PB10&lt;br /&gt;
 PB11,PB11&lt;br /&gt;
 PB12,PB12&lt;br /&gt;
 PB13,PB13&lt;br /&gt;
 PB14,PB14&lt;br /&gt;
 PB15,PB15&lt;br /&gt;
 PC0,PC0&lt;br /&gt;
 PC1,PC1&lt;br /&gt;
 PC2,PC2&lt;br /&gt;
 PC3,PC3&lt;br /&gt;
 PC4,PC4&lt;br /&gt;
 PC5,PC5&lt;br /&gt;
 PC6,PC6&lt;br /&gt;
 PC7,PC7&lt;br /&gt;
 PC8,PC8&lt;br /&gt;
 PC9,PC9&lt;br /&gt;
 PC10,PC10&lt;br /&gt;
 PC11,PC11&lt;br /&gt;
 PC12,PC12&lt;br /&gt;
 PC13,PC13&lt;br /&gt;
 PD0,PD0&lt;br /&gt;
 PD1,PD1&lt;br /&gt;
 PD2,PD2&lt;br /&gt;
 PD3,PD3&lt;br /&gt;
 PD4,PD4&lt;br /&gt;
 PD5,PD5&lt;br /&gt;
 PD6,PD6&lt;br /&gt;
 PD7,PD7&lt;br /&gt;
 PD8,PD8&lt;br /&gt;
 PD9,PD9&lt;br /&gt;
 PD10,PD10&lt;br /&gt;
 PD11,PD11&lt;br /&gt;
 PD12,PD12&lt;br /&gt;
 PD13,PD13&lt;br /&gt;
 PD14,PD14&lt;br /&gt;
 PD15,PD15&lt;br /&gt;
 PE0,PE0&lt;br /&gt;
 PE1,PE1&lt;br /&gt;
 PE2,PE2&lt;br /&gt;
 PE3,PE3&lt;br /&gt;
 PE4,PE4&lt;br /&gt;
 PE5,PE5&lt;br /&gt;
 PE6,PE6&lt;br /&gt;
 PE7,PE7&lt;br /&gt;
 PE8,PE8&lt;br /&gt;
 PE9,PE9&lt;br /&gt;
 PE10,PE10&lt;br /&gt;
 PE11,PE11&lt;br /&gt;
 PE12,PE12&lt;br /&gt;
 PE13,PE13&lt;br /&gt;
 PE14,PE14&lt;br /&gt;
 PE15,PE15&lt;br /&gt;
 LED,PE0&lt;br /&gt;
 SW,PD15&lt;br /&gt;
&lt;br /&gt;
== Compilare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per istruzioni di compilazione dettagliate si faccia riferimento al file:&lt;br /&gt;
&lt;br /&gt;
 micropython/ports/stm32/README.md&lt;br /&gt;
&lt;br /&gt;
In breve, di seguito i comandi necessari per compilare MicroPython usando la configurazione esposta precedentemente.&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/&lt;br /&gt;
 $ make -C mpy-cross&lt;br /&gt;
 $ cd micropython/ports/stm32/&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE&lt;br /&gt;
&lt;br /&gt;
== Installare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware sulla scheda impostarla in modalità &amp;quot;DFU&amp;quot; prima di accenderla. Poi collearla al computer via USB. In un sistema GNU/Linux sarà possibile verificare che la scheda sia effettivamente in modalità DFU con il comamndo:&lt;br /&gt;
&lt;br /&gt;
 $ lsusb&lt;br /&gt;
 Bus 002 Device 005: ID 0483:df11 STMicroelectronics STM Device in DFU Mode&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware:&lt;br /&gt;
&lt;br /&gt;
 # apt install python3-usb&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE deploy&lt;br /&gt;
&lt;br /&gt;
Se si dispone di un adattatore ST-LINK esterno (la scheda di per sé ne è sprovvista) questo si può utilizzare per la programmazione del firmware in alternativa alla modalità DFU. La corretta configurazione dei pin è stata già mostrata nella sezione dedicata all'hardware di questa pagina. Per quanto riguarda il versante software si faccia riferimento al file &amp;quot;README.md&amp;quot; di cui sopra.&lt;br /&gt;
&lt;br /&gt;
== Eseguire codice ==&lt;br /&gt;
&lt;br /&gt;
Quando la scheda viene avviata in modalità &amp;quot;flash&amp;quot; (si veda a sezione &amp;quot;Boot pin&amp;quot;) è possibile accedere al REPL di MicroPython attraverso una porta seriale fornita direttamente dalla porta USB.&lt;br /&gt;
&lt;br /&gt;
 $ screen /dev/ttyACM0 115200&lt;br /&gt;
 MicroPython v1.10-194-g41e7ad647 on 2019-03-11; F4DIYMORE with STM32F407&lt;br /&gt;
 Type &amp;quot;help()&amp;quot; for more information.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dalla stessa porta USB e con la scheda avviata con la stessa modalità è anche possibile accedere alla memoria flash del microcontrollore, dentro la quale si possono copiare i file &amp;quot;.py&amp;quot; da far eseguire a MicroPython.&lt;br /&gt;
&lt;br /&gt;
 $ pmount /dev/sdb1&lt;br /&gt;
 $ ls /media/sdb1/&lt;br /&gt;
 README.txt  boot.py  main.py  pybcdc.inf&lt;br /&gt;
&lt;br /&gt;
= Frosted =&lt;br /&gt;
&lt;br /&gt;
[https://github.com/insane-adding-machines/frosted Frosted] è un sistema opertivo libero e conforme a POSIX per sistemi integrati. Può risultare interessante a chi preferirebbe programmare questa board usando C pittosto che Micropython. La conformità a POSIX rende il porting di applicazioni sulla piattaforma relativamente semplice. Frosted di suo fornisce anche MicroPython, il supporto però è limitato.&lt;br /&gt;
La scheda &amp;quot;STM32-407 DIY-MORE&amp;quot; è supportata da Frosted e maggiori informazioni possono essere trovate nel relativo [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 commit] sul github del progetto.&lt;br /&gt;
&lt;br /&gt;
= Note finali =&lt;br /&gt;
Si tenga presente che questa scheda è poco documentata e supportata. È molto economica rispetto alle alternative, ma non è detto che le procedure descritte in questa pagina funzioneranno correttamente nel presente o nel futuro. Tutto ciò che è stato scritto è frutto di sperimentazioni ed &amp;quot;hackeraggi&amp;quot; da considerare assolutamente inaffidabili.&lt;br /&gt;
&lt;br /&gt;
= Link e risorse utili = &lt;br /&gt;
* [http://dubstylee.net/v/diy-more-stm32f407vgt6/ DIY More STM32F407VGT6 ボード] Pagina di un blog in giapponese che contiene alcune informazioni utili sulla scheda tra cui lo schema elettrico.&lt;br /&gt;
* [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 Added support for STM32-F407 DIYMORE from diymore.cc] Commit di supporto della scheda su Frosted.&lt;br /&gt;
* [https://www.carminenoviello.com/it/2015/08/11/compilare-micropython-una-scheda-stm32nucleo-f4/ Compilare micropython per una scheda STM32Nucleo-F4] Guida sulla compilazione di MicroPython in italiano.&lt;/div&gt;</summary>
		<author><name>Aggaz</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6844</id>
		<title>STM32-407 DIY-MORE</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6844"/>
		<updated>2019-03-11T13:34:41Z</updated>

		<summary type="html">&lt;p&gt;Aggaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduzione =&lt;br /&gt;
&lt;br /&gt;
La scheda “STM32-407” prodotta da “DIY MORE” è una &amp;quot;development board&amp;quot; oscura ed economica. Si può ordinare dalla Cina per pochi euro ma sono poche le informazioni che si possono trovare in rete. È una scheda piuttosto minimale e può essere considerata come una &amp;quot;breakout board&amp;quot; del microcontrollore STM32F407. Questo microcontrollore è abbastanza comune ed usato anche in altre schede, di conseguenza è possibile utilizzare la &amp;quot;STM32-407 DIY-MORE&amp;quot; con Micropython. Inoltre questa stessa scheda è anche supportata da [https://github.com/insane-adding-machines/frosted Frosted].&lt;br /&gt;
&lt;br /&gt;
= La scheda =&lt;br /&gt;
&lt;br /&gt;
Oltre al microcontrollore stesso la scheda fornisce:&lt;br /&gt;
* una porta USB micro B;&lt;br /&gt;
* 2 pulsanti (uno di reset ed uno programmabile);&lt;br /&gt;
* 2 led (uno di accensione ed uno programmabile);&lt;br /&gt;
* 92 pin (inclusi quelli di alimentazione);&lt;br /&gt;
* svariati componenti accessori necessari al corretto funzionamento del microcontrollore. &lt;br /&gt;
&lt;br /&gt;
== Pulsanti ==&lt;br /&gt;
&lt;br /&gt;
Il pulsante vicino la porta USB ha una funzione di &amp;quot;reset&amp;quot;. L'altro pulsante invece è programmabile ed è configurato in &amp;quot;pull-up&amp;quot; al pin PD15 con una resistenza da 10kΩ.&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
&lt;br /&gt;
LED1, situato vicino la porta USB, è utilizzato per segnalare lo stato di alimentazione. LED2 è programmabile ed è collegato al pin PE0 da una resistenza da 1kΩ. Il pin abbassato equivale ad un LED acceso.&lt;br /&gt;
&lt;br /&gt;
== Boot pin ==&lt;br /&gt;
&lt;br /&gt;
La scheda è provvista di due &amp;quot;boot pin&amp;quot; la cui configurazione all'accensione determina lo stato del microcontrollore. I pin si trovano in un angolo sul lato opposto rispetto alla porta USB e sono denominati &amp;quot;BOOT0&amp;quot; e &amp;quot;BOOT1&amp;quot;. Entrambi sono in una configurazione normalmente &amp;quot;up&amp;quot; e sono adiacenti a dei pin collegati a massa. Pertanto si può facilmente controllare lo stato di questi pin per mezzo di un &amp;quot;jumper&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Come mostrato nella tabella in basso, sono tre le configurazioni utili che si possono ottenere dalle combinazioni degli stati dei due &amp;quot;boot pin&amp;quot;:&lt;br /&gt;
* In modalità &amp;quot;Flash&amp;quot;, assumendo che MicroPython sia correttamente installato, è possibile montare la memoria flash del microcontrollore via USB per copiare i file degli script da eseguire. Allo stesso tempo è anche possibile accedere alla &amp;quot;REPL&amp;quot; di MicroPython attraverso una porta seriale fornita dalla stessa porta USB (la quale utilizza i pin PA11 e PA12);&lt;br /&gt;
* In modalità DFU è possibile programmare il microcontrollore e caricare il firmware. Questa è la modalità che viene generalmente usata per caricare MicroPython nel microcontrollore;&lt;br /&gt;
* La modalità SRAM non l'ho mai usata ed onestamente non so a cosa serve.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin BOOT0''' || '''Pin BOOT1''' || '''Modalità'''&lt;br /&gt;
|-&lt;br /&gt;
|   Giù || Su/Giù || Flash&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Giù || DFU&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Su || SRAM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ST-LINK ==&lt;br /&gt;
&lt;br /&gt;
La scheda di per sé è priva di un dispositivo ST-LINK per la programmazione, ma un dispositivo di questo tipo può essere collegato utilizzando il seguente schema.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin della scheda''' || '''Pin ST-LINK'''&lt;br /&gt;
|-&lt;br /&gt;
|   PA13 || SWDIO&lt;br /&gt;
|-&lt;br /&gt;
|   PA14 || SWCLK&lt;br /&gt;
|-&lt;br /&gt;
|   3v3 || 3v3&lt;br /&gt;
|-&lt;br /&gt;
|   GND || GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pin degni di nota ==&lt;br /&gt;
&lt;br /&gt;
I pin della scheda corrispondono ai pin del microcontrollore STM32F407. Si può consultare il datasheet del componente per conoscere le funzionalità speciali dei vari pin (UART, I2C, SPI, eccetera). Ad ogni modo bisogna tenere in considerazione alcune peculiarità dell'implementazione della scheda:&lt;br /&gt;
&lt;br /&gt;
* PD15 è collegato in &amp;quot;pull-up&amp;quot; al pulsante.&lt;br /&gt;
&lt;br /&gt;
* PE0 è collegato al LED2 (Pin abbassato equivale a LED acceso).&lt;br /&gt;
&lt;br /&gt;
* PA11 e PA12 sono usati dalla porta USB. Sebbene corrispondano anche ai pin CTS ed RTS della UART1, è meglio non usarli se si vuole usare la porta USB.&lt;br /&gt;
&lt;br /&gt;
* Altre informazioni sui pin possono essere lette nel file &amp;quot;mpconfigboard.h&amp;quot; riportato più in basso.&lt;br /&gt;
&lt;br /&gt;
= Micropython =&lt;br /&gt;
&lt;br /&gt;
Per utilizzare correttamente questa scheda è necessario compilare manualmente il codice di MicroPython. Inoltre è necessario impostare delle configurazioni ad-hoc per poter gestire in maniera corretta la mappatura dei &amp;quot;pin&amp;quot;. Di seguito sono esposti i passaggi per compiere questa operazione su un sistema GNU/Linux. Si assume che il sistema del lettore sia  già configurato per l'utilizzo di &amp;quot;git&amp;quot; e la &amp;quot;cross-compilazione&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Ottenere MicroPython  ==&lt;br /&gt;
&lt;br /&gt;
 $ git clone &amp;quot;https://github.com/micropython/micropython.git&amp;quot;&lt;br /&gt;
 $ git submodule update --init&lt;br /&gt;
&lt;br /&gt;
== Aggiungere la configurazione per la scheda  ==&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/ports/stm32/boards/&lt;br /&gt;
 $ cp -R STM32F4DISC STM32F4DIYMORE&lt;br /&gt;
 $ cd STM32F4DIYMORE&lt;br /&gt;
 $ rm staccel.py&lt;br /&gt;
&lt;br /&gt;
Sostituire il contenuto del file &amp;quot;mpconfigboard.h&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 #define MICROPY_HW_BOARD_NAME       &amp;quot;F4DIYMORE&amp;quot;&lt;br /&gt;
 #define MICROPY_HW_MCU_NAME         &amp;quot;STM32F407&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_HAS_SWITCH       (1)&lt;br /&gt;
 #define MICROPY_HW_HAS_FLASH        (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RNG       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RTC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_DAC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_USB       (1)&lt;br /&gt;
 &lt;br /&gt;
 // HSE is 8MHz&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLM (8)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLN (336)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV2)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLQ (7)&lt;br /&gt;
 &lt;br /&gt;
 // UART config&lt;br /&gt;
 //PA11 and PA12 pins are used by USB&lt;br /&gt;
 //#define MICROPY_HW_UART1_TX     (pin_A9)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RX     (pin_A10)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RTS    (pin_A12)&lt;br /&gt;
 //#define MICROPY_HW_UART1_CTS    (pin_A11)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART2_TX     (pin_A2)&lt;br /&gt;
 #define MICROPY_HW_UART2_RX     (pin_A3)&lt;br /&gt;
 #define MICROPY_HW_UART2_RTS    (pin_A1)&lt;br /&gt;
 #define MICROPY_HW_UART2_CTS    (pin_A0)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART3_TX     (pin_D8)&lt;br /&gt;
 #define MICROPY_HW_UART3_RX     (pin_D9)&lt;br /&gt;
 #define MICROPY_HW_UART3_RTS    (pin_D12)&lt;br /&gt;
 #define MICROPY_HW_UART3_CTS    (pin_D11)&lt;br /&gt;
 &lt;br /&gt;
 //PA0 and PA1 pins are used by UART2&lt;br /&gt;
 //#define MICROPY_HW_UART4_TX     (pin_A0)&lt;br /&gt;
 //#define MICROPY_HW_UART4_RX     (pin_A1)&lt;br /&gt;
 &lt;br /&gt;
 //I do not really need it&lt;br /&gt;
 //#define MICROPY_HW_UART6_TX     (pin_C6)&lt;br /&gt;
 //#define MICROPY_HW_UART6_RX     (pin_C7)&lt;br /&gt;
 &lt;br /&gt;
 // I2C busses&lt;br /&gt;
 #define MICROPY_HW_I2C1_SCL (pin_B6)&lt;br /&gt;
 #define MICROPY_HW_I2C1_SDA (pin_B7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_I2C2_SCL (pin_B10)&lt;br /&gt;
 #define MICROPY_HW_I2C2_SDA (pin_B11)&lt;br /&gt;
 &lt;br /&gt;
 // SPI busses&lt;br /&gt;
 #define MICROPY_HW_SPI1_NSS  (pin_A4)&lt;br /&gt;
 #define MICROPY_HW_SPI1_SCK  (pin_A5)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MISO (pin_A6)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MOSI (pin_A7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_SPI2_NSS  (pin_B12)&lt;br /&gt;
 #define MICROPY_HW_SPI2_SCK  (pin_B13)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MISO (pin_B14)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MOSI (pin_B15)&lt;br /&gt;
 &lt;br /&gt;
 // CAN busses&lt;br /&gt;
 //#define MICROPY_HW_CAN1_TX (pin_B9)&lt;br /&gt;
 //#define MICROPY_HW_CAN1_RX (pin_B8)&lt;br /&gt;
 &lt;br /&gt;
 //PB12 and PB13 pins are used by SPI2&lt;br /&gt;
 //#define MICROPY_HW_CAN2_TX (pin_B13)&lt;br /&gt;
 //#define MICROPY_HW_CAN2_RX (pin_B12)&lt;br /&gt;
 &lt;br /&gt;
 // USRSW is pulled up. Pressing the button makes the input go low.&lt;br /&gt;
 #define MICROPY_HW_USRSW_PIN        (pin_D15)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PULL       (GPIO_PULLUP)&lt;br /&gt;
 #define MICROPY_HW_USRSW_EXTI_MODE  (GPIO_MODE_IT_FALLING)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PRESSED    (0)&lt;br /&gt;
 &lt;br /&gt;
 // LEDs&lt;br /&gt;
 #define MICROPY_HW_LED_INVERTED     (1) // LEDs are on when pin is driven low&lt;br /&gt;
 #define MICROPY_HW_LED1             (pin_E0)&lt;br /&gt;
 #define MICROPY_HW_LED_ON(pin)      (mp_hal_pin_low(pin))&lt;br /&gt;
 #define MICROPY_HW_LED_OFF(pin)     (mp_hal_pin_high(pin))&lt;br /&gt;
 &lt;br /&gt;
 // USB config&lt;br /&gt;
 #define MICROPY_HW_USB_FS              (1)&lt;br /&gt;
 &lt;br /&gt;
 // Show IDLE on UART1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL        PYB_UART_1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL_BAUD   115200&lt;br /&gt;
 &lt;br /&gt;
Sostituire il contenuto del file &amp;quot;pins.csv&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 PA0,PA0&lt;br /&gt;
 PA1,PA1&lt;br /&gt;
 PA2,PA2&lt;br /&gt;
 PA3,PA3&lt;br /&gt;
 PA4,PA4&lt;br /&gt;
 PA5,PA5&lt;br /&gt;
 PA6,PA6&lt;br /&gt;
 PA7,PA7&lt;br /&gt;
 PA8,PA8&lt;br /&gt;
 PA9,PA9&lt;br /&gt;
 PA10,PA10&lt;br /&gt;
 PA11,PA11&lt;br /&gt;
 PA12,PA12&lt;br /&gt;
 PA13,PA13&lt;br /&gt;
 PA14,PA14&lt;br /&gt;
 PA15,PA15&lt;br /&gt;
 PB0,PB0&lt;br /&gt;
 PB1,PB1&lt;br /&gt;
 PB2,PB2&lt;br /&gt;
 PB3,PB3&lt;br /&gt;
 PB4,PB4&lt;br /&gt;
 PB5,PB5&lt;br /&gt;
 PB6,PB6&lt;br /&gt;
 PB7,PB7&lt;br /&gt;
 PB8,PB8&lt;br /&gt;
 PB9,PB9&lt;br /&gt;
 PB10,PB10&lt;br /&gt;
 PB11,PB11&lt;br /&gt;
 PB12,PB12&lt;br /&gt;
 PB13,PB13&lt;br /&gt;
 PB14,PB14&lt;br /&gt;
 PB15,PB15&lt;br /&gt;
 PC0,PC0&lt;br /&gt;
 PC1,PC1&lt;br /&gt;
 PC2,PC2&lt;br /&gt;
 PC3,PC3&lt;br /&gt;
 PC4,PC4&lt;br /&gt;
 PC5,PC5&lt;br /&gt;
 PC6,PC6&lt;br /&gt;
 PC7,PC7&lt;br /&gt;
 PC8,PC8&lt;br /&gt;
 PC9,PC9&lt;br /&gt;
 PC10,PC10&lt;br /&gt;
 PC11,PC11&lt;br /&gt;
 PC12,PC12&lt;br /&gt;
 PC13,PC13&lt;br /&gt;
 PD0,PD0&lt;br /&gt;
 PD1,PD1&lt;br /&gt;
 PD2,PD2&lt;br /&gt;
 PD3,PD3&lt;br /&gt;
 PD4,PD4&lt;br /&gt;
 PD5,PD5&lt;br /&gt;
 PD6,PD6&lt;br /&gt;
 PD7,PD7&lt;br /&gt;
 PD8,PD8&lt;br /&gt;
 PD9,PD9&lt;br /&gt;
 PD10,PD10&lt;br /&gt;
 PD11,PD11&lt;br /&gt;
 PD12,PD12&lt;br /&gt;
 PD13,PD13&lt;br /&gt;
 PD14,PD14&lt;br /&gt;
 PD15,PD15&lt;br /&gt;
 PE0,PE0&lt;br /&gt;
 PE1,PE1&lt;br /&gt;
 PE2,PE2&lt;br /&gt;
 PE3,PE3&lt;br /&gt;
 PE4,PE4&lt;br /&gt;
 PE5,PE5&lt;br /&gt;
 PE6,PE6&lt;br /&gt;
 PE7,PE7&lt;br /&gt;
 PE8,PE8&lt;br /&gt;
 PE9,PE9&lt;br /&gt;
 PE10,PE10&lt;br /&gt;
 PE11,PE11&lt;br /&gt;
 PE12,PE12&lt;br /&gt;
 PE13,PE13&lt;br /&gt;
 PE14,PE14&lt;br /&gt;
 PE15,PE15&lt;br /&gt;
 LED,PE0&lt;br /&gt;
 SW,PD15&lt;br /&gt;
&lt;br /&gt;
== Compilare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per istruzioni di compilazione dettagliate si faccia riferimento al file:&lt;br /&gt;
&lt;br /&gt;
 micropython/ports/stm32/README.md&lt;br /&gt;
&lt;br /&gt;
In breve, di seguito i comandi necessari per compilare MicroPython usando la configurazione esposta precedentemente.&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/&lt;br /&gt;
 $ make -C mpy-cross&lt;br /&gt;
 $ cd micropython/ports/stm32/&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE&lt;br /&gt;
&lt;br /&gt;
== Installare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware sulla scheda impostarla in modalità &amp;quot;DFU&amp;quot; prima di accenderla. Poi collearla al computer via USB. In un sistema GNU/Linux sarà possibile verificare che la scheda sia effettivamente in modalità DFU con il comamndo:&lt;br /&gt;
&lt;br /&gt;
 $ lsusb&lt;br /&gt;
 Bus 002 Device 005: ID 0483:df11 STMicroelectronics STM Device in DFU Mode&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware:&lt;br /&gt;
&lt;br /&gt;
 # apt install python3-usb&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE deploy&lt;br /&gt;
&lt;br /&gt;
Se si dispone di un adattatore ST-LINK esterno (la scheda di per sé ne è sprovvista) questo si può utilizzare per la programmazione del firmware in alternativa alla modalità DFU. La corretta configurazione dei pin è stata già mostrata nella sezione dedicata all'hardware di questa pagina. Per quanto riguarda il versante software si faccia riferimento al file &amp;quot;README.md&amp;quot; di cui sopra.&lt;br /&gt;
&lt;br /&gt;
== Eseguire codice ==&lt;br /&gt;
&lt;br /&gt;
Quando la scheda viene avviata in modalità &amp;quot;flash&amp;quot; (si veda a sezione &amp;quot;Boot pin&amp;quot;) è possibile accedere al REPL di MicroPython attraverso una porta seriale fornita direttamente dalla porta USB.&lt;br /&gt;
&lt;br /&gt;
 $ screen /dev/ttyACM0 115200&lt;br /&gt;
 MicroPython v1.10-194-g41e7ad647 on 2019-03-11; F4DIYMORE with STM32F407&lt;br /&gt;
 Type &amp;quot;help()&amp;quot; for more information.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dalla stessa porta USB e con la scheda avviata con la stessa modalità è anche possibile accedere alla memoria flash del microcontrollore, dentro la quale si possono copiare i file &amp;quot;.py&amp;quot; da far eseguire a MicroPython.&lt;br /&gt;
&lt;br /&gt;
 $ pmount /dev/sdb1&lt;br /&gt;
 $ ls /media/sdb1/&lt;br /&gt;
 README.txt  boot.py  main.py  pybcdc.inf&lt;br /&gt;
&lt;br /&gt;
= Frosted =&lt;br /&gt;
&lt;br /&gt;
[https://github.com/insane-adding-machines/frosted Frosted] è un sistema opertivo libero e conforme a POSIX per sistemi integrati. Può risultare interessante a chi preferirebbe programmare questa board usando C pittosto che Micropython. La conformità a POSIX rende il porting di applicazioni sulla piattaforma relativamente semplice. Frosted di suo fornisce anche MicroPython, il supporto però è limitato.&lt;br /&gt;
La scheda &amp;quot;STM32-407 DIY-MORE&amp;quot; è supportata da Frosted e maggiori informazioni possono essere trovate nel relativo [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 commit] sul github del progetto.&lt;br /&gt;
&lt;br /&gt;
= Note finali =&lt;br /&gt;
Si tenga presente che questa scheda è poco documentata e supportata. È molto economica rispetto alle alternative, ma non è detto che le procedure descritte in questa pagina funzioneranno correttamente nel presente o nel futuro. Tutto ciò che è stato scritto è frutto di sperimentazioni ed &amp;quot;hackeraggi&amp;quot; da considerare assolutamente inaffidabili.&lt;br /&gt;
&lt;br /&gt;
= Link e risorse utili = &lt;br /&gt;
* [http://dubstylee.net/v/diy-more-stm32f407vgt6/ DIY More STM32F407VGT6 ボード] Pagina di un blog in giapponese che contiene alcune informazioni utili sulla scheda tra cui lo schema elettrico.&lt;br /&gt;
* [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 Added support for STM32-F407 DIYMORE from diymore.cc] Commit di supporto della scheda su Frosted.&lt;br /&gt;
* [https://www.carminenoviello.com/it/2015/08/11/compilare-micropython-una-scheda-stm32nucleo-f4/ Compilare micropython per una scheda STM32Nucleo-F4] Guia sulla compilazione di MicroPython in italiano.&lt;/div&gt;</summary>
		<author><name>Aggaz</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6843</id>
		<title>STM32-407 DIY-MORE</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6843"/>
		<updated>2019-03-11T13:34:00Z</updated>

		<summary type="html">&lt;p&gt;Aggaz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduzione =&lt;br /&gt;
&lt;br /&gt;
La scheda “STM32-407” prodotta da “DIY MORE” è una &amp;quot;development board&amp;quot; oscura ed economica. Si può ordinare dalla Cina per pochi euro ma sono poche le informazioni che si possono trovare in rete. È una scheda piuttosto minimale e può essere considerata come una &amp;quot;breakout board&amp;quot; del microcontrollore STM32F407. Questo microcontrollore è abbastanza comune ed usato anche in altre schede, di conseguenza è possibile utilizzare la &amp;quot;STM32-407 DIY-MORE&amp;quot; con Micropython. Inoltre questa stessa scheda è anche supportata da [https://github.com/insane-adding-machines/frosted Frosted].&lt;br /&gt;
&lt;br /&gt;
= La scheda =&lt;br /&gt;
&lt;br /&gt;
Oltre al microcontrollore stesso la scheda fornisce:&lt;br /&gt;
* una porta USB micro B;&lt;br /&gt;
* 2 pulsanti (uno di reset ed uno programmabile);&lt;br /&gt;
* 2 led (uno di accensione ed uno programmabile);&lt;br /&gt;
* 92 pin (inclusi quelli di alimentazione);&lt;br /&gt;
* svariati componenti accessori necessari al corretto funzionamento del microcontrollore. &lt;br /&gt;
&lt;br /&gt;
== Pulsanti ==&lt;br /&gt;
&lt;br /&gt;
Il pulsante vicino la porta USB ha una funzione di &amp;quot;reset&amp;quot;. L'altro pulsante invece è programmabile ed è configurato in &amp;quot;pull-up&amp;quot; al pin PD15 con una resistenza da 10kΩ.&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
&lt;br /&gt;
LED1, situato vicino la porta USB, è utilizzato per segnalare lo stato di alimentazione. LED2 è programmabile ed è collegato al pin PE0 da una resistenza da 1kΩ. Il pin abbassato equivale ad un LED acceso.&lt;br /&gt;
&lt;br /&gt;
== Boot pin ==&lt;br /&gt;
&lt;br /&gt;
La scheda è provvista di due &amp;quot;boot pin&amp;quot; la cui configurazione all'accensione determina lo stato del microcontrollore. I pin si trovano in un angolo sul lato opposto rispetto alla porta USB e sono denominati &amp;quot;BOOT0&amp;quot; e &amp;quot;BOOT1&amp;quot;. Entrambi sono in una configurazione normalmente &amp;quot;up&amp;quot; e sono adiacenti a dei pin collegati a massa. Pertanto si può facilmente controllare lo stato di questi pin per mezzo di un &amp;quot;jumper&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Come mostrato nella tabella in basso, sono tre le configurazioni utili che si possono ottenere dalle combinazioni degli stati dei due &amp;quot;boot pin&amp;quot;:&lt;br /&gt;
* In modalità &amp;quot;Flash&amp;quot;, assumendo che MicroPython sia correttamente installato, è possibile montare la memoria flash del microcontrollore via USB per copiare i file degli script da eseguire. Allo stesso tempo è anche possibile accedere alla &amp;quot;REPL&amp;quot; di MicroPython attraverso una porta seriale fornita dalla stessa porta USB (la quale utilizza i pin PA11 e PA12);&lt;br /&gt;
* In modalità DFU è possibile programmare il microcontrollore e caricare il firmware. Questa è la modalità che viene generalmente usata per caricare MicroPython nel microcontrollore;&lt;br /&gt;
* La modalità SRAM non l'ho mai usata ed onestamente non so a cosa serve.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin BOOT0''' || '''Pin BOOT1''' || '''Modalità'''&lt;br /&gt;
|-&lt;br /&gt;
|   Giù || Su/Giù || Flash&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Giù || DFU&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Su || SRAM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ST-LINK ==&lt;br /&gt;
&lt;br /&gt;
La scheda di per sé è priva di un dispositivo ST-LINK per la programmazione, ma un dispositivo di questo tipo può essere collegato utilizzando il seguente schema.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin della scheda''' || '''Pin ST-LINK'''&lt;br /&gt;
|-&lt;br /&gt;
|   PA13 || SWDIO&lt;br /&gt;
|-&lt;br /&gt;
|   PA14 || SWCLK&lt;br /&gt;
|-&lt;br /&gt;
|   3v3 || 3v3&lt;br /&gt;
|-&lt;br /&gt;
|   GND || GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pin degni di nota ==&lt;br /&gt;
&lt;br /&gt;
I pin della scheda corrispondono ai pin del microcontrollore STM32F407. Si può consultare il datasheet del componente per conoscere le funzionalità speciali dei vari pin (UART, I2C, SPI, eccetera). Ad ogni modo bisogna tenere in considerazione alcune peculiarità dell'implementazione della scheda:&lt;br /&gt;
&lt;br /&gt;
* PD15 è collegato in &amp;quot;pull-up&amp;quot; al pulsante.&lt;br /&gt;
&lt;br /&gt;
* PE0 è collegato al LED2 (Pin abbassato equivale a LED acceso).&lt;br /&gt;
&lt;br /&gt;
* PA11 e PA12 sono usati dalla porta USB. Sebbene corrispondano anche ai pin CTS ed RTS della UART1, è meglio non usarli se si vuole usare la porta USB.&lt;br /&gt;
&lt;br /&gt;
* Altre informazioni sui pin possono essere lette nel file &amp;quot;mpconfigboard.h&amp;quot; riportato più in basso.&lt;br /&gt;
&lt;br /&gt;
= Micropython =&lt;br /&gt;
&lt;br /&gt;
Per utilizzare correttamente questa scheda è necessario compilare manualmente il codice di MicroPython. Inoltre è necessario impostare delle configurazioni ad-hoc per poter gestire in maniera corretta la mappatura dei &amp;quot;pin&amp;quot;. Di seguito sono esposti i passaggi per compiere questa operazione su un sistema GNU/Linux. Si assume che il sistema del lettore sia  già configurato per l'utilizzo di &amp;quot;git&amp;quot; e la &amp;quot;cross-compilazione&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Ottenere MicroPython  ==&lt;br /&gt;
&lt;br /&gt;
 $ git clone &amp;quot;https://github.com/micropython/micropython.git&amp;quot;&lt;br /&gt;
 $ git submodule update --init&lt;br /&gt;
&lt;br /&gt;
== Aggiungere la configurazione per la scheda  ==&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/ports/stm32/boards/&lt;br /&gt;
 $ cp -R STM32F4DISC STM32F4DIYMORE&lt;br /&gt;
 $ cd STM32F4DIYMORE&lt;br /&gt;
 $ rm staccel.py&lt;br /&gt;
&lt;br /&gt;
Sostituire il contenuto del file &amp;quot;mpconfigboard.h&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 #define MICROPY_HW_BOARD_NAME       &amp;quot;F4DIYMORE&amp;quot;&lt;br /&gt;
 #define MICROPY_HW_MCU_NAME         &amp;quot;STM32F407&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_HAS_SWITCH       (1)&lt;br /&gt;
 #define MICROPY_HW_HAS_FLASH        (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RNG       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RTC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_DAC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_USB       (1)&lt;br /&gt;
 &lt;br /&gt;
 // HSE is 8MHz&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLM (8)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLN (336)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV2)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLQ (7)&lt;br /&gt;
 &lt;br /&gt;
 // UART config&lt;br /&gt;
 //PA11 and PA12 pins are used by USB&lt;br /&gt;
 //#define MICROPY_HW_UART1_TX     (pin_A9)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RX     (pin_A10)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RTS    (pin_A12)&lt;br /&gt;
 //#define MICROPY_HW_UART1_CTS    (pin_A11)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART2_TX     (pin_A2)&lt;br /&gt;
 #define MICROPY_HW_UART2_RX     (pin_A3)&lt;br /&gt;
 #define MICROPY_HW_UART2_RTS    (pin_A1)&lt;br /&gt;
 #define MICROPY_HW_UART2_CTS    (pin_A0)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART3_TX     (pin_D8)&lt;br /&gt;
 #define MICROPY_HW_UART3_RX     (pin_D9)&lt;br /&gt;
 #define MICROPY_HW_UART3_RTS    (pin_D12)&lt;br /&gt;
 #define MICROPY_HW_UART3_CTS    (pin_D11)&lt;br /&gt;
 &lt;br /&gt;
 //PA0 and PA1 pins are used by UART2&lt;br /&gt;
 //#define MICROPY_HW_UART4_TX     (pin_A0)&lt;br /&gt;
 //#define MICROPY_HW_UART4_RX     (pin_A1)&lt;br /&gt;
 &lt;br /&gt;
 //I do not really need it&lt;br /&gt;
 //#define MICROPY_HW_UART6_TX     (pin_C6)&lt;br /&gt;
 //#define MICROPY_HW_UART6_RX     (pin_C7)&lt;br /&gt;
 &lt;br /&gt;
 // I2C busses&lt;br /&gt;
 #define MICROPY_HW_I2C1_SCL (pin_B6)&lt;br /&gt;
 #define MICROPY_HW_I2C1_SDA (pin_B7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_I2C2_SCL (pin_B10)&lt;br /&gt;
 #define MICROPY_HW_I2C2_SDA (pin_B11)&lt;br /&gt;
 &lt;br /&gt;
 // SPI busses&lt;br /&gt;
 #define MICROPY_HW_SPI1_NSS  (pin_A4)&lt;br /&gt;
 #define MICROPY_HW_SPI1_SCK  (pin_A5)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MISO (pin_A6)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MOSI (pin_A7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_SPI2_NSS  (pin_B12)&lt;br /&gt;
 #define MICROPY_HW_SPI2_SCK  (pin_B13)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MISO (pin_B14)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MOSI (pin_B15)&lt;br /&gt;
 &lt;br /&gt;
 // CAN busses&lt;br /&gt;
 //#define MICROPY_HW_CAN1_TX (pin_B9)&lt;br /&gt;
 //#define MICROPY_HW_CAN1_RX (pin_B8)&lt;br /&gt;
 &lt;br /&gt;
 //PB12 and PB13 pins are used by SPI2&lt;br /&gt;
 //#define MICROPY_HW_CAN2_TX (pin_B13)&lt;br /&gt;
 //#define MICROPY_HW_CAN2_RX (pin_B12)&lt;br /&gt;
 &lt;br /&gt;
 // USRSW is pulled up. Pressing the button makes the input go low.&lt;br /&gt;
 #define MICROPY_HW_USRSW_PIN        (pin_D15)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PULL       (GPIO_PULLUP)&lt;br /&gt;
 #define MICROPY_HW_USRSW_EXTI_MODE  (GPIO_MODE_IT_FALLING)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PRESSED    (0)&lt;br /&gt;
 &lt;br /&gt;
 // LEDs&lt;br /&gt;
 #define MICROPY_HW_LED_INVERTED     (1) // LEDs are on when pin is driven low&lt;br /&gt;
 #define MICROPY_HW_LED1             (pin_E0)&lt;br /&gt;
 #define MICROPY_HW_LED_ON(pin)      (mp_hal_pin_low(pin))&lt;br /&gt;
 #define MICROPY_HW_LED_OFF(pin)     (mp_hal_pin_high(pin))&lt;br /&gt;
 &lt;br /&gt;
 // USB config&lt;br /&gt;
 #define MICROPY_HW_USB_FS              (1)&lt;br /&gt;
 &lt;br /&gt;
 // Show IDLE on UART1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL        PYB_UART_1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL_BAUD   115200&lt;br /&gt;
 &lt;br /&gt;
Sostituire il contenuto del file &amp;quot;pins.csv&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 PA0,PA0&lt;br /&gt;
 PA1,PA1&lt;br /&gt;
 PA2,PA2&lt;br /&gt;
 PA3,PA3&lt;br /&gt;
 PA4,PA4&lt;br /&gt;
 PA5,PA5&lt;br /&gt;
 PA6,PA6&lt;br /&gt;
 PA7,PA7&lt;br /&gt;
 PA8,PA8&lt;br /&gt;
 PA9,PA9&lt;br /&gt;
 PA10,PA10&lt;br /&gt;
 PA11,PA11&lt;br /&gt;
 PA12,PA12&lt;br /&gt;
 PA13,PA13&lt;br /&gt;
 PA14,PA14&lt;br /&gt;
 PA15,PA15&lt;br /&gt;
 PB0,PB0&lt;br /&gt;
 PB1,PB1&lt;br /&gt;
 PB2,PB2&lt;br /&gt;
 PB3,PB3&lt;br /&gt;
 PB4,PB4&lt;br /&gt;
 PB5,PB5&lt;br /&gt;
 PB6,PB6&lt;br /&gt;
 PB7,PB7&lt;br /&gt;
 PB8,PB8&lt;br /&gt;
 PB9,PB9&lt;br /&gt;
 PB10,PB10&lt;br /&gt;
 PB11,PB11&lt;br /&gt;
 PB12,PB12&lt;br /&gt;
 PB13,PB13&lt;br /&gt;
 PB14,PB14&lt;br /&gt;
 PB15,PB15&lt;br /&gt;
 PC0,PC0&lt;br /&gt;
 PC1,PC1&lt;br /&gt;
 PC2,PC2&lt;br /&gt;
 PC3,PC3&lt;br /&gt;
 PC4,PC4&lt;br /&gt;
 PC5,PC5&lt;br /&gt;
 PC6,PC6&lt;br /&gt;
 PC7,PC7&lt;br /&gt;
 PC8,PC8&lt;br /&gt;
 PC9,PC9&lt;br /&gt;
 PC10,PC10&lt;br /&gt;
 PC11,PC11&lt;br /&gt;
 PC12,PC12&lt;br /&gt;
 PC13,PC13&lt;br /&gt;
 PD0,PD0&lt;br /&gt;
 PD1,PD1&lt;br /&gt;
 PD2,PD2&lt;br /&gt;
 PD3,PD3&lt;br /&gt;
 PD4,PD4&lt;br /&gt;
 PD5,PD5&lt;br /&gt;
 PD6,PD6&lt;br /&gt;
 PD7,PD7&lt;br /&gt;
 PD8,PD8&lt;br /&gt;
 PD9,PD9&lt;br /&gt;
 PD10,PD10&lt;br /&gt;
 PD11,PD11&lt;br /&gt;
 PD12,PD12&lt;br /&gt;
 PD13,PD13&lt;br /&gt;
 PD14,PD14&lt;br /&gt;
 PD15,PD15&lt;br /&gt;
 PE0,PE0&lt;br /&gt;
 PE1,PE1&lt;br /&gt;
 PE2,PE2&lt;br /&gt;
 PE3,PE3&lt;br /&gt;
 PE4,PE4&lt;br /&gt;
 PE5,PE5&lt;br /&gt;
 PE6,PE6&lt;br /&gt;
 PE7,PE7&lt;br /&gt;
 PE8,PE8&lt;br /&gt;
 PE9,PE9&lt;br /&gt;
 PE10,PE10&lt;br /&gt;
 PE11,PE11&lt;br /&gt;
 PE12,PE12&lt;br /&gt;
 PE13,PE13&lt;br /&gt;
 PE14,PE14&lt;br /&gt;
 PE15,PE15&lt;br /&gt;
 LED,PE0&lt;br /&gt;
 SW,PD15&lt;br /&gt;
&lt;br /&gt;
== Compilare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per istruzioni di compilazione dettagliate si faccia riferimento al file:&lt;br /&gt;
&lt;br /&gt;
 micropython/ports/stm32/README.md&lt;br /&gt;
&lt;br /&gt;
In breve, di seguito i comandi necessari per compilare MicroPython usando la configurazione esposta precedentemente.&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/&lt;br /&gt;
 $ make -C mpy-cross&lt;br /&gt;
 $ cd micropython/ports/stm32/&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE&lt;br /&gt;
&lt;br /&gt;
== Installare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware sulla scheda impostarla in modalità &amp;quot;DFU&amp;quot; prima di accenderla. Poi collearla al computer via USB. In un sistema GNU/Linux sarà possibile verificare che la scheda sia effettivamente in modalità DFU con il comamndo:&lt;br /&gt;
&lt;br /&gt;
 $ lsusb&lt;br /&gt;
 Bus 002 Device 005: ID 0483:df11 STMicroelectronics STM Device in DFU Mode&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware:&lt;br /&gt;
&lt;br /&gt;
 # apt install python3-usb&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE deploy&lt;br /&gt;
&lt;br /&gt;
Se si dispone di un adattatore ST-LINK esterno (la scheda di per sé ne è sprovvista) questo si può utilizzare per la programmazione del firmware in alternativa alla modalità DFU. La corretta configurazione dei pin è stata già mostrata nella sezione dedicata all'hardware di questa pagina. Per quanto riguarda il versante software si faccia riferimento al file &amp;quot;README.md&amp;quot; di cui sopra.&lt;br /&gt;
&lt;br /&gt;
== Eseguire codice ==&lt;br /&gt;
&lt;br /&gt;
Quando la scheda viene avviata in modalità &amp;quot;flash&amp;quot; (si veda a sezione &amp;quot;Boot pin&amp;quot;) è possibile accedere al REPL di MicroPython attraverso una porta seriale fornita direttamente dalla porta USB.&lt;br /&gt;
&lt;br /&gt;
 $ screen /dev/ttyACM0 115200&lt;br /&gt;
 MicroPython v1.10-194-g41e7ad647 on 2019-03-11; F4DIYMORE with STM32F407&lt;br /&gt;
 Type &amp;quot;help()&amp;quot; for more information.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dalla stessa porta USB e con la scheda avviata con la stessa modalità è anche possibile accedere alla memoria flash del microcontrollore, dentro la quale si possono copiare i file &amp;quot;.py&amp;quot; da far eseguire a MicroPython.&lt;br /&gt;
&lt;br /&gt;
 $ pmount /dev/sdb1&lt;br /&gt;
 $ ls /media/sdb1/&lt;br /&gt;
 README.txt  boot.py  main.py  pybcdc.inf&lt;br /&gt;
&lt;br /&gt;
= Frosted =&lt;br /&gt;
&lt;br /&gt;
[https://github.com/insane-adding-machines/frosted Frosted] è un sistema opertivo libero e conforme a POSIX per sistemi integrati. Può risultare interessante a chi preferirebbe programmare questa board usando C pittosto che Micropython. La conformità a POSIX rende il porting di applicazioni sulla piattaforma relativamente semplice. Frosted di suo fornisce anche MicroPython, il supporto però è limitato.&lt;br /&gt;
La scheda &amp;quot;STM32-407 DIY-MORE&amp;quot; è supportata da Frosted e maggiori informazioni possono essere trovate nel relativo [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 commit] sul github del progetto.&lt;br /&gt;
&lt;br /&gt;
= Link e risorse utili = &lt;br /&gt;
* [http://dubstylee.net/v/diy-more-stm32f407vgt6/ DIY More STM32F407VGT6 ボード] Pagina di un blog in giapponese che contiene alcune informazioni utili sulla scheda tra cui lo schema elettrico.&lt;br /&gt;
* [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 Added support for STM32-F407 DIYMORE from diymore.cc] Commit di supporto della scheda su Frosted.&lt;br /&gt;
* [https://www.carminenoviello.com/it/2015/08/11/compilare-micropython-una-scheda-stm32nucleo-f4/ Compilare micropython per una scheda STM32Nucleo-F4] Guia sulla compilazione di MicroPython in italiano.&lt;br /&gt;
&lt;br /&gt;
= Note finali =&lt;br /&gt;
Si tenga presente che questa scheda è poco documentata e supportata. È molto economica rispetto alle alternative, ma non è detto che le procedure descritte in questa pagina funzioneranno correttamente nel presente o nel futuro. Tutto ciò che è stato scritto è frutto di sperimentazioni ed &amp;quot;hackeraggi&amp;quot; da considerare assolutamente inaffidabili.&lt;/div&gt;</summary>
		<author><name>Aggaz</name></author>
	</entry>
	<entry>
		<id>https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6842</id>
		<title>STM32-407 DIY-MORE</title>
		<link rel="alternate" type="text/html" href="https://www.raspibo.org/wiki/index.php?title=STM32-407_DIY-MORE&amp;diff=6842"/>
		<updated>2019-03-11T13:31:14Z</updated>

		<summary type="html">&lt;p&gt;Aggaz: Creata pagina con '= Introduzione =  La scheda “STM32-407” prodotta da “DIY MORE” è una &amp;quot;development board&amp;quot; oscura ed economica. Si può ordinare dalla Cina per pochi euro ma sono poche...'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduzione =&lt;br /&gt;
&lt;br /&gt;
La scheda “STM32-407” prodotta da “DIY MORE” è una &amp;quot;development board&amp;quot; oscura ed economica. Si può ordinare dalla Cina per pochi euro ma sono poche le informazioni che si possono trovare in rete. È una scheda piuttosto minimale e può essere considerata come una &amp;quot;breakout board&amp;quot; del microcontrollore STM32F407. Questo microcontrollore è abbastanza comune ed usato anche in altre schede, di conseguenza è possibile utilizzare la &amp;quot;STM32-407 DIY-MORE&amp;quot; con Micropython. Inoltre questa stessa scheda è anche supportata da [https://github.com/insane-adding-machines/frosted Frosted].&lt;br /&gt;
&lt;br /&gt;
= La scheda =&lt;br /&gt;
&lt;br /&gt;
Oltre al microcontrollore stesso la scheda fornisce:&lt;br /&gt;
* una porta USB micro B;&lt;br /&gt;
* 2 pulsanti (uno di reset ed uno programmabile);&lt;br /&gt;
* 2 led (uno di accensione ed uno programmabile);&lt;br /&gt;
* 92 pin (inclusi quelli di alimentazione);&lt;br /&gt;
* svariati componenti accessori necessari al corretto funzionamento del microcontrollore. &lt;br /&gt;
&lt;br /&gt;
== Pulsanti ==&lt;br /&gt;
&lt;br /&gt;
Il pulsante vicino la porta USB ha una funzione di &amp;quot;reset&amp;quot;. L'altro pulsante invece è programmabile ed è configurato in &amp;quot;pull-up&amp;quot; al pin PD15 con una resistenza da 10kΩ.&lt;br /&gt;
&lt;br /&gt;
== LED ==&lt;br /&gt;
&lt;br /&gt;
LED1, situato vicino la porta USB, è utilizzato per segnalare lo stato di alimentazione. LED2 è programmabile ed è collegato al pin PE0 da una resistenza da 1kΩ. Il pin abbassato equivale ad un LED acceso.&lt;br /&gt;
&lt;br /&gt;
== Boot pin ==&lt;br /&gt;
&lt;br /&gt;
La scheda è provvista di due &amp;quot;boot pin&amp;quot; la cui configurazione all'accensione determina lo stato del microcontrollore. I pin si trovano in un angolo sul lato opposto rispetto alla porta USB e sono denominati &amp;quot;BOOT0&amp;quot; e &amp;quot;BOOT1&amp;quot;. Entrambi sono in una configurazione normalmente &amp;quot;up&amp;quot; e sono adiacenti a dei pin collegati a massa. Pertanto si può facilmente controllare lo stato di questi pin per mezzo di un &amp;quot;jumper&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Come mostrato nella tabella in basso, sono tre le configurazioni utili che si possono ottenere dalle combinazioni degli stati dei due &amp;quot;boot pin&amp;quot;:&lt;br /&gt;
* In modalità &amp;quot;Flash&amp;quot;, assumendo che MicroPython sia correttamente installato, è possibile montare la memoria flash del microcontrollore via USB per copiare i file degli script da eseguire. Allo stesso tempo è anche possibile accedere alla &amp;quot;REPL&amp;quot; di MicroPython attraverso una porta seriale fornita dalla stessa porta USB (la quale utilizza i pin PA11 e PA12);&lt;br /&gt;
* In modalità DFU è possibile programmare il microcontrollore e caricare il firmware. Questa è la modalità che viene generalmente usata per caricare MicroPython nel microcontrollore;&lt;br /&gt;
* La modalità SRAM non l'ho mai usata ed onestamente non so a cosa serve.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin BOOT0''' || '''Pin BOOT1''' || '''Modalità'''&lt;br /&gt;
|-&lt;br /&gt;
|   Giù || Su/Giù || Flash&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Giù || DFU&lt;br /&gt;
|-&lt;br /&gt;
|   Su || Su || SRAM&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ST-LINK ==&lt;br /&gt;
&lt;br /&gt;
La scheda di per sé è priva di un dispositivo ST-LINK per la programmazione, ma un dispositivo di questo tipo può essere collegato utilizzando il seguente schema.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|  '''Pin della scheda''' || '''Pin ST-LINK'''&lt;br /&gt;
|-&lt;br /&gt;
|   PA13 || SWDIO&lt;br /&gt;
|-&lt;br /&gt;
|   PA14 || SWCLK&lt;br /&gt;
|-&lt;br /&gt;
|   3v3 || 3v3&lt;br /&gt;
|-&lt;br /&gt;
|   GND || GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Pin degni di nota ==&lt;br /&gt;
&lt;br /&gt;
I pin della scheda corrispondono ai pin del microcontrollore STM32F407. Si può consultare il datasheet del componente per conoscere le funzionalità speciali dei vari pin (UART, I2C, SPI, eccetera). Ad ogni modo bisogna tenere in considerazione alcune peculiarità dell'implementazione della scheda:&lt;br /&gt;
&lt;br /&gt;
* PD15 è collegato in &amp;quot;pull-up&amp;quot; al pulsante.&lt;br /&gt;
&lt;br /&gt;
* PE0 è collegato al LED2 (Pin abbassato equivale a LED acceso).&lt;br /&gt;
&lt;br /&gt;
* PA11 e PA12 sono usati dalla porta USB. Sebbene corrispondano anche ai pin CTS ed RTS della UART1, è meglio non usarli se si vuole usare la porta USB.&lt;br /&gt;
&lt;br /&gt;
* Altre informazioni sui pin possono essere lette nel file &amp;quot;mpconfigboard.h&amp;quot; riportato più in basso.&lt;br /&gt;
&lt;br /&gt;
= Micropython =&lt;br /&gt;
&lt;br /&gt;
Per utilizzare correttamente questa scheda è necessario compilare manualmente il codice di MicroPython. Inoltre è necessario impostare delle configurazioni ad-hoc per poter gestire in maniera corretta la mappatura dei &amp;quot;pin&amp;quot;. Di seguito sono esposti i passaggi per compiere questa operazione su un sistema GNU/Linux. Si assume che il sistema del lettore sia  già configurato per l'utilizzo di &amp;quot;git&amp;quot; e la &amp;quot;cross-compilazione&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Ottenere MicroPython  ==&lt;br /&gt;
&lt;br /&gt;
 $ git clone &amp;quot;https://github.com/micropython/micropython.git&amp;quot;&lt;br /&gt;
 $ git submodule update --init&lt;br /&gt;
&lt;br /&gt;
== Aggiungere la configurazione per la scheda  ==&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/ports/stm32/boards/&lt;br /&gt;
 $ cp -R STM32F4DISC STM32F4DIYMORE&lt;br /&gt;
 $ cd STM32F4DIYMORE&lt;br /&gt;
 $ rm staccel.py&lt;br /&gt;
&lt;br /&gt;
Sostituire il contenuto del file &amp;quot;mpconfigboard.h&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 #define MICROPY_HW_BOARD_NAME       &amp;quot;F4DIYMORE&amp;quot;&lt;br /&gt;
 #define MICROPY_HW_MCU_NAME         &amp;quot;STM32F407&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_HAS_SWITCH       (1)&lt;br /&gt;
 #define MICROPY_HW_HAS_FLASH        (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RNG       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_RTC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_DAC       (1)&lt;br /&gt;
 #define MICROPY_HW_ENABLE_USB       (1)&lt;br /&gt;
 &lt;br /&gt;
 // HSE is 8MHz&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLM (8)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLN (336)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV2)&lt;br /&gt;
 #define MICROPY_HW_CLK_PLLQ (7)&lt;br /&gt;
 &lt;br /&gt;
 // UART config&lt;br /&gt;
 //PA11 and PA12 pins are used by USB&lt;br /&gt;
 //#define MICROPY_HW_UART1_TX     (pin_A9)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RX     (pin_A10)&lt;br /&gt;
 //#define MICROPY_HW_UART1_RTS    (pin_A12)&lt;br /&gt;
 //#define MICROPY_HW_UART1_CTS    (pin_A11)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART2_TX     (pin_A2)&lt;br /&gt;
 #define MICROPY_HW_UART2_RX     (pin_A3)&lt;br /&gt;
 #define MICROPY_HW_UART2_RTS    (pin_A1)&lt;br /&gt;
 #define MICROPY_HW_UART2_CTS    (pin_A0)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_UART3_TX     (pin_D8)&lt;br /&gt;
 #define MICROPY_HW_UART3_RX     (pin_D9)&lt;br /&gt;
 #define MICROPY_HW_UART3_RTS    (pin_D12)&lt;br /&gt;
 #define MICROPY_HW_UART3_CTS    (pin_D11)&lt;br /&gt;
 &lt;br /&gt;
 //PA0 and PA1 pins are used by UART2&lt;br /&gt;
 //#define MICROPY_HW_UART4_TX     (pin_A0)&lt;br /&gt;
 //#define MICROPY_HW_UART4_RX     (pin_A1)&lt;br /&gt;
 &lt;br /&gt;
 //I do not really need it&lt;br /&gt;
 //#define MICROPY_HW_UART6_TX     (pin_C6)&lt;br /&gt;
 //#define MICROPY_HW_UART6_RX     (pin_C7)&lt;br /&gt;
 &lt;br /&gt;
 // I2C busses&lt;br /&gt;
 #define MICROPY_HW_I2C1_SCL (pin_B6)&lt;br /&gt;
 #define MICROPY_HW_I2C1_SDA (pin_B7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_I2C2_SCL (pin_B10)&lt;br /&gt;
 #define MICROPY_HW_I2C2_SDA (pin_B11)&lt;br /&gt;
 &lt;br /&gt;
 // SPI busses&lt;br /&gt;
 #define MICROPY_HW_SPI1_NSS  (pin_A4)&lt;br /&gt;
 #define MICROPY_HW_SPI1_SCK  (pin_A5)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MISO (pin_A6)&lt;br /&gt;
 #define MICROPY_HW_SPI1_MOSI (pin_A7)&lt;br /&gt;
 &lt;br /&gt;
 #define MICROPY_HW_SPI2_NSS  (pin_B12)&lt;br /&gt;
 #define MICROPY_HW_SPI2_SCK  (pin_B13)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MISO (pin_B14)&lt;br /&gt;
 #define MICROPY_HW_SPI2_MOSI (pin_B15)&lt;br /&gt;
 &lt;br /&gt;
 // CAN busses&lt;br /&gt;
 //#define MICROPY_HW_CAN1_TX (pin_B9)&lt;br /&gt;
 //#define MICROPY_HW_CAN1_RX (pin_B8)&lt;br /&gt;
 &lt;br /&gt;
 //PB12 and PB13 pins are used by SPI2&lt;br /&gt;
 //#define MICROPY_HW_CAN2_TX (pin_B13)&lt;br /&gt;
 //#define MICROPY_HW_CAN2_RX (pin_B12)&lt;br /&gt;
 &lt;br /&gt;
 // USRSW is pulled up. Pressing the button makes the input go low.&lt;br /&gt;
 #define MICROPY_HW_USRSW_PIN        (pin_D15)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PULL       (GPIO_PULLUP)&lt;br /&gt;
 #define MICROPY_HW_USRSW_EXTI_MODE  (GPIO_MODE_IT_FALLING)&lt;br /&gt;
 #define MICROPY_HW_USRSW_PRESSED    (0)&lt;br /&gt;
 &lt;br /&gt;
 // LEDs&lt;br /&gt;
 #define MICROPY_HW_LED_INVERTED     (1) // LEDs are on when pin is driven low&lt;br /&gt;
 #define MICROPY_HW_LED1             (pin_E0)&lt;br /&gt;
 #define MICROPY_HW_LED_ON(pin)      (mp_hal_pin_low(pin))&lt;br /&gt;
 #define MICROPY_HW_LED_OFF(pin)     (mp_hal_pin_high(pin))&lt;br /&gt;
 &lt;br /&gt;
 // USB config&lt;br /&gt;
 #define MICROPY_HW_USB_FS              (1)&lt;br /&gt;
 &lt;br /&gt;
 // Show IDLE on UART1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL        PYB_UART_1&lt;br /&gt;
 //#define MICROPY_HW_UART_REPL_BAUD   115200&lt;br /&gt;
 &lt;br /&gt;
Sostituire il contenuto del file &amp;quot;pins.csv&amp;quot; con:&lt;br /&gt;
&lt;br /&gt;
 PA0,PA0&lt;br /&gt;
 PA1,PA1&lt;br /&gt;
 PA2,PA2&lt;br /&gt;
 PA3,PA3&lt;br /&gt;
 PA4,PA4&lt;br /&gt;
 PA5,PA5&lt;br /&gt;
 PA6,PA6&lt;br /&gt;
 PA7,PA7&lt;br /&gt;
 PA8,PA8&lt;br /&gt;
 PA9,PA9&lt;br /&gt;
 PA10,PA10&lt;br /&gt;
 PA11,PA11&lt;br /&gt;
 PA12,PA12&lt;br /&gt;
 PA13,PA13&lt;br /&gt;
 PA14,PA14&lt;br /&gt;
 PA15,PA15&lt;br /&gt;
 PB0,PB0&lt;br /&gt;
 PB1,PB1&lt;br /&gt;
 PB2,PB2&lt;br /&gt;
 PB3,PB3&lt;br /&gt;
 PB4,PB4&lt;br /&gt;
 PB5,PB5&lt;br /&gt;
 PB6,PB6&lt;br /&gt;
 PB7,PB7&lt;br /&gt;
 PB8,PB8&lt;br /&gt;
 PB9,PB9&lt;br /&gt;
 PB10,PB10&lt;br /&gt;
 PB11,PB11&lt;br /&gt;
 PB12,PB12&lt;br /&gt;
 PB13,PB13&lt;br /&gt;
 PB14,PB14&lt;br /&gt;
 PB15,PB15&lt;br /&gt;
 PC0,PC0&lt;br /&gt;
 PC1,PC1&lt;br /&gt;
 PC2,PC2&lt;br /&gt;
 PC3,PC3&lt;br /&gt;
 PC4,PC4&lt;br /&gt;
 PC5,PC5&lt;br /&gt;
 PC6,PC6&lt;br /&gt;
 PC7,PC7&lt;br /&gt;
 PC8,PC8&lt;br /&gt;
 PC9,PC9&lt;br /&gt;
 PC10,PC10&lt;br /&gt;
 PC11,PC11&lt;br /&gt;
 PC12,PC12&lt;br /&gt;
 PC13,PC13&lt;br /&gt;
 PD0,PD0&lt;br /&gt;
 PD1,PD1&lt;br /&gt;
 PD2,PD2&lt;br /&gt;
 PD3,PD3&lt;br /&gt;
 PD4,PD4&lt;br /&gt;
 PD5,PD5&lt;br /&gt;
 PD6,PD6&lt;br /&gt;
 PD7,PD7&lt;br /&gt;
 PD8,PD8&lt;br /&gt;
 PD9,PD9&lt;br /&gt;
 PD10,PD10&lt;br /&gt;
 PD11,PD11&lt;br /&gt;
 PD12,PD12&lt;br /&gt;
 PD13,PD13&lt;br /&gt;
 PD14,PD14&lt;br /&gt;
 PD15,PD15&lt;br /&gt;
 PE0,PE0&lt;br /&gt;
 PE1,PE1&lt;br /&gt;
 PE2,PE2&lt;br /&gt;
 PE3,PE3&lt;br /&gt;
 PE4,PE4&lt;br /&gt;
 PE5,PE5&lt;br /&gt;
 PE6,PE6&lt;br /&gt;
 PE7,PE7&lt;br /&gt;
 PE8,PE8&lt;br /&gt;
 PE9,PE9&lt;br /&gt;
 PE10,PE10&lt;br /&gt;
 PE11,PE11&lt;br /&gt;
 PE12,PE12&lt;br /&gt;
 PE13,PE13&lt;br /&gt;
 PE14,PE14&lt;br /&gt;
 PE15,PE15&lt;br /&gt;
 LED,PE0&lt;br /&gt;
 SW,PD15&lt;br /&gt;
&lt;br /&gt;
== Compilare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per istruzioni di compilazione dettagliate si faccia riferimento al file:&lt;br /&gt;
&lt;br /&gt;
 micropython/ports/stm32/README.md&lt;br /&gt;
&lt;br /&gt;
In breve, di seguito i comandi necessari per compilare MicroPython usando la configurazione esposta precedentemente.&lt;br /&gt;
&lt;br /&gt;
 $ cd micropython/&lt;br /&gt;
 $ make -C mpy-cross&lt;br /&gt;
 $ cd micropython/ports/stm32/&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE&lt;br /&gt;
&lt;br /&gt;
== Installare MicroPython ==&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware sulla scheda impostarla in modalità &amp;quot;DFU&amp;quot; prima di accenderla. Poi collearla al computer via USB. In un sistema GNU/Linux sarà possibile verificare che la scheda sia effettivamente in modalità DFU con il comamndo:&lt;br /&gt;
&lt;br /&gt;
 $ lsusb&lt;br /&gt;
 Bus 002 Device 005: ID 0483:df11 STMicroelectronics STM Device in DFU Mode&lt;br /&gt;
&lt;br /&gt;
Per caricare il firmware:&lt;br /&gt;
&lt;br /&gt;
 # apt install python3-usb&lt;br /&gt;
 $ make BOARD=STM32F4DIYMORE deploy&lt;br /&gt;
&lt;br /&gt;
Se si dispone di un adattatore ST-LINK esterno (la scheda di per sé ne è sprovvista) questo si può utilizzare per la programmazione del firmware in alternativa alla modalità DFU. La corretta configurazione dei pin è stata già mostrata nella sezione dedicata all'hardware di questa pagina. Per quanto riguarda il versante software si faccia riferimento al file &amp;quot;README.md&amp;quot; di cui sopra.&lt;br /&gt;
&lt;br /&gt;
== Eseguire codice ==&lt;br /&gt;
&lt;br /&gt;
Quando la scheda viene avviata in modalità &amp;quot;flash&amp;quot; (si veda a sezione &amp;quot;Boot pin&amp;quot;) è possibile accedere al REPL di MicroPython attraverso una porta seriale fornita direttamente dalla porta USB.&lt;br /&gt;
&lt;br /&gt;
 $ screen /dev/ttyACM0 115200&lt;br /&gt;
 MicroPython v1.10-194-g41e7ad647 on 2019-03-11; F4DIYMORE with STM32F407&lt;br /&gt;
 Type &amp;quot;help()&amp;quot; for more information.&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Dalla stessa porta USB e con la scheda avviata con la stessa modalità è anche possibile accedere alla memoria flash del microcontrollore, dentro la quale si possono copiare i file &amp;quot;.py&amp;quot; da far eseguire a MicroPython.&lt;br /&gt;
&lt;br /&gt;
 $ pmount /dev/sdb1&lt;br /&gt;
 $ ls /media/sdb1/&lt;br /&gt;
 README.txt  boot.py  main.py  pybcdc.inf&lt;br /&gt;
&lt;br /&gt;
= Frosted =&lt;br /&gt;
&lt;br /&gt;
[https://github.com/insane-adding-machines/frosted Frosted] è un sistema opertivo libero e conforme a POSIX per sistemi integrati. Può risultare interessante a chi preferirebbe programmare questa board usando C pittosto che Micropython. La conformità a POSIX rende il porting di applicazioni sulla piattaforma relativamente semplice. Frosted di suo fornisce anche MicroPython, il supporto però è limitato.&lt;br /&gt;
La scheda &amp;quot;STM32-407 DIY-MORE&amp;quot; è supportata da Frosted e maggiori informazioni possono essere trovate nel relativo [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 commit] sul github del progetto.&lt;br /&gt;
&lt;br /&gt;
= Link e risorse utili = &lt;br /&gt;
* [http://dubstylee.net/v/diy-more-stm32f407vgt6/ DIY More STM32F407VGT6 ボード] Pagina di un blog in giapponese che contiene alcune informazioni utili sulla scheda tra cui lo schema elettrico.&lt;br /&gt;
* [https://github.com/insane-adding-machines/frosted/commit/856b2ffa62573f7f27c3e17adef4635fdfc6aef4 Added support for STM32-F407 DIYMORE from diymore.cc] Commit di supporto della scheda su Frosted.&lt;br /&gt;
* [https://www.carminenoviello.com/it/2015/08/11/compilare-micropython-una-scheda-stm32nucleo-f4/ Compilare micropython per una scheda STM32Nucleo-F4] Guia sulla compilazione di MicroPython in italiano.&lt;/div&gt;</summary>
		<author><name>Aggaz</name></author>
	</entry>
</feed>