В микроконтроллерах AT91SAM7X128, AT91SAM7X256, AT91SAM7X512 имеются специальные биты GPNVM, управляющие поведением кристалла. Аббревиатура GPNVM расшифровывается как General Purpose NonVolatile Memory, т. е. память общего назначения, сохраняющая свое состояние при выключении питания.
Для пользователя бит GPNVM только 3 - GPNVM0, GPNVM1 и GPNVM2. Назначение бит следующее:
GPNVM0 разрешение brownout detector (BOD), если GPNVM0==1, то BOD разрешен. По умолчанию (после команды ERASE) BOD запрещен (GPNVM0==0).
GPNVM1 разрешение сброса от сигнала BOD (если GPNVM1==1). По умолчанию (после команды ERASE) сброс от BOD запрещен (GPNVM1==0).
GPNVM2 определяет после сброса маппинг адреса 0 на ROM (SAM-BA Boot, начальный адрес 0x300000) или на Flash (начальный адрес 0x100000). Если GPNVM2==1, загрузка идет из Flash. Если GPNVM2==0, то загрузка идет из ROM.
Также имеются 8 бит настройки (Calibration Bits) - эти 8 бит NVM используются для заводской настройки BOD и регулятора напряжения. Они не могут быть изменены пользователем, и они не изменяются после команды ERASE (через вывод ERASE).
В микроконтроллере AT91SAM7X512, который имеет два контроллера EFC - EFC0 и EFC1, биты GPNVM находятся под управлением только EFC0 (регистр EFC0_FSR).
В даташите упоминается также про биты NVM, которые могут быть изменены программно. Написано, что AT91SAM7X128 имеет 8 бит NVM, AT91SAM7X256 имеет 16 бит NVM, а AT91SAM7X512 имеет 32 бит NVM. Где эти биты находятся, я так и не понял. Биты NVM сбрасываются и устанавливаются специальными командами контроллера EFC.
|