Bonjour,
Est ce que quelqu’un sait, quel GPIO il faut utiliser pour activer le VBUS 5v pour l’USB host sur la carte Waveshare ESP32-P4 Module dev-kit ?
j’ai un programme qui compile et qui fonctionne, que le bus est bien activé et détecté, mais lorsque que je branche par exemple un clavier, il ne s’allume pas au démarrage,
Les produits de waveshare ne sont pas très bien documentés.
exemple de code arduino
#include "Arduino.h"
#include "usb/usb_host.h"
#include "esp_private/usb_phy.h"
// On déclare le handle du PHY globalement
usb_phy_handle_t phy_hdl = NULL;
void setup() {
// On utilise Serial0 (le port marqué UART sur la carte)
// Assure-toi que "USB CDC On Boot" est sur DISABLED dans l'IDE
Serial0.begin(115200);
delay(2000);
Serial0.println("\n--- uTerm2-S : Initialisation USB Host ---");
// 1. Configuration du Matériel USB (PHY)
// On force le mode Host au niveau du silicium, c'est la méthode la plus sûre
usb_phy_config_t phy_config = {
.controller = USB_PHY_CTRL_OTG,
.target = USB_PHY_TARGET_INT,
.otg_mode = USB_OTG_MODE_HOST,
.otg_speed = USB_PHY_SPEED_FULL, // Vitesse standard pour un clavier
};
esp_err_t phy_err = usb_new_phy(&phy_config, &phy_hdl);
if (phy_err == ESP_OK) {
Serial0.println("PHY : OK (Mode Host configuré)");
} else {
Serial0.printf("PHY Erreur : 0x%x\n", phy_err);
}
// 2. Installation de la pile logicielle USB Host
const usb_host_config_t host_config = {
.skip_phy_setup = true, // On a déjà fait le setup manuellement juste au-dessus
.intr_flags = ESP_INTR_FLAG_LEVEL1,
};
esp_err_t host_err = usb_host_install(&host_config);
if (host_err == ESP_OK) {
Serial0.println("Pile USB Host : SUCCES");
Serial0.println("En attente de connexion du clavier...");
} else {
Serial0.printf("Pile USB Erreur : 0x%x\n", host_err);
}
}
void loop() {
uint32_t event_flags;
// Cette fonction doit tourner en boucle pour gérer les événements USB
usb_host_lib_handle_events(1, &event_flags);
}
Merci de votre aide.