Pin Map
FSMC_NE4 --> CS
FSMC_NWE --> WR
FSMC_NOP --> RD
FSMC_D[0…15] --> D[0…15]
FSMC Setup
/** Perform the SRAM1 memory initialization sequence
*/
hsram1.Instance = FSMC_NORSRAM_DEVICE;
hsram1.Extended = FSMC_NORSRAM_EXTENDED_DEVICE;
/* hsram1.Init */
hsram1.Init.NSBank = FSMC_NORSRAM_BANK4;
hsram1.Init.DataAddressMux = FSMC_DATA_ADDRESS_MUX_DISABLE;
hsram1.Init.MemoryType = FSMC_MEMORY_TYPE_SRAM;
hsram1.Init.MemoryDataWidth = FSMC_NORSRAM_MEM_BUS_WIDTH_16;
hsram1.Init.BurstAccessMode = FSMC_BURST_ACCESS_MODE_DISABLE;
hsram1.Init.WaitSignalPolarity = FSMC_WAIT_SIGNAL_POLARITY_LOW;
hsram1.Init.WrapMode = FSMC_WRAP_MODE_DISABLE;
hsram1.Init.WaitSignalActive = FSMC_WAIT_TIMING_BEFORE_WS;
hsram1.Init.WriteOperation = FSMC_WRITE_OPERATION_ENABLE;
hsram1.Init.WaitSignal = FSMC_WAIT_SIGNAL_DISABLE;
hsram1.Init.ExtendedMode = FSMC_EXTENDED_MODE_DISABLE;
hsram1.Init.AsynchronousWait = FSMC_ASYNCHRONOUS_WAIT_DISABLE;
hsram1.Init.WriteBurst = FSMC_WRITE_BURST_DISABLE;
/* Timing */
Timing.AddressSetupTime = 1;
Timing.AddressHoldTime = 15;
Timing.DataSetupTime = 6;
Timing.BusTurnAroundDuration = 1;
Timing.CLKDivision = 16;
Timing.DataLatency = 17;
Timing.AccessMode = FSMC_ACCESS_MODE_A;
Read Write Operation
*Attention: Write command must write to 0x6C000000(Make the RS pin low) & Write data must write to 0x6C000002(Make the RS pin high).
#define ILI9325_ADDR_COM 0x6C000000
#define ILI9325_ADDR_DATA 0x6C000002
#define ILI9325_Write_Command(Command) *(volatile unsigned short int *)ILI9325_ADDR_COM=Command
#define ILI9325_Write_Data(Data) *(volatile unsigned short int *)ILI9325_ADDR_DATA=Data
uint16_t ILI9325_Read_Reg(uint16_t Reg)
{
uint16_t Data;
ILI9325_Write_Command(Reg);
Data = *(volatile unsigned short int *)ILI9325_ADDR_DATA;
return Data;
}