Некоторые проблемы с ILI9341, проблемы с подключением SPI?

AG123
Вт 25 апреля 2017 г. 14:14
После немало тестов с библиотекой ILI9341_STM, я думаю, мне удалось получить свою довольно «сломанную» LCD ILI9341.
Попробуя графический тест

ILI9341, который я использую, - это что -то вроде этого http: // www.eBay.com/itm/new-240x320-spi ... 1863818914
и работа через интерфейс SPI с дополнительным PIN -код C / D (Command / Data) - я где -то читал, что некоторые платы жестко проводятся для 9 -битного SPI, необходимо выяснить, может ли это иметь место. пока это не кажется таким

Я сталкиваюсь с различными проблемами чтения и SPI, которые читают регистр Display id: 0x0,0,0 Display status: 0x0,0,0,0 Display Power Mode: 0x8 MADCTL Mode: 0x0 Pixel Format: 0x6 set pix format 16 bits Pixel Format: 0x5 Image Format: 0x8 Self Diagnostic: 0x0 sleep out << issue sleep out command Display id: 0x0,0,0 Display status: 0xC0,0,0,0 Display Power Mode: 0x98 MADCTL Mode: 0x0 Pixel Format: 0x0 set pix format 16 bits Pixel Format: 0x0 << invalid values of pixel format Image Format: 0x0 << invalid values of image format Self Diagnostic: 0x0 << incorrect values of self diagnostic status 0xC0 is expected after doing a sleep out command display on << issue display on command sleep out << issue sleep out command ILI9341 Test! Display id: 0x0,0,0 Display status: 0xC0,0,0,0 Display Power Mode: 0x9C MADCTL Mode: 0x0 Pixel Format: 0x6 set pix format 16 bits Pixel Format: 0x5 Image Format: 0x9C Self Diagnostic: 0xC0 << now it looked a little more sane Benchmark Time (microseconds) Screen fill 682875 << note the graphics test terminates midstream on the lcd leaving a blank screen Text 89295 Lines 510067 Horiz/Vert Lines 58799 Rectangles (outline) 39863 Rectangles (filled) 1418504 Circles (filled) 348216 Circles (outline) 393844 Triangles (outline) 120584 Triangles (filled) 541684 Rounded rects (outline) 144681 Rounded rects (filled) 1590095 Done!

AG123
Вт 25 апреля 2017 г. 15:47
сменил провода, похожие симптомы, теперь хуже, это не работает : P :ржу не могу:
Значения функции регистров чтения (LCD), кажется, возвращают разные значения с каждым набором последовательного вызова, (без сброса, без отображения, без сна и т. Д.) Что -то еще казалось не так isplay id: 0x0,0,0 Display status: 0x0,0,0,0 Display Power Mode: 0x8 MADCTL Mode: 0x0 Pixel Format: 0x0 set pix format 16 bits Pixel Format: 0x0 << all zeros Image Format: 0x0 << all zeros Self Diagnostic: 0x0 Display id: 0x0,0,0 Display status: 0x0,0,0,0 Display Power Mode: 0x8 MADCTL Mode: 0x0 Pixel Format: 0x6 set pix format 16 bits Pixel Format: 0x5<< looked more sane (note this is deliberately set for value 0x55, but actually 0x05 is retrieved) Image Format: 0x8 << looked more sane Self Diagnostic: 0x0 Display id: 0x0,0,0 Display status: 0x0,0,0,0 Display Power Mode: 0x8 MADCTL Mode: 0x0 Pixel Format: 0x5 set pix format 16 bits Pixel Format: 0x5 Image Format: 0x8 Self Diagnostic: 0x0 Display id: 0x0,0,0 Display status: 0x0,0,0,0 Display Power Mode: 0x8 MADCTL Mode: 0x0 Pixel Format: 0x5 set pix format 16 bits Pixel Format: 0xFF << all 0xFF ! Image Format: 0xFF << all 0xFF ! Self Diagnostic: 0xFF << all 0xFF !

Дэйвид.Прентис
Вт 25 апреля 2017 г. 16:03
Первый шаг - получить надежный результат diag ().
Любые проблемы указывают на ненадежные соединения SPI E.глин. свободный или разбитый провод.

Какую версию IDE вы используете? Ранние версии "Maplecore" сбой с макросом f ().

Дэйвид.

AG123
Вт 25 апреля 2017 г. 16:14
Спасибо
Я использую библиотеку ILI9341_STM в значительной степени из существующего ядра F1
https: // github.com/rogerclarkmelbourne/ ... Li9341_stm
Что касается SPI, я использую эту библиотеку
https: // github.com/rogerclarkmelbourne/ ... Спутники/SPI

