L'application de la puissance LCD à puissance réglable basée sur l'ASIC DWIN T5L

——Partagé depuis DWIN Froum

En utilisant la puce DWIN T5L1 comme noyau de contrôle de l'ensemble de la machine, reçoit et traite le toucher, l'acquisition ADC, les informations de contrôle PWM et pilote l'écran LCD de 3,5 pouces pour afficher l'état actuel en temps réel. Prend en charge le réglage tactile à distance de la luminosité de la source de lumière LED via le module WiFi et prend en charge l'alarme vocale.

Caractéristiques du programme :

1. Adoptez la puce T5L pour fonctionner à haute fréquence, l'échantillonnage analogique AD est stable et l'erreur est faible;

2. Supporte le TYPE C directement connecté au PC pour le débogage et la gravure de programmes ;

3. Prise en charge de l'interface principale du système d'exploitation à grande vitesse, port parallèle 16 bits ; Port PWM principal de l'interface utilisateur, sortie du port AD, conception d'application à faible coût, pas besoin d'ajouter un MCU supplémentaire ;

4. Prise en charge du WiFi, de la télécommande Bluetooth ;

5. Prise en charge d'une tension large de 5 à 12 V CC et d'une entrée à large plage.

image1

1.1 Schéma de principe

image2

1.2 Carte PCB

image3

1.3Interface utilisateur

Honte introduction:

(1)Conception du circuit matériel

image4

1.4 Schéma de circuit T5L48320C035

1. Alimentation logique MCU 3,3 V : C18, C26, C27, C28, C29, C31, C32, C33 ;

2. Alimentation de base MCU 1,25 V : C23, C24 ;

3. Alimentation analogique MCU 3,3 V : C35 est l'alimentation analogique pour MCU. Lors de la composition, la masse principale de 1,25 V et la masse logique peuvent être combinées, mais la masse analogique doit être séparée. La masse analogique et la masse numérique doivent être collectées au pôle négatif du grand condensateur de sortie LDO, et le pôle positif analogique doit également être collecté au pôle positif du grand condensateur LDO, afin que le bruit d'échantillonnage AD soit minimisé.

4. Circuit d'acquisition de signal analogique AD : CP1 est le condensateur de filtre d'entrée analogique AD. Afin de réduire l'erreur d'échantillonnage, la masse analogique et la masse numérique du MCU sont séparées indépendamment. Le pôle négatif du CP1 doit être connecté à la masse analogique du MCU avec une impédance minimale, et les deux condensateurs parallèles de l'oscillateur à cristal sont connectés à la masse analogique du MCU.

5. Circuit du buzzer : C25 est le condensateur d’alimentation du buzzer. Le buzzer est un dispositif inductif et il y aura un courant de pointe pendant le fonctionnement. Afin de réduire le pic, il est nécessaire de réduire le courant de commande MOS du buzzer pour faire fonctionner le tube MOS dans la région linéaire, et de concevoir le circuit pour le faire fonctionner en mode commutation. Notez que R18 doit être connecté en parallèle aux deux extrémités du buzzer pour ajuster la qualité sonore du buzzer et rendre le son clair et agréable.

6. circuit WiFi: échantillonnage de puce WiFi ESP32-C, avec WiFi + Bluetooth + BLE. Sur le câblage, la masse d'alimentation RF et la masse du signal sont séparées.

image5

1.5 Conception de circuits Wi-Fi

Dans la figure ci-dessus, la partie supérieure du revêtement de cuivre constitue la boucle de terre de puissance. La boucle de masse de réflexion de l'antenne WiFi doit avoir une grande surface par rapport à la masse d'alimentation, et le point de collecte de la masse d'alimentation est le pôle négatif de C6. Un courant réfléchi doit être fourni entre la masse d'alimentation et l'antenne WiFi, il doit donc y avoir un revêtement de cuivre sous l'antenne WiFi. La longueur du revêtement de cuivre dépasse la longueur d'extension de l'antenne WiFi, et l'extension augmentera la sensibilité du WiFi ; point au pôle négatif de C2. Une grande surface de cuivre peut protéger le bruit causé par le rayonnement de l'antenne WiFi. Les 2 masses en cuivre sont séparées sur la couche inférieure et collectées vers le plot central de l'ESP32-C via des vias. La masse d'alimentation RF nécessite une impédance inférieure à celle de la boucle de masse du signal, il y a donc 6 vias entre la masse d'alimentation et la puce pour garantir une impédance suffisamment faible. La boucle de masse de l'oscillateur à cristal ne peut pas être traversée par de la puissance RF, sinon l'oscillateur à cristal générera une gigue de fréquence et le décalage de fréquence WiFi ne pourra pas envoyer et recevoir de données.

7. Circuit d'alimentation LED de rétroéclairage : échantillonnage de puce de pilote SOT23-6LED. L'alimentation DC/DC de la LED forme indépendamment une boucle et la masse DC/DC est connectée à la masse LOD 3,3 V. Étant donné que le noyau du port PWM2 a été spécialisé, il produit un signal PWM de 600 K et un RC est ajouté pour utiliser la sortie PWM comme contrôle ON/OFF.

