STM32F103C + ILI9341 + ADAFRIT_GFX_AS

Sajuukkahr
Пн 30 января 2017 г. 11:09
Привет,

Я пытался взаимодействовать с синей таблеткой STM32F103C (куплен Китай) с ILI9341, но не повезло.

CS = PA2
D/C = PA1

Mosi = pa7
Мисо = PA6
SCK = PA5

VCC 3.3 В/5 В (устройство совместимо с 5 В, опробовано оба)
тройная проверка соединений
попробовал второй дисплей все еще ничего

Что я использую для проверки дисплея: https: // github.com/rogerclarkmelbourne/ ... CSTEST.Ино

ZMEMW16
Вт 31 января 2017 г. 12:48
Как структурировать это? наверное не слишком велик.

arduino_stm32 как когда?
версия Arduino IDE?
Операционная система?

это синяя таблетка, R10 - 10 тысяч, пожалуйста, проверьте? Нет хорошо, 1K5 - это отличный. Да, ну, некоторые перечисляют, некоторые нет, некоторые не могут решить.
(В какой -то момент может заменить 10K на 1K5 SMT, добавьте 1K8 SMT сверху или добавьте A1K8 (провода) в соответствующие выводы.)
(USB -порты и концентраторы, кажется, также влияют на это, с одним из моих 7 -х призванных устройств Hubs в первых 4, немного странно)

Запрограммировали ли вы наброски Blink, и он работает?
Повторите с половиной низкого времени и двойного времени, как и ожидалось? (У некоторых досок уже есть мигание 1 Гц)
Вы отредактировали графический тест для ваших контактов CS и D/C? подключил подсветку (с резистором?? к ?? 3V3?? до 5 В??)

:?: Есть ли «предложить вам купить» абзац в любом месте?

Вы заказали USB-палку ST-Link (около 2 долларов .. 4 доллара, может быть, 2, и, безусловно, еще одна таблетка, история и форум, возможно, предложит байт-мульти-пакет Mini) ?
паяльный железо ?? припаяна?? поток?? Приманки обычно снабжены заголовками, растерянными; также модули.
Кроме того?
Все 3 означает удвоение до того, что вы хотите в длину, и, конечно, DuPont дает вам 10 цветов
К сожалению, женские розетки хороши для 3 вставок, в одном направлении, вращайте 90, надежда
Я склонен нанести резиновую полосу в 9 -й петле вокруг проводов и зацепить другую сторону доски/хлебной доски, так что
Добавить мешок с резиновыми лентами :)

hth
Стивен

Sajuukkahr
Вт 31 января 2017 г. 9:17
Правление работает должным образом от того, что я могу сказать. R10 был заменен 103 на 1K (пока я не получу 1.5K SMD резисторы).

Доска была проверена с помощью мигания и последовательной связи. Доска узнает системой и может быть прошит через USB. (См. Отражение : D )

Я пропустил графический тест через USB и сериал, но не повезло.

Сначала я попробовал настраиваемую конфигурацию PIN -кода, но, поскольку я не добился успеха, я только что подключил ЖК -дисплей на плату, как на эскизе уже настроен, поэтому мне не нужно все время редактировать эскиз.

Устройство работает на уровне 72 МГц.

Резистор подсветки не имеет значения, так как вы сможете увидеть выход с внешним светом. Но да, подсветка была связана с 5 В с 4K7, 3.3 В даже 3.3v напрямую.

Стивестронг
Вт 31 января 2017 г. 10:11
Любая информация (ссылка) о дисплее?
Многие дисплеи должны быть ILI9341, но они не.

Что именно означает "не удачи"?
Не могли бы вы успешно прочитать идентификатор?
Что показано в серийном мониторе?

У вас есть область, чтобы проверить сигналы SPI?

Sajuukkahr
Вт 31 января 2017 г. 14:39
Блок: TJCTM24028-SPI
https: // www.aliexpress.com/item/2-4-240 ... E32A7C1489

