Files
ESP32-C3-dualboost/include/protocol.h
nicoboy df3621365c Ajoute la liaison TMS320 (simulee), l'IHM OLED et la LED de statut
Protocole ASCII type NMEA ($T/$C avec checksum) entre l'ESP32-C3 et le
TMS320 (frequence/duty/tensions/courants/temperatures + commandes
HT/PWM1/PWM2), avec simulateur local le temps que le firmware TMS320
existe. Driver SSD1322 repointe sur les GPIO du schema, dashboard texte
3 pages tournantes sur l'ecran ER-OLEDM032-1. LED RGB embarquee (GPIO8)
clignotante 1 Hz vert 30% comme indicateur de vie. Serveur web laisse en
stub (sera branche en STA sur le reseau local une fois l'OLED valide).
Ajout de la documentation technique (schema, datasheets, protocole).
2026-08-01 15:24:59 +02:00

39 lines
1.3 KiB
C

#pragma once
#include <Arduino.h>
// Protocole ASCII de type NMEA entre l'ESP32-C3 et le TMS320.
//
// Telemetrie TMS320 -> ESP32, periodique :
// $T,FREQ1=100000,FREQ2=100000,DUTY1=45.2,DUTY2=50.0,VIN=400.5,IIN=1.20,
// V1=200.3,I1=2.50,T1=45.2,VOUT=200.1,I2=2.48,T2=44.8,IOUT=1.05*XX\n
//
// Commande ESP32 -> TMS320, a chaque changement (et rafraichissement
// periodique) :
// $C,HT=1,PWM1=1,PWM2=0*XX\n
//
// XX = XOR de tous les octets entre '$' et '*', en hexadecimal majuscule.
struct Telemetry {
float freq1 = 0; // Hz, frequence etage 1
float freq2 = 0; // Hz, frequence etage 2
float duty1 = 0; // %, duty cycle etage 1
float duty2 = 0; // %, duty cycle etage 2
float vin = 0; // V, tension entree
float iin = 0; // A, courant entree
float v1 = 0; // V, tension etage 1
float i1 = 0; // A, courant shunt mosfet 1
float t1 = 0; // C, temperature NTC etage 1
float vout = 0; // V, tension etage 2 (sortie boost)
float i2 = 0; // A, courant shunt mosfet 2
float t2 = 0; // C, temperature NTC etage 2
float iout = 0; // A, courant sortie
uint32_t lastUpdateMs = 0;
};
struct CommandState {
bool ht = false; // sortie HT activee/desactivee
bool pwm1 = false; // PWM etage 1 activee/desactivee
bool pwm2 = false; // PWM etage 2 activee/desactivee
};