Например TDA7294

Форум РадиоКот • Просмотр темы - Подключение LCD к микроконтроллеру STM32
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 25, 2024 14:15:10

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Подключение LCD к микроконтроллеру STM32
СообщениеДобавлено: Вт фев 14, 2017 18:20:28 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2310
Рейтинг сообщения: 0
Приветствую форумчан!
Изображение
Столкнулся с необходимостью подключить LCD с тачскрином к STM32.
Как всегда, попытки завести устройство через сторонние библиотеки ни к чему не привели. Нашел ветку на форуме viewtopic.php?p=2564754 . Дисплей точно такой же, попробовал библиотеку, которую предложил там Mikele_P, но кроме подсветки ничего так и не увидел. Один только нюанс - я подавал вместо 3.3 вольт 3 вольта, но думаю это не столь существенно.
Интересует следующие вопросы.
1. Снег на экране должен появиться сразу после инициализации?
2. Как происходит эта самая инициализация? Дисплей инициализируется сразу после ногодрыга с RST пином, или потом нужно еще досылать какие-то команды?
3. Если нужны команды, то какие там должны быть и в каком порядке (или хотябы где это посмотреть можно, так как в даташите на контроллер моего дисплея hx8347g я такой инфы не нашел)?
Хочу хоть снег увидеть, а то так и не понятно то ли в коде проблема, то ли дисплей дохлый.... :kill:

Даташит на контроллер LCD hx8347g http://datasheet4u.com/datasheet/H/X/8/ ... x.pdf.html


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключение LCD к микроконтроллеру STM32
СообщениеДобавлено: Ср фев 15, 2017 18:05:13 
Первый раз сказал Мяу!
Аватар пользователя

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Сб фев 06, 2016 14:26:07
Сообщений: 29
Рейтинг сообщения: 0
Проинициализировать таймер SysTick не забыли (вместе с переменной SysTimer)? Обратите внимание на функцию delay_ms.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключение LCD к микроконтроллеру STM32
СообщениеДобавлено: Ср фев 15, 2017 19:33:12 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2310
Рейтинг сообщения: 0
Я delay_ms сделал через delay_us.
Код:
void delay_ms(uint32_t N)
{
    uint16_t d = 0;
   
    while (d < N)
    {
   delay_us(750);
   d++;
    }

}

Именно с 750 мкс. отладчик показывал задержку чуть больше 1 мс.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Подключение LCD к микроконтроллеру STM32
СообщениеДобавлено: Пт фев 17, 2017 00:00:04 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2310
Рейтинг сообщения: 0
Как обычно, угробил уйму времени запихиванием сторонних библиотек, но толку никакого нет. Только белый свет в тоннеле :) . Плюнул, решил делать свою библиотеку.
Для начала посмотрел как все устроено в других. Порядок получился такой:
1) Подключение.
2) Ресет.
3) Чтение ID (опционально, но мне надо знать, как мое чудовище определяется).
Собственно здесь все и повисло. Разные модели контроллеров требуют различного подхода как к ресету, так и к чтению ID.
Предполагаю, что мой hx8347G аналог ILI9325 (в ветке, которую я указывал, человек именно с его настройками запустил это чудо). Полазал по даташиту, действительно, регистр чтения ID у них одинаковый - 0x00 (у ILI9341, к примеру, 0xD3).
Вопросы:
Какой должен быть правильный порядок ресета?
Каков порядок получения ID?
Сейчас у меня такое понаписано (ОСТОРОЖНО 18+):
Код:
void hx8347G_Init (void)
{
   hx8347G_PINs_Command_Init();
   hx8347G_PINs_Data_Out();
   hx8347G_Reset();
   LCD_ID = hx8347G_Get_LCD_ID(0x00);
}

