реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
aaarrr
сообщение Jan 28 2013, 20:13
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Allregia @ Jan 28 2013, 22:31) *
Ну тогда уж, огласите пожалуйста, чтобы и я знал - чем SPI лучше чем 1-битный SDIO?

В общем случае несколько хуже: "честный" SD-контроллер может считать CRC.
В данном конкретном случае может быть лучше, т.к. у F407 SDIO ломается при включении HW flow control, зато SPI умеет считать CRC сам.
Ну, теоретическая скорость на SPI несколько ниже, если это принципиально (37.5 против 48МГц).
Go to the top of the page
 
+Quote Post
Allregia
сообщение Jan 28 2013, 20:49
Сообщение #17


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(aaarrr @ Jan 28 2013, 22:13) *
В данном конкретном случае может быть лучше, т.к. у F407 SDIO ломается при включении HW flow control, зато SPI умеет считать CRC

А Вы не могли бы вкратце рассказать про этом HW flow (что это вообще я в курсе) в SDIO? КАк оно там устроено?
И какая ему альтернатива, если он как в ф4 не работает?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 28 2013, 21:05
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Allregia @ Jan 29 2013, 00:49) *
А Вы не могли бы вкратце рассказать про этом HW flow (что это вообще я в курсе) в SDIO? КАк оно там устроено?

HW flow control просто отрубает клок, если контроллер по каким-либо причинам не может отдать или принять данные.
У F4 это процесс сопровождается глитчами на линии CLK, что в результате приводит к ошибкам.

Цитата(Allregia @ Jan 29 2013, 00:49) *
И какая ему альтернатива, если он как в ф4 не работает?

Никакой. На F4 придется или разгребать ошибки CRC, если управление потоком включено (что, понятно, не рекомендуется), или же
разгребать ошибки overrun / underrun. В любом случае некоторая головная боль.
Go to the top of the page
 
+Quote Post
Allregia
сообщение Jan 28 2013, 21:44
Сообщение #19


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Спасибо.
Go to the top of the page
 
+Quote Post
Daria
сообщение Feb 6 2013, 18:53
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



Добрый вечер. Сегодня, наконец, спаяли модуль. пробую включить SSD1963 через FSMC.
Команда Display On проходит - по крайней мере, экран загорается. На экране цветной мусор из памяти. На остальные команды никакой реакции
Кто работал с SSD1963 - не подскажете, в какой последовательности подаются команды?
Я сначала делаю программный RES, потом Display On. Потом установка режима- AddrMode, Далее устанавливаю начальный и конечный адреса и формат пикселя. 0x2C и начинаю посылать массив данных.
Смотрю шину анализатором- картинки вроде соответствуют даташиту, данные отправляются, стробы есть. после команды 0x29 - DisplayOn, экран загорается. но больше никаких изменений.
TE у меня не выведен на внешний разъем модуля, поэтому приходится без него

Может, нужна какая-то другая последовательность команд?

И вопрос по формату данных - судя по даташиту, для SSD1963 нужно настроить FSMC на 8-битный режим, команды-то у него 8битные.
Это так или я ошибаюсь? sm.gif
Кто работал с SSD1963 - отзовитесь sm.gif
Go to the top of the page
 
+Quote Post
Rash
сообщение Feb 6 2013, 20:48
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



Дарья, вы хоть бы поиском пользовались или доку читали бы
инициализация для дисплея (переводить в восьмитонный режим ничего не надо), из всех найденных вариантов написал свою версию
CODE
// Horizontal and vertical display resolution (from the glass datasheet)
#define DISP_HOR_RESOLUTION 800
#define DISP_VER_RESOLUTION 480

// Horizontal synchronization timing in pixels (from the glass datasheet)
#define DISP_HOR_PULSE_WIDTH 48 // 1..48 (Min .. Typ)
#define DISP_HOR_BACK_PORCH 40 // Typ
#define DISP_HOR_FRONT_PORCH 40 // Typ

// Vertical synchronization timing in lines (from the glass datasheet)
#define DISP_VER_PULSE_WIDTH 3 // Typ
#define DISP_VER_BACK_PORCH 29 // Typ
#define DISP_VER_FRONT_PORCH 13 // Typ


