Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы

Дисплей 3.5 на ILI9341 + atmega128

Непрочитано 23.03.2024, 12:33  
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 91
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Дисплей 3.5 на ILI9341 + atmega128

Здравствуйте!
Прислали дисплей https://aliexpress.ru/item/400044419...00035349880052
Он на ili9488. Подключил его к atmega128 по следующей схеме

atmega displey
VCC ----------VCC
GND ----------GND
PB4 ----------CS
PB5 ----------RESET
PB6 ----------DC/RS
PB2 ----------SDI(MOSI)
PB1 ----------SCK
VCC ----------LED
PB3 ----------SDO(MISO)

Попробовал разные библиотеки, но так и не смог запустить дисплей.
Помогите пожалуйста разобраться, где взять проверенную библиотеку и как правильно начать работать с дисплеем.
Как я понимаю надо инициализировать spi?
Нажмите, чтобы открыть спойлер

PHP код:
#define F_CPU 8000000UL
#include ‹avr/io.h›
#include ‹util/delay.h›



#define SPI_DDR  DDRB
#define SPI_PORT PORTB
#define CS       PB0
#define RESET    PB1
#define DC       PB2
#define MOSI     PB3
#define SCK      PB5

// Инициализация SPI интерфейса
void SPI_init() 
{
    // Установим MOSI, SCK, CS и DC как выходные пины
    SPI_DDR |= (1 ‹‹ MOSI) | (1 ‹‹ SCK) | (1 ‹‹ CS) | (1 ‹‹ DC);
    
    // Включим SPI, установим мастер-режим и установим частоту SCK
    SPCR = (1 ‹‹ SPE) | (1 ‹‹ MSTR) | (1 ‹‹ SPR0);
}

// Функция для отправки байта данных через SPI
void SPI_send_byte(uint8_t data) 
{
    // Запускаем передачу данных
    SPDR = data;

    // Ждем окончания передачи
    while (!(SPSR & (1 ‹‹ SPIF)));
}

// Функция для отправки команды на дисплей
void ILI9488_send_command(uint8_t command) 
{
    // Переводим линию DC в низкое состояние для отправки команды
    SPI_PORT &= ~(1 ‹‹ DC);

    // Переводим линию CS в низкое состояние для начала передачи
    SPI_PORT &= ~(1 ‹‹ CS);

    // Отправляем команду
    SPI_send_byte(command);

    // Переводим линию CS в высокое состояние для окончания передачи
    SPI_PORT |= (1 ‹‹ CS);
}

// Функция для отправки данных на дисплей
void ILI9488_send_data(uint8_t data) 
{
    // Переводим линию DC в высокое состояние для отправки данных
    SPI_PORT |= (1 ‹‹ DC);

    // Переводим линию CS в низкое состояние для начала передачи
    SPI_PORT &= ~(1 ‹‹ CS);

    // Отправляем данные
    SPI_send_byte(data);

    // Переводим линию CS в высокое состояние для окончания передачи
    SPI_PORT |= (1 ‹‹ CS);
}

// Функция для инициализации дисплея
void ILI9488_init() 
{
    // Сброс дисплея
    SPI_PORT &= ~(1 ‹‹ RESET);
    _delay_ms(100);
    SPI_PORT |= (1 ‹‹ RESET);
    _delay_ms(100);
    
    // возможно тут вызовы функций ILI9488_send_command() и ILI9488_send_data()
    // конфигурации дисплея согласно его техническому описанию.
}

int main() 
{
    // Инициализация SPI
    SPI_init();

    // Инициализация дисплея
    ILI9488_init();

    // код для работы с дисплеем (рисование, обновление и т.д.)

    while (1) 
    {
        // Основной цикл программы
    }
} 
Реклама:

Последний раз редактировалось Devil Byte; 23.03.2024 в 18:08.
Devil Byte вне форума  
Непрочитано 23.03.2024, 12:56  
jsv010
Частый гость
 
Регистрация: 13.10.2022
Сообщений: 18
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
jsv010 на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

А библиотеку для st7789 не пробовал?
У меня похожий с диагональю 2.4 так завелся

Последний раз редактировалось jsv010; 23.03.2024 в 12:58.
jsv010 вне форума  
Непрочитано 23.03.2024, 12:59  
eddy
Почётный гражданин KAZUS.RUN
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Сообщение от Devil Byte Посмотреть сообщение
Попробовал разные библиотеки
Позорище! А самому по даташиту нарисовать - сложно что ли?
У меня под STM32 работает.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
eddy вне форума  
Непрочитано 23.03.2024, 13:06  
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 91
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Сообщение от eddy Посмотреть сообщение
Позорище! А самому по даташиту нарисовать - сложно что ли?
У меня под STM32 работает.
Спасибо за помощь новичку. Очень приятно. К Вам вопросов больше нет
Devil Byte вне форума  
Непрочитано 23.03.2024, 13:09  
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 91
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Сообщение от jsv010 Посмотреть сообщение
А библиотеку для st7789 не пробовал?
Нет, еще не пробовал, но попробую
Devil Byte вне форума  
Непрочитано 23.03.2024, 13:56  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

А зачем такой сложный дисплей? Выбирайте то, что по силам. Я же, насколько помню, раньше уже писал, какие есть простые дисплеи.
Если же непременно хотите сложный вариант, но не вникая в подробности, тогда просто перебирайте все подряд библиотеки, какая-нибудь да сработает. Метод научного тыка тоже может давать результаты, иногда даже за не слишком большое время.
Какие-нибудь мануалы читали? Ну хоть пару страниц то? Не хотите читать - просто перебирайте варианты.

С такими китайскими дисплеями есть еще проблема в том, что неизвестно, какой именно драйвер там стоит, и неизвестно, как именно подключен дисплей, через какие промежуточные компоненты.
NewWriter вне форума  
Непрочитано 23.03.2024, 14:04  
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 91
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

NewWriter, Добрый день. Да я помню о том что вы писали., но именно этот дисплей пришел первее, остальные я не успел получить, так как улетел на работу.
я начал читать как раз даташит по ili9341, но не уверен что начал писать правильно.
Нажмите, чтобы открыть спойлер

PHP код:
void ILI9341_Init() {
    // Инициализация SPI
    SPI_MasterInit();
    // Инициализация линий управления
    DDRC |= (1 ‹‹ LCD_RST) | (1 ‹‹ LCD_DC);
    // Сброс дисплея
    PORTC &= ~(1 ‹‹ LCD_RST);
    _delay_ms(100);
    PORTC |= (1 ‹‹ LCD_RST);
    _delay_ms(100);
    
    // Конфигурация дисплея
    ILI9341_WriteCommand(ILI9341_SWRESET);
    _delay_ms(150);
    ILI9341_WriteCommand(ILI9341_SLPOUT);
    _delay_ms(150);
    ILI9341_WriteCommand(ILI9341_DISPON);
    _delay_ms(100);
    
    // Настройка области записи
    ILI9341_WriteCommand(ILI9341_CASET);
    ILI9341_WriteData(0x00);
    ILI9341_WriteData(0x00);
    ILI9341_WriteData(0x00);
    ILI9341_WriteData(0xEF);
    ILI9341_WriteCommand(ILI9341_PASET);
    ILI9341_WriteData(0x00);
    ILI9341_WriteData(0x00);
    ILI9341_WriteData(0x01);
    ILI9341_WriteData(0x3F);
}

void ILI9341_DrawChar(uint16_t x, uint16_t y, char ch) {
    // TODO: Реализация вывода символа на дисплей
}

void ILI9341_DrawString(uint16_t x, uint16_t y, const char* str) {
    // TODO: Реализация вывода строки на дисплей
} 

На счет драйвера написал китайцу, но он пока молчит(
Devil Byte вне форума  
Непрочитано 23.03.2024, 14:07  
eddy
Почётный гражданин KAZUS.RUN
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

У всех SPI'ных драйверов дисплеев есть общий регистр, в котором содержится конкретная модель. Просто прочитай регистр - и поймешь, что у тебя там внутри.
Я сам несколько SPI'ных покупал. Пишут одно, а по факту внутри другое. А еще какие-то [censored] китайцы иногда вешают тачскрин на управляющие электроды, в итоге ничего не работает и приходится перепаивать (возможно, оно будет работать с пятивольтовым питанием, но кто в своем уме будет запитывать микроконтроллеры пятью вольтами, тут и 3.3-то - очень много).
Вот, в одной из последних железок был ili9341.

// ну и не пройду мимо и еще раз пристыжу: позорище-то какое! Ни документацию ТС не в состоянии почитать, ни код написать… Еще и, наверняка, под абдурину не как положено код пишет, а в абдурино-IDE с убогими абдуринобиблиотеками.
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!

Последний раз редактировалось eddy; 23.03.2024 в 14:10.
eddy вне форума  
Непрочитано 23.03.2024, 14:38  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,459
Сказал спасибо: 3,227
Сказали Спасибо 3,513 раз(а) в 2,394 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

Сообщение от Devil Byte Посмотреть сообщение
Попробовал разные библиотеки, но так и не смог запустить дисплей.
А конкретнее? Что не так?

Сообщение от Devil Byte Посмотреть сообщение
Подключил его к atmega128 по следующей схеме
.....
PB6 ----------DC/RS
.....
.....
.....
#define LCD_DC PC6
.....
Но это, конечно, досадная мелочь. Работе может не помешать.
А вот отсутствие настройки на выход вывода LCD_DC - настораживает. До кучи - не видно настройки и LCD_RST.
__________________
Экзорцист 40-го уровня.
ForcePoint вне форума  
Непрочитано 23.03.2024, 15:55  
Devil Byte
Временная регистрация
 
Регистрация: 07.03.2019
Сообщений: 91
Сказал спасибо: 11
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Devil Byte на пути к лучшему
По умолчанию Re: Дисплей 3.5 на ILI9341 + atmega128

В общем оказалось что в этом дисплее стоит контроллер ILI 9488 http://www.lcdwiki.com/3.5inch_SPI_M...88_SKU:MSP3520

Но пока есть только примеры под ардуино и стм
Devil Byte вне форума  
 

Метки
atmega128, lcd
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
arduino mega 2560 и ILI9341 как симулировать? ruvdos Proteus 0 02.12.2020 02:55
Дисплей ILI9341 на STM32F429 по SPI radian ARM 4 12.11.2017 05:55
Дисплей BL12864CYPNH потух Касьян Песочница (вопросы новичков) 0 28.06.2014 00:47
Текстовый дисплей PILZ PX 150-40-RFL ratfor1 Производственное оборудование 2 21.12.2013 00:16
Разбили дисплей анемометра Sopromat2 Измерительное оборудование 11 01.02.2012 21:47


Часовой пояс GMT +4, время: 10:10.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.