Adafruit_ili9341_stm - Улучшения

Стивестронг
Сб 05 августа 2017 г. 13:12
Всем привет,

Недавно я был вовлечен в проект, связанный с ILI9341 и пропустил некоторые функции, которые уже были реализованы в оригинальной Adafruit Lib, но еще не в нашем варианте STM32.

Поэтому я добавил следующие функции в Библиотека Adafruit_ili9341_stm из репо Роджера:

- Push (RGB565) массив данных пикселей в ЖК -дисплей (уже совершается в репо Роджере)
- Возможна передавать ссылку на объект класса SPI и тактовую частоту SPI в основном эскизе без редактирования LIB -файла
- Исправить чтение Single + реализация Чтение нескольких пикселей
- Некоторые улучшения скорости (оптимизация DC и CS PIN -комбинезон)

А GraphicStest был расширен с помощью однократного теста с множественным пикселем.

Фактический эталон (процессор@72mhz, spi_1@36 МГц):
New ILI9341 Benchmark.jpg
Новый ILI9341.JPG (80.28 киб) просмотрено 1402 раз

Пито
Сб 05 августа 2017 14:07
Под Slaeber, последнее Роджером (с SPI, как указано выше), Maple Mini @72mhz, SPI2 (18 МГц)
ILI9341 Test! Display Power Mode: 0x9C MADCTL Mode: 0x48 Pixel Format: 0x5 Image Format: 0x9C Self Diagnostic: 0xC0 Read single pixel test ------------------------------ Write pixel: 0x1234 Read pixel: 0x1234 Read multiple pixel test ------------------------------ Write pixels: 0x1234, 0x5678, 0x9012, 0x3456 Read 4 pixels: 0x1234, 0x5678, 0x9012, 0x3456 Benchmark Time (microseconds) Screen fill 341489 Text 43819 Lines 226266 Horiz/Vert Lines 29315 Rectangles (outline) 19360 Rectangles (filled) 709364 Circles (filled) 154906 Circles (outline) 180807 Triangles (outline) 51422 Triangles (filled) 261140 Rounded rects (outline) 67645 Rounded rects (filled) 789560 Done!

Стивестронг
Сб 05 августа 2017 г., 19:39
Пито, спасибо за тестирование.

Rogerclark
Сб 05 августа 2017 11:17
Стив

Спасибо


Я протестировал последнюю библиотеку, используя копию в ZIP, и, похоже, работает нормально.

Я не уверен, почему, когда я вытащил из твоего репо, это не сработало для меня.

Одна незначительная вещь, которая поймала меня с новой версией графического теста, заключается в том, что она не работает, если серийный монитор не открыт.

Я также думаю, что могут быть конфликты, требуя потоковой передачи Arduino для использования Graphics LIB, если мы не включим эту LIB как часть основной установки.
Но люди, возможно, уже установили, и нам нужно сохранить нашу копию, в курсе главной версии

Я думаю, что легче просто включить потоковую передачу.H в примере папки и ссылка на эту версию.

Если мы собираемся обновить графический тест, мы должны удалить все макросы f (), используемые при печати текста и т. Д


Мне нужно будет сравнить скорость / время с предыдущей версией LIB, просто чтобы убедиться, что все выглядят мне нормально.

КСТАТИ.

Я также пытался запустить его с дифференцированной оптимизацией и, кажется, работает нормально.
Странно -O2 для текста медленнее, чем -os, но -O3 более быстрее, а -O3 + LTO даже быстрее, чем это.

victor_pv
Солнце 06 августа 2017 14:53
Почему результаты испытаний Пито намного медленнее, чем у Стива?

Стивестронг
Солнце 06 августа 2017 14:59
Потому что я тестировал на SPI_1 @36 МГц, и PITO протестировал на SPI_2 @18MHZ.

Мэнни
Ср 16 августа 2017 г., 17:50
Привет, Стив, я попробовал эскиз Bechmark, и я не смог получить никакого дисплея на экране, если не использовал Spiclass
static SPIClass _spi(1); tft.begin(_spi); //worked tft.begin(); // no display

Martinayotte
Ср 16 августа 2017 г., 17:52
@Manny, почему вы публикуете в 3 раза одну и ту же посту, используя ответы ?

Мэнни
Ср 16 августа 2017 г., 17:57
[Martinayotte - Ср 16 августа 2017 г., 17:52] - @Manny, почему вы публикуете в 3 раза одну и ту же посту, используя ответы ?
Хаха, должно быть, теряет это, даже не позволит мне удалить их, потому что на них тоже ответили : oops:

Стивестронг
Чт 17 августа 2017 г., 17:14
Ребята, я на Холлидее в настоящее время, вернутся через неделю или около того.

Rogerclark
Чт 17 августа 2017 г., 22:25
Поскольку последний код Стивса, кажется, работает нормально, я планировал обновить репо с его копией этой библиотеки, а также его обновленной Spi Lib.