void hx8347G_PINs_Command_Init(void)
{
   
    GPIOA->CRH &= ~( GPIO_CRH_MODE8  // rd
                    |GPIO_CRH_MODE9  // wr
                    |GPIO_CRH_MODE10 // rs
                    |GPIO_CRH_MODE11 // cs
                    |GPIO_CRH_MODE12 // rst
                   );

    GPIOA->CRH |=  ( GPIO_CRH_MODE8  // rd
                    |GPIO_CRH_MODE9  // wr
                    |GPIO_CRH_MODE10 // rs
                    |GPIO_CRH_MODE11 // cs
                    |GPIO_CRH_MODE12 // rst
                   );
   
    GPIOA->CRH &= ~( GPIO_CRH_CNF8
                    |GPIO_CRH_CNF9
                    |GPIO_CRH_CNF10
                    |GPIO_CRH_CNF11
                    |GPIO_CRH_CNF12
                   );
}


void hx8347G_PINs_Data_Out(void)
{
   
    GPIOA->CRL &= ~( GPIO_CRL_MODE0 // D0
                    |GPIO_CRL_MODE1 // D1
                    |GPIO_CRL_MODE2 // D2
                    |GPIO_CRL_MODE3 // D3
                    |GPIO_CRL_MODE4 // D4
                    |GPIO_CRL_MODE5 // D5
                    |GPIO_CRL_MODE6 // D6
                    |GPIO_CRL_MODE7 // D7
                   );   

    GPIOA->CRL |=  ( GPIO_CRL_MODE0 // D0
                    |GPIO_CRL_MODE1 // D1
                    |GPIO_CRL_MODE2 // D2
                    |GPIO_CRL_MODE3 // D3
                    |GPIO_CRL_MODE4 // D4
                    |GPIO_CRL_MODE5 // D5
                    |GPIO_CRL_MODE6 // D6
                    |GPIO_CRL_MODE7 // D7
                   );   
   
    GPIOA->CRL &= ~( GPIO_CRL_CNF0 
                    |GPIO_CRL_CNF1
                    |GPIO_CRL_CNF2
                    |GPIO_CRL_CNF3
                    |GPIO_CRL_CNF4
                    |GPIO_CRL_CNF5
                    |GPIO_CRL_CNF6
                    |GPIO_CRL_CNF7
                   );   
                   
    GPIOA->ODR &= 0xFF00;
}



void hx8347G_PINs_Data_In(void)
{

    GPIOA->CRL &= ~( GPIO_CRL_MODE0 // D0
                                 |GPIO_CRL_MODE1 // D1
                                 |GPIO_CRL_MODE2 // D2
                                 |GPIO_CRL_MODE3 // D3
                                 |GPIO_CRL_MODE4 // D4
                                 |GPIO_CRL_MODE5 // D5
                                 |GPIO_CRL_MODE6 // D6
                                 |GPIO_CRL_MODE7 // D7
                               );   

    GPIOA->CRL &= ~( GPIO_CRL_CNF0 
                                 |GPIO_CRL_CNF1
                                 |GPIO_CRL_CNF2
                                 |GPIO_CRL_CNF3
                                 |GPIO_CRL_CNF4
                                 |GPIO_CRL_CNF5
                                 |GPIO_CRL_CNF6
                                 |GPIO_CRL_CNF7
                               );   
   
    GPIOA->CRL |= ( GPIO_CRL_CNF0_0
                               |GPIO_CRL_CNF1_0
                               |GPIO_CRL_CNF2_0
                               |GPIO_CRL_CNF3_0
                               |GPIO_CRL_CNF4_0
                               |GPIO_CRL_CNF5_0
                               |GPIO_CRL_CNF6_0
                               |GPIO_CRL_CNF7_0
                              );   
     
}



void hx8347G_Reset (void)
{
   
   HX8347G_LCD_RESET_DISABLE;
   HX8347G_LCD_CS_DISABLE;
   HX8347G_LCD_CD_DATA;
   HX8347G_LCD_WR_DISABLE;
   HX8347G_LCD_RD_DISABLE;
   hx8347G_Send_Command(0xFF);
   _hx8347G_Delay_ms(50);

   HX8347G_LCD_RESET_ENABLE;
   _hx8347G_Delay_ms(100);
   HX8347G_LCD_RESET_DISABLE;
   _hx8347G_Delay_ms(1000);
   
}