8. Plage d'entrée de tension : deux abaisseurs DC/DC sont conçus. Notez que les résistances R13 et R17 du circuit DC/DC ne peuvent pas être omises. Les deux puces DC/DC prennent en charge une entrée jusqu'à 18 V, ce qui est pratique pour une alimentation externe.

9. port de débogage USB TYPE C : le TYPE C peut être branché et débranché en avant et en arrière. L'insertion avant communique avec la puce WIFI ESP32-C pour programmer la puce WIFI ; l'insertion inversée communique avec le XR21V1410IL16 pour programmer le T5L. Le TYPE C prend en charge l'alimentation 5 V.

10. Communication par port parallèle : le noyau du système d'exploitation T5L dispose de nombreux ports IO gratuits et une communication par port parallèle 16 bits peut être conçue. Combiné avec le protocole de port parallèle ST ARM FMC, il prend en charge la lecture et l'écriture synchrones.

11. Conception d'interface haute vitesse LCM RVB : la sortie T5L RVB est directement connectée au LCM RVB, et une résistance tampon est ajoutée au milieu pour réduire les interférences d'ondulation de l'eau LCM. Lors du câblage, réduisez la longueur de la connexion de l'interface RVB, en particulier le signal PCLK, et augmentez les points de test PCLK, HS, VS, DE de l'interface RVB ; le port SPI de l'écran est connecté aux ports P2.4 ~ P2.7 du T5L, ce qui est pratique pour concevoir le pilote d'écran. Diriger les points de test RST, nCS, SDA, SCI pour faciliter le développement du logiciel sous-jacent.

(2) Interface DGUS

image6 image7

1.6 Contrôle de l'affichage des variables de données

(3) Système d'exploitation
//———————————Format de lecture et d'écriture DGUS
structure typedef
{
adresse u16 ; //Adresse variable UI 16 bits
u8 dateLen; //longueur des données de 8 bits
u8 *pBuf; //pointeur de données 8 bits
} UI_packTypeDef; // DGUS lit et écrit des paquets

//——————————-contrôle d'affichage des variables de données
structure typedef
{
u16 PV;
u16X;
u16 ans ;
u16 Couleur ;
u8 Lib_ID;
u8 Taille de police ;
u8 Alignement ;
u8 NuméroInt ;
u8 DecNum ;
Type u8 ;
u8 LenUint;
u8 StringUinit[11];
} Number_spTypeDef; // structure de description des variables de données

structure typedef
{
Number_spTypeDef sp; //définit le pointeur de description du SP
UI_packTypeDef spPack ; //définir le package de lecture et d'écriture DGUS de la variable SP
UI_packTypeDef vpPack ; //définir le package de lecture et d'écriture de la variable vp DGUS
} Number_HandleTypeDef; // structure des variables de données

Avec la définition de handle de variable de données précédente. Ensuite, définissez une variable pour l'affichage de l'échantillonnage de tension :
Number_HandleTypeDef Hsample;
u16 échantillon_tension ;

Tout d’abord, exécutez la fonction d’initialisation
NumberSP_Init(&Hsample,voltage_sample,0×8000); //0×8000 voici le pointeur de description
//——Variable de données montrant l'initialisation de la structure du pointeur SP——
void NumberSP_Init (Number_HandleTypeDef *numéro,u8 *valeur, u16 numberAddr)
{
numéro->spPack.addr = numéroAddr;
nombre->spPack.datLen = sizeof(nombre->sp);
numéro->spPack.pBuf = (u8 *)&numéro->sp;
        
Read_Dgus(&numéro->spPack);
numéro->vpPack.addr = numéro->sp.VP;
switch(number->sp.Type) //La longueur des données de la variable vp est automatiquement sélectionnée en fonction du type de variable de données conçu dans l'interface DGUS.

{
cas 0 :
cas 5 :
numéro->vpPack.datLen = 2 ;
casser;
cas 1:
cas 2 :
cas 3 :
cas 6 :
numéro->vpPack.datLen = 4 ;
cas 4 :
numéro->vpPack.datLen = 8 ;
casser;
}
numéro->vpPack.pBuf = valeur ;
}

Après initialisation, Hsample.sp est le pointeur de description de la variable de données d'échantillonnage de tension ; Hsample.spPack est le pointeur de communication entre le cœur du système d'exploitation et la variable de données d'échantillonnage de tension de l'interface utilisateur via la fonction d'interface DGUS ; Hsample.vpPack est l'attribut de modification de la variable de données d'échantillonnage de tension, telle que les couleurs de police, etc., qui sont également transmises au noyau de l'interface utilisateur via la fonction d'interface DGUS. Hsample.vpPack.addr est l'adresse de la variable de données d'échantillonnage de tension, qui a été automatiquement obtenue à partir de la fonction d'initialisation. Lorsque vous modifiez l'adresse de la variable ou le type de données variable dans l'interface DGUS, il n'est pas nécessaire de mettre à jour l'adresse de la variable dans le cœur du système d'exploitation de manière synchrone. Une fois que le cœur du système d'exploitation a calculé la variable voltage_sample, il lui suffit d'exécuter la fonction Write_Dgus(&Hsample.vpPack) pour la mettre à jour. Il n'est pas nécessaire d'emballer l'échantillon de tension pour la transmission DGUS.


Heure de publication : 15 juin 2022