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

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

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

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

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

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


 
Опции темы
Непрочитано 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.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
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.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
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,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
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
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
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.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
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, время: 19:47.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot