chipKIT™ uC32 : 512KB per applicazioni web-based. Nel palmo di una mano.
Di recente la Digilent ha introdotto due nuove schede nella linea chipKIT™ : il chipKIT uC32™ e il chipKIT WiFi Shield™. In questo articolo mi occuperò del primo, un prossimo articolo riguarderà la scheda di espansione WiFi.
Il chipKIT uC32™ è una scheda di sviluppo Arduino-compatibile che si colloca giusto a metà strada tra il chipKIT UNO32™ (recensione) e il chipKIT MAX32™ (recensione): stesso form-factor (uguale a quello di Arduino UNO™), compattezza e semplicità d’uso del primo ma con una potenza di elaborazione pari al secondo.
Il chipKIT uC32™ è, in parole povere, una versione potenziata del chipKIT UNO32™ : la scheda è la stessa ma è stato utilizzato un picmicro più potente, abbiamo così disponibili il doppio della memoria RAM (32KB contro i 16KB del chipKIT UNO32™) e il quadruplo della memoria programma (ben 512KB!). Con un piccolo costo aggiuntivo rispetto all’UNO32 possiamo in pratica utilizzare l’ uC32 per applicazioni che richiedono un ingente quantitativo di memoria programma quali appunto la creazione di server web (non a caso è stato presentato insieme al WiFi Shield).
Indice dei contenuti
Programmazione chipKIT uC32™
E’ possibile programmare il chipKIT uC32™ con MPIDE, l’ambiente di programmazione Arduino-Compatibile, utilizzando quindi lo stesso linguaggio di Arduino e una semplice connessione USB sfruttando il bootloader, oppure alla “maniera classica” con MPLAB IDE, il compilatore MPLAB C compiler for PIC32 MCUs e un programmatore compatibile ICSP (richiesto almeno il PICkit3).
La Digilent ha di recente introdotto un programmatore Low-Cost pensato soprattutto per i prodotti chipKIT e comunque utilizzabile solo con dispositivi funzionanti a 3.3V, che si integra in MPLAB IDE ed MPLAB X: il chipKIT PGM
L’ultima versione di MPIDE la si scarica, come sempre, a questo link. Dopo aver connesso il chipKIT uC32™ al pc tramite il cavetto USB, viene riconosciuta una nuova porta seriale (sulla scheda è montato un convertitore USB/UART della FTDI collegato alla UART1). Da MPIDE dobbiamo quindi selezionare la porta COM creata dal chipKIT™ e quindi anche la scheda corretta dal menù Tools -> Board:
Jumpers
Per mantenere la compatibilità con Arduino e i suoi Shields e per sfruttare le potenzialità aggiuntive offerte dal chipKIT™ rispetto ad Arduino, vi sono alcuni jumpers con cui prendere confidenza:
JP2: consente di bypassare il regolatore di tensione a 5V (NCP1117 che ha una tensione di dropout di 1.2V) incluso sulla scheda quando alimentiamo dal connettore a barile J4. In posizione BYP la scheda deve essere alimentata necessariamente da una sorgente che fornisca 5V (il regolatore viene escluso). In posizione REG, il regolatore viene abilitato ed è possibile alimentare la scheda con una sorgente esterna che abbia una tensione da 7 a 15V. L’assorbimento tipico della scheda è di circa 75mA. Sull’ingresso di JP2 è presente un diodo contro l’inversione di polarità, per cui considerando la caduta di tensione indotta dal diodo e la tensione di dropout del regolatore, con il regolatore attivo non è possibile applicare meno di 7V. Ad ogni modo sulla scheda è sempre presente un secondo regolatore a 3.3V (MCP1725), che non viene mai disabilitato, per il funzionamento della MCU.
In realtà con il regolatore disabilitato non è proprio necessario applicare una tensione di 5V in quanto la MCU viene sempre e comunque alimentata attraverso il regolatore da 3.3V: è possibile applicare una tensione massima di 6V ma bisogna ricordare che poi tale tensione sarà presente anche sul pin indicato come 5V (evidenziato in figura).
JP4: configura il pin n°10 (evidenziato in figura) per essere utilizzato come uscita PWM (jumper verso sinistra come nella figura) o come SSI (Slave Select Input) quando la scheda viene utilizzata come dispositivo SPI Slave (jumper verso destra). In pratica sul pin n°10, collegando il jumper verso sinistra viene collegato il pin RD4 (a cui fa capo il modulo OC5), collegandolo verso destra viene collegato il pin RG9 (a cui fa capo la funzione SS2).
JP5/JP7: servono per configurare il modulo SPI come Master (Jumpers verso l’alto come in figura) o come Slave (jumpers verso il basso). Il modulo SPI utilizzato è sempre il 2.
JP6/JP8: Configurano i pin A4 e A5 (evidenziati nella figura) come ingressi analogici (jumpers verso l’alto come in figura) o come pin per l’I2C (jumpers verso il basso), in questo caso abbiamo SDA su A4 e SCL su A5 (come su Arduino). Il modulo I2C utilizzato è l’1. Mettendo i jumper verso l’alto vengono connessi all’header i pins analogici 4 e 5 (che sul pic sono, rispettivamente, RB12/AN12 e RB14/AN14). Mettendo i jumper verso il basso vengono connessi rispettivamente i pins RG3/SDA1 e RG2/SCL1.
Ulteriori informazioni sono disponibili sul manuale di utilizzo nella pagina ufficiale sul sito della Digilent. Per il resto valgono tutte le considerazioni già fatte per il chipKIT UNO32™.
Compatibilità con i dispositivi/shields a 5V
Come già detto negli articoli precedenti riguardanti il chipKIT UNO32™ e il chipKIT MAX32™, tutti i pin del chipKIT sono 5V-tolerant, quindi è possibile applicare degli shield funzionanti a 5V senza problemi (ma bisogna sempre controllare la lista degli shield compatibili). Anche i pin analogici riescono a tollerare la tensione di 5V dal momento che sono state inserite delle resistenze di protezione e diodi di clamping, ma la tensione massima letta dal modulo A/D è sempre 3.3V, per cui il modulo A/D, oltre i 3.3V leggerà sempre il massimo valore, per cui non è una scelta intelligente utilizzare sensori analogici operanti a 5V.
Comparativa schede chipKIT™
chipKIT Uno32™ | chipKIT uC32™ | chipKIT Max32™ | |
---|---|---|---|
MCU | PIC32MX320F128 | PIC32MX340F512H | PIC32MX795F512 |
Frequenza | 80MHz | 80MHz | 80MHz |
Memoria Flash | 128KB | 512KB | 512KB |
Memoria RAM | 16KB | 32KB | 128KB |
IO disponibili | 42 | 42 | 83 |
Ingressi analogici | 12 | 12 | 16 |
Moduli OC (pwm) | 5: pins 3(OC1), 5(OC2), 6(OC3), 9(OC4), 10(OC5) | 5: pins 3(OC1), 5(OC2), 6(OC3), 9(OC4), 10(OC5) | 5: pins 3(OC1), 5(OC2), 6(OC3), 9(OC4), 10(OC5) |
UART | 2: UART (RX:pin0, TX:pin1) UART2 (RX:pin39, TX:pin40) | 2: UART (RX:pin0, TX:pin1) UART2 (RX:pin39, TX:pin40) | 4: UART0 (RX:pin0, TX:pin1) UART1 (RX:pin19, TX:pin18) UART2 (RX:pin17, TX:pin16) UART3 (RX:pin15, TX:pin14) |
Periferiche avanzate | RTCC interno (dopo montaggio di X2) | RTCC interno (dopo montaggio di X2) | USB OTG 10/100 Ethernet MAC 2 controller CAN RTCC interno (dopo montaggio di X2) |
Link documentazione | chipKIT Uno32™ | chipKIT uC32™ | chipKIT Max32™ |
Link acquisto | Mirifica - chipKIT Uno32™ | Mirifica - chipKIT uC32™ | Mirifica - chipKIT Max32™ |
Galleria fotografica chipKIT uC32™