Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864

Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Ответить
Прорезались зубы
Сообщения: 217
Зарегистрирован: Вт окт 01, 2013 01:04:31
Откуда: Гомель

Сообщение mixa232323 »

qt как редактор использую без отладки
Реклама
Вымогатель припоя
Сообщения: 558
Зарегистрирован: Ср сен 09, 2015 13:09:15

Сообщение kloker »

а какие дисплеи уже компилятся через make в гите ampcontrol-f103 ?
ks0108 занят, из свободных ssd1306(i2c) и ili9341(spi)
Реклама
Прорезались зубы
Сообщения: 217
Зарегистрирован: Вт окт 01, 2013 01:04:31
Откуда: Гомель

Сообщение mixa232323 »

[uquote="kloker",url="/forum/viewtopic.php?p=3432580#p3432580"]а какие дисплеи уже компилятся через make в гите ampcontrol-f103 ?
ks0108 занят, из свободных ssd1306(i2c) и ili9341(spi)[/uquote]

пока только ks0108
Прорезались зубы
Сообщения: 217
Зарегистрирован: Вт окт 01, 2013 01:04:31
Откуда: Гомель

Сообщение mixa232323 »

WiseLord
Вот что у меня получилось с ili9320 8bit (код немного старый)
Вложения
ampcontrol-f103-master1.rar
(486.4 КБ) 290 скачиваний
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Я как раз в 16-битном варианте (в отдельном проекте) завёл дисплей на ILI9320 вчера. Теперь его на 8 бит переведу и добавлю поддержку в проект, возможно, возпользуюсь Вашими наработками.
Просто ILI9341, вроде как и более популярного, пока на руках нет.
Контактная информация:
Реклама
Прорезались зубы
Сообщения: 217
Зарегистрирован: Вт окт 01, 2013 01:04:31
Откуда: Гомель

Сообщение mixa232323 »

[uquote="WiseLord",url="/forum/viewtopic.php?p=3433109#p3433109"]Я как раз в 16-битном варианте (в отдельном проекте) завёл дисплей на ILI9320 вчера. Теперь его на 8 бит переведу и добавлю поддержку в проект, возможно, возпользуюсь Вашими наработками.
Просто ILI9341, вроде как и более популярного, пока на руках нет.[/uquote]

мой вариант рабочий и там есть разворот на 180 градусов. из него можно что нибудь вытянуть и там режим 8 цветов включен.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Запустил Ваш вариант.

С трудом, правда, разобрался, как включить 8-бит режим на дисплее. Ножка IM0 упорно звонилась на землю (16 бит режим). Оказалось, перемычки стояли как на самой плате, так и на шлейфе дисплея. Плюс ещё сама по себе эта линия почему-то звонилась на землю, даже без перемычек.

В итоге, выпаяв всё это, получилось подтянуть линию к питанию и получить 8-битный интерфейс.

Но, глядя на Ваш код, я вижу, что это не просто 8 бит интерфейс для 16-битного цвета (RGB565), но ещё и цвет 8-битный. В даташите на ILI9320 никак не могу найти этого режима.

Но ведь работает как-то...

Мой вариант драйвера пока работает в 16-цветном режиме, но на 8-битной шине. Даже интересно, насколько это медленнее. Вроде не должно быть особой разницы (всего лишь 4 лишние записи в порт).

В общем, всё страньше и страньше...

P.S.
mixa232323, просьба к Вам проверить мой вариант кода на своём дисплее. Инициализацию хотя бы (пока при включении экран чистится и рисуется круг на экране ждущего режима). Единственное, так как я отлаживаюсь пока на отдельной плате (STM32F103RBT6), к которой дисплей подключается "бутербродом", разводка у него в pins.h пока другая. Вам надо её подправить под "стандартную" разводку дисплея.
Контактная информация:
Прорезались зубы
Сообщения: 217
Зарегистрирован: Вт окт 01, 2013 01:04:31
Откуда: Гомель

Сообщение mixa232323 »

WiseLord

8бит цвет регистр R07h бит D3

Добавлено after 29 minutes 47 seconds:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
Не совсем понял как подправить пины
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

#define ILI9320_DHI_Port встановить в GPIOC, ..._Pin - в 7..0, Ну и управляющие линии ниже в GPIOA и соответствующие номера. Те же, что у Вас в Вашем примере.

P.S. Всё равно непонятно. Бит CL в этом регистре - 8-цветный режим. То есть, не 8-битный (256 цветов), а именно какой-то 8-цветный.
Последний раз редактировалось WiseLord Вт авг 07, 2018 08:52:24, всего редактировалось 1 раз.
Контактная информация:
Прорезались зубы
Сообщения: 217
Зарегистрирован: Вт окт 01, 2013 01:04:31
Откуда: Гомель

Сообщение mixa232323 »

Спойлер#define ILI9320_DHI_Port GPIOA
#define ILI9320_DHI_Pin (LL_GPIO_PIN_0 | LL_GPIO_PIN_1 | LL_GPIO_PIN_2 | LL_GPIO_PIN_3 | \
LL_GPIO_PIN_4 | LL_GPIO_PIN_5 | LL_GPIO_PIN_6 | LL_GPIO_PIN_7)

#define ILI9320_RS_Port GPIOA
#define ILI9320_RS_Pin LL_GPIO_PIN_15
#define ILI9320_CS_Port GPIOB
#define ILI9320_CS_Pin LL_GPIO_PIN_3
#define ILI9320_WR_Port GPIOB
#define ILI9320_WR_Pin LL_GPIO_PIN_5
#define ILI9320_RD_Port GPIOB
#define ILI9320_RD_Pin LL_GPIO_PIN_10
#define ILI9320_LED_Port GPIOC
#define ILI9320_LED_Pin LL_GPIO_PIN_13


я так и сделал а толку нет

и не понятно где сброс дисплея по железу
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

На моей плате с ILI9320 (или это всё же ILI9325/9328?) RST дисплея не управляется МК. Поэтому нет поддержки.

Ладно, вечером сегодня (если будет время) попробую подключить его к основной плате шлейфом, и там будет видно что к чему.
Контактная информация:
Вымогатель припоя
Сообщения: 558
Зарегистрирован: Ср сен 09, 2015 13:09:15

Сообщение kloker »

ILI9320 с двойным буфером памяти? если да, то можно подгружать во второй буфер, потом переключаться в него. уменьшает мерцание пикселей при подгрузке растров.
из даташита:
8.2.27. Partial Image 1 Display Position (R80h)
8.2.28. Partial Image 1 RAM Start/End Address (R81h, R82h)
8.2.29. Partial Image 2 Display Position (R83h)
8.2.30. Partial Image 2 RAM Start/End Address (R84h, R85h)

или это две половинки поля дисплея, как у 12864 на ks108?

второй момент, в кристале STM32F103xB нет аппаратной поддержки FSMC (8 пинов на шину AD). советуют юзать SPI интерфейсы.
https://www.compel.ru/lib/ne/2018/5/2-r ... -periferii
Прорезались зубы
Сообщения: 217
Зарегистрирован: Вт окт 01, 2013 01:04:31
Откуда: Гомель

Сообщение mixa232323 »

[uquote="kloker",url="/forum/viewtopic.php?p=3433505#p3433505"]ILI9320 с двойным буфером памяти? если да, то можно подгружать во второй буфер, потом переключаться в него. уменьшает мерцание пикселей при подгрузке растров.
из даташита:
8.2.27. Partial Image 1 Display Position (R80h)
8.2.28. Partial Image 1 RAM Start/End Address (R81h, R82h)
8.2.29. Partial Image 2 Display Position (R83h)
8.2.30. Partial Image 2 RAM Start/End Address (R84h, R85h)

или это две половинки поля дисплея, как у 12864 на ks108?

второй момент, в кристале STM32F103xB нет аппаратной поддержки FSMC (8 пинов на шину AD). советуют юзать SPI интерфейсы.
https://www.compel.ru/lib/ne/2018/5/2-r ... -periferii[/uquote]

А тем у кого валяются дисплеи с мобил пускай покупают новые.))
Дисплеи с шиной SPI тоже будут добавлены.

Лично я буду прописывать все дисплеи которые под руку попадутся(которые подходят для реализации в данном проекте).

Добавлено after 14 minutes:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
WiseLord

переписал немного код и заработал ili9320 8bit + прописал reset
Вложения
ampcontrol-f103-master.rar
(487.97 КБ) 249 скачиваний
ili9320.c
или так
(12.09 КБ) 280 скачиваний
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Очень странное изменение. Запись в BSRR устанавливает в порту в 1 определённые, не трогая остальные. В Вашем коде нет сброса (BRR).
Поясню.
Пишем, например, страший байт: 0x00010001. ОК, записали
Дальше пишем младший байт: 0x01000100. В Вашем случае в порту будет 0x01010101. Так как старое состояние порта не сбросили.

P.S. В коде ili9320.c отличается от выложенного ниже, неправильного.

P.P.S. Да, изменение логичное - у Вас порты младшие используются (PA0-PA7), у меня старшие. Поэтому запись чуть другая. Надо её немного универсальнее сделать, наверное, без привязки к этим 0xFF00 и 0x00FF.

P.P.S. Раздобыл ILI9341, SPI. В ближайшее время тоже будет добавлен.
Последний раз редактировалось WiseLord Вт авг 07, 2018 18:53:13, всего редактировалось 1 раз.
Контактная информация:
Прорезались зубы
Сообщения: 217
Зарегистрирован: Вт окт 01, 2013 01:04:31
Откуда: Гомель

Сообщение mixa232323 »

[uquote="WiseLord",url="/forum/viewtopic.php?p=3433666#p3433666"]Очень странное изменение. Запись в BSRR устанавливает в порту в 1 определённые, не трогая остальные. В Вашем коде нет сброса (BRR).
Поясню.
Пишем, например, страший байт: 0x00010001. ОК, записали
Дальше пишем младший байт: 0x01000100. В Вашем случае в порту будет 0x01010101. Так как старое состояние порта не сбросили.[/uquote]

Не надо сбрасывать там автоматически сбрасывает.

А BSRR и сбрасывает и устанавливает биты
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Ах, точно. Забыл про это.
Но надо всё-таки как-то универсальнее сделать попробовать.
Контактная информация:
Прорезались зубы
Сообщения: 217
Зарегистрирован: Вт окт 01, 2013 01:04:31
Откуда: Гомель

Сообщение mixa232323 »

В смысле универсальнее?
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Чтобы не зависело от того, какие пины используются.
У меня на тестовой плате используются PB8..PB15 для данных, а в проекте - PA0..PA8. В итоге нужно менять
ILI9320_DHI_Port->BRR = 0x00FF; ILI9320_DHI_Port->BSRR = (data >> 8 ) & 0x00FF;
на
ILI9320_DHI_Port->BRR = 0xFF00; ILI9320_DHI_Port->BSRR = data & 0xFF00;
Вот как бы сделать универсально. В KS0108 просто по порядку по пинам проходим, но там уменьшение скорости вполне допустимо, а вот здесь хотелось бы быстрый вариант. Но универсальный.
Контактная информация:
Прорезались зубы
Сообщения: 217
Зарегистрирован: Вт окт 01, 2013 01:04:31
Откуда: Гомель

Сообщение mixa232323 »

Не стоит оно того.
Друг Кота
Аватара пользователя
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск

Сообщение WiseLord »

Возможно, и так...

Запушил в git вариант, использующий только BSRR регистр. Видимо, так будет наиболее быстро.

Сейчас, наверное, пойду и сделаю переходник с моего ILI9320 на платку с F103C8. Чтобы в дальнейшем не было расхождений по пинам.
Контактная информация:
Ответить

Вернуться в «Статьи»