/////////////////////////////ОСОБО ОПАСНЫЙ КОД!!!/////////////////////////////////////
Здесь полное безобразие, так как я пытался всеми способами получить нужные данные.

uint32_t hx8347G_Get_LCD_ID (uint8_t r)
{
   uint32_t ID = 0;
   uint32_t x = 0;
   
   //HX8347G_LCD_CS_ENABLE;
   //HX8347G_LCD_CD_COMMAND;
   //HX8347G_LCD_RD_DISABLE;
   //HX8347G_LCD_WR_ENABLE;
   
     HX8347G_LCD_CS_ENABLE;
    HX8347G_LCD_CD_COMMAND;
    hx8347G_PINs_Data_Out();
      _hx8347G_Delay_ms(50);
      hx8347G_Send_8bit (0x00);
      _hx8347G_Delay_ms(50);
    HX8347G_LCD_CS_DISABLE;
      
      HX8347G_LCD_CS_ENABLE;
    HX8347G_LCD_CD_DATA;
    hx8347G_PINs_Data_Out();
      _hx8347G_Delay_ms(50);
      hx8347G_Send_8bit (0x01);
      _hx8347G_Delay_ms(50);
    HX8347G_LCD_CS_DISABLE;
      
      HX8347G_LCD_CS_ENABLE;
    HX8347G_LCD_CD_COMMAND;
    hx8347G_PINs_Data_Out();
      _hx8347G_Delay_ms(50);
      hx8347G_Send_8bit (0x00);
      _hx8347G_Delay_ms(50);
    HX8347G_LCD_CS_DISABLE;
      
      
      
/*      
      
      
      hx8347G_PINs_Data_In();
      _hx8347G_Delay_ms(50);
      //1
    HX8347G_LCD_CS_ENABLE;
    HX8347G_LCD_CD_DATA;
    HX8347G_LCD_RD_ENABLE;
_hx8347G_Delay_ms(50);
    ID = HX8347G_READ_DATA;
      ID<<=8;

    HX8347G_LCD_RD_DISABLE;
    HX8347G_LCD_CS_DISABLE;
_hx8347G_Delay_ms(50);      
      //2
      HX8347G_LCD_CS_ENABLE;
    HX8347G_LCD_CD_DATA;
    HX8347G_LCD_RD_ENABLE;
_hx8347G_Delay_ms(50);
    ID += HX8347G_READ_DATA;

    HX8347G_LCD_RD_DISABLE;
    HX8347G_LCD_CS_DISABLE;
_hx8347G_Delay_ms(50);
    hx8347G_PINs_Data_Out();
      
      
*/   
   
   /*
   HX8347G_LCD_CS_ENABLE;
   HX8347G_LCD_CD_COMMAND;
   HX8347G_LCD_RD_DISABLE;
   hx8347G_PINs_Data_Out();
   HX8347G_WR_STROBE;
   */
   
   
   /*
   hx8347G_Send_8bit(r);
   _hx8347G_Delay_us(100);   
   hx8347G_Send_8bit(r);
   _hx8347G_Delay_us(100);
   */
   
   
   
   hx8347G_PINs_Data_In();
   HX8347G_LCD_CD_DATA;
   _hx8347G_Delay_us(50);   
   
   
   HX8347G_LCD_RD_ENABLE;   
   _hx8347G_Delay_us(5);   
   x = HX8347G_READ_DATA;
   HX8347G_LCD_RD_DISABLE;
   ID = x;
   ID<<=8;
   
   HX8347G_LCD_RD_ENABLE;   
   _hx8347G_Delay_us(5);   
   x = HX8347G_READ_DATA;
   HX8347G_LCD_RD_DISABLE;
   ID |= x;
   ID<<=8;
   
   HX8347G_LCD_RD_ENABLE;   
   _hx8347G_Delay_us(5);   
   x = HX8347G_READ_DATA;
   HX8347G_LCD_RD_DISABLE;
   ID |= x;
   ID<<=8;
   
   HX8347G_LCD_RD_ENABLE;   
   _hx8347G_Delay_us(5);   
   x = HX8347G_READ_DATA;
   HX8347G_LCD_RD_DISABLE;
   ID |= x;
   
   if (r == 0xEF)
   {
         ID<<=8;
         HX8347G_LCD_RD_ENABLE;   
         _hx8347G_Delay_us(5);   
         x = HX8347G_READ_DATA;
         HX8347G_LCD_RD_DISABLE;
         ID |= x;
   }

   HX8347G_LCD_CS_DISABLE;
   hx8347G_PINs_Data_Out();
   _hx8347G_Delay_us(150); // Stabilization
   
   return ID;
}