ВЫХОД:
Дисплей режим питания: 0x0
Madctl Mode: 0x0
Пиксельный формат: 0x0
Формат изображения: 0x0
Самоагностика: 0x0
Контрольное время (микросекунд)
Экран заполнение 170820
Текст 43020
Линии 243833
Horiz/Vert Lines 15845
Прямоугольники (контур) 11599
Прямоугольники (заполненные) 355071
Круги (заполненные) 144677
Круги (контур) 173061
Треугольники (схема) 60156
Треугольники (заполненные) 166877
Округлые прямы (контур) 59812
Округлые прямы (заполненные) 416086
Сделанный!


Дисплей ничего не отображает (оба ЖК -единицы)...И нет, извините, у меня нет осциллографа, чтобы отладить это.

Стивестронг
Вт 31 января 2017 г. 14:49
Как вы установили булавки RST, DC и CS в демонстрационном наброске? Вы можете показать нам?
Настройка по умолчанию в демонстрационном эскизе использует булавки Adafruit Shield, которые могут быть совершенно неуместны в вашем случае.
Кроме того, убедитесь, что вы определяете булавки, используя стиль «pax» вместо чистых чисел.
Я бы тоже рекомендовал использовать RST Line: const int ZERO_CROSSING_PIN =14; const int TRIC_TRIGGER_PIN =13; volatile boolean zeroCrossingState = 0; uint16_t dimming = 500; char buf[16]; char *bPos; void zero_cross_detect() { zeroCrossingState = digitalRead(ZERO_CROSSING_PIN); if (zeroCrossingState==0) { // end of half cycle Timer2.pause();// cant trigger the tric now, its too late ! Timer2.setCount(0);// get ready to start again Timer2.setOverflow(dimming); Timer2.refresh(); digitalWrite(TRIC_TRIGGER_PIN,LOW); } else { // beginning of half cycle Timer2.resume(); } } void triggerDelayHandler() { // Can't turn the triac while the zero crossing input is low Timer2.pause(); if (zeroCrossingState) { digitalWrite(TRIC_TRIGGER_PIN,HIGH);// Turn on the triac } } void setup() { dimming = 750;// global volatile pinMode(TRIC_TRIGGER_PIN, OUTPUT);// Set AC Load pin as output pinMode(ZERO_CROSSING_PIN,INPUT); digitalWrite(TRIC_TRIGGER_PIN,LOW);// Turn on the triac attachInterrupt(ZERO_CROSSING_PIN, zero_cross_detect, CHANGE); Timer2.pause(); Timer2.setChannel1Mode(TIMER_OUTPUTCOMPARE); Timer2.setPrescaleFactor(720); Timer2.setOverflow(dimming); Timer3.setCount(0); Timer2.attachCompare1Interrupt(triggerDelayHandler); } void loop() { if (Serial.available()) { bPos=buf; while(Serial.available()) { *bPos++ = Serial.read(); } *bPos++='\0'; dimming=atoi(buf); } }

Sajuukkahr
Ср. 01 февраля 2017 г., 17:57
CS = PA2
D/C = PA1
Rst = pa3

Mosi = pa7
Мисо = PA6
SCK = PA5

Экран черный.
Пробовал оба конструктора
Adafruit_ili9341_stm tft = adafruit_ili9341_stm (tft_cs, tft_dc, tft_rst);
и
Adafruit_ili9341_stm tft = adafruit_ili9341_stm (tft_cs, tft_dc, tft_mosi, tft_clk, tft_rst, tft_miso);

Устройство совместимо с 5 В и попробовал как 5V, так и 3.3В. У единицы нет 3.3 В конвертер на спине.

Я пытаюсь заставить arduino uno отображаться на экране....Но любая идея приветствуется.

Sajuukkahr
Ср. 01 февраля 2017 г. 20:13
Подтверждено работать над Arduino Uno с библиотекой https: // github.com/gmtii/ili9341-arduino будет работать с 3.Только 3v (я думаю, продавец немного обманул меня в бите 5V). ADAFRIT_GFX_AS вообще не работает с какими -либо напряжениями....

Постараюсь собрать библиотеку на STM32 и увидеть результат.

Беннебой
Ср. 01 февраля 2017 г. 22:27
Стандартная библиотека Adafruit GFX отлично подходит для меня на STM32 - в сочетании с SSD1306 (снова стандарт), используя программную SPI - извинения, если я пропустил точку, может быть, просто попробуйте стандартные библиотеки Adafruit Adafruit?

Стивестронг
Чт, 02 февраля 2017 г., 7:09
Вы уверены, что это проблематично GFX LIB? Вы пытались установить разные цвета фоновых цветов, скажем, чтобы изменить 2 -секундной интервал?
Как сказал Bennehboy, он должен работать со стандартным Adafruit GFX Lib, как Мой ILI9486 Lib делает тоже.

Sajuukkahr
Чт, 02 февраля 2017 г. 8:22 утра
Я использую adafruit_gfx_as.h с adafruit_gfx.H дает мне ошибки, такие как методы, не определенные в классе:
тфу.SetCursor (0, 0);
тфу.setTextColor (ili9341_white); тфу.settextize (1);
тфу.println ("Hello World!");
Я получаю ошибки компилятора на SetCursor, SetTextColor, Println и так далее.

Sajuukkahr
Чт, 02 февраля 2017 г. 9:26
Стивестронг написал:Вы уверены, что это проблематично GFX LIB? Вы пытались установить разные цвета фоновых цветов, скажем, чтобы изменить 2 -секундной интервал?
Как сказал Bennehboy, он должен работать со стандартным Adafruit GFX Lib, как Мой ILI9486 Lib делает тоже.

Стивестронг
Чт, 02 февраля 2017 12:42
Извините, я забыл сказать вам, что упомянутые либера.
https: // github.com/stevstrong/arduino_s ... Спутники/SPI
Потому что он включает в себя некоторые функции, которые еще не преданы официальному STM32Duino Repo.

Стивестронг
Чт, 02 февраля 2017 12:46
Саджуккахр написал:Я использую adafruit_gfx_as.h с adafruit_gfx.H дает мне ошибки, такие как методы, не определенные в классе:
тфу.SetCursor (0, 0);
тфу.setTextColor (ili9341_white); тфу.settextize (1);
тфу.println ("Hello World!");
Я получаю ошибки компилятора на SetCursor, SetTextColor, Println и так далее.

Sajuukkahr
Чт, 02 февраля 2017 г. 15:58
Работая с вами SPI и GFX LIBS.

Не работает через загрузку USB -загрузчика и 3.3В.
Запрограммировано через сериал...

victor_pv
Чт, 02 февраля 2017 г. 16:55
Саджуккахр написал:Подтверждено работать над Arduino Uno с библиотекой https: // github.com/gmtii/ili9341-arduino будет работать с 3.Только 3v (я думаю, продавец немного обманул меня в бите 5V). ADAFRIT_GFX_AS вообще не работает с какими -либо напряжениями....

Постараюсь собрать библиотеку на STM32 и увидеть результат.

Беннебой
Чт, 02 февраля 2017 г., 17:05
Базовая библиотека ADAFRIT_GFX теперь включает в себя настраиваемое положение шрифта. Смотрите My Lrduino Repo, например, использование его, кстати.

Стивестронг
Чт, 02 февраля 2017 г., 17:17
Саджуккахр написал:Работая с вами SPI и GFX LIBS.

Не работает через загрузку USB -загрузчика и 3.3В.
Запрограммировано через сериал...

Sajuukkahr
Чт, 02 февраля 2017 г., 19:10
Я знаю, что это странно...Я вижу вывод на сериале либо через A9, так и A10 или USBModem.
Программирование через USB Я мог бы получить Blink для запуска (стандартный тест на борту по прибытии).

Что я наблюдал:
1) SMT32Flash не может разбудить устройство после DFU Flash
2) Проглученный набросок через USB не будет работать = черный экран

