Например TDA7294

Форум РадиоКот • Просмотр темы - STM32F4 + Nokia 6300 lcd
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Ср янв 07, 2026 11:33:55

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


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



Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: STM32F4 + Nokia 6300 lcd
СообщениеДобавлено: Вт ноя 26, 2013 13:15:52 
Родился

Зарегистрирован: Пн ноя 25, 2013 23:44:24
Сообщений: 1
Рейтинг сообщения: 0
Уважаемые форумчане, помогите понять одну вещь. Подключил к STM32F4Discovery дисплей от Nokia 6300 как показано здесь http://phreakerclub.com/464 Только вот не понимаю почему скорость заполнения экрана одним цветом не больше 2-х кадров/ сек. Мне кажется что это не нормально при 168 МГц. Или в чем я не прав? Можно ли как то оптимизировать код? Привожу код в среде Coocox:

#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"

#define DC GPIO_Pin_8
#define WR GPIO_Pin_9
#define RES GPIO_Pin_10

#define black 0,0,0 // черный
#define red 255,0,0 // красный
#define green 0,255,0 // зеленый

static uint32_t TimingDelay;

void delay_ms(uint32_t nTime)
{
TimingDelay = nTime;
while(TimingDelay != 0);
}

void SysTick_Handler(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}

void spi_init()
{
GPIO_InitTypeDef GPIO_InitStructure;

// Тактирование модуля SPI1 и порта А
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);

GPIO_DeInit(GPIOA);
GPIO_DeInit(GPIOD);

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Pin = DC | WR | RES;
GPIO_Init(GPIOD, &GPIO_InitStructure);
}

void sendCom(unsigned int com) // отправкакоманд
{
GPIOD->BSRRH = DC;
GPIOD->BSRRH = WR;
GPIOA->ODR = com;
GPIOD->BSRRL = WR;
GPIOD->BSRRL = DC;
}

void sendData(char dat) // отправкакоманд
{
GPIOD->BSRRH = WR;
GPIOA->ODR = dat;
GPIOD->BSRRL = WR;
}

void LCDinit()// инициализация дисплея
{
GPIOD->BSRRL = WR;
GPIOD->BSRRH = RES;
delay_ms(1);
GPIOD->BSRRL = RES;
delay_ms(5);
sendCom(0x11); // Выход дисплея из спячки
sendCom(0x29); // Включение дисплея
delay_ms(1);
sendCom(0x36);
sendData(0xC0);// Книжная ориентация дисплея
sendCom(0x3A);
sendData(0b00000111); // 24 битныйрежим
}

void LCDclear(char color_r, char color_g, char color_b)// Заливка дисплея
{
unsigned long int i;
sendCom(0x2A); // КомандаориетациипоХкоординате
sendData(0); sendData(0); // ДанныеначалаХкоординат (0)
sendData(0); sendData(240); // Данные конца Х координат (240)
sendCom(0x2B); //Команда ориентации по Y координате
sendData(0); sendData(0); // Данные начала Y координат (0)
sendData(1); sendData(320); // Данные конца Y координат (320)
sendCom(0x2C); //Команда записи в память дисплея
for (i=0;i<(320*240);i++)
{
sendData(color_r);
sendData(color_g);
sendData(color_b);
}
}

int main(void)
{
spi_init();
SysTick_Config( SystemCoreClock / 10000 );

LCDinit();

while(1)
{
LCDclear(black);
//delay_ms(1000);
LCDclear(red);
//delay_ms(1000);
LCDclear(green);
//delay_ms(1000);
}

}


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17


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

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


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