——Поделено с форума DWIN
Используя чип DWIN T5L1 в качестве ядра управления всей машиной, он получает и обрабатывает сенсорные данные, сбор данных АЦП, информацию управления ШИМ и управляет 3,5-дюймовым ЖК-экраном для отображения текущего состояния в режиме реального времени. Поддержка удаленной сенсорной регулировки яркости светодиодного источника света через модуль Wi-Fi и поддержка голосовой сигнализации.
Возможности программы:
1. Примите чип T5L для работы на высокой частоте, аналоговая выборка AD стабильна, а ошибка невелика;
2. Поддержка TYPE C, напрямую подключенного к ПК для отладки и записи программ;
3. Поддержка высокоскоростного основного интерфейса ОС, 16-битный параллельный порт; ШИМ-порт ядра пользовательского интерфейса, вывод порта AD, недорогая конструкция приложения, нет необходимости добавлять дополнительный MCU;
4. Поддержка Wi-Fi, пульт дистанционного управления Bluetooth;
5. Поддержка широкого напряжения 5 ~ 12 В постоянного тока и широкого диапазона входного сигнала.
1.1 Принципиальная схема
1,2 печатная плата
1.3 Пользовательский интерфейс
Позорное введение:
(1) Проектирование аппаратной схемы
1.4 Принципиальная схема T5L48320C035
1. Питание логики микроконтроллера 3,3 В: C18, C26, C27, C28, C29, C31, C32, C33;
2. Источник питания ядра MCU 1,25 В: C23, C24;
3. Аналоговый источник питания MCU 3,3 В: C35 — аналоговый источник питания для MCU. При наборе текста заземление ядра 1,25 В и логическое заземление можно объединить вместе, но аналоговое заземление необходимо разделить. Аналоговое и цифровое заземление должны быть собраны на отрицательном полюсе выходного большого конденсатора LDO, а положительный аналоговый полюс также должен быть собран на положительном полюсе большого конденсатора LDO, чтобы минимизировать шум дискретизации AD.
4. Схема сбора аналогового сигнала AD: CP1 — конденсатор фильтра аналогового входного сигнала AD. Чтобы уменьшить ошибку выборки, аналоговое и цифровое заземление микроконтроллера разделены независимо. Отрицательный полюс CP1 должен быть подключен к аналоговой земле MCU с минимальным сопротивлением, а два параллельных конденсатора кварцевого генератора подключены к аналоговой земле MCU.
5. Цепь зуммера: C25 — конденсатор питания зуммера. Зуммер является индуктивным устройством, и во время работы будет наблюдаться пиковый ток. Чтобы уменьшить пик, необходимо уменьшить ток возбуждения МОП-сигнала зуммера, чтобы МОП-трубка работала в линейной области, и спроектировать схему так, чтобы она работала в режиме переключения. Обратите внимание, что R18 должен быть подключен параллельно на обоих концах зуммера, чтобы отрегулировать качество звука зуммера и сделать звук зуммера четким и приятным.
6. Схема Wi-Fi: выборка чипов Wi-Fi ESP32-C, с Wi-Fi + Bluetooth + BLE. В проводке заземление ВЧ-мощности и сигнальное заземление разделены.
1.5 Схема схемы Wi-Fi
На рисунке выше верхняя часть медного покрытия представляет собой контур заземления. Контур заземления отражения антенны Wi-Fi должен иметь большую площадь относительно заземления питания, а точкой сбора заземления является отрицательный полюс C6. Между заземлением питания и антенной Wi-Fi необходимо обеспечить отраженный ток, поэтому под антенной Wi-Fi должно быть медное покрытие. Длина медного покрытия превышает длину удлинителя антенны Wi-Fi, а удлинитель увеличит чувствительность Wi-Fi; точка на отрицательном полюсе C2. Большая площадь меди может экранировать шум, вызванный излучением антенны Wi-Fi. Две медные земли разделены на нижнем слое и собраны на средней площадке ESP32-C через переходные отверстия. Для заземления ВЧ-питания требуется более низкий импеданс, чем для контура заземления сигнала, поэтому между заземлением питания и контактной площадкой имеется 6 переходных отверстий, чтобы обеспечить достаточно низкий импеданс. Через контур заземления кварцевого генератора не может проходить радиочастотная мощность, в противном случае кварцевый генератор будет генерировать дрожание частоты, и смещение частоты Wi-Fi не сможет отправлять и получать данные.
7. Схема питания светодиодной подсветки: выборка чипа драйвера SOT23-6LED. Источник питания постоянного/постоянного тока для светодиода независимо образует петлю, а заземление постоянного/постоянного тока подключается к заземлению 3,3 В LOD. Поскольку ядро порта ШИМ2 является специализированным, оно выдает сигнал ШИМ 600К, и добавляется RC для использования выхода ШИМ в качестве управления ВКЛ/ВЫКЛ.
8. Диапазон входного напряжения: предусмотрены два понижающих преобразователя постоянного/постоянного тока. Обратите внимание, что резисторы R13 и R17 в цепи постоянного/постоянного тока нельзя опускать. Два чипа DC/DC поддерживают входное напряжение до 18 В, что удобно для внешнего источника питания.
9. Порт отладки USB TYPE C: TYPE C можно подключать и отключать вперед и назад. Прямая вставка связывается с чипом WIFI ESP32-C для программирования чипа WIFI; обратная вставка связывается с XR21V1410IL16 для программирования T5L. TYPE C поддерживает питание 5 В.
10. Связь через параллельный порт: ядро ОС T5L имеет множество свободных портов ввода-вывода, и может быть спроектирована связь через 16-битный параллельный порт. В сочетании с протоколом параллельного порта ST ARM FMC он поддерживает синхронное чтение и запись.
11. Конструкция высокоскоростного интерфейса LCM RGB: выход T5L RGB напрямую подключен к LCM RGB, а в середине добавлено буферное сопротивление, чтобы уменьшить помехи от пульсаций воды LCM. При подключении уменьшите длину подключения интерфейса RGB, особенно сигнала PCLK, и увеличьте контрольные точки интерфейса RGB PCLK, HS, VS, DE; порт SPI экрана подключен к портам P2.4 ~ P2.7 T5L, что удобно для разработки драйвера экрана. Разработайте тестовые точки RST, nCS, SDA, SCI для облегчения разработки базового программного обеспечения.
(2) Интерфейс ДГУС
1.6 Управление отображением переменных данных
(3) ОС
//———————————Формат чтения и записи DGUS
структура определения типа
{
адрес u16; //Адрес 16-битной переменной пользовательского интерфейса
у8 датаЛен; //длина данных 8 бит
u8 *pBuf; //8-битный указатель данных
} UI_packTypeDef; //DGUS читает и записывает пакеты
//——————————--управление отображением переменных данных
структура определения типа
{
u16 ВП;
и16 Х;
и16 Ю;
u16 Цвет;
u8 Lib_ID;
u8 Размер шрифта;
u8 Выравнивание;
u8 IntNum;
u8 DecNum;
Тип u8;
u8 ЛенУинт;
u8 StringUinit[11];
} Number_spTypeDef; //структура описания переменной данных
структура определения типа
{
Number_spTypeDef сп; //определяем указатель описания SP
UI_packTypeDef spPack; //определяем переменную SP DGUS для чтения и записи пакета
UI_packTypeDef vpPack; //определяем переменную vp DGUS для чтения и записи пакета
} Number_HandleTypeDef; //структура переменных данных
С предыдущим определением дескриптора переменной данных. Затем определите переменную для отображения выборки напряжения:
Number_HandleTypeDef Hsample;
u16 напряжение_образец;
Сначала выполните функцию инициализации
NumberSP_Init(&Hsample,voltage_sample,0×8000); //0×8000 вот указатель описания
//——Переменная данных, показывающая инициализацию структуры указателя SP——
void NumberSP_Init (Number_HandleTypeDef *number,u8 *value, u16 NumberAddr)
{
номер->spPack.addr = номерAddr;
число->spPack.datLen = sizeof(number->sp);
число->spPack.pBuf = (u8 *)&number->sp;
Read_Dgus(&number->spPack);
номер->vpPack.addr = номер->sp.VP;
switch(number->sp.Type) //Длина данных переменной vp автоматически выбирается в соответствии с типом переменной данных, разработанным в интерфейсе DGUS.
{
случай 0:
случай 5:
число->vpPack.datLen = 2;
перерыв;
Дело 1:
случай 2:
случай 3:
случай 6:
число->vpPack.datLen = 4;
случай 4:
число->vpPack.datLen = 8;
перерыв;
}
число->vpPack.pBuf = значение;
}
После инициализации Hsample.sp является указателем описания переменной данных выборки напряжения; Hsample.spPack — это указатель связи между ядром ОС и переменной данных выборки напряжения пользовательского интерфейса через функцию интерфейса DGUS; Hsample.vpPack — это атрибут изменения переменной данных выборки напряжения, такой как цвета шрифта и т. д., которые также передаются в ядро пользовательского интерфейса через функцию интерфейса DGUS. Hsample.vpPack.addr — это адрес переменной данных выборки напряжения, который был автоматически получен из функции инициализации. Когда вы меняете адрес переменной или тип данных переменной в интерфейсе DGUS, нет необходимости синхронно обновлять адрес переменной в ядре ОС. После того, как ядро ОС вычислит переменную Volt_sample, ему нужно только выполнить функцию Write_Dgus(&Hsample.vpPack) для ее обновления. Нет необходимости упаковывать напряжение_образца для передачи DGUS.
Время публикации: 15 июня 2022 г.