20.3 Пользовательский интерфейс контроллера встроенной флэш-памяти
Пользовательский интерфейс EFCS встроен в контроллер памяти, базовый адрес которого 0xFFFF FF00
Таблица 20-3. Карта распределения регистров контроллера встроенной флэш-памяти (EFCS)
Смещение |
Регистр |
Название |
Вид доступа |
Состояние после сброса |
0x60 |
Регистр режима флэш-памяти |
MC_FMR |
Для записи и чтения |
0x0000 0000 |
0x64 |
Регистр команды флэш-памяти |
MC_FCR |
Только для записи |
- |
0x68 |
Регистр статуса флэш-памяти |
MC_FSR |
Только для чтения |
- |
0x6C |
Зарезервировано |
- |
- |
- |
20.3.1 Регистр режима флэш-памяти
Название регистра: MC_FMR
Вид доступа: для записи и чтения
Смещение: 0x60
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
- |
- |
- |
- |
- |
- |
- |
- |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
FMCN |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
- |
- |
- |
- |
- |
- |
FWS |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
NEBP |
- |
- |
- |
- |
PROGE |
LOCKE |
FRDY |
- FDRY: флаг разрешения прерывания по готовности флэш-памяти
- 0 = прерывание по готовности флэш-памяти запрещено.
- 1 = прерывание по готовности флэш-памяти разрешено.
- LOCK: флаг разрешения прерывания при ошибке защиты флэш-памяти
- 0 = прерывание при попытке программирования защищенной области флэш-памяти (Lock Error) запрещено.
- 1 = прерывание при попытке программирования защищенной области флэш-памяти разрешено.
- PROGE: флаг разрешения прерывания при ошибке программирования флэш-памяти
- 0 = прерывание при ошибке программирования флэш-памяти (Programming Error) запрещено.
- 1 = прерывание при ошибке программирования флэш-памяти разрешено.
- NEBP: флаг запрета стирания флэш-памяти перед ее программированием
- 0 = перед программированием флэш-памяти осуществляется стирание соответствующей страницы.
- 1 = перед программированием флэш-памяти не производится ее предварительное стирание.
- FWS: число тактов ожидания при обращении к флэш-памяти
Это поле определяет количество тактов ожидания при выполнении команд чтении или записи флэш-памяти:
FWS |
Команды чтения |
Команды записи |
0 |
1 такт ожидания |
2 такта ожидания |
1 |
2 такта ожидания |
3 такта ожидания |
2 |
3 такта ожидания |
4 такта ожидания |
3 |
4 такта ожидания |
4 такта ожидания |
- FCMD: число тактов MCK для формирования микросекундных интервалов
Перед обращением к NVM-битам (биты защиты, NVM-биты общего назначения и бит секретности) в этом поле необходимо установить число тактов MCK таким образом, чтобы в итоге получился микросекундный интервал: FCMD.TMCK = 1 мкс, где TMCK - длительность одного периода сигнала MCK.
Предупреждение: FCMD = 0 допустимо только в том случае, если период сигнала MCK составляет не менее 30 мкс (частота MCK не превышает 33 МГц).
Предупреждение: в поле FCMD обязательно должно быть записано корректное значение, в противном случае не гарантируется корректное выполнение команд работы с флэш-памятью.
20.3.2 Регистр команды флэш-памяти
Название регистра: MC_FCR
Вид доступа: только для записи
Смещение: 0x64
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
KEY |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
- |
- |
- |
- |
- |
- |
PAGEN |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
PAGEN |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
- |
- |
- |
- |
FCMD |
- FCMD: код команды флэш-памяти
Это поле определяет код команды для работы с флэш-памятью.
FCMD |
Команда |
0000 |
Нет команды. Не оказывает влияния на флаг ошибки программирования PROGE в регистре статуса MC_FSR. |
0001 |
Команда программирования страницы (WP): Запускает процесс программирования одной страницы, номер которой указан в поле PAGEN. |
0010 |
Команда установки бита защиты (SLB): Запускает процесс установки защиты той области флэш-памяти, номер которой указан в поле PAGEN. |
0011 |
Команда программирования страницы и установки соответствующего ей бита защиты (WPL): Запускает процесс программирования одной страницы, номер которой указан в поле PAGEN. После завершения программирования автоматически устанавливается бит защиты, соответствующий этой странице. |
0100 |
Команда очистки бита защиты (CLB): Запускает процесс снятия защиты той области флэш-памяти, номер которой указан в поле PAGEN. |
1000 |
Команда стирания всей флэш-памяти (EA): Запускает процесс стирания всей реализованной на кристалле области флэш-памяти. Если защищена хотя бы одна страница с помощью бита защиты, то эта команда выполнена не будет. |
1011 |
Команда установки NVM-бита общего назначения (SGPB): Запускает процесс установки NVM-бита общего назначения, номер которого указан в поле PAGEN. |
1101 |
Команда очистки NVM-бита общего назначения (CGPB): Запускает процесс очистки NVM-бита общего назначения, номер которого указан в поле PAGEN. |
1111 |
Команда установки бита секретности (SSB): Установка бита секретности. Очистка бита секретности возможна только по внешнему выводу ERASE. |
Остальные значения |
Зарезервировано. Вызывает установку флага ошибки программирования PROGE в регистре статуса MC_FSR. |
- FCMD: код команды флэш-памяти
Команда |
Назначение поля PAGEN |
Команда программирования страницы |
Содержимое поля PAGEN определяет номер страницы, которая должна быть запрограммирована. |
Команда программирования страницы и установки ее защиты |
Содержимое поля PAGEN определяет номер страницы, которая должна быть запрограммирована и защищена. |
Команда стирания всей флэш-памяти |
Содержимое поля PAGEN не имеет значения |
Команда установки/очистки бита защиты |
Содержимое поля PAGEN определяет номер страницы, для которой должна быть установлена или снята защита. |
Команда установка/очистки NVM-бита общего назначения |
Содержимое поля PAGEN определяет номер NVM-бита общего назначения |
Команда установки бита секретности |
Содержимое поля PAGEN не имеет значения |
Примечание: в зависимости от кода команды, неиспользуемые (незадействованные) биты поля PAGEN не имеют значения.
В это поле должно быть записано значение 0xA5, при этом игнорируется попытка записи в это поле любых других значений.
20.3.3 Регистр статуса флэш-памяти
Название регистра: MC_FSR
Вид доступа: только для чтения
Смещение: 0x68
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
LOCKS |
LOCKS14 |
LOCKS13 |
LOCKS12 |
LOCKS11 |
LOCKS10 |
LOCKS9 |
LOCKS8 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
LOCKS7 |
LOCKS6 |
LOCKS5 |
LOCKS4 |
LOCKS3 |
LOCKS2 |
LOCKS1 |
LOCKS0 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
- |
- |
- |
- |
- |
- |
GPNVN1 |
GPNVN0 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
- |
- |
- |
SECURITY |
PROGE |
LOCKE |
- |
FRDY |
- FDRY: флаг готовности флэш-памяти
- 0 = контроллер флэш-памяти (EFCS) занят - приостановлено выполнение очередной команды.
- 1 = контроллер флэш-памяти готов к выполнению очередной команды.
- LOCK: флаг ошибки защиты флэш-памяти
- 0 = еще не возникло ни одной ошибки (с момента последнего чтения регистра MC_FSR) при попытке программирования или стирания защищенной области флэш-памяти (Lock Error).
- 1 = уже возникла как минимум одна ошибка (с момента последнего чтения регистра MC_FSR) при попытке программирования или стирания защищенной области флэш-памяти.
- PROGE: флаг ошибки программирования флэш-памяти
- 0 = еще не возникло ни одной ошибки (с момента последнего чтения регистра MC_FSR) программирования флэш-памяти (Programming Error).
- 1 = уже возникла как минимум одна ошибка (с момента последнего чтения регистра MC_FSR) при программировании флэш-памяти.
- SECURITY: состояние бита секретности
- 0 = бит секретности не установлен.
- 1 = установлен бит секретности.
- GPNVMx: состояние NVM-бита общего назначения
- 0 = соответствующий NVM-бит не установлен.
- 1 = установлен соответствующий NVM-бит.
- LOCKx: состояние бита защиты
- 0 = соответствующая область флэш-памяти не защищена от программирования и стирания.
- 1 = соответствующая область флэш-памяти защищена от программирования и стирания.
Карта распределения битов LOCKx регистра MC_FSR для микроконтроллеров семейства AT91SAM7S
AT91SAM7S256 |
AT91SAM7S128 |
AT91SAM7S64 |
AT91SAM7S321 |
AT91SAM7S32 |
Назначение |
16 |
8 |
16 |
8 |
8 |
Число бит защиты |
LOCK0 |
LOCK0 |
LOCK0 |
LOCK0 |
LOCK0 |
Защита области 0 |
LOCK1 |
LOCK1 |
LOCK1 |
LOCK1 |
LOCK1 |
Защита области 1 |
LOCK2 |
LOCK2 |
LOCK2 |
LOCK2 |
LOCK2 |
Защита области 2 |
LOCK3 |
LOCK3 |
LOCK3 |
LOCK3 |
LOCK3 |
Защита области 3 |
LOCK4 |
LOCK4 |
LOCK4 |
LOCK4 |
LOCK4 |
Защита области 4 |
LOCK5 |
LOCK5 |
LOCK5 |
LOCK5 |
LOCK5 |
Защита области 5 |
LOCK6 |
LOCK6 |
LOCK6 |
LOCK6 |
LOCK6 |
Защита области 6 |
LOCK7 |
LOCK7 |
LOCK7 |
LOCK7 |
LOCK7 |
Защита области 7 |
LOCK8 |
- |
LOCK8 |
- |
- |
Защита области 8 |
LOCK9 |
- |
LOCK9 |
- |
- |
Защита области 9 |
LOCK10 |
- |
LOCK10 |
- |
- |
Защита области 10 |
LOCK11 |
- |
LOCK11 |
- |
- |
Защита области 11 |
LOCK12 |
- |
LOCK12 |
- |
- |
Защита области 12 |
LOCK13 |
- |
LOCK13 |
- |
- |
Защита области 13 |
LOCK14 |
- |
LOCK14 |
- |
- |
Защита области 14 |
LOCK15 |
- |
LOCK15 |
- |
- |
Защита области 15 |
|