Доброго времени суток, форумчане. Прошу помощи в таком вот вопросе. Имею набор разработчика
Open407I-C, в нем есть модуль SRAM с микросхемой IS62WV12816BLL.
Решил освоить STemWin, заодно и подцепить SRAM. И сразу столкнулся с проблемой, три месяца пытаюсь решить ее - не выходит.
Суть такая: при записи во внешнюю SRAM записывется не только та ячейка, которую хочу записать, но и другая ячека с адресом + 0x100 или -0x100 от записываемого адреса (+ или - зависит от бита 8 адреса).
Напримет (использую банк 3, базовый адрес 0x68000000):
пишу по адресу 0x68000000, тем же значением записывается и 0x68000100
пишу по адресу 0x68000100, тем же значением записывается и 0x68000000
Пробовал выставлять максимальные тайминги и снижать частоту контроллера вплоть до 16МГц, не помогает.
Заказал другой модуль, на микросхеме IS62WV51216BLL, ведет себя аналогично.
Мой код инициализации
Код
hsram3.Instance = FSMC_NORSRAM_DEVICE;
hsram3.Extended = FSMC_NORSRAM_EXTENDED_DEVICE;
hsram3.Init.NSBank = FSMC_NORSRAM_BANK3;
hsram3.Init.DataAddressMux = FSMC_DATA_ADDRESS_MUX_DISABLE;
hsram3.Init.MemoryType = FSMC_MEMORY_TYPE_SRAM;
hsram3.Init.MemoryDataWidth = FSMC_NORSRAM_MEM_BUS_WIDTH_16;
hsram3.Init.BurstAccessMode = FSMC_BURST_ACCESS_MODE_DISABLE;
hsram3.Init.WaitSignalPolarity = FSMC_WAIT_SIGNAL_POLARITY_LOW;
hsram3.Init.WrapMode = FSMC_WRAP_MODE_DISABLE;
hsram3.Init.WaitSignalActive = FSMC_WAIT_TIMING_BEFORE_WS;
hsram3.Init.WriteOperation = FSMC_WRITE_OPERATION_ENABLE;
hsram3.Init.WaitSignal = FSMC_WAIT_SIGNAL_DISABLE;
hsram3.Init.ExtendedMode = FSMC_EXTENDED_MODE_DISABLE;
hsram3.Init.AsynchronousWait = FSMC_ASYNCHRONOUS_WAIT_DISABLE;
hsram3.Init.WriteBurst = FSMC_WRITE_BURST_DISABLE;
/* Timing */
Timing.AddressSetupTime = 15;
Timing.AddressHoldTime = 15;
Timing.DataSetupTime = 255;
Timing.BusTurnAroundDuration = 15;
Timing.CLKDivision = 16;
Timing.DataLatency = 17;
Timing.AccessMode = FSMC_ACCESS_MODE_A;
HAL_SRAM_Init(&hsram3, &Timing, NULL);
Картинки
После записи по адресу 0x68000000
Нажмите для просмотра прикрепленного файлаПосле записи по адресу 0x68000100
Нажмите для просмотра прикрепленного файлаЗа ответы заранее спасибо