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, которые читают регистр
Попробуя графический тест
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
сменил провода, похожие симптомы, теперь хуже, это не работает
Значения функции регистров чтения (LCD), кажется, возвращают разные значения с каждым набором последовательного вызова, (без сброса, без отображения, без сна и т. Д.) Что -то еще казалось не так
Значения функции регистров чтения (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 ().
Дэйвид.
Любые проблемы указывают на ненадежные соединения 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 может фактически вернуть несколько байтов ответов. Отсюда и модификация.
Я использую библиотеку 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, что сейчас не значало ничего конкретного
Мне нужно постепенно отлаживать это, я сделал свою «индивидуальную» функцию ReadCommandx вернуть дополнительный байт, больше, чем спецификация, пока, похоже, не говорит, что мой ILI9341 жестко проводя 0xff или 0x00, что сейчас не значало ничего конкретного
Дэйвид.Прентис
Вт 25 апреля 2017 г., 18:01
У вас есть обычный Red 2.4 "с сенсорным дисплеем.
Он использует 8-битный SPI. Подключить все булавки. Используйте полный конструктор ().
Убедитесь, что у вас есть солидные соединения. я.эн. Хорошие гнезда заголовка.
Дэйвид.
Он использует 8-битный SPI. Подключить все булавки. Используйте полный конструктор ().
Убедитесь, что у вас есть солидные соединения. я.эн. Хорошие гнезда заголовка.
Дэйвид.
AG123
Вт 25 апреля 2017 г. 9:05 вечера
Подумал, мой штифт с сбросом ЖК -дисплеев находится на выводе 0 PB11 на Maple Mini, коды записаны, чтобы ожидать сброса ЖК -дисплеев на штифте, отличном от 0
поменял булавки, и теперь это работает
Удивительно, но в то время как теперь графические тесты выполняются до завершения, различные значения от LCD -регистрации Указывают команды.эн. Он все еще варьируется между последовательными наборами чтения, первые чтения после прогона графических тестов, по -видимому, отражают правильные значения, после этого он варьируется до 0xff и 0x00
поменял булавки, и теперь это работает
Удивительно, но в то время как теперь графические тесты выполняются до завершения, различные значения от LCD -регистрации Указывают команды.эн. Он все еще варьируется между последовательными наборами чтения, первые чтения после прогона графических тестов, по -видимому, отражают правильные значения, после этого он варьируется до 0xff и 0x00
ZMEMW16
Ср 26 апреля 2017 г. 15:22
Есть ли у него режим адреса регистрации автоматического размещения ?
SRP
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 цента
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 считывает регистры правильно. Используйте метод полного жира для индекса в мульти-байтовый регистр.
Дэйвид.
Вы можете прочитать Reg (0x04), Reg (0x09) и грамм.
Вам нужна команда «Sekret» для чтения нескольких байтовых регистров, таких как ID (0xd3) или Gammap (0xe0)
Насколько я помню, код ADAFRITE считывает регистры правильно. Используйте метод полного жира для индекса в мульти-байтовый регистр.
Дэйвид.