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

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

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

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

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

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


 
Опции темы
Непрочитано 09.08.2013, 15:16  
banzayy
Временная регистрация
 
Регистрация: 12.09.2006
Сообщений: 69
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
banzayy на пути к лучшему
По умолчанию HY32D и STM32F4Discovery

приобрёл себе сей дисплей и пытаюсь заставить его работать. как понимаете, что пока не удачно. Есть куча вопросов...но по порядку.

вот пример чужой программы конфигурации портов и настройки FSMC (пока разбираюсь по ним)

Код:
// Конфигурация линий ввода\вывода
void LCD_GPIO_Conf(void) {
	GPIO_InitTypeDef GPIO_InitStructure;

	// Тактирование портов
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOE | RCC_AHB1Periph_GPIOG, ENABLE);

	// Тактирование FSMC
	RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC, ENABLE);

/*	+-------------------+--------------------+------------------+------------------+
	+                       FSMC pins assignment                                   +
	+-------------------+--------------------+------------------+------------------+
	| PD0  ‹-› FSMC_D2  | PE2  ‹-› FSMC_A23  | PG5 ‹-› FSMC_A15	|
	| PD1  ‹-› FSMC_D3  |                    | PG12‹-› FSMC_NE4 |
	| PD4  ‹-› FSMC_NOE | PE7  ‹-› FSMC_D4   | PG13‹-› FSMC_A24 |
	| PD5  ‹-› FSMC_NWE | PE8  ‹-› FSMC_D5   |------------------+
	| PD8  ‹-› FSMC_D13 | PE9  ‹-› FSMC_D6   |
	| PD9  ‹-› FSMC_D14 | PE10 ‹-› FSMC_D7   |
	| PD10 ‹-› FSMC_D15 | PE11 ‹-› FSMC_D8   |
	|                   | PE12 ‹-› FSMC_D9   |
	|                   | PE13 ‹-› FSMC_D10  |
	| PD14 ‹-› FSMC_D0  | PE14 ‹-› FSMC_D11  |
	| PD15 ‹-› FSMC_D1  | PE15 ‹-› FSMC_D12  |
	+-------------------+--------------------+
	*/
	/* GPIOD configuration */
	GPIO_PinAFConfig(GPIOD, GPIO_PinSource0, GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOD, GPIO_PinSource1, GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOD, GPIO_PinSource4, GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOD, GPIO_PinSource5, GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOD, GPIO_PinSource8, GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOD, GPIO_PinSource9, GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOD, GPIO_PinSource10, GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOD, GPIO_PinSource14, GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOD, GPIO_PinSource15, GPIO_AF_FSMC);

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4  | GPIO_Pin_5  |
	                              GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_15;
	GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
	GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_NOPULL;

	GPIO_Init(GPIOD, &GPIO_InitStructure);


	/* GPIOE configuration */
	GPIO_PinAFConfig(GPIOE, GPIO_PinSource2 , GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOE, GPIO_PinSource7 , GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOE, GPIO_PinSource8 , GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOE, GPIO_PinSource9 , GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOE, GPIO_PinSource10 , GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOE, GPIO_PinSource11 , GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOE, GPIO_PinSource12 , GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOE, GPIO_PinSource13 , GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOE, GPIO_PinSource14 , GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOE, GPIO_PinSource15 , GPIO_AF_FSMC);

	GPIO_InitStructure.GPIO_Pin =GPIO_Pin_2 | GPIO_Pin_7 | GPIO_Pin_8  | GPIO_Pin_9  | GPIO_Pin_10 |
	                             GPIO_Pin_11| GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;

	GPIO_Init(GPIOE, &GPIO_InitStructure);


	/* GPIOG configuration */
	GPIO_PinAFConfig(GPIOG, GPIO_PinSource5 , GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOG, GPIO_PinSource12 , GPIO_AF_FSMC);
	GPIO_PinAFConfig(GPIOG, GPIO_PinSource13 , GPIO_AF_FSMC);

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_13 | GPIO_Pin_12;

	GPIO_Init(GPIOG, &GPIO_InitStructure);
}