Дефайны:

Код:

#define HX8347G_LCD_RD_ENABLE                      (GPIOA->BSRR |= GPIO_BSRR_BR8)//
#define HX8347G_LCD_RD_DISABLE                      (GPIOA->BSRR |= GPIO_BSRR_BS8) //

#define HX8347G_LCD_WR_ENABLE                      (GPIOA->BSRR |= GPIO_BSRR_BR9) //
#define HX8347G_LCD_WR_DISABLE                      (GPIOA->BSRR |= GPIO_BSRR_BS9) //

#define HX8347G_LCD_CD_COMMAND                      (GPIOA->BSRR |= GPIO_BSRR_BR10) //
#define HX8347G_LCD_CD_DATA                            (GPIOA->BSRR |= GPIO_BSRR_BS10) //

#define HX8347G_LCD_CS_ENABLE                      (GPIOA->BSRR |= GPIO_BSRR_BR11) //
#define HX8347G_LCD_CS_DISABLE                      (GPIOA->BSRR |= GPIO_BSRR_BS11) //

#define HX8347G_LCD_RESET_ENABLE                   (GPIOA->BSRR |= GPIO_BSRR_BR12) //
#define HX8347G_LCD_RESET_DISABLE                (GPIOA->BSRR |= GPIO_BSRR_BS12) //


#define HX8347G_SET_DATA            (GPIOA->ODR &= 0xFF00); (GPIOA->BSRR)   
#define HX8347G_READ_DATA            (GPIOA->IDR & 0xFF)


#define HX8347G_WR_STROBE {HX8347G_LCD_WR_ENABLE; HX8347G_LCD_WR_DISABLE;}



При любом способе получения ID, в ответ мне приходят 0x75757575 либо 0x7D7D7D7D (даже если закомментировать ресет).

Нужна помощь спецов, так как мой мозг уже не тянет такой груз самостоятельно :kill: :kill: :) .

