Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

stm32 + FSMC + ssd1963:?

Непрочитано 10.09.2013, 11:16  
KGA-1
Прохожий
 
Регистрация: 23.12.2008
Сообщений: 8
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
KGA-1 на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

Большое спасибо!!! Буду ждать с нетерпением.
Реклама:
KGA-1 вне форума  
Непрочитано 12.09.2013, 15:07  
pav256
Прохожий
 
Регистрация: 12.09.2013
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
pav256 на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

Разбираюсь с stm32F407(168МГц) + FSMC(8bit) + ssd1963(WF57BTIBCDC#000). Возник вопрос: а эта связка вообще должна работать? В даташите на ssd1963 указано, что для режима 8080 (впрочем как и для 6800) защелкивание данных происходит по сигналу CS, т.е. CS должен быть вложен в сигнал WR! В даташите на stm32 /FSMC (да и по стандарту 8080) все наоборот: защелкивание по заднему фронту WR и WR вложен в CS. Подозреваю что таймингом для FSMC такое реализовать невозможно (NWE всегда будет вложен в NE1)??
Запрограммировал FSMC - индикатор не дышит (сигналы проверил осциллографом). Реализовал запись дата/код через пины - индикатор что то стал отображать (цвет по крайне мере меняется, хотя изображение плывет).
Просьба к "realid" указать тактовые частоты для своей STM, настройки пинов и какие нибудь, примитивные функции записи чего либо на экран.
pav256 вне форума  
Непрочитано 12.09.2013, 15:29  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

Периферии до лампочки, какой сигнал вложен, можно вообще один из них (cs или wr/rd) навсегда посадить на землю, и все будет работать. Все тайминги в даташите, и если импульсы не короче минимальных, то все работает
niXto вне форума  
Непрочитано 12.09.2013, 16:07  
pav256
Прохожий
 
Регистрация: 12.09.2013
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
pav256 на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

В том то и дело, что в даташите на SSD1963 четко оговорено минимальное время между фронтами WR и CS - мин 1нс (напоминаю CS вложен в WR).
Если есть возможность выложите код настройки FSMC и SSD1963 (с указанием индикатора).
И еще вопрос, насколько критично питание индикатора. Я питаю индикатор от stm32f4-discovery (должно выдаваться 3.0В) на индикатор доходит 2.88. По даташиту на индикатор мин. 3.0, хотя для SSD1963 1.65V to 3.6V?
pav256 вне форума  
Непрочитано 12.09.2013, 20:01  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

Сообщение от pav256 Посмотреть сообщение
четко оговорено минимальное время между фронтами WR и CS - мин 1нс (напоминаю CS вложен в WR).
Ещё раз посмотрите на диаграмму и переведите названия параметров. Address Setup/Hold Time - время, через которое чип начинает реагировать на остальные сигналы после спада на CS и в течении которого он ЕЩЁ реагирует после фронта на CS. Реально только в течении Hold Time нужно удерживать D/C и данные, RW может наступить в любой момент (хоть это и не отмечено на диаграмме). Запись произойдет по фронту CS _ИЛИ_ RW - какой наступит раньше...

У меня SSD1289 и ILI9320, это то же самое

Настройки FSMC под максимальную скорость

FSMC_Bank1-›BTCR[0] = 0x000010D8; //for 168 MHz
FSMC_Bank1-›BTCR[1] = 0x10110F10;
FSMC_Bank1-›BTCR[0] = 0x000010D9;


На дискавери-4 нормально работает от родного стабилизатора
niXto вне форума  
Сказали "Спасибо" niXto
pav256 (13.09.2013)
Непрочитано 12.09.2013, 21:04  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,427
Сказал спасибо: 0
Сказали Спасибо 381 раз(а) в 251 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

Сообщение от niXto Посмотреть сообщение
FSMC_Bank1-›BTCR[0] = 0x000010D8; //for 168 MHz
FSMC_Bank1-›BTCR[1] = 0x10110F10;
FSMC_Bank1-›BTCR[0] = 0x000010D9;
Это что, привычка от АлгоритмзаБулдыгера?
nahimovv вне форума  
Непрочитано 12.09.2013, 21:21  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

Сообщение от niXto Посмотреть сообщение
FSMC_Bank1-›BTCR[0] = 0x000010D8; //for 168 MHz
FSMC_Bank1-›BTCR[1] = 0x10110F10;
FSMC_Bank1-›BTCR[0] = 0x000010D9;


Весьма информативно, можно еще в двоичной или восьмеричной записи .
Хедер stm32f4xx.h для лохов писан


Код:
typedef struct
{
  __IO uint32_t BTCR[8];    /*!‹ NOR/PSRAM chip-select control register(BCR) and chip-select timing register(BTR), Address offset: 0x00-1C */   
} FSMC_Bank1_TypeDef; 

/** 
  * @brief Flexible Static Memory Controller Bank1E
  */
  
typedef struct
{
  __IO uint32_t BWTR[7];    /*!‹ NOR/PSRAM write timing registers, Address offset: 0x104-0x11C */
} FSMC_Bank1E_TypeDef;

/** 
  * @brief Flexible Static Memory Controller Bank2
  */
  
typedef struct
{
  __IO uint32_t PCR2;       /*!‹ NAND Flash control register 2,                       Address offset: 0x60 */
  __IO uint32_t SR2;        /*!‹ NAND Flash FIFO status and interrupt register 2,     Address offset: 0x64 */
  __IO uint32_t PMEM2;      /*!‹ NAND Flash Common memory space timing register 2,    Address offset: 0x68 */
  __IO uint32_t PATT2;      /*!‹ NAND Flash Attribute memory space timing register 2, Address offset: 0x6C */
  uint32_t      RESERVED0;  /*!‹ Reserved, 0x70                                                            */
  __IO uint32_t ECCR2;      /*!‹ NAND Flash ECC result registers 2,                   Address offset: 0x74 */
} FSMC_Bank2_TypeDef;

....


/**************************************************  ****************************/
/*                                                                            */
/*                       Flexible Static Memory Controller                    */
/*                                                                            */
/**************************************************  ****************************/
/******************  Bit definition for FSMC_BCR1 register  *******************/
#define  FSMC_BCR1_MBKEN                     ((uint32_t)0x00000001)        /*!‹Memory bank enable bit */
#define  FSMC_BCR1_MUXEN                     ((uint32_t)0x00000002)        /*!‹Address/data multiplexing enable bit */

#define  FSMC_BCR1_MTYP                      ((uint32_t)0x0000000C)        /*!‹MTYP[1:0] bits (Memory type) */
#define  FSMC_BCR1_MTYP_0                    ((uint32_t)0x00000004)        /*!‹Bit 0 */
#define  FSMC_BCR1_MTYP_1                    ((uint32_t)0x00000008)        /*!‹Bit 1 */

#define  FSMC_BCR1_MWID                      ((uint32_t)0x00000030)        /*!‹MWID[1:0] bits (Memory data bus width) */
#define  FSMC_BCR1_MWID_0                    ((uint32_t)0x00000010)        /*!‹Bit 0 */
#define  FSMC_BCR1_MWID_1                    ((uint32_t)0x00000020)        /*!‹Bit 1 */

#define  FSMC_BCR1_FACCEN                    ((uint32_t)0x00000040)        /*!‹Flash access enable */
#define  FSMC_BCR1_BURSTEN                   ((uint32_t)0x00000100)        /*!‹Burst enable bit */
#define  FSMC_BCR1_WAITPOL                   ((uint32_t)0x00000200)        /*!‹Wait signal polarity bit */
#define  FSMC_BCR1_WRAPMOD                   ((uint32_t)0x00000400)        /*!‹Wrapped burst mode support */
#define  FSMC_BCR1_WAITCFG                   ((uint32_t)0x00000800)        /*!‹Wait timing configuration */
#define  FSMC_BCR1_WREN                      ((uint32_t)0x00001000)        /*!‹Write enable bit */
#define  FSMC_BCR1_WAITEN                    ((uint32_t)0x00002000)        /*!‹Wait enable bit */
#define  FSMC_BCR1_EXTMOD                    ((uint32_t)0x00004000)        /*!‹Extended mode enable */
#define  FSMC_BCR1_ASYNCWAIT                 ((uint32_t)0x00008000)        /*!‹Asynchronous wait */
#define  FSMC_BCR1_CBURSTRW                  ((uint32_t)0x00080000)        /*!‹Write burst enable */
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 12.09.2013 в 21:31.
dosikus вне форума  
Непрочитано 12.09.2013, 22:30  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

Время поджимало, не было возможности копи-пастом оформлять все исходники красиво. А потом так и осталось, когда заработало

Сейчас сделаю в своих исходниках покрасивей

Спасибо за замечание
niXto вне форума  
Непрочитано 13.09.2013, 11:10  
pav256
Прохожий
 
Регистрация: 12.09.2013
Сообщений: 5
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
pav256 на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

Спасибо всем, связка "stm32 + FSMC + ssd1963" заработала.
Некоторые советы, основанные на личном опыте:
1. При запуске FSMC устанавливайте ВСЕ тайминги по мах (или с большим запасом), после того как индикатор заработает подбирайте минимальные. У меня к, примеру, индикатор подключен длинным шлейфом (~30см), к тому же через колодки, поэтому тайминги оказались больше чем все нарытые в интернете (FSMC_AddressSetupTime = 6; FSMC_AddressHoldTime = 1; FSMC_DataSetupTime = 15). Уверен на опытном образце тайминги уменьшатся.
2. Главное. В даташите "WINSTAR_TFT Application Note a-Si TFT for SSD1963 Controller" не корректно описана(написана) инициализация этих индикаторов. В частности отсутствует задержка на стабилизацию PLL, что может приводить к неверной дальнейшей инициализации индикатора. Привожу свою, рабочую, версию (для сравнения, закомментированный код из даташита) инициализации SSD1963:
Код:
//инициализация TFT WF67BTIBCDC#000 controller SSD1963
void instal_SSD1953(void)
{
	CLR_RESET
		delay(1000);		//задержка в мкс
	SET_RESET
		delay(1000);		//задержка в мкс

	TFT_WR_CMD(CMD_SOFT_RESET)
		delay(10000);		//задержка в мкс

	TFT_WR_CMD(CMD_SET_PLL_MN)				 //SET PLL freq=113.33MHz ;
	TFT_WR_DATA(0x22)
	TFT_WR_DATA(0x03)
	TFT_WR_DATA(0x04)

	TFT_WR_COMMAND(CMD_PLL_START, 0x01)		//START PLL
		delay(50000);		//задержка в мкс
	TFT_WR_COMMAND(CMD_PLL_START, 0x03)		//LOCK PLL

	TFT_WR_CMD(CMD_SET_PANEL_MODE)			//SET TFT MODE SET TFT 18Bits MODE
	TFT_WR_DATA(0x0C)					 	//SET TFT MODE & hsync+Vsync+DEN MODE
	TFT_WR_DATA(0x00)					 	//SET TFT MODE & hsync+Vsync+DEN MODE
	TFT_WR_DATA(0x01)						//SET horizontal size=320-1 HightByte
	TFT_WR_DATA(0x3f)						//SET horizontal size=320-1 LowByte
	TFT_WR_DATA(0x00)						//SET vertical size=240-1 HightByte
	TFT_WR_DATA(0xef)						//SET vertical size=240-1 LowByte
	TFT_WR_DATA(0x00)						//SET even/odd line RGB seq.=RGB

	TFT_WR_COMMAND(CMD_SET_DATA_INTERFACE, 0x00)	// SET pixel data I/F format=8bit
	TFT_WR_COMMAND(CMD_SET_PIXEL_FORMAT, 0x60)		// SET R G B format = 6 6 6
/*
//в соответствии с "WINSTAR_TFT Application Note a-Si TFT for SSD1963 Controller"
	TFT_WR_CMD(CMD_SOFT_RESET)
	TFT_WR_CMD(CMD_SOFT_RESET)
	TFT_WR_CMD(CMD_SOFT_RESET)
	
	TFT_WR_COMMAND(CMD_PLL_START, 0x01)		//START PLL
	TFT_WR_COMMAND(CMD_PLL_START, 0x03)		//LOCK PLL
		
	TFT_WR_CMD(CMD_SET_PANEL_MODE)			//SET TFT MODE SET TFT 18Bits MODE
	TFT_WR_DATA(0x0C)					 	//SET TFT MODE & hsync+Vsync+DEN MODE
	TFT_WR_DATA(0x00)					 	//SET TFT MODE & hsync+Vsync+DEN MODE
	TFT_WR_DATA(0x01)						//SET horizontal size=320-1 HightByte
	TFT_WR_DATA(0x3f)						//SET horizontal size=320-1 LowByte
	TFT_WR_DATA(0x00)						//SET vertical size=240-1 HightByte
	TFT_WR_DATA(0xef)						//SET vertical size=240-1 LowByte
	TFT_WR_DATA(0x00)						//SET even/odd line RGB seq.=RGB
	
	TFT_WR_COMMAND(CMD_SET_DATA_INTERFACE, 0x00)	//SET pixel data I/F format=8bit
	TFT_WR_COMMAND(CMD_SET_PIXEL_FORMAT, 0x60)		// SET R G B format = 6 6 6
	
	TFT_WR_CMD(CMD_SET_PLL_MN)				 //SET PLL freq=113.33MHz ;
	TFT_WR_DATA(0x22)
	TFT_WR_DATA(0x03)
	TFT_WR_DATA(0x04)
*/		
	TFT_WR_CMD(CMD_SET_PCLK)	 			//SET PCLK freq=9MHz ; pixel clock frequency
	TFT_WR_DATA(0x00)
	TFT_WR_DATA(0xe7)
	TFT_WR_DATA(0x4f)
	
	TFT_WR_CMD(CMD_SET_HOR_PERIOD)			//SET HBP
	TFT_WR_DATA(0x01)						//SET HSYNC Total = 440
	TFT_WR_DATA(0xb8)
	TFT_WR_DATA(0x00)						//SET HBP = 68
	TFT_WR_DATA(0x44)
	TFT_WR_DATA(0x0f) 						//SET VBP 16 = 15 + 1
	TFT_WR_DATA(0x00) 						//SET Hsync pulse start position
	TFT_WR_DATA(0x00)
	TFT_WR_DATA(0x00)						 //SET Hsync pulse subpixel start position
	
	TFT_WR_CMD(CMD_SET_VER_PERIOD)			//SET VBP
	TFT_WR_DATA(0x01)						//SET Vsync total 265 = 264 + 1
	TFT_WR_DATA(0x08)
	TFT_WR_DATA(0x00) 						//SET VBP = 19
	TFT_WR_DATA(0x13)
	TFT_WR_DATA(0x07)						//SET Vsync pulse 8 = 7 + 1
	TFT_WR_DATA(0x00)						//SET Vsync pulse start position
	TFT_WR_DATA(0x00)


	TFT_WR_CMD(CMD_SET_COLUMN)				//SET column address
	TFT_WR_DATA(0x00) 						//SET start column address=0
	TFT_WR_DATA(0x00)
	TFT_WR_DATA(0x01) 						//SET end column address=320
	TFT_WR_DATA(0x3f)
	
	TFT_WR_CMD(CMD_SET_PAGE)					//SET page address
	TFT_WR_DATA(0x00) 						//SET start page address=0
	TFT_WR_DATA(0x00)
	TFT_WR_DATA(0x00) 						//SET end page address=240
	TFT_WR_DATA(0xef)
	
	TFT_WR_CMD(CMD_ON_DISPLAY)				//SET display on
	TFT_WR_CMD(CMD_WR_MEMSTART)
 return;
}
pav256 вне форума  
Непрочитано 17.09.2013, 08:28  
KGA-1
Прохожий
 
Регистрация: 23.12.2008
Сообщений: 8
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
KGA-1 на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

Доброго всем дня.Облазил все форумы, но решения пока так и не нашел.Все еще нужен
демо-проектик STM32F4Discovery+SSD1963 в кокосе.
Помогите кто-нибудь! Готов оплатить проект.

Последний раз редактировалось KGA-1; 23.09.2013 в 09:13.
KGA-1 вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Режим захвата в STM32 serb-radio ARM 5 25.02.2016 12:22
STM32 printf не работает sanstan Embedd С 1 17.01.2013 13:21
STM32 eeprom emulation serb-radio Микроконтроллеры, АЦП, память и т.д 0 26.10.2011 13:42
STM32-Comstick Flyguy06 Микроконтроллеры, АЦП, память и т.д 0 18.06.2011 08:49


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


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