// инициализация FSMC
static void LCD_FSMCConfig(void)
{
	FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
	FSMC_NORSRAMTimingInitTypeDef FSMC_NORSRAMTimingInitStructure;

	FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM4;
	FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
	FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
	FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
	FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
	FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
	FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
	FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
	FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
	FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
	FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;
	FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
	FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
	FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStru  ct = &FSMC_NORSRAMTimingInitStructure;

	/* FSMC Write Timing */
	FSMC_NORSRAMTimingInitStructure.FSMC_AddressSetupT  ime = 1;   /* Address Setup Time */
	FSMC_NORSRAMTimingInitStructure.FSMC_AddressHoldTi  me = 0;
	FSMC_NORSRAMTimingInitStructure.FSMC_DataSetupTime = 1;	     /* Data Setup Time */
	FSMC_NORSRAMTimingInitStructure.FSMC_BusTurnAround  Duration = 0x00;
	FSMC_NORSRAMTimingInitStructure.FSMC_CLKDivision = 0x00;
	FSMC_NORSRAMTimingInitStructure.FSMC_DataLatency = 0x00;
	FSMC_NORSRAMTimingInitStructure.FSMC_AccessMode = FSMC_AccessMode_A;	/* FSMC Access Mode */
	FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &FSMC_NORSRAMTimingInitStructure;

	FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);

	/* Enable FSMC Bank4_SRAM Bank */
	FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);
}
и адреса дисплея

Код:
#define LCD_REG              (*((volatile unsigned short *) 0x6F000000)) /* RS = 0 - номер регистра */
#define LCD_RAM              (*((volatile unsigned short *) 0x6F010000)) /* RS = 1 - данные регистра */
насколько я понимаю, то подключение выглядит следующим образом D0-D15 дисплея к FSMC_D0-FSMC_D15, далее CS к FSMC_NE4, WR к FSMC_NWE, RD к FSMC_NOE, RESET соединил с NRST на Discovery. Остаётся только RS. Насколько я понял программа написана под STM32F4xx в корпусе 144 ножек. У меня 100 и FSMC_NE4 попросту нет, можно подключить только одно устройство.

как указать для FSMC, что выбор чипа будет NE1? Просто изменив эти две строки в настройках? Ну, и в GPIO соответственно.

SMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
......
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);

и как правильно посчитать LCD_REG и LCD_RAM? В других источниках нашёл, что если RS к А16, то

Код:
#define LCD_REG              (*((volatile unsigned short *) 0x60000000)) /* RS = 0 - номер регистра */
#define LCD_RAM              (*((volatile unsigned short *) 0x60020000)) /* RS = 1 - данные регистра */
Реклама:
banzayy вне форума  
Непрочитано 09.08.2013, 15:23  
banzayy
Временная регистрация
 
Регистрация: 12.09.2006
Сообщений: 69
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
banzayy на пути к лучшему
По умолчанию Re: HY32D и STM32F4Discovery

простоя пока не пойму, где я указывается в как подключены управляющие сигналы. Или они жёстко привязаны? например, CS только к NEx, WR только к NWE, RD к NOE. А RS к любому из Axx. Просто в зависимости какой адрес используется, то к 0x60000000 просто добавляется смещение.
Извините за глупые вопросы, но просто спросить и объяснить не кому.
banzayy вне форума  
Непрочитано 09.08.2013, 15:27  
banzayy
Временная регистрация
 
Регистрация: 12.09.2006
Сообщений: 69
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
banzayy на пути к лучшему
По умолчанию Re: HY32D и STM32F4Discovery

А16 это в двоичной так 1 0000 0000 0000 0000 или в нех 0х10000.
итого 0x60000000+0х10000
banzayy вне форума  
Непрочитано 09.08.2013, 15:49  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: HY32D и STM32F4Discovery

