Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
- Реклама
- Сообщения: 558
- Зарегистрирован: Ср сен 09, 2015 13:09:15
а какие дисплеи уже компилятся через make в гите ampcontrol-f103 ?
ks0108 занят, из свободных ssd1306(i2c) и ili9341(spi)
ks0108 занят, из свободных ssd1306(i2c) и ili9341(spi)
[uquote="kloker",url="/forum/viewtopic.php?p=3432580#p3432580"]а какие дисплеи уже компилятся через make в гите ampcontrol-f103 ?
ks0108 занят, из свободных ssd1306(i2c) и ili9341(spi)[/uquote]
пока только ks0108
ks0108 занят, из свободных ssd1306(i2c) и ili9341(spi)[/uquote]
пока только ks0108
WiseLord
Вот что у меня получилось с ili9320 8bit (код немного старый)
Вот что у меня получилось с ili9320 8bit (код немного старый)
- Вложения
-
- ampcontrol-f103-master1.rar
- (486.4 КБ) 290 скачиваний
Я как раз в 16-битном варианте (в отдельном проекте) завёл дисплей на ILI9320 вчера. Теперь его на 8 бит переведу и добавлю поддержку в проект, возможно, возпользуюсь Вашими наработками.
Просто ILI9341, вроде как и более популярного, пока на руках нет.
Просто ILI9341, вроде как и более популярного, пока на руках нет.
- Реклама
[uquote="WiseLord",url="/forum/viewtopic.php?p=3433109#p3433109"]Я как раз в 16-битном варианте (в отдельном проекте) завёл дисплей на ILI9320 вчера. Теперь его на 8 бит переведу и добавлю поддержку в проект, возможно, возпользуюсь Вашими наработками.
Просто ILI9341, вроде как и более популярного, пока на руках нет.[/uquote]
мой вариант рабочий и там есть разворот на 180 градусов. из него можно что нибудь вытянуть и там режим 8 цветов включен.
Просто ILI9341, вроде как и более популярного, пока на руках нет.[/uquote]
мой вариант рабочий и там есть разворот на 180 градусов. из него можно что нибудь вытянуть и там режим 8 цветов включен.
Запустил Ваш вариант.
С трудом, правда, разобрался, как включить 8-бит режим на дисплее. Ножка IM0 упорно звонилась на землю (16 бит режим). Оказалось, перемычки стояли как на самой плате, так и на шлейфе дисплея. Плюс ещё сама по себе эта линия почему-то звонилась на землю, даже без перемычек.
В итоге, выпаяв всё это, получилось подтянуть линию к питанию и получить 8-битный интерфейс.
Но, глядя на Ваш код, я вижу, что это не просто 8 бит интерфейс для 16-битного цвета (RGB565), но ещё и цвет 8-битный. В даташите на ILI9320 никак не могу найти этого режима.
Но ведь работает как-то...
Мой вариант драйвера пока работает в 16-цветном режиме, но на 8-битной шине. Даже интересно, насколько это медленнее. Вроде не должно быть особой разницы (всего лишь 4 лишние записи в порт).
В общем, всё страньше и страньше...
P.S. mixa232323, просьба к Вам проверить мой вариант кода на своём дисплее. Инициализацию хотя бы (пока при включении экран чистится и рисуется круг на экране ждущего режима). Единственное, так как я отлаживаюсь пока на отдельной плате (STM32F103RBT6), к которой дисплей подключается "бутербродом", разводка у него в pins.h пока другая. Вам надо её подправить под "стандартную" разводку дисплея.
С трудом, правда, разобрался, как включить 8-бит режим на дисплее. Ножка IM0 упорно звонилась на землю (16 бит режим). Оказалось, перемычки стояли как на самой плате, так и на шлейфе дисплея. Плюс ещё сама по себе эта линия почему-то звонилась на землю, даже без перемычек.
В итоге, выпаяв всё это, получилось подтянуть линию к питанию и получить 8-битный интерфейс.
Но, глядя на Ваш код, я вижу, что это не просто 8 бит интерфейс для 16-битного цвета (RGB565), но ещё и цвет 8-битный. В даташите на ILI9320 никак не могу найти этого режима.
Но ведь работает как-то...
Мой вариант драйвера пока работает в 16-цветном режиме, но на 8-битной шине. Даже интересно, насколько это медленнее. Вроде не должно быть особой разницы (всего лишь 4 лишние записи в порт).
В общем, всё страньше и страньше...
P.S. mixa232323, просьба к Вам проверить мой вариант кода на своём дисплее. Инициализацию хотя бы (пока при включении экран чистится и рисуется круг на экране ждущего режима). Единственное, так как я отлаживаюсь пока на отдельной плате (STM32F103RBT6), к которой дисплей подключается "бутербродом", разводка у него в pins.h пока другая. Вам надо её подправить под "стандартную" разводку дисплея.
WiseLord
8бит цвет регистр R07h бит D3
Добавлено after 29 minutes 47 seconds:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
Не совсем понял как подправить пины
8бит цвет регистр R07h бит D3
Добавлено after 29 minutes 47 seconds:
Re: Темброблок/спектроанализатор на ATmega16, TDA7439 и SG12864
Не совсем понял как подправить пины
#define ILI9320_DHI_Port встановить в GPIOC, ..._Pin - в 7..0, Ну и управляющие линии ниже в GPIOA и соответствующие номера. Те же, что у Вас в Вашем примере.
P.S. Всё равно непонятно. Бит CL в этом регистре - 8-цветный режим. То есть, не 8-битный (256 цветов), а именно какой-то 8-цветный.
P.S. Всё равно непонятно. Бит CL в этом регистре - 8-цветный режим. То есть, не 8-битный (256 цветов), а именно какой-то 8-цветный.
Последний раз редактировалось WiseLord Вт авг 07, 2018 08:52:24, всего редактировалось 1 раз.
Спойлер
#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
я так и сделал а толку нет
и не понятно где сброс дисплея по железу
На моей плате с ILI9320 (или это всё же ILI9325/9328?) RST дисплея не управляется МК. Поэтому нет поддержки.
Ладно, вечером сегодня (если будет время) попробую подключить его к основной плате шлейфом, и там будет видно что к чему.
Ладно, вечером сегодня (если будет время) попробую подключить его к основной плате шлейфом, и там будет видно что к чему.
- Сообщения: 558
- Зарегистрирован: Ср сен 09, 2015 13:09:15
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
из даташита:
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="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
из даташита:
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 скачиваний
Очень странное изменение. Запись в BSRR устанавливает в порту в 1 определённые, не трогая остальные. В Вашем коде нет сброса (BRR).
Поясню.
Пишем, например, страший байт: 0x00010001. ОК, записали
Дальше пишем младший байт: 0x01000100. В Вашем случае в порту будет 0x01010101. Так как старое состояние порта не сбросили.
P.S. В коде ili9320.c отличается от выложенного ниже, неправильного.
P.P.S. Да, изменение логичное - у Вас порты младшие используются (PA0-PA7), у меня старшие. Поэтому запись чуть другая. Надо её немного универсальнее сделать, наверное, без привязки к этим 0xFF00 и 0x00FF.
P.P.S. Раздобыл ILI9341, SPI. В ближайшее время тоже будет добавлен.
Поясню.
Пишем, например, страший байт: 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 раз.
[uquote="WiseLord",url="/forum/viewtopic.php?p=3433666#p3433666"]Очень странное изменение. Запись в BSRR устанавливает в порту в 1 определённые, не трогая остальные. В Вашем коде нет сброса (BRR).
Поясню.
Пишем, например, страший байт: 0x00010001. ОК, записали
Дальше пишем младший байт: 0x01000100. В Вашем случае в порту будет 0x01010101. Так как старое состояние порта не сбросили.[/uquote]
Не надо сбрасывать там автоматически сбрасывает.
А BSRR и сбрасывает и устанавливает биты
Поясню.
Пишем, например, страший байт: 0x00010001. ОК, записали
Дальше пишем младший байт: 0x01000100. В Вашем случае в порту будет 0x01010101. Так как старое состояние порта не сбросили.[/uquote]
Не надо сбрасывать там автоматически сбрасывает.
А BSRR и сбрасывает и устанавливает биты
Ах, точно. Забыл про это.
Но надо всё-таки как-то универсальнее сделать попробовать.
Но надо всё-таки как-то универсальнее сделать попробовать.
Чтобы не зависело от того, какие пины используются.
У меня на тестовой плате используются 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 просто по порядку по пинам проходим, но там уменьшение скорости вполне допустимо, а вот здесь хотелось бы быстрый вариант. Но универсальный.
У меня на тестовой плате используются 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 просто по порядку по пинам проходим, но там уменьшение скорости вполне допустимо, а вот здесь хотелось бы быстрый вариант. Но универсальный.
Возможно, и так...
Запушил в git вариант, использующий только BSRR регистр. Видимо, так будет наиболее быстро.
Сейчас, наверное, пойду и сделаю переходник с моего ILI9320 на платку с F103C8. Чтобы в дальнейшем не было расхождений по пинам.
Запушил в git вариант, использующий только BSRR регистр. Видимо, так будет наиболее быстро.
Сейчас, наверное, пойду и сделаю переходник с моего ILI9320 на платку с F103C8. Чтобы в дальнейшем не было расхождений по пинам.


