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

    

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);

 

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

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация