—— Udostępnione przez DWIN Froum
Wykorzystując układ DWIN T5L1 jako rdzeń sterujący całej maszyny, odbiera i przetwarza dotyk, akwizycję ADC, informacje sterujące PWM i steruje 3,5-calowym ekranem LCD w celu wyświetlania aktualnego stanu w czasie rzeczywistym. Obsługuje zdalną dotykową regulację jasności źródła światła LED za pośrednictwem modułu Wi-Fi i obsługuje alarm głosowy.
Funkcje programu:
1. Zastosuj układ T5L do pracy z wysoką częstotliwością, próbkowanie analogowe AD jest stabilne, a błąd jest mały;
2. Obsługa TYPU C bezpośrednio podłączonego do komputera w celu debugowania i nagrywania programów;
3. Obsługa szybkiego interfejsu rdzenia systemu operacyjnego, 16-bitowego portu równoległego; Port PWM rdzenia interfejsu użytkownika, wyjście portu AD, niedrogi projekt aplikacji, nie ma potrzeby dodawania dodatkowego MCU;
4. Obsługa Wi-Fi, pilota Bluetooth;
5. Obsługuje szerokie napięcie 5 ~ 12 V DC i wejście szerokiego zakresu
1.1 Schemat ideowy
1.2 Płytka drukowana
1.3 Interfejs użytkownika
Wprowadzenie wstydu:
(1) Projekt obwodu sprzętowego
1.4 Schemat obwodu T5L48320C035
1. Zasilanie logiki MCU 3,3 V: C18, C26, C27, C28, C29, C31, C32, C33;
2. Zasilanie rdzenia MCU 1,25 V: C23, C24;
3. Zasilacz analogowy MCU 3,3 V: C35 to analogowy zasilacz MCU. Podczas składu uziemienie rdzenia 1,25 V i uziemienie logiczne można połączyć razem, ale masę analogową należy oddzielić. Masa analogowa i masa cyfrowa powinny być zebrane na biegunie ujemnym dużego kondensatora wyjściowego LDO, a dodatni biegun analogowy powinien być również zebrany na biegunie dodatnim dużego kondensatora LDO, aby zminimalizować szum próbkowania AD.
4. Obwód akwizycji sygnału analogowego AD: CP1 to kondensator filtra wejścia analogowego AD. Aby zmniejszyć błąd próbkowania, masa analogowa i masa cyfrowa MCU są oddzielone niezależnie. Biegun ujemny CP1 musi być podłączony do masy analogowej MCU z minimalną impedancją, a dwa równoległe kondensatory oscylatora kwarcowego są podłączone do masy analogowej MCU.
5. Obwód brzęczyka: C25 to kondensator zasilający brzęczyk. Brzęczyk jest urządzeniem indukcyjnym i podczas pracy wystąpi prąd szczytowy. Aby zmniejszyć wartość szczytową, konieczne jest zmniejszenie prądu sterującego MOS brzęczyka, aby lampa MOS działała w obszarze liniowym, i zaprojektowanie obwodu tak, aby działał w trybie przełączania. Należy pamiętać, że R18 powinien być podłączony równolegle na obu końcach brzęczyka, aby dostosować jakość dźwięku brzęczyka i sprawić, aby brzęczyk brzmiał wyraźnie i przyjemnie.
6. Obwód WiFi: próbkowanie chipa WiFi ESP32-C, z WiFi+Bluetooth+BLE. W okablowaniu masa zasilania RF i masa sygnału są oddzielone.
1.5 Projekt obwodu WiFi
Na powyższym rysunku górna część powłoki miedzianej to pętla uziemienia zasilania. Pętla uziemienia odbicia anteny WiFi musi mieć duży obszar w stosunku do masy zasilania, a punktem gromadzenia masy zasilania jest biegun ujemny C6. Pomiędzy masą zasilania a anteną Wi-Fi należy zapewnić prąd odbity, dlatego pod anteną Wi-Fi musi znajdować się miedziana powłoka. Długość powłoki miedzianej przekracza długość przedłużenia anteny Wi-Fi, a przedłużenie zwiększy czułość Wi-Fi; punkt na biegunie ujemnym C2. Duża powierzchnia miedzi może chronić przed hałasem powodowanym przez promieniowanie anteny WiFi. 2 miedziane masy są oddzielane w dolnej warstwie i zbierane przez przelotki do środkowej podkładki ESP32-C. Uziemienie zasilania RF wymaga niższej impedancji niż pętla uziemienia sygnału, dlatego istnieje 6 przelotek od uziemienia zasilania do płytki chipowej, aby zapewnić wystarczająco niską impedancję. Przez pętlę uziemienia oscylatora kwarcowego nie może przepływać moc RF, w przeciwnym razie oscylator kwarcowy będzie generował wahania częstotliwości, a przesunięcie częstotliwości Wi-Fi nie będzie w stanie wysyłać i odbierać danych.
7. Obwód zasilania diody LED podświetlenia: próbkowanie układu sterownika SOT23-6LED. Zasilanie DC/DC diody LED niezależnie tworzy pętlę, a masa DC/DC jest połączona z masą LOD 3,3 V. Ponieważ rdzeń portu PWM2 jest wyspecjalizowany, wysyła sygnał PWM o szybkości 600 tys. i dodano RC, aby wykorzystywać wyjście PWM jako sterowanie włączaniem/wyłączaniem.
8. Zakres napięcia wejściowego: zaprojektowano dwa obniżenia napięcia DC/DC. Należy pamiętać, że w obwodzie DC/DC nie można pominąć rezystorów R13 i R17. Dwa układy DC/DC obsługują napięcie wejściowe do 18 V, co jest wygodne w przypadku zewnętrznego zasilania.
9. Port debugowania USB TYPE C: TYPE C można podłączać i odłączać w przód i w tył. Wstawianie do przodu komunikuje się z chipem WIFI ESP32-C w celu zaprogramowania chipa WIFI; odwrotne wstawienie komunikuje się z XR21V1410IL16 w celu zaprogramowania T5L. TYP C obsługuje zasilanie 5 V.
10. Komunikacja przez port równoległy: rdzeń systemu operacyjnego T5L ma wiele wolnych portów IO i można zaprojektować 16-bitową komunikację przez port równoległy. W połączeniu z protokołem portu równoległego ST ARM FMC obsługuje synchroniczny odczyt i zapis.
11. Konstrukcja szybkiego interfejsu LCM RGB: wyjście T5L RGB jest bezpośrednio podłączone do LCM RGB, a rezystancja bufora jest dodawana pośrodku, aby zmniejszyć zakłócenia tętnienia wody LCM. Podczas okablowania zmniejsz długość połączenia interfejsu RGB, zwłaszcza sygnału PCLK, i zwiększ punkty testowe interfejsu RGB PCLK, HS, VS, DE; port SPI ekranu jest podłączony do portów P2.4 ~ P2.7 T5L, co jest wygodne przy projektowaniu sterownika ekranu. Wyprowadź punkty testowe RST, nCS, SDA, SCI, aby ułatwić rozwój oprogramowania bazowego.
(2) Interfejs DGUS
1.6 Sterowanie wyświetlaniem zmiennych danych
(3) System operacyjny
//———————————Format odczytu i zapisu DGUS
struktura typedef
{
adres u16; //UI 16-bitowy adres zmienny
u8 dataLen; //8-bitowa długość danych
u8 *pBuf; //8-bitowy wskaźnik danych
} UI_packTypeDef; //DGUS odczytuje i zapisuje pakiety
//——————————-sterowanie wyświetlaniem zmiennych danych
struktura typedef
{
u16 PZ;
u16 X;
u16 Y;
u16 Kolor;
u8 Lib_ID;
u8 Rozmiar czcionki;
u8 Wyrównanie;
u8 IntNum;
u8 DecNum;
u8 Typ;
u8 LenUint;
u8 StringUinit[11];
} Number_spTypeDef; //struktura opisu zmiennej danych
struktura typedef
{
Number_spTypeDef sp; //zdefiniuj wskaźnik opisu SP
UI_packTypeDef spPack; //zdefiniuj zmienną SP DGUS do odczytu i zapisu pakietu
UI_packTypeDef vpPack; //zdefiniuj zmienną vp pakietu DGUS do odczytu i zapisu
} Number_HandleTypeDef; //struktura zmiennej danych
Z poprzednią definicją uchwytu zmiennej danych. Następnie zdefiniuj zmienną dla wyświetlania próbkowania napięcia:
Number_HandleTypeDef Hprzykład;
u16 próbka napięcia;
Najpierw wykonaj funkcję inicjującą
NumerSP_Init(&Hpróbka,próbka_napięcia,0×8000); //0×8000 tutaj jest wskaźnik opisu
//——Zmienna danych pokazująca inicjalizację struktury wskaźnika SP——
void NumberSP_Init(Number_HandleTypeDef *liczba,u8 *wartość, u16 numerAddr)
{
liczba->spPack.addr = liczbaAddr;
liczba->spPack.datLen = sizeof(liczba->sp);
liczba->spPack.pBuf = (u8 *)&liczba->sp;
Read_Dgus(&numer->spPack);
liczba->vpPack.addr = liczba->sp.VP;
switch(number->sp.Type) //Długość danych zmiennej vp jest wybierana automatycznie zgodnie z typem zmiennej danych zaprojektowanym w interfejsie DGUS.
{
przypadek 0:
przypadek 5:
liczba->vpPack.datLen = 2;
przerwa;
przypadek 1:
przypadek 2:
przypadek 3:
przypadek 6:
liczba->vpPack.datLen = 4;
przypadek 4:
liczba->vpPack.datLen = 8;
przerwa;
}
liczba->vpPack.pBuf = wartość;
}
Po inicjalizacji Hsample.sp jest wskaźnikiem opisu zmiennej danych próbkowania napięcia; Hsample.spPack to wskaźnik komunikacyjny pomiędzy rdzeniem systemu operacyjnego a zmienną danych próbkowania napięcia interfejsu użytkownika za pośrednictwem funkcji interfejsu DGUS; Hsample.vpPack to atrybut zmiany zmiennych danych próbkowania napięcia, takich jak kolory czcionek itp., które są również przekazywane do rdzenia interfejsu użytkownika poprzez funkcję interfejsu DGUS. Hsample.vpPack.addr to adres zmiennej danych próbkowania napięcia, który został automatycznie uzyskany z funkcji inicjalizacji. Kiedy zmieniasz adres zmiennej lub typ danych zmiennej w interfejsie DGUS, nie ma potrzeby synchronicznej aktualizacji adresu zmiennej w rdzeniu systemu operacyjnego. Gdy rdzeń systemu operacyjnego obliczy zmienną napięcie_próbka, wystarczy wykonać funkcję Write_Dgus(&Hsample.vpPack), aby ją zaktualizować. Nie ma potrzeby pakowania próbki napięcia do transmisji DGUS.
Czas publikacji: 15 czerwca 2022 r