// *****************************************************************************
// Инициализация контроллера SSD1963 for PCLK, HSYNC, VSYNC etc
void SSD1963_Init(void)
{
// Програмный сброс
set_reg(0x01); // Soft reset (Сбрасываются все регистры кроме 0xE0 и 0xE5)
LCD_Delay(5); // Нужно ожидать 5 мс

// * Настройка PLL на 100 МГц перед его включением (для фнешего кыарца 10 МГц) *
// Установка множителя M для PLL: VCO = crystal freq * (N+1) (где - 250MHz < VCO < 800MHz)
// Частота PLL = VCO/M, макс 110MHz.
set_reg(0xE2); // Уст. PLL для OSC = 10MHz
set_data(0x1D); // Множитель N = 29, VCO (>250MHz)= OSC*(N+1), VCO = 300MHz
set_data(0x02); // Делитель M = 2, PLL = 300/(M+1) = 100MHz
set_data(0x04); // Установить использование M (множителя) и N (делителя) значений

// * Запуск PLL *
set_reg(0xE0); // Start PLL command
set_data(0x01); // включить PLL
LCD_Delay(1); // ожидание стабильности (100 мскек) минимум

set_reg(0xE0); // Start PLL command again
set_data(0x03); // Теперь PLL выход используя как системные часы
LCD_Delay(1); // ожидание стабильности (100 мксек) минимум

// Програмный сброс после включения PLL
set_reg(0x01); // Soft reset
LCD_Delay(10000);

// Установить LSHIFT частоту, т.е DCLK для TFT если частота PLL 100 МГц set previously
// Значение DCLK для HSD050IDW1-A20 равняется 33 МГц (по даташиту)
// 33 MHz = 100MHz*(LCDC_FPR + 1)/2^20
// LCDC_FPR = 346030 (0x547AE)
// Time per line = (DISP_HOR_RESOLUTION + DISP_HOR_PULSE_WIDTH + DISP_HOR_BACK_PORCH +
// DISP_HOR_FRONT_PORCH)/30.3 нсек = 928/30.3 = 30.6 нсек
set_reg(0xE6);
set_data(0x05);
set_data(0x47);
set_data(0xAE);

//Set panel mode, varies from individual manufacturer
set_reg(0xB0);
// set_data(0x10); // set 18-bit for 7" panel TY700TFT800480
// set_data(0x80); // set TTL mode
// set_data(0x08); // SET TFT MODE & hsync + Vsync + DEN MODE
set_data(0x20); // set 24-bit
set_data(0x00); // SET TFT MODE & hsync + Vsync + DEN MODE
set_data(((DISP_HOR_RESOLUTION - 1) >> 8) & 0x0007); // Set panel size
set_data((DISP_HOR_RESOLUTION - 1) & 0x00FF);
set_data(((DISP_VER_RESOLUTION - 1) >> 8) & 0x0007);
set_data((DISP_VER_RESOLUTION - 1) & 0x00FF);
set_data(0x00); // RGB sequence

// Set horizontal period
set_reg(0xB4);
#define HT (DISP_HOR_RESOLUTION + DISP_HOR_PULSE_WIDTH + DISP_HOR_BACK_PORCH + DISP_HOR_FRONT_PORCH)
set_data(((HT - 1) >> 8) & 0x0007); // HT - horizontal total period
set_data((HT - 1) & 0x00FF); // ...
#define HPS (DISP_HOR_PULSE_WIDTH + DISP_HOR_BACK_PORCH)
set_data(((HPS - 1) >> 8) & 0x0007); // HPS: Horizontal Sync Pulse Start Position
set_data((HPS - 1) & 0x00FF); // ...
set_data(DISP_HOR_PULSE_WIDTH - 1); // HPW: Horizontal Sync Pulse Width
set_data(0x00); // LPS: Horizontal Display Period Start Position
set_data(0x00); // ...
set_data(0x00); // LPSPP: Horizontal Sync Pulse Subpixel Start Position
// (for serial TFT interface). Dummy value for TFT interface.
// Set vertical period
set_reg(0xB6);
#define VT (DISP_VER_RESOLUTION + DISP_VER_PULSE_WIDTH + DISP_VER_BACK_PORCH +
DISP_VER_FRONT_PORCH) set_data(((VT - 1) >> 8) & 0x0007); // VT: Vertical Total
set_data((VT - 1) & 0x00FF); // ...
#define VSP (DISP_VER_PULSE_WIDTH + DISP_VER_BACK_PORCH)
set_data(((VSP - 1) >> 8) & 0x0007); // VPS: Vertical Sync Pulse Start Position
set_data((VSP - 1) & 0x00FF); // ...
set_data(DISP_VER_PULSE_WIDTH - 1); // VPW: Vertical Sync Pulse Width
set_data(0x00); // FPS: Vertical Display Period Start Position
set_data(0x00); // ...

// SET Address mode
set_reg(0x36);
set_data(0x00);
// set_data(0xA0);
// set_data(0x03);

//Set pixel format, i.e. the bpp (команда была удалена см. даташит вер 1.1)
// set_reg(0x3A);
// set_data(0x50); // set 16bpp

// Set pixel data interface
set_reg(0xF0);
set_data(0x03); // 16-bit(565 format) data
set_reg(0x29); // Turn on display; show the image on display
LCD_Delay(5); // Нужно ожидать 5 мс
return;
}


Сообщение отредактировал IgorKossak - Feb 6 2013, 21:20
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
Daria
сообщение Feb 7 2013, 05:53
Сообщение #22


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



Цитата(Rash @ Feb 7 2013, 00:48) *
Дарья, вы хоть бы поиском пользовались или доку читали бы
инициализация для дисплея (переводить в восьмитонный режим ничего не надо), из всех найденных вариантов написал свою версию


Да, уже нашла пару вариантов rolleyes.gif
Но ваш, кстати, самый понятный sm.gif Большое спасибо, сегодня попробую
Go to the top of the page
 
+Quote Post
Daria
сообщение Feb 8 2013, 13:54
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



Rash, большое спасибо, все получилось sm.gif
Go to the top of the page
 
+Quote Post
khach
сообщение Feb 27 2013, 13:23
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Цитата(dac @ Jan 28 2013, 20:07) *
сначала читаем
ну и там же есть еще ряд статей.
потом задаем вопросы. сделано под STM32F207vet, fsmc модули у них вроде одинаковые с 407/

Добрый день!
Вопрос к спецу по GUI. Как лучше реализовать курсоры в драйвере контроллера типа SSD1963? Аппаратной поддержки курсоров нет. Полную копию видеопамяти хранить негде (для 7 дюймового дисплея). Как лучше определить субфрейм и наиболее быстро прочитать его и инвертировать? Стоит ли заморачиваться с DMA для прорисовки курсора?
Интересуют как мелкие курсоры, типа мышачьих, так и на весь экран, типа осциллографических- крестовые и линейные.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th June 2025 - 23:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01339 секунд с 7
ELECTRONIX ©2004-2016