Laboratorio: SPI

ESP8266 e BMP280 SPI

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

Attività 1

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:

Trasmissione SPI di un byte

Quesiti

Attività 2

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):

Schema della scheda di breaout con BMP280

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:

Lettura del registro ID

Attività 3

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:

Note

  1. I nomi dei pin fanno riferimento a quanto indicato sui fogli tecnici. Esistono varianti dello schema che possono includere anche i circuiti per permettere il funzionamento con alimentazione a 5 V


Pagina creata nell'aprile 2023
Ultima modifica: 29 aprile 2023


Licenza "Creative Commons" - Attribuzione-Condividi allo stesso modo 3.0 Unported


Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima