ELIOT1 HAL
Загрузка...
Поиск...
Не найдено
Драйвер модуля SMC

Драйвер внешней статической памяти Подробнее...

Файлы

файл  hal_smc.h
 Интерфейс драйвера внешней статической памяти
 

Макросы

#define SMC_NO_DEACTIVATION   0
 Деактивация не выполняется
 

Перечисления

enum  smc_status
 Статусы драйвера SMC. Подробнее...
 
enum  smc_cmd_type
 Тип конфигурационной команды Подробнее...
 
enum  smc_cre
 Значение выхода CRE при выполнении команды ModeReg. Подробнее...
 
enum  smc_burst_align
 Граница пакета памяти Подробнее...
 
enum  smc_bls
 Поведение выводов SMC_NBLS. Подробнее...
 
enum  smc_adv
 Использование сигнала NADV. Подробнее...
 
enum  smc_packet_lenght
 Длина пакета данных в 16-битных словах при записи или чтении Подробнее...
 
enum  smc_rd_wr_type
 Тип интерфейса при записи или чтении Подробнее...
 
enum  smc_bit_depth
 Разрядность интерфейса памяти Подробнее...
 
enum  smc_incr_to_incr4
 Управление преобразованием AHB-пакетов типа INCR в пакеты типа INCR4. Подробнее...
 

Интерфейс драйвера

enum smc_status SMC_PowerSaveOn (SMC_Type *base)
 Включение энергосберегающего режима
 
enum smc_status SMC_PowerSaveOff (SMC_Type *base)
 Выключение энергосберегающего режима
 
enum smc_status SMC_DirectCmd (SMC_Type *base, uint32_t chip_select, enum smc_cmd_type cmd_type, enum smc_cre set_cre, uint32_t addr)
 Отправка конфигурационных команд
 
enum smc_status SMC_SetCycles (SMC_Type *base, uint32_t ttr, uint32_t tpc, uint32_t twp, uint32_t tceoe, uint32_t twc, uint32_t trc)
 Хранение новой конфигурации временных параметров интерфейса.
 
enum smc_status SMC_SetOpmode (SMC_Type *base, enum smc_burst_align align, enum smc_bls bls, enum smc_adv adv, enum smc_packet_lenght wr_lenght, enum smc_rd_wr_type wr_sync, enum smc_packet_lenght rd_lenght, enum smc_rd_wr_type rd_sync, enum smc_bit_depth depth)
 Установка регистра SET_OPMODE.
 
enum smc_status SMC_RefreshPeriod (SMC_Type *base, uint32_t period)
 Управление деактивацией микросхемы
 
enum smc_status SMC_UserConfig (SMC_Type *base, enum smc_incr_to_incr4 bank0, enum smc_incr_to_incr4 bank1, uint32_t smcclkdiv)
 Запись в регистр USER_CONFIG.
 
bool SMC_CheckConfigure (SMC_Type *base, uint32_t chip_select, uint32_t cycles, uint32_t mode)
 Проверка завершения установки конфигурации
 

Подробное описание

Драйвер внешней статической памяти

Драйвер модуля внешней статической памяти управляет внешней статической памяти .

Перечисления

◆ smc_adv

enum smc_adv

Использование сигнала NADV.

Элементы перечислений
SMC_AdvNotUsed 

Сигнал не используется.

SMC_AdvUsed 

Сигнал используется, шины адреса и данных мультиплексируются.

SMC_AdvLcd 

При работе с LCD дисплеем ADV должен быть сброшен.

SMC_AdvMemory 

ADV должен быть установлен при работе с микросхемами памяти.

◆ smc_bit_depth

Разрядность интерфейса памяти

Элементы перечислений
SMC_BitDepth8 

8 бит - не поддержано

SMC_BitDepth16 

16 бит

SMC_BitDepth24 

24 бит - не поддержано

SMC_BitDepth32 

32 бит - не поддержано

◆ smc_bls

enum smc_bls

Поведение выводов SMC_NBLS.

Элементы перечислений
SMC_BlsAsNcs 

Выводы SMC_NBLS переключаются так же, как выводы SMC_NCS.

SMC_BlsAsNwe 

Выводы SMC_NBLS переключаются так же, как вывод SMC_NWE.

◆ smc_burst_align

Граница пакета памяти

Элементы перечислений
SMC_BurstAlignNo 

Нет границы

SMC_BurstAlign32 

32 слова по 16 бит

SMC_BurstAlign64 

64 слова по 16 бит

SMC_BurstAlign128 

128 слов по 16 бит

SMC_BurstAlign256 

256 слов по 16 бит

◆ smc_cmd_type

Тип конфигурационной команды

Элементы перечислений
SMC_CmdTypeUpdateRegsAndAHBCommand 

UpdateRegs + AHB command

SMC_CmdTypeModeReg 

ModeReg

SMC_CmdTypeUpdateRegs 

UpdateRegs

SMC_CmdTypeModeRegAndUpdateRegs 

ModeReg + UpdateRegs

◆ smc_cre

enum smc_cre

Значение выхода CRE при выполнении команды ModeReg.

Элементы перечислений
SMC_CRE0 

Выход CRE сброшен

SMC_CRE1 

Выход CRE установлен

◆ smc_incr_to_incr4

Управление преобразованием AHB-пакетов типа INCR в пакеты типа INCR4.

Элементы перечислений
SMC_IncrToIncr4Enable 

Пакеты типа INCR преобразуются в пакеты типа INCR4.

SMC_IncrToIncr4Disable 

Пакеты типа INCR обрабатываются как одиночные обращения типа SINGLE.

◆ smc_packet_lenght

Длина пакета данных в 16-битных словах при записи или чтении

Элементы перечислений
SMC_PacketLenght1 

1 слово

SMC_PacketLenght4 

4 слово

SMC_PacketLenght8 

8 слово

SMC_PacketLenghtEndless 

Непрерывный пакет

◆ smc_rd_wr_type

Тип интерфейса при записи или чтении

Элементы перечислений
SMC_RdWrAsync 

Асинхронный

SMC_RdWrSync 

Синхронный

◆ smc_status

enum smc_status

Статусы драйвера SMC.

Элементы перечислений
SMC_Status_Ok 

Нет ошибок

SMC_Status_InvalidArgument 

Недопустимый аргумент

Функции

◆ SMC_CheckConfigure()

bool SMC_CheckConfigure ( SMC_Type * base,
uint32_t chip_select,
uint32_t cycles,
uint32_t mode )

Проверка завершения установки конфигурации

Аргументы
baseАдрес блока SMC
chip_selectБанк памяти. Может быть 0 или 1.
cyclesВременные параметры
modeРежима работы
Возвращаемые значения
trueКонфигурация установлена
falseКонфигурация не установлена
Заметки
При некорректном base возвращается false

◆ SMC_DirectCmd()

enum smc_status SMC_DirectCmd ( SMC_Type * base,
uint32_t chip_select,
enum smc_cmd_type cmd_type,
enum smc_cre set_cre,
uint32_t addr )

Отправка конфигурационных команд

Предназначена для отправки конфигурационных команд во внешнюю память и для управления обновлением конфигурационных регистров контроллера значениями из регистров SMC_SET_OPMODE и SMC_SET_CYCLES

Аргументы
baseАдрес блока SMC
chip_selectБанк памяти. Может быть 0 или 1.
cmd_typeТип конфигурационной команды.
set_creПри выполнении команды ModeReg задает значение выхода SMC_CRE
addrПри выполнении команды ModeReg поле используется в качестве разрядов [19:0] адреса внешней памяти. При выполнении команды UpdateRegs+AHB command поле ADDR[15:0] используется для сопоставления со значением на шине SMC_DA[15:0] для синхронного обновления конфигурации.
Возвращаемые значения
SMC_Status_Ok
SMC_Status_InvalidArgument

◆ SMC_PowerSaveOff()

enum smc_status SMC_PowerSaveOff ( SMC_Type * base)

Выключение энергосберегающего режима

Инициирует запрос на переход контроллера из энергосберегающего состояния. Не дожидается завершения перехода из энергосберегающего состояния.

Аргументы
baseАдрес блока SMC
Возвращаемые значения
SMC_Status_Ok
SMC_Status_InvalidArgument

◆ SMC_PowerSaveOn()

enum smc_status SMC_PowerSaveOn ( SMC_Type * base)

Включение энергосберегающего режима

Инициирует запрос на переход контроллера в энергосберегающее состояние. Не дожидается завершения перехода в энергосберегающее состояние.

Аргументы
baseАдрес блока SMC
Возвращаемые значения
SMC_Status_Ok
SMC_Status_InvalidArgument

◆ SMC_RefreshPeriod()

enum smc_status SMC_RefreshPeriod ( SMC_Type * base,
uint32_t period )

Управление деактивацией микросхемы

Задает количество последовательных пакетов перед деактивацией микросхемы памяти для возможности ее обновления

Заметки
Используется перед началом работы с блоком
Аргументы
baseАдрес блока SMC
periodКоличество пакетов перед деактивацией. Допустимые значения: SMC_NO_DEACTIVATION - нет деактивации, от 1 до 15 - деактивация после 1, .. 15 пакета
Возвращаемые значения
SMC_Status_Ok
SMC_Status_InvalidArgument

◆ SMC_SetCycles()

enum smc_status SMC_SetCycles ( SMC_Type * base,
uint32_t ttr,
uint32_t tpc,
uint32_t twp,
uint32_t tceoe,
uint32_t twc,
uint32_t trc )

Хранение новой конфигурации временных параметров интерфейса.

Предназначена для хранения новой конфигурации временных параметров интерфейса в регистре SMC_SET_CYCLES. Значение этого регистра переписывается в регистр SMC_CYCLESx выбранного банка при выполнении команды UpdateRegs ( SMC_DirectCmd )

Аргументы
baseАдрес блока SMC
ttrЗадержка между последовательными пакетами (turnaround)
tpcДлительность цикла доступа к странице
twpЗадержка активации вывода CMS_NWE
tceoeЗадержка активации вывода SMC_NOE
twcДлительность цикла записи
trcДлительность цикла чтения
Возвращаемые значения
SMC_Status_Ok
SMC_Status_InvalidArgument

◆ SMC_SetOpmode()

enum smc_status SMC_SetOpmode ( SMC_Type * base,
enum smc_burst_align align,
enum smc_bls bls,
enum smc_adv adv,
enum smc_packet_lenght wr_lenght,
enum smc_rd_wr_type wr_sync,
enum smc_packet_lenght rd_lenght,
enum smc_rd_wr_type rd_sync,
enum smc_bit_depth depth )

Установка регистра SET_OPMODE.

Устанавливает все поля регистра SET_OPMODE. Если хотя бы одно поле имеет недопустимое значение, то записи в регистр не происходит.

Заметки
Используется перед началом работы с блоком
Аргументы
baseАдрес блока SMC
alignВыравнивание
blsБит задает поведение выводов SMC_NBLS[1:0]
advЗадает использование сигнала SMC_NADV
wr_lenghtЗадает длину пакета данных при записи
wr_syncЗадает тип интерфейса при записи
rd_lenghtЗадает длину пакета данных при чтении
rd_syncЗадает тип интерфейса при чтении
depthЗадает разрядность интерфейса памяти
Возвращаемые значения
SMC_Status_Ok
SMC_Status_InvalidArgument

◆ SMC_UserConfig()

enum smc_status SMC_UserConfig ( SMC_Type * base,
enum smc_incr_to_incr4 bank0,
enum smc_incr_to_incr4 bank1,
uint32_t smcclkdiv )

Запись в регистр USER_CONFIG.

Управляет преобразованием AHB-пакетов типа INCR в пакеты типа INCR4. Задает коэффициент деления для формирования тактового сигнала.

Заметки
Используется перед началом работы с блоком
Аргументы
baseАдрес блока SMC
bank0Разрешение преобразования AHB-пакетов типа INCR в пакеты типа INCR4 для банка памяти 1.
bank1Разрешение преобразования AHB-пакетов типа INCR в пакеты типа INCR4 для банка памяти 0.
smcclkdivКоэффициент деления SMCCLKDIV. Допустимые значения от 1 до 32
Возвращаемые значения
SMC_Status_Ok
SMC_Status_InvalidArgument