Какие микроконтроллеры Arduino могут управлять параллельным 8-битным дисплеем ILI9341 с разрешением 320x240@60fps с прямым доступом к памяти, дополнительным ядром ЦП или и тем, и другим, и как?
Я всегда хотел сделать свою собственную игровую консоль. Я не знаю, почему у существующих игровых консолей Arduino такая проблема с частотой кадров, когда у карманного ПК Sony 2006 г. 1 ГБ оперативной памяти и процессор Intel под управлением Windows XP. Почему обычные либертарианцы-либертарианцы, занимающиеся открытым исходным кодом, не смогли сделать что-то такого масштаба? Не говорите деньги, потому что деньги — это причина, по которой я нахожусь на сцене разработчиков игр; хотят сделать игровую консоль или что-то еще, что имеет экран, символы, мультимедиа и занудство, чтобы заработать деньги.
Поэтому проблема всегда заключалась в том, как найти микроконтроллер, достаточно быстрый для работы с дисплеем 320x240, таким как ILI9341, со скоростью 60 кадров в секунду, без зависаний или необходимости выполнять множество предварительных вычислений для частичного обновления экрана. А как насчет консолей NES/SNES, в которых даже не было буфера кадра, но использовалась дискретная логика?
Моя схема заключалась в использовании ATXMEGA128A1U с параллельной шиной и прямым доступом к памяти, но было трудно найти плату, содержащую все необходимое и интерфейс внешней шины.
Затем я попытался использовать ESP32 с SPI, но SPI достиг максимальной частоты 80 МГц, а экран мог обрабатывать только 40 МГц.
Затем я снова попробовал ESP32 с 8-битной перестановкой выводов ввода-вывода, но это не сработало; это было слишком медленно; возможно, было бы быстрее, если бы я использовал сборку Xtensa, чтобы воспользоваться преимуществами конвейера ЦП на случай, если тупой компилятор C++ компилирует машинный код, который ожидает 7 циклов для каждой следующей операции.
Но теперь я хотел бы использовать ESP32 с шиной I2S и DMA, который использовался для демонстрации камеры, и это было действительно очень быстро, но я хотел бы использовать его для вывода I2S для этого дисплея ILI9341. . По моим расчетам, для записи всех байтов требуется 10 МГц, если шина имеет ширину 16 бит (8 бит для данных и 1 бит для регистра данных/команды) + Стробы чтения/записи/выбора, управляемые интерфейсом шины . Тем не менее, Битлуни смог довести его до значений 580 МГц, выходящих за пределы спецификации, для своей сверхбыстрой библиотеки VGA, но в тот месяц ему нечем было платить за аренду, поэтому он лицензировал код под лицензией с авторским левом (ShareAlike). Знаете, как говорят: «Любовь к деньгам и безденежье — корень всех зол». Деньги важны, но на самом деле... это делает деньги еще более злым врагом, чем раньше.
Полагаю, у меня нет вариантов. Было много попыток, и они потерпели неудачу. Да, есть Teensy и прочее, но мне нужно что-то в ЕС, за доставку которого мне не придется платить больше, чем за сам продукт.
Итак, какие есть решения?
PS, если я получу один из этих «не по теме» или «слишком общий» или мне не понравится мой вопрос, я удалю его и перейду на Reddit и сниму скриншот, как снова StackExchange слишком формален и банален, чтобы открывать разговоры.
@Foxcat385, 👍0
Обсуждение1 ответ
Проблема заключается во всей концепции запуска TFT-экрана ILI9341 со скоростью 60 кадров в секунду с микроконтроллера. Вы не можете. Это просто недостаточно быстро.
Чтобы получить такие скорости, вам необходимо напрямую подключить TFT-панель к микроконтроллеру. А для этого нужен специальный микроконтроллер со встроенным TFT-интерфейсом. Кроме того, вам нужна память для хранения изображения, которое вы показываете на экране.
Существуют доступные микроконтроллеры, которые вполне могут это сделать. Но они не на «сцене создателя». Просто потому, что это редкость.
Уже много лет существует линейка микроконтроллеров PIC24 "DA" со встроенным графическим процессором и TFT-интерфейсом, но пока нет бесплатного компилятора C++, поэтому нет поддержки Arduino, поэтому для новичков нет простого пути к их использованию.
Теперь, однако, в моде PIC32MZ "DA", которые более доступны, хотя по-прежнему очень сложны в использовании. Они гораздо более подходят для того, что вам нужно, с 32 МБ встроенной памяти DDR, интерфейсом панели TFT и доступным в 144-контактном чипе TQFP, который опытный производитель может припаять вручную.
Но барьером по-прежнему является программное обеспечение. В то время как chipKIT полностью поддерживает линейку микросхем PIC32MZ "EF", линейка "DA" еще не поддерживается. Это не значит, что с ними нельзя работать, просто не с Arduino API и IDE.
Более распространенный способ сделать устройство, похожее на игровую консоль, — взять SoC ARM и напрямую связать его с TFT-панелью. Самый простой способ для производителя сделать это — поставить TFT на Pi и установить Retropie.
И мы не против открытого обсуждения как люди. Это сайт. Это не сайт для открытого обсуждения. Это сайт вопросов и ответов. Вы задаете технический вопрос, с которым вам нужна помощь, и мы сообщаем вам ответ. Это не форум для общего обсуждения. Таким образом, этот вопрос будет закрыт либо как «широкий», либо как «в основном основанный на мнении». Однако ваш вопрос все равно заслуживает ответа.
Спасибо за исчерпывающий ответ и за внимание к моему вопросу. Сейчас я работаю в AVR ASM и Notepad++ вместе с MSYS32 для разработки ESP32 для Windows. Так что, если это не Ардуино, для меня это не проблема. Все, что мне нужно знать, это как получить доступ к регистрам и таблице данных, подтверждающей поведение регистров. ARM SoC был бы хорош, но я не хочу заморачиваться с лицензиями, GPL, ShareAlike, EULA и патентами. Raspberry Pi и Retropie не имеют разрешающей лицензии, а защищены авторским левом. Какие SoC ARM тогда были бы хороши? Предпочтительно SoC MIPS?, @Foxcat385
MIPS — это не ARM. Совершенно другая архитектура. Проблема с SoC, особенно с ARM (которые широко распространены в наши дни), заключается в сложности их внедрения. Мало того, что с ними сложно работать (как правило, с корпусами BGA высокой плотности, что означает специализированные производственные мощности, которые могут обрабатывать микроотверстия), но большинство производителей SoC хотят, чтобы вы прыгали через обручи, прежде чем они даже позволят вам * увидеть * чип. Broadcom по-прежнему не позволяет Raspberry разрабатывать надлежащие драйверы графических процессоров для своих чипов, потому что в конечном итоге исходный код станет открытым., @Majenko
Allwinner лучше в своей открытости, но все же с ними тяжело работать. Мясистый MCU (200 МГц или быстрее) с правильным интерфейсом было бы легче подключить, но проблема с ними, как правило, заключается в нехватке памяти. Вот в чем преимущество SoC — с внешней памятью (а DDR — это еще один кошмар для разработки) вы действительно не ограничены тем, что производитель решил разрешить вам иметь. Когда дело доходит до микроконтроллеров, на самом деле не имеет значения, какую архитектуру вы выберете. Лично я предпочитаю MIPS (PIC32), потому что я вырос на системах MIPS в, @Majenko
университет (станции DEC). Тем не менее, новый мальчик в блоке, Risc V, который полностью открыт, выглядит многообещающе. Некоторые микроконтроллеры начинают появляться. Risc V основан на MIPS и доступен как ядро с открытым исходным кодом для разработки FPGA. Таким образом, вы даже можете перевернуть свою собственную систему на FPGA, если хотите стать действительно хардкорной. Это дало бы вам самую гибкую систему, но опять же очень дорого для начала. Инструменты разработки стоят $$$$. Кроме того, для работы требуется совершенно другой набор навыков., @Majenko
Я знаю, что MIPS — это не ARM. Ограничение длины комментария не позволяло мне сказать полностью. Так или иначе, я нашел европейского продавца Teensy 3.5. 3.6 нет в наличии (как всегда). По какой-то странной причине я больше не могу найти тестовые видеоролики Teensy 3.5 LCD. Google, кажется, отбрасывает все неосновные вещи до крайней степени. Я хотел бы узнать больше о Teensy 3.5, так как это самая мощная вещь, доступная с приличным временем/стоимостью доставки, но мне нужно знать о наличии разрешительных лицензионных библиотек и о том, может ли 3.5 выполнять сверхбыстрый рендеринг 3.6 со скоростью 60 кадров в секунду. Я не могу получить 3.6., @Foxcat385
- Преобразование строки в const unsigned char
- ESP32 FREERTOS сбой при использовании Adafruit ST7789 в задачах с включенным Wi-Fi
- LILYGO TTGO T-Display не может обнаружить акселерометр, гироскоп и датчик температуры MPU 6050
- Как отображать текст на OLED?
- ESP32 WROOM 32 Проблемы с SPI EMF
- Какие форматы изображений принимаются для дисплеев?
- WS2812b - Интерполировать пиксели на неопиксельной матрице с маской
- Как отображать переменные на 0,96-дюймовом OLED-дисплее с библиотекой u8glib?
Хотя это не идеальное решение для игр, возможно [это](https://majenko.co.uk/gamma) вас заинтересует..., @Majenko
ваш пост читается как разглагольствование ... похоже, вы пытаетесь использовать оборудование, которое не подходит для этой задачи ... вы исследовали что-то вроде Raspberry Pi?, @jsotola
О, и корень зла не в деньгах. Корень зла -1., @Majenko
Ничего себе, особенно PS нес в себе какой-то глубокий гнев. Это действительно не оживляет, чтобы дать ответ: /, @chrisl
разве у NES не было аппаратного видеоконтроллера? ... я думаю, что у одной из ранних игровых консолей был 1-строчный буфер видео, @jsotola
@Majenko, воображаемый корень, @jsotola
@jsotola Значит, зло воображаемое?, @Majenko
@Majenko, я пытался пошутить, но не смог... лол... технически, корень всех зол - это люди, @jsotola
@jsotola Забавно... я тоже... :/, @Majenko
Насколько мне кажется, Raspberry Pi — это ShareAlike/GPL., @Foxcat385