|
1 / 1 / 0
Регистрация: 28.03.2015
Сообщений: 94
|
|
TFT дисплей с параллельным интерфейсом05.01.2021, 23:43. Показов 7850. Ответов 77
Метки нет (Все метки)
Mega2560 в качестве обучающей платы. Код пишу на Си в AVR Studio 4. Разобрался по урокам как управлять знакогенерирующим дисплеем 16х2, и даже сделал на нем частотомер с которым бегал за домашними с требованием оценить мой успех ))
Теперь хочу освоить управление графическим TFT, также по параллельному интерфейсу. Перебираю варианты из магазина, совсем маленькие не рассматриваю, из "больших" по цене/размеру приглянулись 2.8"(2.8'' LCD 8-Bit Parallel Bus Monitor Module ILI9341 Criver For Mega2560) и 3.5"(480х320, ILI9486). На али позиционируются как шильды для меги, т.е. по идее она должна их потянуть ... в статических задачах наверняка (текст, цифры). А в графических, например, осциллограф, при условии что АЦП будет внешним?
1
|
|
| 05.01.2021, 23:43 | |
|
Ответы с готовыми решениями:
77
Подключение дисплея с параллельным интерфейсом Подключение внешней АЦП с параллельным интерфейсом TFT дисплей |
| 14.01.2021, 07:25 | |
|
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,928
|
||||||||
| 14.01.2021, 08:20 | ||||||||
|
Не по теме:
Вы недовольны что вам троллить мешают что ли? Добавлено через 28 минут ![]() Грубо говоря, передача через DMA не тратит время вообще, поскольку контроллер не обязан ждать завершения, а реальная передача все равно быстрее, чем дисплей эти данные отобразит, а человек считает.
0
|
||||||||
|
1 / 1 / 0
Регистрация: 28.03.2015
Сообщений: 94
|
||
| 14.01.2021, 09:43 [ТС] | ||
|
Мой частотомер показывал 542Гц, а китаец 545Гц. Эта разница сохранялась везде куда бы ни подвинул частоту генератора. Кликните здесь для просмотра всего текста
#include "main.h" #include "lcd.h" int x=0, y=0; void init_EXTint(void) { EICRA=0b10;// прерывание по низкому уровню на INT0(PD0) EIMSK=0b1;//выбор входа дл¤ источника прерывани¤ (выбран INT0, т.е. PD0, или пин 21 меги) } ISR (INT0_vect) // внешнее прерывание на INT0(PD0) { x++; } ISR (TIMER1_COMPA_vect) { y=x; x=0; } int main(void) { DDRB=0xFF; //порт на выход DDRA=0xFF; //порт на выход DDRD=0b0; //PD0(INT0) на вход. PORTD=0b1;//подт¤гиваем вход на питание. LCDinit(); //инициализации диспле¤ init_PWM_timer(); init_EXTint(); sei(); while(1) { LCDcom(0b10000000); char mass[14]="Frequency(Hz)";//размер массива больше на 1 чем кол-во знаков в тексте. for(int a=0;a<13;a++)// { _delay_us(10);//определ¤ет скорость обновлени¤ экрана, устран¤ет мигание символов. LCDdat(mass[a]); } _delay_us(10);//отсутствие этой задержки вызывает бег строки по кругу. if(y>=0 && y<=9) { LCDcom(0b11000000); _delay_us(50); LCDdat(y+48); _delay_us(50); } else if(y>=10 && y<=99) { LCDcom(0b11000000); _delay_us(50); LCDdat(y/10+48); _delay_us(50); LCDcom(0b11000001); _delay_us(50); LCDdat(y%10+48); _delay_us(50); } else if(y>=100 && y<=999) { LCDcom(0b11000000); _delay_us(50); LCDdat(y/100+48); _delay_us(50); LCDcom(0b11000001); _delay_us(50); LCDdat((y/10)%10+48); _delay_us(50); LCDcom(0b11000010); _delay_us(50); LCDdat(y%10+48); _delay_us(50); } } }
0
|
||
|
|
|
| 14.01.2021, 10:11 | |
|
320*240*16 = 1228800 bit
Atmega328 Max 20 MHz operaring frequency Max SPI clock = 20/2 = 10 MHz, 10 Мбит/с 8.138 кадров в секунду максимум. STM32F103VET6 SPI Max 18 MHz, 18 Мбит/с 14 кадров в секунду. FSMC Max 72/5 = 14.4 MHz На 8-битной шине 115.2 Мбит/с 93 кадра в секунду На 16-битной шине 230.4 Мбит/с 187 кадров в секунду.
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,928
|
||||||||||||||||||||||||
| 14.01.2021, 10:31 | ||||||||||||||||||||||||
Ну и имена бы им более осмысленные дать не помешало.
Плюс для расчетов при выводе вы используете глобальную переменную, которая в любой момент может быть испорчена прерыванием. Надо как минимум буферизовать:
--- Лучше бы вынесли обсуждение частотометра в отдельную тему.
0
|
||||||||||||||||||||||||
|
|
|
| 14.01.2021, 19:18 | |
|
Для полноценного осциллографа в реальном времени понадобится что-то значительно шустрее Mega2560
https://www.nickbel.com/2019/0... -hack.html Если обновлять весь экран , то это значительные объёмы данных. Нужен отдельный контроллер для дисплея Например, для маленького 240 * 240 на базе ST7789 это 112.5 Kb гонять по шине.
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,928
|
||
| 14.01.2021, 20:04 | ||
|
Полноценный осциллограф на коленке в любом случае не сделать.
0
|
||
|
|
|
| 14.01.2021, 20:48 | |
|
А смысл этой прокрутки ?
Если вам нужно рисовать осциллограмму в реальном времени и ещё её растягивать во времени, то прокрутка вас не спасёт. Учитывая, что нужно рисовать сетку - шкалу на экране и кучу всего иного ) Или вы голую осциллограмму будете отображать ? Добавлено через 5 минут Ну есть у меня Nextion NX8048P070-011C 200Mhz CPU ну и ничего на нём не сделать в качестве осциллографа толкового. Побаловаться - да , получится. Дешевле купить сразу осциллограф нормальный добавив ещё 100$ к цене этого дисплея. А за 20$ китайцы уже сделали осциллограф https://aliexpress.ru/item/328... web201603_ Добавлено через 12 минут Вот тут очень хорошо расписывается какие объёмы данных необходимо гонять по шине на современных устройствах отображения
0
|
|
|
1 / 1 / 0
Регистрация: 28.03.2015
Сообщений: 94
|
||
| 15.01.2021, 00:58 [ТС] | ||
|
0
|
||
|
1184 / 671 / 113
Регистрация: 15.05.2012
Сообщений: 4,085
|
||
| 15.01.2021, 07:04 | ||
|
0
|
||
|
1 / 1 / 0
Регистрация: 28.03.2015
Сообщений: 94
|
||||||||
| 15.01.2021, 08:46 [ТС] | ||||||||
Извините за обилие вопросов, это давняя каша, уже подсохла, нужно сдобрить маслицем, сам не расковыряю.
0
|
||||||||
|
Тутошний я
|
|
| 15.01.2021, 09:14 | |
|
есть драйвера моторов или светодиодов. для согласования контроллера с железкой.
есть драйвера в ОС. опять же для согласования ОС с внешней железкой. а здесь у нас контроллер и в дисплее контроллер. и они между собой обшаются. имхо здесь драйвер синоним библиотеке. в библиотеке записаны все команды для общения с дисплеем (ну или другим устройством). хотя бывают урезанные библиотеки, где только часть команд используется. в библиотеке команды собраны в более менее удобные функции. которыми программисты и используют. Добавлено через 6 минут взять туже pos (x,y).для разных дисплеев, внутри функции, будут разные команды. а программисту только нужно ввести нужные координаты. удобно? вот чайники и ищут библиотеки.
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,928
|
|||||||
| 15.01.2021, 10:00 | |||||||
|
А можно на основе найденных библиотек и даташита написать свою. Я так и делал для 1602, и для графических дисплеев от Nokia2650, 3310 (куда ж без него), ili9341 и e-ink'ов от waveshare 200х200 и 300х400 (они вроде безымянные). По сути любая библиотека для графического дисплея устроена просто: 1. Инициализация, чуть ли не дословно из примера. Все равно найти расшифровку тех массивов магических констант я так и не смог. 2. Команда задания области рисования (x1,y2 : x2,y2). Обычно это одна иди две команды собственно дисплея плюс 4 байта данных на каждую. В общем-то тоже можно найти в примерах. 3. Передача массива данных цветов. Это вообще одна команда и передача массива данных. Вот это в примерах бывает не всегда. Иногда нужно реализовывать специфичные команды вроде переключения буферов на e-ink'ах или если нужна та же прокрутка. Зачастую на основе 2 и 3 пунктов делается вывод текста. Ну и иногда хочется странного вроде вывода через DMA с синхронизацией, но это уже другая история. --- Самое сложное - настроить периферию самого контроллера и настроить тайминги. Вообще, я в последнее время склоняюсь к покупке Ардуины специально для этой цели - эталонная реализация взаимодействия с чем-либо, которую можно изучать и переписывать с ардуинского диалекта на нормальный. А вообще, драйвер можно еще сделать в виде отдельного процесса (программы). Но в контроллерах это непопулярно.
1
|
|||||||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 15.01.2021, 11:00 | |
|
0
|
|
|
|
|
| 15.01.2021, 11:25 | |
|
mode2
А какова точная цель ? Собрать хоть что-то с использованием упомянутого вами дисплея в 1-м посте или что-то иное ? В графических задачах ни один такой шильд не даст вам производительность для осциллографа. Эти дисплеи быстро рисуют закаченные в них картинки, текст, но не графики и кривые. Кроме того, крайне медленно будет отображаться попиксельный рендер, если он вообще будет доступен. Скорее всего, нужно будет рисовать пиксели линиями длинной в один пиксель - очень медленно для осциллографа. Во всяком случае в Nextion - так. Они созданы для умного дома и прочих красивых интерфейсов созданных пользователем в редакторе и загруженным в LCD, но не для скоростного отображения пользователем пиксельной информации с произвольным размещением и цветом.
0
|
|
|
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,928
|
|||
| 15.01.2021, 13:00 | |||
|
Если уж дисплея достаточно для воспроизведения плавной анимации, то уж осциллограмму он отрисует точно. Ведь требования к осциллографу гораздо меньше, чем к экрану общего назначения. И по отображаемой информации (статичная сетка плюс одна-две ломаные линии) и по скорости (пара кадров в секунду за глаза). При реализации осциллографа проблема будет уж точно не в дисплее. А скорее в контроллере, АЦП и аналоговой части. Данные по AVR я уже приводил: на встроенном АЦП не более 80 ksps (samples per second, отсчетов в секунду). На внешнем SPI-ном порядка 1 Msps. На внешнем параллельном ну пускай 10 Msps при 8-битной точности. Но это надо ОЧЕНЬ постараться чтобы такое выжать. Для stm32f103 вот тут говорит, что разогнал до 9 Msps на встроенном АЦП. Но это с разгоном, по документации же около 2 Msps. На кошачьем форуме видел разработку на stm32f303, там вроде 10 Msps без разгона. В общем, по большому счету, все равно получается игрушка-показометр. Но для некоторых целей большего и не требуется. Скажем, для отладки каких-нибудь звуковых усилителей хватит даже 80 ksps, которые может выдать AVR, для низкочастотных импульсных блоков питания тоже.
0
|
|||
|
|
|
| 15.01.2021, 14:06 | |
|
Анимацию эти дисплеи рисуют из своей памяти, а не по SPI гоняют. И STM32 и их библиотеки совсем не Arduino и их библиотеки по скорости работы.
Парню придётся осваивать Си как минимум, а не готовые скетчи
0
|
|
| 15.01.2021, 14:06 | |
|
Помогаю со студенческими работами здесь
40
TFT дисплей и AVR TFT дисплей и ATMega8 TFT дисплей на ILI9341 STM32VLDISСOVERY + TFT дисплей. Хелп!!!! TFT дисплей + TouchPad как выбрать Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
|
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит значение перечислений.
/ / Событие "НачалоВыбора" реквизита на форме. . .
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|