Top.Mail.Ru
Ответы

Sdram+stm32h743 sdram теряет данные

у меня самодельная плата с stm32h743bit6 + sdram is42s32800j-6bli
собрал код в кубе весь конфиг приложу, запустил тест памяти записываю а потом читаю пару тысяч слов , почти всегда из этих пару тысяч теряется несколько слов.
пробовал понижать частоту пересмотрел даташиты , конфиги в интернете тоже не помогли.

123
 //структура инита 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}; 
 


ссылка на код инита sdram и документацию


https://disk.yandex.ru/d/Hl6a5cH8cErJrw

тактирование fms 200MHz

По дате
По рейтингу
Аватар пользователя
Новичок

Я далёк от stm и прочих контроллеров и особенностей их работы с модулями памяти, но имхо, здесь очевидно, что дело в отсутствии обновления или его неправильной реализации. Нужно читать даташит и искать там алгоритм этого самого рефреша и ноги, за него ответственные. В простейших случаях нужно по таймингу дёргать единственную ногу, в более сложных - нужно вычитывать ячейку из блока, размером, скажем в 256 байт непрерывно по всем адресам.

Аватар пользователя
Просветленный

Похоже, что вы сталкиваетесь с проблемами удержания данных в SDRAM на вашей самодельной плате с STM32H743BIT6 и IS42S32800J-6BLI. Вот несколько шагов и соображений, которые могут помочь в устранении этой проблемы:

Проверьте конфигурацию SDRAM:
Убедитесь, что параметры времени SDRAM и последовательность инициализации правильно настроены в вашем проекте CubeMX. Обратите особое внимание на такие параметры, как частота обновления, латентность CAS и другие настройки времени.

Настройки тактовой частоты:
Проверьте, что тактовая частота FMC (Гибкий Контроллер Памяти) установлена правильно. Время работы SDRAM очень чувствительно к настройкам тактовой частоты, и неправильные настройки могут привести к проблемам удержания данных.

Макет PCB:
Убедитесь, что макет вашей печатной платы соответствует лучшим практикам проектирования высокоскоростной памяти. Это включает в себя правильную целостность сигнала, завершение и развязку питания.

Питание:
Убедитесь, что питание SDRAM стабильно и соответствует требуемым спецификациям. Любые колебания или шум в питании могут вызвать проблемы с удержанием данных.

Тестовые шаблоны:
Запустите тесты памяти с различными шаблонами (например, чередующиеся единицы и нули, шахматная доска), чтобы определить, зависит ли потеря данных от шаблона.

Температурные и экологические факторы:
Учитывайте рабочую температуру и условия окружающей среды, так как они могут влиять на производительность SDRAM.

Изучение даташита:
Повторно ознакомьтесь с даташитом IS42S32800J, чтобы убедиться, что все рекомендации по конфигурации и эксплуатации соблюдены.

Код структуры для инициализации SDRAM на основе вашего контекста:

1234567891011121314
 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 для получения дальнейшей помощи.