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

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

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

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

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

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


 
Опции темы
Непрочитано 01.02.2013, 11:18  
Batisto4ka
Временная регистрация
 
Регистрация: 19.05.2010
Сообщений: 78
Сказал спасибо: 10
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
Batisto4ka на пути к лучшему
По умолчанию stm32 + FSMC + ssd1963:?

Который день подряд пытаюсь решить проблему.
Задача: связать stm32f103zet через fsmc c ssd1963 (rfc57a1-fiw-d-000).
Распиновка следующая:
МК ЖКИ
FSMC_А0(PF.0) RS
NWE(PD.5 ) WE
NOE(PD.4) OE
FSMC_D0(PD.14) D0
FSMC_D1(PD.15) D1
FSMC_D2(PD.0) D2
FSMC_D3(PD.1) D3
FSMC_D4(PE.7) D4
FSMC_D5(PE.8 ) D5
FSMC_D6(PE.9) D6
FSMC_D7(PE.10) D7
NE4(PG.12) LCD_CS
PB.2 LCD_RST
PG.8 LCD_RD
PG.15 LCD_UD
Еще на шине FSMC висит is61LV51216-10T, но я ее пока не задействую. хочу проверить оживить индикатор и прочитать регистры с него(так как подсветки пока на него нет). Помогите разобраться, что не так в настройках FSMC?
Код:
#define LCD_REG (*((volatile unsigned short *) 0x6C000000))
#define LCD_RAM (*((volatile unsigned short *) 0x6C000001))

void   InitTFTGPIO   (void)
{
 GPIO_InitTypeDef GPIO_InitStructure;
  /* Enable FSMC, GPIOD, GPIOE, GPIOF, GPIOG and AFIO clocks */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE |RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOG |RCC_APB2Periph_AFIO, ENABLE);

  /* Set PD.00(D2), PD.01(D3), PD.04(NOE), PD.05(NWE), PD.08(D13), PD.09(D14),
     PD.10(D15), PD.14(D0), PD.15(D1) as alternate 
     function push pull */
  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_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOD, &GPIO_InitStructure);

  /* Set PE.07(D4), PE.08(D5), PE.09(D6), PE.10(D7), PE.11(D8), PE.12(D9), PE.13(D10),
     PE.14(D11), PE.15(D12) as alternate function push pull */
  GPIO_InitStructure.GPIO_Pin = 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_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOE, &GPIO_InitStructure);

  /* Set PF.00(A0 (RS)) as alternate function push pull */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOF, &GPIO_InitStructure);

  /* Set PG.12(NE4 (LCD/CS)) as alternate function push pull - CE3(LCD /CS) */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOG, &GPIO_InitStructure);
   
    /*Reset pin config PB.2 (LCD_RST)*/
 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;//RESET_PIN;   // 
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;            // 
 GPIO_Init(GPIOB/*RESET_PORT*/, &GPIO_InitStructure);
}
/*..*/
void InitFSMC   (void)
{
  FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
  FSMC_NORSRAMTimingInitTypeDef  p;

/*-- FSMC Configuration ------------------------------------------------------*/
  /* FSMC_Bank1_NORSRAM4 timing configuration */
  p.FSMC_AddressSetupTime = 10;
  p.FSMC_AddressHoldTime = 1;
  p.FSMC_DataSetupTime = 15;
  p.FSMC_BusTurnAroundDuration = 0;
  p.FSMC_CLKDivision = 0;
  p.FSMC_DataLatency = 0;
  p.FSMC_AccessMode = FSMC_AccessMode_A;

  /* FSMC_Bank1_NORSRAM4 configured as follows:
        - Data/Address MUX = Disable
        - Memory Type = SRAM
        - Data Width = 8bit
        - Write Operation = Enable
        - Extended Mode = Disable
        - Asynchronous Wait = Disable */
 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_8b;
  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_ExtendedMode = FSMC_ExtendedMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
  FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStru  ct = &p;
  FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;

  FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);  

  /*Enable FSMC_Bank1_NORSRAM4 */
  FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM4, ENABLE);
}
/*=================================================  =================*/
uint16_t LCD_ReadReg(uint8_t LCD_Reg)
{
   /**
  * @brief  Reads the selected LCD Register.
  * @param  None
  * @retval : LCD Register Value.
  */
  /* Write 16-bit Index (then Read Reg) */
 LCD_REG = LCD_Reg;
  /* Read 16-bit Reg */
  return (LCD_RAM);
}
/*=================================================  =================*/
void LCD_WriteCommand(uint8_t cmd) 
{
  LCD_REG = cmd;
}
/*=================================================  =================*/
void LCD_WriteData(uint8_t data) 
{
  LCD_RAM = data;
}
/*=================================================  =================*/
void LCD_WriteCmd(uint8_t cmd, uint8_t data)
{
  LCD_REG=cmd;
  LCD_RAM=data;
}
void main(void)
{
 InitTFTGPIO();
  InitFSMC();
  
  /*TFT initialization*/
   InitSSD1963();

   data=LCD_ReadReg(CMD_GET_ADDR_MODE);
 }
