ESP32 SPI souci

Bonjour. (Sur une carte molex ESP32 EVB) Je fais le petit programme suivant pour tester ma sortie SPI

#include <Arduino.h>
#include <SPI.h>

const int MOSI_PIN = 13; // GPIO13
const int MISO_PIN = 12; // GPIO12
const int SCK_PIN = 14;  // GPIO14

void setup() {
  // initialise la communication SPI
  SPI.begin(SCK_PIN, MISO_PIN, MOSI_PIN);
  SPI.setClockDivider(SPI_CLOCK_DIV32); // vitesse de transmission de 8MHz
  Serial.begin(38400);
  // met la pin MOSI en mode de sortie
  pinMode(MOSI_PIN, OUTPUT);
  digitalWrite (MOSI_PIN, HIGH);
  delay(4000);
  digitalWrite (MOSI_PIN, LOW);
  delay(4000);
}

void loop() {
  // envoie la valeur 128
  SPI.transfer(128);
  Serial.println("Sent");
  // attend une seconde
  delay(1000);
}

ALors j'ai mis ma MOSI à 1 avant d'envoyer quelque chose pour voir à l'oscillo si j'ai bien mon niveau haut et c'est OK
Ensuite j'ai bien un signal d'horloge sur mon Rigol mais rien sur le MOSI (GPIO13)....
Un peu d'aide bienvenue....
Hervé

Il faut peut-être définir une pin SS , pour toi la 15.
Voir ici

Bonjour lesept,
Je ne me sert pas du SS pour mon application. J'ai pu voir que ce n'était pas obligatoire.
J'ai quand même essayé de configurer cette pin, pour voir, mais je n'ai pas de changement.
Merci toutefois....

As-tu lu le site que j'ai mis en lien ?
As-tu essayé de mettre ceci dans le setup :

  Serial.print("MOSI: ");  Serial.println(MOSI);
  Serial.print("MISO: ");  Serial.println(MISO);
  Serial.print("SCK: ");  Serial.println(SCK);
  Serial.print("SS: ");  Serial.println(SS); 

Je ne vois pas cette ligne dans ton code :

#include <Wire.h>

Bonjour @F1SLU

En complément du lien donné par @lesept voici une information prise à la source , chez Espressif, concernant le 'core' ESP32

https://docs.espressif.com/projects/arduino-esp32/en/latest/api/spi.html

On y voir comment déclarer du SPI aileurs que sur les GPIO probablement définis par défaut pour la carte que tu utilises

Carte , dis-tu, "molex ESP32 EVB" qu'il serait bon d'identifier avec précision
Molex étant une grande marque de connecteurs en tout genre ça n'aide pas beaucoup.... aurais tu confondu avec Oimex ? ça sonne à peu près pareil :wink:

S'il s'agit dune carte Olimex ESP32 EVB t'es tu assuré sur son schéma de la totale disponibilité totale de tous les GPIO que tu cherches à utiliser ? elle parait bien garnie cette carte, en particilier pour le SPI....
image

Bonjour al1fch,

OUI OUI c'est OLIMEX..... pfouuu j'suis fatigué !
OK pour ton lien qui est peu en chinois pour le newbie que je suis....

@lesept
Aors j'ai ajouté ces lignes de code et.... Bien que je déclare vouloir mettre le MOSI sur la GPIO13 il me la trouve sur la GPIO2 !!! ???
``Serial port COM13 opened
MOSI: 2
MISO: 15
SCK: 14
SS: 17
Sent
Sent
Sent
Serial port COM13 closed
Serial port COM13 opened
MOSI: 2
MISO: 15
SCK: 14
SS: 17
Sent
Sent
Serial port COM13 closed

J'ai ajouté, la 2éme fois l'include wire.h
pas de changement

wire est relatif au bus I2C

Bien que je déclare vouloir mettre le MOSI sur la GPIO13 il me la trouve sur la GPIO2

Quelque chose dans ta déclaration ne lui va pas, il reste donc à la configuration par défaut définie dans un fichier fourni à Espressif par Olimex pour cette carte de son cru

OUPS j'avais fait un truc "pas clair" j'ai recommencé et
MOSI: 13
MISO: 12
SCK: 14
SS: 15
c'est bon sur ce qui s'affiche mais toujours rien à l'oscilloscope. (la clock est présente mais aucune data sur ma GPIO13) (rappel celle-ci est forcée à 1 puis 0 dans le setup et jusque là, ca va...)

Les lignes en question ne font qu'afficher des constantes définies dans le fichier pins_arduino.h associé au choix de la carte ESP32_EVB.
Même si tu affectes d'autres pin au SPI ces valeurs ne changeront pas.

Bien vu @fdufnews !

Je ne sais pas si tu as le droit de manipuler le GPIO après avoir initialisé le SPI.
Utilises SS pour synchroniser ton oscillo.

Bonjour fdufnews,

OK.... Ca marche là !
Bon il aime pas qu'on le manipule après avoir été initialisé, alors j'ai retiré mes "forcages" et voilà...

MERCI les gars !

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.