Перейти к содержанию
    

SSD1963 + FSMC

Здравствуйте!

 

завел дисплей на SSD1963 + FSMC, 16 бит. заливка данных в дисплей работает, но почему -то при чтении всегда возвращается последнее записанное число. шина 8080, осциллом смотрю NOE, NWE - там все верно.

действую согласно даташиту:

#define LCD_REG (*((volatile unsigned short *) 0x60000000))
#define LCD_RAM (*((volatile unsigned short *) 0x60000002))

uint16_t WF70_GetPixel()
{
    WF70_SetArea(0, GetMaxX(), 0, GetMaxY());
    LCD_REG = 0x2E;
    return (LCD_RAM);
}

void WF70_SetArea(uint16_t s_x,uint16_t e_x,uint16_t s_y,uint16_t e_y)
{
  WF70_WriteCommand(0x2a);        //SET page address
  WF70_WriteData(s_x >> 8);
  WF70_WriteData(s_x);
  WF70_WriteData(e_x >> 8);
  WF70_WriteData(e_x);

  WF70_WriteCommand(0x2b);        //SET column address
  WF70_WriteData(s_y >> 8);
  WF70_WriteData(s_y);
  WF70_WriteData(e_y >> 8);
  WF70_WriteData(e_y);
}

 

настройки FSMC:

  FSMC_NORSRAMInitTypeDef  FSMC_NORSRAMInitStructure;
  FSMC_NORSRAMTimingInitTypeDef  p;
  /* Enable FSMC clock */
  RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC, ENABLE); 
/*-- FSMC Configuration ------------------------------------------------------*/
  p.FSMC_AddressSetupTime = 10;
  p.FSMC_AddressHoldTime = 0;   // not used
  p.FSMC_DataSetupTime = 15;//4;
  p.FSMC_BusTurnAroundDuration = 0;//1;
  p.FSMC_CLKDivision = 0;
  p.FSMC_DataLatency = 0;
  p.FSMC_AccessMode = FSMC_AccessMode_A;

  FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_SRAMx;//FSMC_Bank1_NORSRAM2;
  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_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_ReadWriteTimingStruct = &p;
  FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
  FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); 
  /*!< Enable FSMC Bank1_SRAM2 Bank */
  FSMC_NORSRAMCmd(FSMC_Bank1_SRAMx, ENABLE);

 

подскажите пожалста, в чем проблема?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...