и вот на записи data=LCD_ReadReg(CMD_GET_ADDR_MODE); виснет контрллер. я не правильно читаю или неправильно настроен fsmc? Интуитивно думаю и то, и другое.
А если настраиваю так
Код:

Код:
#define LCD_REG (*((volatile unsigned short *) 0x6C000000))
#define LCD_RAM (*((volatile unsigned short *) 0x6C000002))
  FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
тогда у меня зависает котроллер и невозможно отладить программу, выскакивает сообщение "can't halt the core".
помогите рабобраться, что не так.
Реклама:

Последний раз редактировалось Batisto4ka; 01.02.2013 в 11:21.
Batisto4ka вне форума  
Непрочитано 01.02.2013, 11:34  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,529
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

Сообщение от Batisto4ka Посмотреть сообщение
PG.8 LCD_RD
PG.15 LCD_UD
Не совсем понятно что это.
У меня тоже этот контроллер подключен к FSMC.
FSMC_D0-D16 -›DB0-DB16
FSMC_NWE-›WR
FSMC_NOE-›RD
FSMC_NE1-›CS
FSMC_A16-›RS(D/C)
И все собственно.
realid вне форума  
Непрочитано 01.02.2013, 11:57  
Batisto4ka
Временная регистрация
 
Регистрация: 19.05.2010
Сообщений: 78
Сказал спасибо: 10
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
Batisto4ka на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

Сообщение от realid Посмотреть сообщение
Не совсем понятно что это.
У меня тоже этот контроллер подключен к FSMC.
FSMC_D0-D16 -›DB0-DB16
FSMC_NWE-›WR
FSMC_NOE-›RD
FSMC_NE1-›CS
FSMC_A16-›RS(D/C)
И все собственно.
PG.8 LCD_RD
PG.15 LCD_UD
это линии дял ЖКИ scan direction.
у меня 8 битная шина данных для ссд1963.
Я думаю, что у меня что-то в настройках FSMC а именно адрессация, потому что зависает то контроллер не спроста.
Прикрепляю проект полностью.
Вложения:
Тип файла: rar prj.rar (3.98 Мб, 353 просмотров)

Последний раз редактировалось Batisto4ka; 01.02.2013 в 12:05.
Batisto4ka вне форума  
Непрочитано 01.02.2013, 12:02  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,529
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

У меня настройка(мк STM32F407VG):
Код:
FSMC_NORSRAMTimingInitStructure.FSMC_AddressSetupT  ime = 10;
  FSMC_NORSRAMTimingInitStructure.FSMC_AddressHoldTi  me = 10;
  FSMC_NORSRAMTimingInitStructure.FSMC_DataSetupTime = 6;
  FSMC_NORSRAMTimingInitStructure.FSMC_BusTurnAround  Duration = 1;
  FSMC_NORSRAMTimingInitStructure.FSMC_CLKDivision = 0;
  FSMC_NORSRAMTimingInitStructure.FSMC_DataLatency = 2;
  FSMC_NORSRAMTimingInitStructure.FSMC_AccessMode = FSMC_AccessMode_A;

  FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
  FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
  FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_PSRAM;
  FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
  FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
  FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_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_ExtendedMode = FSMC_ExtendedMode_Enable;
  FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
  FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStru  ct = &FSMC_NORSRAMTimingInitStructure;
  FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &FSMC_NORSRAMTimingInitStructure;

  FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); 

  /*!‹ Enable FSMC Bank1_SRAM1 Bank */
  FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);


#define Bank1_SRAM1_COMM_ADDR  ((uint32_t)0x60000000) //FSMC TFT command
#define Bank1_SRAM1_DATA_ADDR  ((uint32_t)0x60020000) //FSMC TFT data address line FSMC_A16(RS)

#define WriteDataFSMC(x)     *(uint16_t *) (Bank1_SRAM1_DATA_ADDR) = x
#define WriteCommandFSMC(x)  *(uint16_t *) (Bank1_SRAM1_COMM_ADDR) = x
realid вне форума  
Непрочитано 01.02.2013, 12:26  
Batisto4ka
Временная регистрация
 
