——Compartilhado do Fórum DWIN
Utilizando o chip DWIN T5L1 como núcleo de controle de toda a máquina, recebe e processa informações de toque, aquisição ADC e controle PWM, e aciona a tela LCD de 3,5 polegadas para exibir o status atual em tempo real. Suporta ajuste remoto do brilho da fonte de luz LED por toque através do módulo Wi-Fi e também alarme de voz.
Funcionalidades do programa:
1. Adota-se o chip T5L para operar em alta frequência, a amostragem analógica AD é estável e o erro é pequeno;
2. Suporte para conexão direta via USB-C ao PC para depuração e gravação de programas;
3. Suporte para interface de núcleo de SO de alta velocidade, porta paralela de 16 bits; porta PWM do núcleo da interface do usuário, saída de porta AD, design de aplicação de baixo custo, sem necessidade de adicionar MCU adicional;
4. Compatível com controle remoto via Wi-Fi e Bluetooth;
5. Suporta ampla faixa de tensão e entrada de 5 a 12 V CC.

1.1 Diagrama esquemático
1.2 Placa de circuito impresso

1.3 Interface do usuário
Introdução à vergonha:
(1) Projeto de circuito de hardware

1.4 Diagrama do circuito T5L48320C035
1. Fonte de alimentação lógica do MCU 3,3V: C18, C26, C27, C28, C29, C31, C32, C33;
2. Alimentação do núcleo do MCU 1,25V: C23, C24;
3. Alimentação analógica do MCU 3,3V: C35 é a alimentação analógica do MCU. Na configuração, o terra do núcleo de 1,25V e o terra lógico podem ser combinados, mas o terra analógico deve ser separado. O terra analógico e o terra digital devem ser conectados ao polo negativo do capacitor de saída do LDO, e o polo positivo analógico também deve ser conectado ao polo positivo do capacitor de saída do LDO, para minimizar o ruído de amostragem do conversor AD.
4. Circuito de aquisição de sinal analógico AD: CP1 é o capacitor de filtro de entrada analógica do AD. Para reduzir o erro de amostragem, o terra analógico e o terra digital do MCU são separados independentemente. O polo negativo de CP1 deve ser conectado ao terra analógico do MCU com a menor impedância possível, e os dois capacitores em paralelo do oscilador de cristal são conectados ao terra analógico do MCU.
5. Circuito da campainha: C25 é o capacitor de alimentação da campainha. A campainha é um dispositivo indutivo e apresentará um pico de corrente durante a operação. Para reduzir esse pico, é necessário diminuir a corrente de acionamento do MOSFET da campainha para que o transistor MOSFET opere na região linear e projetar o circuito para que funcione no modo de chaveamento. Observe que R18 deve ser conectado em paralelo em ambas as extremidades da campainha para ajustar a qualidade do som e torná-lo nítido e agradável.
6. Circuito WiFi: Chip WiFi ESP32-C com WiFi + Bluetooth + BLE. Na fiação, o terra da alimentação de RF e o terra do sinal são separados.

1.5 Projeto de circuito WiFi
Na figura acima, a parte superior do revestimento de cobre representa o circuito de aterramento da alimentação. O circuito de aterramento de reflexão da antena Wi-Fi deve ter uma área grande em relação ao aterramento da alimentação, e o ponto de coleta do aterramento da alimentação é o polo negativo de C6. É necessário fornecer corrente refletida entre o aterramento da alimentação e a antena Wi-Fi, portanto, deve haver um revestimento de cobre sob a antena. O comprimento do revestimento de cobre excede o comprimento de extensão da antena Wi-Fi, e a extensão aumentará a sensibilidade do Wi-Fi; o ponto de coleta é o polo negativo de C2. Uma grande área de cobre pode blindar o ruído causado pela radiação da antena Wi-Fi. Os dois aterramentos de cobre são separados na camada inferior e coletados no pad central do ESP32-C através de vias. O aterramento da alimentação de RF precisa de uma impedância menor do que o circuito de aterramento do sinal, portanto, existem 6 vias do aterramento da alimentação para o pad do chip para garantir uma impedância suficientemente baixa. O circuito de aterramento do oscilador de cristal não pode ter energia de RF fluindo através dele, caso contrário, o oscilador de cristal gerará jitter de frequência e o deslocamento de frequência do Wi-Fi não poderá enviar e receber dados.
7. Circuito de alimentação do LED de retroiluminação: Amostragem do chip driver SOT23-6LED. A alimentação DC/DC para o LED forma um circuito independente, e o terra do DC/DC é conectado ao terra de 3,3V do LOD. Como o núcleo da porta PWM2 foi especializado, ele emite um sinal PWM de 600K, e um circuito RC é adicionado para usar a saída PWM como um controle ON/OFF.
8. Faixa de tensão de entrada: dois conversores CC/CC redutores estão disponíveis. Observe que os resistores R13 e R17 no circuito CC/CC não podem ser omitidos. Os dois chips CC/CC suportam entrada de até 18 V, o que facilita a alimentação externa.
9. Porta de depuração USB Tipo C: O cabo Tipo C pode ser conectado e desconectado em ambas as direções. A conexão direta permite a comunicação com o chip Wi-Fi ESP32-C para programá-lo; a conexão inversa permite a comunicação com o XR21V1410IL16 para programar o T5L. O cabo Tipo C suporta alimentação de 5V.
10. Comunicação por porta paralela: O núcleo do sistema operacional T5L possui muitas portas de E/S livres e permite o projeto de comunicação por porta paralela de 16 bits. Combinado com o protocolo de porta paralela ST ARM FMC, suporta leitura e gravação síncronas.
11. Projeto de interface RGB de alta velocidade para LCM: A saída RGB do T5L é conectada diretamente ao RGB do LCM, e um resistor de buffer é adicionado no meio para reduzir a interferência de ondulação do sinal do LCM. Ao fazer a fiação, reduza o comprimento da conexão da interface RGB, especialmente o sinal PCLK, e aumente os pontos de teste PCLK, HS, VS e DE da interface RGB; a porta SPI da tela é conectada às portas P2.4 a P2.7 do T5L, o que facilita o projeto do driver da tela. Disponibilize os pontos de teste RST, nCS, SDA e SCI para facilitar o desenvolvimento do software subjacente.
(2) Interface DGUS
1.6 Controle de exibição de variáveis de dados
(3) OS
//———————————Formato de leitura e escrita DGUS
typedef struct
{
u16 addr; // Endereço de variável de 16 bits da interface do usuário
u8 datLen; //comprimento de dados de 8 bits
u8 *pBuf; //ponteiro de dados de 8 bits
} UI_packTypeDef; //Pacotes de leitura e gravação DGUS
//——————————-controle de exibição de variáveis de dados
typedef struct
{
Vice-presidente sub-16;
u16 X;
u16 Y;
Cor u16;
u8 Lib_ID;
Tamanho da fonte u8;
Alinhamento u8;
u8 IntNum;
u8 DecNum;
Tipo u8;
u8 LenUint;
u8 StringUinit[11];
} Number_spTypeDef; //estrutura de descrição da variável de dados
typedef struct
{
Number_spTypeDef sp; //define o ponteiro de descrição SP
UI_packTypeDef spPack; //define a variável SP DGUS para leitura e gravação de pacotes
UI_packTypeDef vpPack; //define a variável vp para leitura e escrita de pacotes DGUS
} Number_HandleTypeDef; //estrutura da variável de dados
Com a definição anterior do identificador da variável de dados, defina a seguir uma variável para a exibição da amostragem de tensão:
Number_HandleTypeDef Hsample;
u16 amostra_de_tensão;
Primeiro, execute a função de inicialização.
NumberSP_Init(&Hsample,voltage_sample,0×8000); //0×8000 aqui é o ponteiro de descrição
//——Variável de dados mostrando a inicialização da estrutura do ponteiro SP——
void NumberSP_Init(Number_HandleTypeDef *number,u8 *value, u16 numberAddr)
{
número->spPack.addr = numberAddr;
número->spPack.datLen = sizeof(número->sp);
número->spPack.pBuf = (u8 *)&número->sp;
Leia_Dgus(&número->spPack);
número->vpPack.addr = número->sp.VP;
switch(number->sp.Type) //O comprimento dos dados da variável vp é selecionado automaticamente de acordo com o tipo de variável de dados projetado na interface DGUS.
{
caso 0:
caso 5:
número->vpPack.datLen = 2;
quebrar;
caso 1:
caso 2:
caso 3:
caso 6:
número->vpPack.datLen = 4;
caso 4:
número->vpPack.datLen = 8;
quebrar;
}
número->vpPack.pBuf = valor;
}
Após a inicialização, `Hsample.sp` é o ponteiro de descrição da variável de dados de amostragem de tensão; `Hsample.spPack` é o ponteiro de comunicação entre o núcleo do sistema operacional e a variável de dados de amostragem de tensão da interface do usuário através da função de interface DGUS; `Hsample.vpPack` são os atributos da variável de dados de amostragem de tensão, como cores da fonte, etc., que também são passados para o núcleo da interface do usuário através da função de interface DGUS. `Hsample.vpPack.addr` é o endereço da variável de dados de amostragem de tensão, que já foi obtido automaticamente da função de inicialização. Quando você altera o endereço ou o tipo de dados da variável na interface DGUS, não é necessário atualizar o endereço da variável no núcleo do sistema operacional de forma síncrona. Depois que o núcleo do sistema operacional calcula a variável `voltage_sample`, basta executar a função `Write_Dgus(&Hsample.vpPack)` para atualizá-la. Não é necessário empacotar a variável `voltage_sample` para transmissão via DGUS.
Data da publicação: 15 de junho de 2022






