Драйвер внешней статической памяти
Подробнее...
|
| файл | hal_smc.h |
| | Интерфейс драйвера внешней статической памяти
|
| |
|
|
#define | SMC_NO_DEACTIVATION 0 |
| | Деактивация не выполняется
|
| |
|
| 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
Использование сигнала 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
Поведение выводов 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
Значение выхода 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
Статусы драйвера 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()
Отправка конфигурационных команд
Предназначена для отправки конфигурационных команд во внешнюю память и для управления обновлением конфигурационных регистров контроллера значениями из регистров 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_PowerSaveOff()
| enum smc_status SMC_PowerSaveOff |
( |
SMC_Type * | base | ) |
|
Выключение энергосберегающего режима
Инициирует запрос на переход контроллера из энергосберегающего состояния. Не дожидается завершения перехода из энергосберегающего состояния.
- Аргументы
-
- Возвращаемые значения
-
◆ SMC_PowerSaveOn()
| enum smc_status SMC_PowerSaveOn |
( |
SMC_Type * | base | ) |
|
Включение энергосберегающего режима
Инициирует запрос на переход контроллера в энергосберегающее состояние. Не дожидается завершения перехода в энергосберегающее состояние.
- Аргументы
-
- Возвращаемые значения
-
◆ SMC_RefreshPeriod()
| enum smc_status SMC_RefreshPeriod |
( |
SMC_Type * | base, |
|
|
uint32_t | period ) |
Управление деактивацией микросхемы
Задает количество последовательных пакетов перед деактивацией микросхемы памяти для возможности ее обновления
- Заметки
- Используется перед началом работы с блоком
- Аргументы
-
| base | Адрес блока SMC |
| period | Количество пакетов перед деактивацией. Допустимые значения: SMC_NO_DEACTIVATION - нет деактивации, от 1 до 15 - деактивация после 1, .. 15 пакета |
- Возвращаемые значения
-
◆ 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_SetOpmode()
Установка регистра 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_UserConfig()
Запись в регистр USER_CONFIG.
Управляет преобразованием AHB-пакетов типа INCR в пакеты типа INCR4. Задает коэффициент деления для формирования тактового сигнала.
- Заметки
- Используется перед началом работы с блоком
- Аргументы
-
| base | Адрес блока SMC |
| bank0 | Разрешение преобразования AHB-пакетов типа INCR в пакеты типа INCR4 для банка памяти 1. |
| bank1 | Разрешение преобразования AHB-пакетов типа INCR в пакеты типа INCR4 для банка памяти 0. |
| smcclkdiv | Коэффициент деления SMCCLKDIV. Допустимые значения от 1 до 32 |
- Возвращаемые значения
-