P.S. Даташит читаю, но для меня такая систематизация - это нечто новое. Не могу я там ни порядок инициализации найти, ни порядок запроса, ни вообще порядок общения с какими либо регистрами. Буду очень благодарен за какие-либо наводки в этом направлении... :)


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Подключение LCD к микроконтроллеру STM32
СообщениеДобавлено: Сб фев 18, 2017 19:15:43 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2310
Рейтинг сообщения: 0
Ни у кого нет никаких мыслей по этому поводу? Совсем а то запарился - не движется процесс никак :( .


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Подключение LCD к микроконтроллеру STM32
СообщениеДобавлено: Пн фев 20, 2017 20:54:51 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2310
Рейтинг сообщения: 0
Раз никто не хочет участвовать в теме, то продолжу диалог с самим собой :) .
Угробил вчера около 3-х часов на изучение даташита на контроллер. Самые интересные для меня моменты:
1) Изображение
Так, включаем питание. Делаем RST=0, ждем 1мс., подымаем RST в 1, ждем 5мс. Сложно, но мы и не с таким справлялись :)) . Далее настраиваем питание, НО, я то хочу прочитать ID.
В даташите нет ни слова о том, когда мне можно прочитать ID чипа, поэтому делаю как все - читаю сразу после ресета. Едем к списку команд:
Изображение
Вот он родненький, самый первый в списке :) . И в нем мы сразу видим, что в результате чтения с этого регистра мы должны получить 01110101, тобишь 0x75. Что это за однобайтный идентификатор - понятия не имею, так как во всех других дисплеях они двухбайтные. Ну да и черт с ним пока, у нас более важная проблема - как передать 16-бит регистра по 8-ми битной шине? Опят головой в даташит:
Изображение
Это единственное, что можно найти по интересующему нас вопросу. Из этого можно предположить, что каждая кучка данных отправляется и принимается стробом RNW или NRN. И предполагаем, что контроллер вкурсе, что у нас шина на 8 бит, и что все команды и данные более 8-ми бит будут передаваться/приниматься
в несколько заходов. Только вот что он будет делать если мы передаем/принимаем 8 бит - завершать запись/чтение или ждать нулевые биты? Пока загадка. Ладно, черт с ним пока. Едем далее.
А далее пишем код:
Код:
void hx8347G_Reset (void)
{

   HX8347G_LCD_RESET_DISABLE;
   _hx8347G_Delay_ms(10);
   HX8347G_LCD_CS_DISABLE;
   HX8347G_LCD_CD_DATA;
   HX8347G_LCD_WR_DISABLE;
   HX8347G_LCD_RD_DISABLE;
   HX8347G_SET_DATA = 0xFF;
   _hx8347G_Delay_ms(1);

   HX8347G_LCD_RESET_ENABLE;
   _hx8347G_Delay_us(3);
   HX8347G_LCD_RESET_DISABLE;
   _hx8347G_Delay_us(10);
   
      HX8347G_LCD_RESET_ENABLE;
   _hx8347G_Delay_us(10);
   HX8347G_LCD_RESET_DISABLE;
   _hx8347G_Delay_ms(150);
}



uint32_t hx8347G_Read_Reg (uint8_t Reg_Value, uint8_t Number_Of_Bytes_For_Read)
{
   uint32_t Readed_Data = 0;
   uint8_t x = 1;

   
   if (Data_PINs_State == 1) {hx8347G_PINs_Data_Out();}

   HX8347G_LCD_CS_DISABLE;
   HX8347G_LCD_RD_DISABLE;
   HX8347G_LCD_WR_DISABLE;
   HX8347G_LCD_CD_DATA;

   HX8347G_LCD_CS_ENABLE;
   HX8347G_LCD_CD_COMMAND;
  HX8347G_SET_DATA = Reg_Value;   
   _hx8347G_Delay_us(1);
   HX8347G_WR_STROBE;
   _hx8347G_Delay_us(1);
   
   HX8347G_LCD_CS_DISABLE;
   HX8347G_LCD_CS_ENABLE;
   
   HX8347G_LCD_CD_DATA;
   hx8347G_PINs_Data_In();
   for (x = 1; x <= Number_Of_Bytes_For_Read; x++)
   {
   _hx8347G_Delay_us(1);
   HX8347G_LCD_RD_ENABLE;
   _hx8347G_Delay_us(1);
   Readed_Data <<= 8;
   Readed_Data |= HX8347G_READ_DATA;
   HX8347G_LCD_RD_DISABLE;
   }
   
   HX8347G_LCD_CS_DISABLE;

   return Readed_Data;
   
}

Внимательный глаз, наверное, заметит строчки HX8347G_LCD_CS_DISABLE; HX8347G_LCD_CS_ENABLE;. Не смотря на то, что на графике NCS не отключается, код работает только в таком виде. Если убрать эти строки, то в ответ придут нули. Почему так сделано - понятия не имею :dont_know: .
Тайминги взяты с последних страниц даташита.
Теперь если в main.c добавить hx8347G_Reset (); test1 = hx8347G_Read_Reg (0x00, 1);, т.е. считать 1 байт из регистра 0x00, то в ответ получим 0x75. Вернемся к даташиту и посмотрим регистр 0x00 подробнее:
Изображение
Вот этот загадочный ID 0x75. Смею предположить, что я уже общаюсь с дисплеем :beer: .