в основном сделал копию adafruit_ili9341_stm.CPP и запуск его «локально» в том же приложении, чтобы я мог вставить больше операторов, чтобы выяснить проблемы.
В настоящее время я выполняю свою версию ReadCommand8 (Uint8_T CMD, 0), которая не выдает эту команду «Sekret» :ржу не могу:
и слегка изменен (прилагается ниже), чтобы я мог вернуть несколько параметров для чтения-командиров E.глин. ILI9341_RDDST, ILI9341 может фактически вернуть несколько байтов ответов. Отсюда и модификация. /* params buf[] u'd need to provide an array of bytes to store the results returned from ili9341 c - this is the ili9341 command n - how many bytes to read and insert in buf[] from the response */ void Adafruit_ILI9341_STM::readcommandx(uint8 *buf, uint8_t c, int8 n) { uint index = 0; if (hwSPI) spi_begin(); /* SETDC_CMD(); CS_ENABLE(); spiwrite(0xD9); // woo sekret command? SETDC_DATA(); spiwrite(0x10 + index); CS_DISABLE(); */ SETDC_CMD(); CS_ENABLE(); //if(hwSPI) digitalWrite(_sclk, LOW); spiwrite(c); SETDC_DATA(); SPI.transfer(0x00); //the first 8 bits/clocks are dummy clocks for (int i = 0; i < n; i++) { uint8 b = SPI.transfer(0x00); *(buf+i) = b; } CS_DISABLE(); if (hwSPI) spi_end(); }

Пито
Вт 25 апреля 2017 г. 16:33
Я использовал 9341 с Maple Mini и _stm (DMA?) библиотека. Проводки длиной 12-15 см. Он сработал 18/36 МГц SPI в порядке.

AG123
Вт 25 апреля 2017 г. 16:38
Спасибо
Мне нужно постепенно отлаживать это, я сделал свою «индивидуальную» функцию ReadCommandx вернуть дополнительный байт, больше, чем спецификация, пока, похоже, не говорит, что мой ILI9341 жестко проводя 0xff или 0x00, что сейчас не значало ничего конкретного :ржу не могу:

Дэйвид.Прентис
Вт 25 апреля 2017 г., 18:01
У вас есть обычный Red 2.4 "с сенсорным дисплеем.

Он использует 8-битный SPI. Подключить все булавки. Используйте полный конструктор ().

Убедитесь, что у вас есть солидные соединения. я.эн. Хорошие гнезда заголовка.

Дэйвид.

AG123
Вт 25 апреля 2017 г. 9:05 вечера
Подумал, мой штифт с сбросом ЖК -дисплеев находится на выводе 0 PB11 на Maple Mini, коды записаны, чтобы ожидать сброса ЖК -дисплеев на штифте, отличном от 0
поменял булавки, и теперь это работает : D

Удивительно, но в то время как теперь графические тесты выполняются до завершения, различные значения от LCD -регистрации Указывают команды.эн. Он все еще варьируется между последовательными наборами чтения, первые чтения после прогона графических тестов, по -видимому, отражают правильные значения, после этого он варьируется до 0xff и 0x00

ZMEMW16
Ср 26 апреля 2017 г. 15:22
Есть ли у него режим адреса регистрации автоматического размещения ?
SRP

AG123
Ср 26 апреля 2017 г., 19:03
на основе документаций ILI9341
https: // www.Crystalfontz.com/контроллер ... LI9341/142
https: // www.Crystalfontz.com/controllers/ilitek/ili9341
эн.глин. Страница 83 Раздел 8 Список команд, стр. 92 8.2.4 Читать состояние отображения (это подробная командная спецификация)
Идея заключается в том, что мы устанавливаем PIN -код D/C LOW (I.эн. Команда) Выпустите команду
Следующее вытягивание D/C Pin High (я.эн. данные) и начните читать результаты, поступающие в PIN -код MISO, поступающий из ЖК -дисплея.
спецификации предполагают, что для такой команды e.глин. Команда Статуса Отображения

Что я наблюдал со своими тестами, так это то, что после запуска графического теста и выпуска 0x09 статус чтения статус правильный / ожидаемый
Тем не менее, последующая та же команда и читать начало «дрейфу», и я бы либо получил 0x00, либо, возможно, иногда 0xff. 0xff особенно наблюдается после сброса, а затем выпускает дисплей и команду Sleep Out. Но в следующем прочитано все, что станет 0x00

Однако, несмотря на все эти глупые байты статуса, в настоящее время графические тесты проходят до завершения
В этом инициаторе сброса в TFT есть какая -то «магия».begin () и коды инициализации :ржу не могу:

пока я до сих пор не понимаю.глин. работают ли часы SPI, даже если нет SPI.Команда Transfer (0x00)? И если после выпуска команды, будут ли обстоятельства, когда ЖК -дисплей возьмет больше часов SPI, прежде чем предоставить ответ (спецификации, похоже, не предполагали этого)? Другие вещи, которые могут повлиять на результаты, похожие на время, так как контакты D/C и CS - это булавки GPIO и понятие команды «Sekret», я отметил, что выпуск команды «Sekret». Я предполагаю, что, возможно, есть что -то большее, что мне нужно узнать о SPI, и что какая -то информация не задокументирована в «Справочном руководстве» для ILI9341 (в частности, некоторые из этих «волшебных» загадочных команд, найденных в TFT.begin () не задокументированы в справочном руководстве)

всего 2 цента
;)

Дэйвид.Прентис
Ср 26 апреля 2017 г., 21:27
Если вы не понимаете SPI, прочитайте Википедию.

Вы можете прочитать Reg (0x04), Reg (0x09) и грамм.

Вам нужна команда «Sekret» для чтения нескольких байтовых регистров, таких как ID (0xd3) или Gammap (0xe0)

Насколько я помню, код ADAFRITE считывает регистры правильно. Используйте метод полного жира для индекса в мульти-байтовый регистр.

Дэйвид.