Проблема в следующем: При чтении FSMC значения всегда возвращается предыдущее записанное в FSMC значение.
А нужно значения цвета пикселя SSD1963...
Собственно, в чем прикол???
Считывал так
Код: Выделить всё
#define LCD_REG (*((volatile unsigned short *) 0x60000000))
#define LCD_RAM (*((volatile unsigned short *) 0x60020000))
//0x2E read_memory_start
LCD_Write_Com(0x2E);
rtk[0]=LCD_RAM; //Все значения rtk[] одни и те же, то есть, что было записано в прошлый раз (LCD_Write_Com(0x2E))
rtk[1]=LCD_RAM;
rtk[2]=LCD_RAM;
rtk[3]=LCD_RAM;
Спойлер
Код: Выделить всё
FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;
FSMC_NORSRAMTimingInitTypeDef FSMC_NORSRAMTimingInitStructureRead;
FSMC_NORSRAMTimingInitTypeDef FSMC_NORSRAMTimingInitStructureWrite;
/* Enable FSMC Clock */
RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC, ENABLE);
/* Define Read timing parameters */
FSMC_NORSRAMTimingInitStructureRead.FSMC_AddressSetupTime = 10;
FSMC_NORSRAMTimingInitStructureRead.FSMC_AddressHoldTime = 10;
FSMC_NORSRAMTimingInitStructureRead.FSMC_DataSetupTime = 10;
FSMC_NORSRAMTimingInitStructureRead.FSMC_BusTurnAroundDuration = 0;
FSMC_NORSRAMTimingInitStructureRead.FSMC_CLKDivision = 0;
FSMC_NORSRAMTimingInitStructureRead.FSMC_DataLatency = 0;
FSMC_NORSRAMTimingInitStructureRead.FSMC_AccessMode = FSMC_AccessMode_A;
/* Define Write Timing parameters */
FSMC_NORSRAMTimingInitStructureWrite.FSMC_AddressSetupTime = 5;
FSMC_NORSRAMTimingInitStructureWrite.FSMC_AddressHoldTime = 5;
FSMC_NORSRAMTimingInitStructureWrite.FSMC_DataSetupTime = 5;
FSMC_NORSRAMTimingInitStructureWrite.FSMC_BusTurnAroundDuration = 0;
FSMC_NORSRAMTimingInitStructureWrite.FSMC_CLKDivision = 0;
FSMC_NORSRAMTimingInitStructureWrite.FSMC_DataLatency = 0;
FSMC_NORSRAMTimingInitStructureWrite.FSMC_AccessMode = FSMC_AccessMode_A;
/* Define protocol type */
FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1; //Bank1
FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; //No mux
FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM; //SRAM type
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; //16 bits wide
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode =
FSMC_BurstAccessMode_Disable; //No Burst
FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait =
FSMC_AsynchronousWait_Disable; // No wait
FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity =
FSMC_WaitSignalPolarity_Low; //Don'tcare
FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable; //No wrap mode
FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive =
FSMC_WaitSignalActive_BeforeWaitState; //Don't care
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable; //Don't care
FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Enable; //Allow distinct Read/Write parameters
FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; //Don't care
// Set read timing structure
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct =
&FSMC_NORSRAMTimingInitStructureRead;
// Set write timing structure
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct =
&FSMC_NORSRAMTimingInitStructureWrite;
// Initialize FSMC for read and write
FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
// Enable FSMC
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);

