ho un grave problema per quanto riguarda la libreria Wire sull'IDE di Arduino.
Ho provato un semplice programma dove tramite la libreria Wire mi scrive e legge
su una EEPROM I2C esterna (24LC512) ed il tutto funziona.
Il problema si è posto quando sono passato sul microcontrollore STM32F103C8T6 denominato Blue Pill.
Tale controllore ha due porte I2C e non saprei come cambiare la porta come si fa sulle seriali.
Questa è la documentazione che ho trovato al riguardo:
La documentazione mi spiega perfettamente come fare e mi dice di richiamare la funzione Wire.h
Però mi sono posto che non è la stessa libreria utilizzata in Arduino e su questo link:
Ho scaricato il pacchetto e come scritto l'ho inserito nella cartella
"Disco Rigido/Programmi/Arduino/HardWare" come spiegato.
Poi il punto 3 dice : "Installa Arduino Zero dal gestore della scheda per il compilatore arm-none-eabi-gcc"
Adesso sto eseguendo il punto 3 che non lo avevo eseguito.
Quando nel progetto ho aggiunto la libreria Wire.h mi ha aggiunto 3 funzioni diverse e quindi questo sta a dire che la libreria è stata aggiornata con le funzioni per STM32 ?
Perchè non avendo eseguito il punto 3 della documentazione mi da un errore di compilazione generico.
E chiedevo se secondo voi installando il compilatore arm-none-eabi-gcc come descritto l'errore sparisce.
Qualcuno si è imbattuto in questo ? Qualcuno conosce altre librerie i2c con pin modificabili SDA, SCL ?
Allora la comunicazione tra STM32 Blue Pille ed EEPROM 24LC512 o 256 l'ho risolta.
Soluzione:
dovevo mettere le resistenze di pullup da 3.3K perche tale micro le sue sono troppo alte e le transizioni di alto basso nel filo SDA non vengono calcolate.
ULTIMO PROBLEMA :
Io cercando, ho persino trovato un'altro utente penso inglse sempre su questo che forum di Arduino
Non mai avuto problemi ha praticamente tutto UPLOAD via seriale FTDI ecc velocità di clock ecc ma
per quanto riguarda la libreria Wire() sto ancora cercando un modo per usare la seconda porta i2c...
Con questo pacchetto il tutto funziona ma c'è un grave problema di compilazione
quando uso la funzione shiftOut() e forse anche altre...
L'errore che mi da è al quanto noto ma al quanto generale e non so come posso risolverlo :
ERRORE : collect2.exe: error: ld returned 1 exit status
Adesso in questo momento ho trovato un'altro pacchetto di supporto della STM32duino
che è la versione più recente:
Anche questo ha delle funzioni come Wire.setSDA() / setSCL() ma rispetto agli altri non posso programmare la scheda STM32 Blue Pill perchè non supporta il caricamento seriale nativo nel mio caso con un classico FTDI e c'è scritto che devo scaricare STM32Programmer ecc ecc...
Che adesso proverò, tentar non nuoce...
In conclusone nessuno di questi 3 e praticamente perfetto e spero di sbagliarmi perchè se riesco a risolvere il problema con il primo pacchetto
ovvero di trovare il modo di capire come utilizzare la funzione TwoWire() per cambiare i pin della i2c 2
o risolvere il problema del secondo pacchetto che mi da l'errore di compilazione "collect2.exe: error"
Grazie ancora, adesso vado a cercare altre informazioni al riguardo...
In breve:
Una ditta che si chiamava Maple sviluppò delle schede con STM32 compatibili con arduino. Attualmente esistono dei cloni, noti come Maple Mini, che sono in vendita in Cina. Tale scheda ha un bootloader.
Maple sviluppò anche un core ma poi l'attività cessò. Il core venne scritto perché alcune librerie STM non potevano essere redistribuite.
I cinesi intanto tirarono fuori alcune schede simili alcune con il PCB blu (le Blue Pill, nome preso dal film Matrix), oggi molto comuni, altre dal PCB rosso (le Red Pill) e ultimamente con il PCB nero. Le Blue Pill sono le più diffuse nonché molto economiche.
Roger Clarck riprese il core Maple e iniziò ad aggiornarlo, contemporaneamente mise su un forum e con l'aiuto degli utenti venne fuori un core decente soprattutto con parecchie librerie.
Altri core furono in seguitop sviluppati, alcuni derivati da quello di Roger, altri totalmente indipendenti come quello di danielef.
Infine è arrivata STM che ha messo su un core prncipalmente per le schede Nucleo ma che grazie all'imput degli utenti del forum di Roger, cui alcuni impiegati STM erano iscritti, venne ampliato anche alla Blue Pill. Questo core non ha ancora tutto quanto c'è nel core di Roger, essendo nato con anni di ritardo, ma si ritiene che sia il futuro perché usa delle librerie STM più recenti e perché ha il supporto STM.
Roger non aveva più tempo per tenere dietro al forum e voleva cederlo ad STM ma non è stato possibile a causa di problemi legali dovuti al GDPR (legati ai dati degli utenti) e ha dovuto chiuderlo.
Non so se STM userà un nuovo forum o il forum che già ha.
Il link del core che hai trovato riguarda quello STM, quello di Roger è qui