Сообщение от banzayy Посмотреть сообщение
+0х10000
+0х20000

16-битная шина

Сообщение от banzayy Посмотреть сообщение
они жёстко привязаны? например, CS только к NEx, WR только к NWE, RD к NOE. А RS к любому из Axx.
Да, жестко привязаны
niXto вне форума  
Непрочитано 09.08.2013, 16:06  
banzayy
Временная регистрация
 
Регистрация: 12.09.2006
Сообщений: 69
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
banzayy на пути к лучшему
По умолчанию Re: HY32D и STM32F4Discovery

правильно, я и выставил 16-й бит в 1 и получил 0х10000. А 0х20000 даёт 1 в 17-ом бите.
banzayy вне форума  
Непрочитано 09.08.2013, 17:29  
niXto
Почётный гражданин KAZUS.RU
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: HY32D и STM32F4Discovery

Чтобы изменялся 16-й бит адреса при 16-битной шине данных, нужно писать со смещением 20000, а при 32-битной шине данных - со смещением 40000 т.к. внутренняя адресация - для 8-битной шины данных
niXto вне форума  
Непрочитано 09.08.2013, 19:17  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: HY32D и STM32F4Discovery

Ловите схему подключения и готовый проект.
Вложения:
Тип файла: rar HY-MiniSTM32V.rar (747.8 Кб, 238 просмотров)
Easyrider83 вне форума  
Непрочитано 10.08.2013, 09:25  
banzayy
Временная регистрация
 
Регистрация: 12.09.2006
Сообщений: 69
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
banzayy на пути к лучшему
По умолчанию Re: HY32D и STM32F4Discovery

спасибо. но хотелось бы доделать тот что начал и походу разобраться.
banzayy вне форума  
Непрочитано 10.08.2013, 10:06  
banzayy
Временная регистрация
 
Регистрация: 12.09.2006
Сообщений: 69
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
banzayy на пути к лучшему
По умолчанию Re: HY32D и STM32F4Discovery

ещё раз пересмотрел вашу программу. подключение у меня один в один. RS также на А16.

возник вопрос по настройке FSMC. У вас в программе блок

Код:
  FSMC_NORSRAMTimingInitStructure.FSMC_AddressSetupT  ime = 30; 
  FSMC_NORSRAMTimingInitStructure.FSMC_AddressHoldTi  me = 0;	   
  FSMC_NORSRAMTimingInitStructure.FSMC_DataSetupTime = 30;	   
  FSMC_NORSRAMTimingInitStructure.FSMC_BusTurnAround  Duration = 0x00;
  FSMC_NORSRAMTimingInitStructure.FSMC_CLKDivision = 0x00;
  FSMC_NORSRAMTimingInitStructure.FSMC_DataLatency = 0x00;
  FSMC_NORSRAMTimingInitStructure.FSMC_AccessMode = FSMC_AccessMode_A;
повторяется 2 раза с разными значениями. зачем?

и в настройке тактирования

Код:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE);
перекопал весь stm32f4xx_rcc.h и не нашёл тактирования AFIO
banzayy вне форума  
Непрочитано 10.08.2013, 10:43  
banzayy
Временная регистрация
 
Регистрация: 12.09.2006
Сообщений: 69
Сказал спасибо: 2
Сказали Спасибо 1 раз в 1 сообщении
banzayy на пути к лучшему
По умолчанию Re: HY32D и STM32F4Discovery

изменил тактирование, т.к. в скаченном примере 168МГц было при кварце 25МГц, а у меня на дисковери стоит 8-ка.
banzayy вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как подцепить LCD дисплей с контроллером SSd1289 к отладке STM32F4DISCOVERY Flopix ARM 59 25.04.2014 11:27
TFT HY32D banzayy Видеотехника 5 08.08.2013 21:06


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


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