P.S. похоже поторопился с выводами. При чтении любого регистра в ответ летят 0x75 либо 0x7D. Пошел искать причину....


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключение LCD к микроконтроллеру STM32
СообщениеДобавлено: Пн фев 20, 2017 22:28:47 
Первый раз сказал Мяу!
Аватар пользователя

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Сб фев 06, 2016 14:26:07
Сообщений: 29
Рейтинг сообщения: 0
Киньте схему подключения, может гляну свежим взглядом. Я бы на Вашем месте попытался сначала запустить хоть с какой-нибудь библиотекой, чтобы убедиться, что он вообще живой. Эту ссылку смотрели?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключение LCD к микроконтроллеру STM32
СообщениеДобавлено: Пн фев 20, 2017 23:30:42 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2310
Рейтинг сообщения: 0
Подключение проще простого (основано на ногодрыге):
Код:
#define HX8347G_LCD_RD_ENABLE                      (GPIOA->BSRR |= GPIO_BSRR_BR8)//
#define HX8347G_LCD_RD_DISABLE                      (GPIOA->BSRR |= GPIO_BSRR_BS8) //

#define HX8347G_LCD_WR_ENABLE                      (GPIOA->BSRR |= GPIO_BSRR_BR9) //
#define HX8347G_LCD_WR_DISABLE                      (GPIOA->BSRR |= GPIO_BSRR_BS9) //

#define HX8347G_LCD_CD_COMMAND                      (GPIOA->BSRR |= GPIO_BSRR_BR10) //
#define HX8347G_LCD_CD_DATA                            (GPIOA->BSRR |= GPIO_BSRR_BS10) //

#define HX8347G_LCD_CS_ENABLE                      (GPIOA->BSRR |= GPIO_BSRR_BR11) //
#define HX8347G_LCD_CS_DISABLE                      (GPIOA->BSRR |= GPIO_BSRR_BS11) //

#define HX8347G_LCD_RESET_ENABLE                   (GPIOA->BSRR |= GPIO_BSRR_BR12) //
#define HX8347G_LCD_RESET_DISABLE                (GPIOA->BSRR |= GPIO_BSRR_BS12) //

/////////////////////////////////////////////////////////////////////////////////////////////////////


    GPIOA->CRL |=  ( GPIO_CRL_MODE0 // D0
                    |GPIO_CRL_MODE1 // D1
                    |GPIO_CRL_MODE2 // D2
                    |GPIO_CRL_MODE3 // D3
                    |GPIO_CRL_MODE4 // D4
                    |GPIO_CRL_MODE5 // D5
                    |GPIO_CRL_MODE6 // D6
                    |GPIO_CRL_MODE7 // D7
                   );   



Проверить то неначем. Все библиотеки для ардуинок, а у меня только платы STM32 в распоряжении. Пробовал портировать, но ничего не вышло, в итоге не знаю, толи портировал неправильно, толи дисплей дохляк... :dont_know: :kill:

Добавлено after 6 minutes 33 seconds:
Последняя надежда на вот эту библиотеку (уже и не помню где скачал). Здесь на FSMC переделано под мой контроллер (HX8347G).
Завтра проверять буду, седня уже от этого дисплея голова кипит :) .


Вложения:
ili9320 (For STM32).rar [5.24 KiB]
Скачиваний: 192
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключение LCD к микроконтроллеру STM32
СообщениеДобавлено: Пн фев 20, 2017 23:58:25 
Первый раз сказал Мяу!
Аватар пользователя

Карма: 1
Рейтинг сообщений: 1
Зарегистрирован: Сб фев 06, 2016 14:26:07
Сообщений: 29
Рейтинг сообщения: 0
А чем у Вас enable_bit от disable_bit отличается? Вы и там и там бит устанавливаете.

upd: с телефона не заметил, но я бы вместо BSRR дергал бы через ODR


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Подключение LCD к микроконтроллеру STM32
СообщениеДобавлено: Вт фев 21, 2017 00:15:18 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2310
Рейтинг сообщения: 0
BSRR выполняется за один такт. Это как bit-banding.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: balan, Google [Bot] и гости: 33


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y