Bonjour
J'aimerais simplement pouvoir communiquer entre le PC et l'ESP32 S3 (dev board avec 2 prises USB-C), mais par la prise USB de gauche, celle qui ne passe pas par un chip USB to serial pour avoir la vitesse la plus élevée possible. A priori, j'arrive à flasher mon ESP32 via cette prise, donc ce transfert doit être possible. Y a-t-il un exemple simple qui montre comment faire, SVP?
Merci
David
peut-être cela
Je regarde, merci bien de votre réponse.
Non, ça n'a pas l'air de marcher. Merci en tout cas.
David
vous avez mis cela ?
Bonsoir
Il suffit de choisir CDC On Boot Enabled avant compilation dans le menu de l'IDE et les Serial.print() sortent par la prise USB liée à l'USB natif de la puce.
C'est d'ailleurs indispensable pour les diverses cartes n'ayant pas de puce UART/USB et donc une seule embase USB.
@J-M-L Oui, j'ai copié tout le texte.
@al1fch J'essaye ça merci beaucoup. J'espère pouvoir utiliser les Serial.read() et Serial.write() sur cet USB.
David
Les premiers essais marchent (dans le sens ESP32S3 -> PC), je continuerai demain mes tests. C'est top, merci beaucoup, c'était si simple.
Le baudrate dans "Serial.begin(baudrate)" a un intérêt? J'ai pu monter à 5.000.000 sans que ça ne fasse d'erreur. Par contre, il semble que je sois limité à 64 octets à la fois.
Je ne parlais pas de copier les commentaires (ça ne sert à rien dans le code) mais de faire ce que dit le commentaire
Non vous aurez la vitesse de l’USB je pense.
Que voulez vous dire par 64 octets ?
Désolé, je n'avais pas vu que c'était un commentaire, je n'utilise que les // et /*. Alors non, je n'avais pas fait, désolé.
Que voulez vous dire par 64 octets ?
J'utilise libserialport pour envoyer/recevoir mes données sur le PC. Si je fais un "sp_blocking_write()" de plus de 64 octets, j'ai une erreur en retour.
le driver sous jacent a peut-être un buffer limité à 64 octets
Je vais me renseigner, merci à vous 2 de l'aide.
RxBufferSize (à vérifier par la pratique...)
https://docs.espressif.com/projects/arduino-esp32/en/latest/api/usb_cdc.html
En règle générale la documentation d'Espressif pour le core ESP32 est à consulter, infos de première main !
https://docs.espressif.com/projects/arduino-esp32/en/latest/
Non, mon code est le suivant:
#define SERIAL_TIMEOUT 10000
void setup()
{
Serial.begin(5000000);
while (!Serial);
Serial.setRxBufferSize(512);
Serial.setTimeout(SERIAL_TIMEOUT);
}
unsigned char mymem[256];
#define N_SEND 64
void loop() {
while (Serial.available()==0);
//unsigned int nVal=Serial.read();
int receivedBytes=Serial.readBytes(mymem, N_SEND);//nVal);
if (receivedBytes==N_SEND && Serial.available()==0)
{
bool oneerror=false;
for (int i=1;i<N_SEND;i++)
{
if (mymem[i]!=mymem[0])
{
oneerror=true;
Serial.write(0);
while (Serial.available()>0) Serial.readBytes(mymem,256);
Serial.write("R");
}
}
if (!oneerror)
{
for (int i=0;i<N_SEND;i++) Serial.write(mymem[0]);
}
}
else
{
Serial.write(0);
while (Serial.available()>0) Serial.readBytes(mymem,256);
Serial.write("R");
}
}
Donc:
- PC: envoi de 64 valeurs identiques
- ESP32: tout est vérifié et si OK, tout est renvoyé
- PC: la 45e, 46e, 47e et 48e valeurs sont systématiquement fausses, les autres sont juste.
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.