Регистрация: 19.05.2010
Сообщений: 78
Сказал спасибо: 10
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
Batisto4ka на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

в ваших настройках принципиальные отличия следующие
1. отличаются тайминги
2.у вас подключен к 1 банку, у меня к 4
3. у вас FSMC_MemoryType = FSMC_MemoryType_PSRAM у меня FSMC_MemoryType_SRAM
4. у вас FSMC_MemoryDataWidth_16b у меня 8 бит.
5. у вас FSMC_ExtendedMode = FSMC_ExtendedMode_Enable у меня Disable.
В связи с этим вопросы.
1. Тайминги для фсмк зависят тольк от контроллера ЖКИ и не зависят от микроконтроллера, котоый сним связывается (у меня stm32f103zet у вас STM32F407VG) ?
2. принципиально ли использование PSRAM или SRAM, как понять какой тип использовтаь, от чего это зависит?
3. если у меня 8 бит фсмк подключено к 8 битной шине жки, это влияет на адрессцию фсмк? правильная ли в таком случае настройка
запись команд (*((volatile unsigned short *) 0x6C000000))
запись данных (*((volatile unsigned short *) 0x6C000001))
если у меня А0 -RS и NE4-LCD_CS ?
4.ExtendedMode разрешен это принципиально сдесь?
Batisto4ka вне форума  
Непрочитано 01.02.2013, 13:05  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,529
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

Сообщение от Batisto4ka Посмотреть сообщение
4.ExtendedMode разрешен это принципиально сдесь?
Нет. Мне это понадобилось сделать чтобы подстроить тайминги, иначе глюки были, так как распаян экран на довольно длинном шлейфе.

Сообщение от Batisto4ka Посмотреть сообщение
1. Тайминги для фсмк зависят тольк от контроллера ЖКИ и не зависят от микроконтроллера, котоый сним связывается (у меня stm32f103zet у вас STM32F407VG) ?
Тайминги для fsmc зависят от тактовой и от настроек и конечно они должны соответствовать требованиям для контроллера жки.

Сообщение от Batisto4ka Посмотреть сообщение
2. принципиально ли использование PSRAM или SRAM, как понять какой тип использовтаь, от чего это зависит?
Если честно я так и не понял их отличия.

Сообщение от Batisto4ka Посмотреть сообщение
3. если у меня 8 бит фсмк подключено к 8 битной шине жки, это влияет на адрессцию фсмк? правильная ли в таком случае настройка
запись команд (*((volatile unsigned short *) 0x6C000000))
запись данных (*((volatile unsigned short *) 0x6C000001))
если у меня А0 -RS и NE4-LCD_CS ?
Ну по идее, да.
realid вне форума  
Непрочитано 01.02.2013, 13:07  
Batisto4ka
Временная регистрация
 
Регистрация: 19.05.2010
Сообщений: 78
Сказал спасибо: 10
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
Batisto4ka на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

а вы поняли по даташиту,как считать тайминги?
можете обьяснить на пальцах?
Batisto4ka вне форума  
Непрочитано 01.02.2013, 13:11  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,529
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

Сообщение от Batisto4ka Посмотреть сообщение
а вы поняли по даташиту,как считать тайминги?
можете обьяснить на пальцах?
Так это же кол-во тактов HCLK.
realid вне форума  
Непрочитано 01.02.2013, 15:26  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,939 раз(а) в 2,369 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

Сообщение от Batisto4ka Посмотреть сообщение
а вы поняли по даташиту,как считать тайминги?
а может забыть на время эти тайминги, да забегу я за вами, выедем в парк, лес, на природу? день солнечный, потеплело, да бутерброды/чай/беседа (можно шашлыки/коньяк/кофе), а? соглашайтесь...
jump вне форума  
Непрочитано 01.02.2013, 15:44  
Batisto4ka
Временная регистрация
 
Регистрация: 19.05.2010
Сообщений: 78
Сказал спасибо: 10
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
Batisto4ka на пути к лучшему
По умолчанию Re: stm32 + FSMC + ssd1963:?

Сообщение от jump Посмотреть сообщение
а может забыть на время эти тайминги, да забегу я за вами, выедем в парк, лес, на природу? день солнечный, потеплело, да бутерброды/чай/беседа (можно шашлыки/коньяк/кофе), а? соглашайтесь...
нет, сначала тайминги
Batisto4ka вне форума  
 

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

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

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, время: 07:53.


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