Подключение LCD экрана к STM32f4xx

Пытаюсь вывести на экран LCD 2004 текст. Плата stm32f401. Беру 2 разные платы ничего не выводится. Подключаю плату stm32f103 текст сообщения выводится. В чем может быть проблема? На экран выводится только полностью 0 и 2 строка из квадратиков. Если виновата стандартная библиотека какую поставить в замен.

#include <LiquidCrystal.h>
LiquidCrystal lcd(PA12, PA11, PB15, PB14, PB13, PB12); // (RS, E, D4, D5, D6, D7)
void setup()
{
  lcd.begin(20, 4);
  lcd.setCursor(0, 0);lcd.print("STM32 BLUE PILL");
}
void loop() {}

Строка из квадратиков должна выводиться и без процессора. Это проверка дисплея при включении. Они пропадают после инициализации дисплея. Если не пропали, а программа та же то только не правильное подключение.

1 лайк

Посмотрите что вы пишете?

вот плата F401 и обижается :slight_smile:

3 лайка

Проверьте соединения, контакты.
Добавьте делей в сетап.

стало гораздо лучше. теперь только квадратик в одном знаке. Потом 2 знака с горизонтальными линиями. И потом 1 квадратик стал мигать. Наверное плата обиделась. Как тут сказали. И обиделись обе платы одновременно.

Так после чего именно “стало лучше”?

Резистор «контраста» покрути.

после добавления этой строки. delay(300); А резистор контраста только делает квадратики либо совсем темными или светлыми. Буковок все равно нет.

Что сказать, добавьте ещё, до 1000, например…
А вообще, я бы тщательно проверил пайку разъёмов(и не только) на этих платах.
Хотя - бы , с помощью мультиметра и лупы.

А я бы i2c адаптер припаял.

С ним проще ))

I2C адаптер просто. Но слишком долго выводит 80 символов. Да и он тоже не отображает ничего.

Запишите блинк, и помигайте диодом, проверив , совпадает ли время задержек с реальным. Т.е. нужно убедиться, что реальная частота камня соответствует частоте, которая должна быть на выбранной плате в аддоне.

Символьные дисплеи сами по себе “тормозные”. Хотите быстрее выводить - используйте графические дисплеи.

Долго - это сколько?
И какое время является приемлемым?

То есть вывести целиком графическое знакоместо (от 48 пикселей и выше) заведомо быстрее, чем код единственного символа?

К тому ж можно за раз выводить по 1 символу. Скорость единицы микросекунд.

светодиодом помигал. Все работает. время соответствует. У меня 80 знаков выводится порядка 12 мсек. Это я считаю не долго. Если 80 знаков выводить за 100 мсек это я считаю долго. И сейчас речь вообще идет от том как вывести хоть что нибудь на экран. Пробовал отдельно тактирование выводов запускал тоже не помогает.

Если выводить через интерфейс I2C (см. сообщение №12), то минимальное время, которого мне удалось достичь, примерно 180 мкс (на частоте 880 кГц), что, вообще-то, сотни, а не единицы.
А через наиболее распространенную библиотеку - примерно 2900 мкс.

Логический анализатор подключали? Что он показывает?

RW на землю не забыли?