Похоже, что вы сталкиваетесь с проблемами удержания данных в SDRAM на вашей самодельной плате с STM32H743BIT6 и IS42S32800J-6BLI. Вот несколько шагов и соображений, которые могут помочь в устранении этой проблемы:
Проверьте конфигурацию SDRAM:
Убедитесь, что параметры времени SDRAM и последовательность инициализации правильно настроены в вашем проекте CubeMX. Обратите особое внимание на такие параметры, как частота обновления, латентность CAS и другие настройки времени.
Настройки тактовой частоты:
Проверьте, что тактовая частота FMC (Гибкий Контроллер Памяти) установлена правильно. Время работы SDRAM очень чувствительно к настройкам тактовой частоты, и неправильные настройки могут привести к проблемам удержания данных.
Макет PCB:
Убедитесь, что макет вашей печатной платы соответствует лучшим практикам проектирования высокоскоростной памяти. Это включает в себя правильную целостность сигнала, завершение и развязку питания.
Питание:
Убедитесь, что питание SDRAM стабильно и соответствует требуемым спецификациям. Любые колебания или шум в питании могут вызвать проблемы с удержанием данных.
Тестовые шаблоны:
Запустите тесты памяти с различными шаблонами (например, чередующиеся единицы и нули, шахматная доска), чтобы определить, зависит ли потеря данных от шаблона.
Температурные и экологические факторы:
Учитывайте рабочую температуру и условия окружающей среды, так как они могут влиять на производительность SDRAM.
Изучение даташита:
Повторно ознакомьтесь с даташитом IS42S32800J, чтобы убедиться, что все рекомендации по конфигурации и эксплуатации соблюдены.
Код структуры для инициализации SDRAM на основе вашего контекста:
IS42S32800J_Context_t SDR = {
FMC_SDRAM_CMD_TARGET_BANK1,
FMC_SDRAM_CMD_AUTOREFRESH_MODE,
1689,
0,
0 << 3,
2 << 4,
0 << 7,
1 << 9
};
// Пример настроек конфигурации
#define REFRESH_COUNT ((uint32_t)0x0603) // Счетчик обновления SDRAM (100 МГц SD-тактирование)
#define IS42S32800J_TIMEOUT ((uint32_t)0xFFFF)
Рекомендованные шаги по устранению неисправностей:
Переоценка кода инициализации:
Убедитесь, что последовательность инициализации соответствует спецификациям, изложенным в даташите IS42S32800J.
Настройка частоты обновления:
Попробуйте изменить частоту обновления, чтобы увидеть, улучшится ли удержание данных.
Запуск комплексных тестов памяти:
Реализуйте серию тестов памяти для обнаружения любых закономерностей в потере данных.
Консультации с технической поддержкой:
Если проблема не устраняется, обратитесь в службы поддержки STMicroelectronics или производителя SDRAM для получения дальнейшей помощи.
собрал код в кубе весь конфиг приложу, запустил тест памяти записываю а потом читаю пару тысяч слов , почти всегда из этих пару тысяч теряется несколько слов.
пробовал понижать частоту пересмотрел даташиты , конфиги в интернете тоже не помогли.
ссылка на код инита sdram и документацию
https://disk.yandex.ru/d/Hl6a5cH8cErJrw
тактирование fms 200MHz