Но я был слишком занят другими вещами, чтобы сделать это

victor_pv
Чт 17 августа 2017 г., 22:46
[Стивестронг - Четверг 17 августа 2017 г., 17:14] - Ребята, я на Холлидее в настоящее время, вернутся через неделю или около того.
Стив, когда вы вернетесь, если вы еще этого не сделали, вы можете удалить эту линию, остается от того, когда передачи DMA были сделаны непосредственно в библиотеке, прежде чем добавить DMASEND:
https: // github.com/stevstrong/arduino_s ... СТМ.CPP#L7

Еще одна вещь, не будет использовать dmasendasync здесь, так как линия CS может быть переключена до завершения передачи?
https: // github.com/stevstrong/arduino_s ... М.CPP#2243

Поскольку мы можем использовать обратные вызовы DMA с помощью SPI, возможно, у нас может вместо этого быть функция переключать PIN -код CS, когда при вызове?

Мэнни
Чт 17 августа 2017 г., 11:13
[Rogerclark - Четверг 17 августа 2017 г. 22:25] - Поскольку последний код Стивса, кажется, работает нормально, я планировал обновить репо с его копией этой библиотеки, а также его обновленной Spi Lib.

Но я был слишком занят другими вещами, чтобы сделать это
Я имел ошибки с компиляцией с Spi Lib и SDFAT, другие библиотеки могут быть затронуты.

Rogerclark
Чт 17 августа 2017 г., 23:30
ХОРОШО.

Я только проверил код Стива с помощью ILI9341 LIB. Его необходимо протестировать с более широким диапазоном либеров E.глин. Сд

Стивестронг
Пт 18 августа 2017 г. 6:49
Виктор, я исправил то, что вы упомянули.
Однако, поскольку меня нет дома, я не могу проверить это.

Если вы обнаружите некоторые ошибки или имеете ошибки компиляции/сборки, сообщите об этом на GitHub.

Стивестронг
Пт, сентябрь 01, 2017 14:37
[Мэнни - Четверг 17 августа 2017 г. 11:13] - Я имел ошибки с компиляцией с Spi Lib и SDFAT, другие библиотеки могут быть затронуты.
Мэнни, не могли бы вы опубликовать здесь, какие сообщения об ошибках вы получаете?

Мэнни
Солнце 17 сентября 2017 г., 17:35
[Стивестронг - Пт, сентябрь 01, 2017 14:37] - Мэнни, не могли бы вы опубликовать здесь, какие сообщения об ошибках вы получаете?
Лучше поздно, чем никогда
I:\Users\Manny\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\SdFat\SdSpiSTM32F1.cpp: In member function 'void SdSpi::send(const uint8_t*, size_t)': I:\Users\Manny\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\SdFat\SdSpiSTM32F1.cpp:91:20: error: call of overloaded 'write(const uint8_t*&, size_t&)' is ambiguous SPI.write (buf, n); ^ I:\Users\Manny\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\SdFat\SdSpiSTM32F1.cpp:91:20: note: candidates are: In file included from I:\Users\Manny\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\SdFat\SdSpi.h:124:0, from I:\Users\Manny\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\SdFat\SdSpiSTM32F1.cpp:23: I:\Users\Manny\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\SPI\src/SPI.h:274:10: note: void SPIClass::write(uint16, uint32) void write(uint16 data, uint32 n); ^ I:\Users\Manny\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\SPI\src/SPI.h:274:10: note: no known conversion for argument 1 from 'const uint8_t* {aka const unsigned char*}' to 'uint16 {aka short unsigned int}' I:\Users\Manny\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\SPI\src/SPI.h:281:10: note: void SPIClass::write(void*, uint32) void write(void * buffer, uint32 length); ^ I:\Users\Manny\Documents\Arduino\hardware\Arduino_STM32\STM32F1\libraries\SPI\src/SPI.h:281:10: note: no known conversion for argument 1 from 'const uint8_t* {aka const unsigned char*}' to 'void*'

Стивестронг
Пн 18 сентября 2017 г. 12:08
Мэнни, я вижу, что вы используете не-DMA-трансферы. Есть ли причина, по которой вы не используете передачи DMA?

В любом случае, я опубликовал два PRS для репо Греймана, чтобы решить эту проблему. https: // github.com/greiman/sdfat/utles

Мэнни
Пн 18 сентября 2017 г., 19:27
[Стивестронг - Пн 18 сентября 2017 12:08] - Мэнни, я вижу, что вы используете не-DMA-трансферы. Есть ли причина, по которой вы не используете передачи DMA?

В любом случае, я опубликовал два PRS для репо Греймана, чтобы решить эту проблему. https: // github.com/greiman/sdfat/utles
Хорошее место на DMA...В любом случае, скачал репо Греймана, и все это работает с Adafruit_ili9341_stm и SPI Libs из вашего репозиции.