Прошивая эскиз через сериал = работает как очарование

Стивестронг
Чт, 02 февраля 2017 г., 19:24
Пожалуйста, опубликуйте здесь полный вывод журнала Arduino IDE, включая процесс компиляции и USB Flash.
Кстати, вы выбираете различные методы загрузки в меню IDE? Для загрузки USB вы должны выбрать "STM32Duino Bootloader".

Хорошо, я только что понял, что вы находитесь на Mac OS, и выбрал метод правой загрузки.
Мне нужно, что у меня нет Mac, поэтому я не могу вам помочь.

Angr77
Ср. 02 января 2019 12:39
Привет!

Я играл с 2.8 -дюймовый дисплей SPI со стандартом ILI9341. После долгих поисков я нашел эту ветку. (Об этом много нитей...Но не точно, как создать какую -то базовую линию и заставить свой дисплей работать с синей таблеткой)

Задний -
Я использую синюю плату таблеток (64K) и управляю/обновляю ее через ST-Link. Пока это работало отлично!
Тем не менее, у меня были проблемы, чтобы заставить дисплей работать - он просто показывал полный белый экран. Однако я мог видеть, что моя программа запускалась, и экран мигал при нажатии кнопки сброса на синей таблетке.

Используемые разъемы:
#include uint16_t pulseDelay = 8500; uint16_t pulseWidth = 100; void setup() { pinMode(PA1, PWM); // setup PA1 (Timer2 channel 2) to PWM (one pulse mode) pinMode(PA0, INPUT); // setup PA0 (Timer 2 channel 1) as input (capture input mode) Timer2.pause(); // stop the timers before configuring them timer_oc_set_mode(TIMER2, 2, TIMER_OC_MODE_PWM_2, TIMER_OC_PE); Timer2.setPrescaleFactor(72); // 1 microsecond resolution Timer2.setOverflow(pulseWidth + pulseDelay-1); Timer2.setCompare(TIMER_CH2, pulseDelay); // counter setup in one pulse mode, as slave triggered by External input for Timer 2 TIMER2_BASE->CR1 = ( TIMER_CR1_OPM ); // one pulse mode TIMER2_BASE->SMCR = ( TIMER_SMCR_TS_ETRF | TIMER_SMCR_SMS_TRIGGER ); TIMER2_BASE->CCER = ( TIMER_CCER_CC1E | TIMER_CCER_CC2E ); // enable channels 1 and 2 Timer2.refresh(); // start timer 2 Timer2.resume(); // let timer 2 run } void updateDelay(uint16_t dly) { // Timer2.pause(); Timer2.setOverflow(pulseWidth + dly-1); Timer2.setCompare(TIMER_CH2, dly); // Timer2.refresh(); // start timer 2 } char buf[16]; char *bPos; int direction=1; int increment=20; const int minDelay=0; const int maxDelay=9000; uint16_t oldPulseDelay; void loop3() { Serial.println(Timer2.getCount()); } void loop() { if (direction==1) { if (pulseDelayminDelay) { pulseDelay-=increment; } else { direction=1; pulseDelay+=increment; } } while(Timer2.getCount() !=0); updateDelay(pulseDelay); delay(50); if (Serial.available()) { bPos=buf; while(Serial.available()) { *bPos++ = Serial.read(); } *bPos++='\0'; updateDelay(atoi(buf)); } } uint32_t t; void loop2() { if ( (millis()-t)>1000 ) { t = millis(); Serial << millis() << ", TIM2->CCMR1: " << _HEX(TIMER2_BASE->CCMR1) << ", TIM2->CCER: " << _HEX(TIMER2_BASE->CCER) << ", TIM2->SMCR: " << _HEX(TIMER2_BASE->SMCR) << ", TIM3->CCMR1: " << _HEX(TIMER3_BASE->CCMR1) << ", TIM3->CCER: " << _HEX(TIMER3_BASE->CCER) << ", TIM3->SMCR: " << _HEX(TIMER3_BASE->SMCR) << endl; } }