In questa pagina ESP8266 è utilizzato come master SPI; verrà utilizzata la versione "hardware" di SPI .
L'obbiettivo è analizzare i segnali trasmessi e ricevuto utilizzando un oscilloscopio dotato di almeno 4 canali e strumenti di decodifica dei segnali seriali, per esempio Picoscope 3405A o 2205A MSO, entrambi prodotti da Pico Technology. Per chi non dispone di tale strumento, in questa pagina sono presenti alcuni esempi.
Se volete utilizzare Arduino: Laboratorio SPI
Per questa prima attività ci servirà solo ESP8266 che useremo come master, senza collegare alcuna periferica: ci limiteremo ad osservare e decodificare con l'oscilloscopio i segnali MOSI, CLK e SS durante la trasmissione di un byte.
Il software farà uso delle librerie SPI:
Il byte letto da SPI.transfer() è casuale, non essendoci nessun segnale collegato a MISO.
L'immagine seguente è stata ottenuta usando tre ingressi digitali (D1, D2, D3) del Picoscope 2205A MSO; dal basso:
In questa attività verrà usato un sensore di temperatura e pressione piuttosto diffuso: BMP280. Questo sensore è dotato sia di interfaccia SPI che I2C; qui utilizzeremo la prima modalità di interfacciamento. Per usare invece I2C: Laboratorio I2C.
A causa delle dimensioni molto piccole è necessario utilizzare una breakout board, cioè un piccolo circuito stampato adatto al collegamento alla breadboard, spesso contenente anche componenti di supporto. La fotografia di apertura mostra una possibile realizzazione e qui sotto è mostrato lo schema della breakout board utilizzata (nota 1):
L'hardware da realizzare è piuttosto semplice. I collegamenti necessari sono:
Il primo codice da scrivere deve verificare che il chip sia funzionante e che sia davvero un BMP280; quest'ultima informazione è contenuta nel registro "id", come descritta alla pagina 24 dei fogli tecnici.
Il seguente diagramma temporale mostra i segnali generati per leggere il registro "id"; i colori mostrati sono gli stessi dei fili: dall'altro CSB, SCK, MISO e MOSI. Si noti la necessità di leggere/scrivere due byte: il primo con cui ESP8266 chiede di lettura del registro "id", il secondo con cui BMP2866 trasmette il contenuto del registro:
La lettura dei valori di temperatura e pressione è piuttosto complessa a causa della presenza all'interno del sensore di numerosi parametri di calibrazione, diversi per ciascun componenti.
La procedura dettagliata, tutt'altro che semplice, è descritta nei fogli tecnici di BMP280 (paragrafi 3.11), insieme a numerosi esempi di codice adatti per processori a 8, 32 e 64 bit (paragrafo 3.12 e appendici).
La libreria qui usata è, tra le tante, quella di Adafruit Industries. In particolare potrebbe essere un buon punto di partenza bmp280test.ino. Occorre impostare l'interfaccia SPI hardware e definire i pin effettivamente utilizzati:
Di seguito il diagramma temporale durante l'esecuzione del codice:
Pagina creata nell'aprile 2023
Ultima modifica: 29 aprile 2023
Appunti scolastici - Versione 0.1026 - Agosto 2024
Copyright 2012-2024, Vincenzo Villa (https://www.vincenzov.net)
Creative Commons | Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)