Test du vocabulaire SPI et du port VSPI

publication: 16 juin 2022 / mis à jour 16 juin 2022

Read this page in english

 

Appel à collaboration

Vous développez des montages, simples ou complexes avec ESP32 et ESP32forth.

Partagez-les ici sur ce site.

ESP32forth ne pourra se développer qu'avec la collaboration active de toutes les bonnes volontés.

Vos montages peuvent aider d'autres développeurs.

Les montages des autres développeurs peuvent vous aider.

Pour proposer un article ou un montage, cliquez ici



Test du vocabulaire SPI

Après compilation et transfert de notre version ESP32forth intégrant le vocabulaire SPI, on procède au test de ce vocabulaire. Ces tests sont effectués à l'aide d'un petit oscilloscope:

la carte ESP32 avec les sondes de l'oscilloscope

Détermination des broches du port SPI

La carte ESP32 a deux ports SPI accessibles. Nous nous intéressons aux broches marquées VSPI_CS0 (G5), VSPI_CLK (G18), VSPI_MISO (G19) et VSPI_MOSI (G23). Ces bornes sont définies par des constantes:

\ define VSPI pins 
19 constant VSPI_MISO 
23 constant VSPI_MOSI 
18 constant VSPI_SCLK 
05 constant VSPI_CS 
 
\ define SPI port frequency 
40000000 constant SPI_FREQ 

Initialisation du port VSPI

La broche VSPI_CS doit être initialisée comme sortie numérique. L'état de cette broche n'est pas contrôlé par les mots du vocabulaire SPI. Voici comment est initialisé notre port VSPI:

\ select SPI vocabulary 
SPI 
 
\ initialize HSPI port 
: init.VSPI ( -- ) 
    VSPI_CS OUTPUT pinMode 
    VSPI_SCLK VSPI_MISO VSPI_MOSI VSPI_CS SPI.begin 
    SPI_FREQ SPI.setFrequency 
  ; 

Transmission d'une donnée vers le port VSPI

La transmission d'une donnée s'effectue en utilisant le mot SPI.write du nouveau vocabulaire SPI:

\ Write 8 bit data to VSPI 
: wrt8Data ( data -- ) 
  VSPI_CS LOW digitalWrite 
  SPI.write 
  VSPI_CS HIGH digitalWrite 
; 

Test du port VSPI

On termine en créant un mot testVspi. Ce mot contient une boucle qui peut être interrompue en appuyant sur une touche du clavier.

: testVspi ( -- )  
    init.VSPI 
    begin 
        80 wrt8Data 
    key? until 
    SPI.end 
  ; 

Le lancement du mot testVspi initialise le port VSPI. Dans la boucle, le code 80 wrt8Data envoie des données sur la broche MOSI (Master Out Slave in).

On teste d'abord la broche G18 VSPI_SCLK en vérifiant qu'il y a bien le signal d'horloge:

On teste ensuite le pin G23 VSPI_MOSI. On détecte la présence de la trame correspondant à la donnée transmise:

A ce stade, on considère que notre vocabulaire SPI semble opérationnel.

Les détails de chaque mot du vocabulaire SPI sont développés ici:
Définitions du vocabulaire SPI


Legal: site web personnel sans commerce / personal site without seling