电子工程世界电子工程世界电子工程世界

型号

产品描述

搜索
 

AT91SAM7X512B-AUR

器件型号:AT91SAM7X512B-AUR
器件类别:半导体    嵌入式处理器和控制器   
厂商名称:Microchip
厂商官网:https://www.microchip.com
标准:
下载文档

器件描述

IC MCU 32BIT 512KB FLASH 100LQFP

参数

产品属性属性值
核心处理器:ARM7®
核心尺寸:16/32-位
速度:55MHz
连接性:CANbus,以太网,I²C,SPI,SSC,UART/USART,USB
外设:欠压检测/复位,DMA,POR,PWM,WDT
I/O 数:62
程序存储容量:512KB(512K x 8)
程序存储器类型:闪存
EEPROM 容量:-
RAM 容量:128K x 8
电压 - 电源(Vcc/Vdd):1.65 V ~ 1.95 V
数据转换器:A/D 8x10b
振荡器类型:内部
工作温度:-40°C ~ 85°C(TA)
封装/外壳:100-LQFP
供应商器件封装:100-LQFP(14x14)

AT91SAM7X512B-AUR器件文档内容

                                    ARM-based Flash MCU

                               SAM7X512 / SAM7X256 / SAM7X128

                                                   DATASHEET

Description

The Atmel SAM7X512/256/128 is a highly-integrated Flash microcontroller based on

the 32-bit ARM® RISC processor. It features 512/256/128 Kbytes of high-speed Flash

and 128/64/32 Kbytes of SRAM, a large set of peripherals, including an 802.3 Ethernet

MAC, and a CAN controller. A complete set of system functions minimizes the number

of external components.

The embedded Flash memory can be programmed in-system via the JTAG-ICE

interface or via a parallel interface on a production programmer prior to mounting. Built-

in lock bits and a security bit protect the firmware from accidental overwrite and

preserve its confidentiality.

The SAM7X512/256/128 system controller includes a reset controller capable of

managing the power-on sequence of the microcontroller and the complete system.

Correct device operation can be monitored by a built-in brownout detector and a

watchdog running off an integrated RC oscillator.

By combining the ARM7TDMI® processor with on-chip Flash and SRAM, and a wide

range of peripheral functions, including USART, SPI, CAN controller, Ethernet MAC,

Timer Counter, RTT and analog-to-digital converters on a monolithic chip, the

SAM7X512/256/128 is a powerful device that provides a flexible, cost-effective solution

to many embedded control applications requiring communication over Ethernet, wired

CAN and ZigBee® wireless networks.

                                                   6120K–ATARM–11-Feb-14
Features

  Incorporates the ARM7TDMI ARM Thumb® Processor

     High-performance 32-bit RISC Architecture

     High-density 16-bit Instruction Set

         Leader in MIPS/Watt

     EmbeddedICE™ In-circuit Emulation, Debug Communication Channel Support

  Internal High-speed Flash

     512 Kbytes (SAM7X512) Organized in Two Banks of 1024 Pages of

      256 Bytes (Dual Plane)

     256 Kbytes (SAM7X256) Organized in 1024 Pages of 256 Bytes (Single Plane)

     128 Kbytes (SAM7X128) Organized in 512 Pages of 256 Bytes (Single Plane)

         Single Cycle Access at Up to 30 MHz in Worst Case Conditions

         Prefetch Buffer Optimizing Thumb Instruction Execution at Maximum Speed

         Page Programming Time: 6 ms, Including Page Auto-erase,

          Full Erase Time: 15 ms

         10,000 Write Cycles, 10-year Data Retention Capability,

          Sector Lock Capabilities, Flash Security Bit

         Fast Flash Programming Interface for High Volume Production

  Internal High-speed SRAM, Single-cycle Access at Maximum Speed

     128 Kbytes (SAM7X512)

     64 Kbytes (SAM7X256)

     32 Kbytes (SAM7X128)

  Memory Controller (MC)

     Embedded Flash Controller, Abort Status and Misalignment Detection

  Reset Controller (RSTC)

     Based on Power-on Reset Cells and Low-power Factory-calibrated Brownout Detector

     Provides External Reset Signal Shaping and Reset Source Status

  Clock Generator (CKGR)

     Low-power RC Oscillator, 3 to 20 MHz On-chip Oscillator and one PLL

  Power Management Controller (PMC)

     Power Optimization Capabilities, Including Slow Clock Mode (Down to 500 Hz) and Idle Mode

     Four Programmable External Clock Signals

  Advanced Interrupt Controller (AIC)

     Individually Maskable, Eight-level Priority, Vectored Interrupt Sources

     Two External Interrupt Sources and One Fast Interrupt Source, Spurious Interrupt Protected

  Debug Unit (DBGU)

     2-wire UART and Support for Debug Communication Channel interrupt, Programmable ICE Access  Prevention

     Mode for General Purpose 2-wire UART Serial Communication

  Periodic Interval Timer (PIT)

     20-bit Programmable Counter plus 12-bit Interval Counter

  Windowed Watchdog (WDT)

     12-bit key-protected Programmable Counter

     Provides Reset or Interrupt Signals to the System

     Counter May Be Stopped While the Processor is in Debug State or in Idle Mode

  Real-time Timer (RTT)

     32-bit Free-running Counter with Alarm

     Runs Off the Internal RC Oscillator

  Two Parallel Input/Output Controllers (PIO)

     Sixty-two Programmable I/O Lines Multiplexed with up to Two Peripheral I/Os

     Input Change Interrupt Capability on Each I/O Line

                                                                                   SAM7X Series [DATASHEET]              2

                                                                                                  6120K–ATARM–11-Feb-14
     Individually Programmable Open-drain, Pull-up Resistor and Synchronous Output

  Thirteen Peripheral DMA Controller (PDC) Channels

  One USB 2.0 Full Speed (12 Mbits per second) Device Port

     On-chip Transceiver, 1352-byte Configurable Integrated FIFOs

  One Ethernet MAC 10/100 base-T

     Media Independent Interface (MII) or Reduced Media Independent Interface (RMII)

     Integrated 28-byte FIFOs and Dedicated DMA Channels for Transmit and Receive

  One Part 2.0A and Part 2.0B Compliant CAN Controller

     Eight Fully-programmable Message Object Mailboxes, 16-bit Time Stamp Counter

  One Synchronous Serial Controller (SSC)

     Independent Clock and Frame Sync Signals for Each Receiver and Transmitter

     I²S Analog Interface Support, Time Division Multiplex Support

     High-speed Continuous Data Stream Capabilities with 32-bit Data Transfer

  Two Universal Synchronous/Asynchronous Receiver Transmitters (USART)

     Individual Baud Rate Generator, IrDA® Infrared Modulation/Demodulation

     Support for ISO7816 T0/T1 Smart Card, Hardware Handshaking, RS485 Support

     Full Modem Line Support on USART1

  Two Master/Slave Serial Peripheral Interfaces (SPI)

     8- to 16-bit Programmable Data Length, Four External Peripheral Chip Selects

  One Three-channel 16-bit Timer/Counter (TC)

     Three External Clock Inputs, Two Multi-purpose I/O Pins per Channel

     Double PWM Generation, Capture/Waveform Mode, Up/Down Capability

  One Four-channel 16-bit Power Width Modulation Controller (PWMC)

  One Two-wire Interface (TWI)

     Master Mode Support Only, All Two-wire Atmel EEPROMs and I2C Compatible Devices Supported

  One 8-channel 10-bit Analog-to-Digital Converter, Four Channels Multiplexed with Digital I/Os

  SAM-BA® Boot Assistance

     Default Boot program

     Interface with SAM-BA Graphic User Interface

  IEEE® 1149.1 JTAG Boundary Scan on All Digital Pins

  5V-tolerant I/Os, Including Four High-current Drive I/O lines, Up to 16 mA Each

  Power Supplies

     Embedded 1.8V Regulator, Drawing up to 100 mA for the Core and External Components

     3.3V VDDIO I/O Lines Power Supply, Independent 3.3V VDDFLASH Flash Power Supply

     1.8V VDDCORE Core Power Supply with Brownout Detector

  Fully Static Operation: Up to 55 MHz at 1.65V and 85°C Worst Case Conditions

  Available in 100-lead LQFP Green and 100-ball TFBGA Green Packages

                                                                                    SAM7X Series [DATASHEET]             3

                                                                                                  6120K–ATARM–11-Feb-14
1.  Configuration Summary of the SAM7X512/256/128

    The SAM7X512, SAM7X256 and SAM7X128 differ only in memory sizes. Table 1-1 summarizes the configurations  of  the

    three devices.

    Table 1-1.      Configuration Summary

    Device                                 Flash       Flash Organization  SRAM

    SAM7X512                               512 Kbytes  Dual-plane          128 Kbytes

    SAM7X256                               256 Kbytes  Single-plane        64 Kbytes

    SAM7X128                               128 Kbytes  Single-plane        32 Kbytes

                                                                     SAM7X Series [DATASHEET]                     4

                                                                           6120K–ATARM–11-Feb-14
2.  SAM7X512/256/128 Block Diagram

    Figure 2-1.  SAM7X512/256/128 Block Diagram

                 TDI

                 TDO                JTAG             ICE          ARM7TDMI

                 TMS                SCAN

                 TCK                                              Processor

                 JTAGSEL

                                                                                                                1.8 V                  VDDIN

                                                                                                           Voltage                     GND

                 TST              System Controller                                                        Regulator                   VDDOUT

                 FIQ                                                                                                                   VDDCORE

                                          AIC

                 IRQ0-IRQ1   PIO                                  Memory Controller                                                    VDDIO

                                                             Embedded                                    SRAM

                                                                  Flash         Address             128/64/32 Kbytes

                 DRXD               DBGU       PDC                              Decoder

                 DTXD                                        Controllers

                                               PDC

                                                                  Abort        Misalignment

                 PCK0-PCK3                                        Status       Detection                                               VDDFLASH

                 PLLRC       PLL                                                                           Flash

                 XIN                      PMC                                                       512/256/128                        ERASE

                 XOUT        OSC                                                                           Kbytes

                             RCOSC                           Peripheral Bridge

                 VDDCORE     BOD                             Peripheral DMA                                ROM

                 VDDFLASH                                         Controller                                                           PGMRDY

                                    Reset                         13 Channels                            Fast Flash                    PGMNVALID

                 VDDCORE     POR    Controller                                                      Programming                        PGMNOE

                                                                                                                                       PGMCK

                 NRST                                                                                    Interface                     PGMM0-PGMM3

                                                                                                                                       PGMD0-PGMD15

                                                                                                                                       PGMNCMD

                                                                                                                                       PGMEN0-PGMEN1

                                          PIT

                                                             APB                                         SAM-BA

                                          WDT

                                          RTT                                        DMA                                               ETXCK-ERXCK-EREFCK

                                                                                     FIFO                                              ETXEN-ETXER

                             PIOA         PIOB                                                                                         ECRS-ECOL, ECRSDV

                                                                                                                                  PIO  ERXER-ERXDV

                                                                                     Ethernet  MAC 10/100                              ERX0-ERX3

                 RXD0                                        PDC                                                                       ETX0-ETX3

                 TXD0                                                                                                                  EMDC

                 SCK0                                USART0                                                                            EMDIO

                 RTS0                                        PDC                                                                       EF100

                 CTS0                                                                                                                  VDDFLASH

                 RXD1                                        PDC

                 TXD1                                                                FIFO                            Transceiver

                 SCK1                                                                          USB Device                              DDM

                 RTS1                                USART1                                                                            DDP

                 CTS1

                 DCD1

                 DSR1

                 DTR1                                                                                                                  PWM0

                 RI1                                         PDC                             PWMC                                      PWM1

                 SPI0_NPCS0                                  PDC                                                                       PWM2

                 SPI0_NPCS1  PIO                                                                                                       PWM3

                 SPI0_NPCS2                                                          PDC                                               TF

                 SPI0_NPCS3                          SPI0                                                                              TK

                 SPI0_MISO                                                                     SSC                                     TD

                 SPI0_MOSI                                                                                                             RD

                 SPI0_SPCK                                   PDC                                                                       RK

                 SPI1_NPCS0                                  PDC                     PDC                               PIO             RF

                 SPI1_NPCS1                                                               Timer Counter                                TCLK0

                 SPI1_NPCS2                                                                                                            TCLK1

                 SPI1_NPCS3                          SPI1                                                                              TCLK2

                 SPI1_MISO                                                                     TC0                                     TIOA0

                 SPI1_MOSI                                                                                                             TIOB0

                 SPI1_SPCK                                   PDC                               TC1                                     TIOA1

                 ADTRG                                       PDC                                                                       TIOB1

                 AD0                                                                           TC2                                     TIOA2

                 AD1                                                                                                                   TIOB2

                 AD2                                                                                                                   TWD

                 AD3                                 ADC                                       TWI                                     TWCK

                 AD4                                                                                                                   CANRX

                 AD5                                                                           CAN                                     CANTX

                 AD6

                 AD7

                 ADVREF

                                                                                                           SAM7X                       Series [DATASHEET]         5

                                                                                                                                           6120K–ATARM–11-Feb-14
3.     Signal Description

Table 3-1.   Signal  Description List

                                                                                 Active

Signal Name          Function                                       Type         Level   Comments

                                                      Power

VDDIN                Voltage Regulator and ADC Power              Power                  3V to 3.6V

                     Supply Input

VDDOUT               Voltage Regulator Output                     Power                  1.85V

VDDFLASH             Flash and USB Power Supply                   Power                  3V to 3.6V

VDDIO                I/O Lines Power Supply                       Power                  3V to 3.6V

VDDCORE              Core Power Supply                            Power                  1.65V to 1.95V

VDDPLL               PLL                                          Power                  1.65V to 1.95V

GND                  Ground                                       Ground

                                                   Clocks, Oscillators and PLLs

XIN                  Main Oscillator Input                          Input

XOUT                 Main Oscillator Output                       Output

PLLRC                PLL Filter                                     Input

PCK0 - PCK3          Programmable Clock Output                    Output

                                                      ICE and JTAG

TCK                  Test Clock                                     Input                No pull-up resistor

TDI                  Test Data In                                   Input                No pull-up resistor

TDO                  Test Data Out                                Output

TMS                  Test Mode Select                               Input                No pull-up resistor

JTAGSEL              JTAG Selection                                 Input                Pull-down resistor(1)

                                                      Flash Memory

ERASE                Flash and NVM Configuration Bits Erase         Input        High    Pull-down resistor(1)

                     Command

                                                      Reset/Test

NRST                 Microcontroller Reset                          I/O          Low     Pull-up resistor, Open    Drain

                                                                                         Output

TST                  Test Mode Select                               Input        High    Pull-down resistor(1)

                                                      Debug Unit

DRXD                 Debug Receive Data                             Input

DTXD                 Debug Transmit Data                          Output

                                                             AIC

IRQ0 - IRQ1          External Interrupt Inputs                      Input

FIQ                  Fast Interrupt Input                           Input

                                                             PIO

PA0 - PA30           Parallel IO Controller A                       I/O                  Pulled-up input at reset

PB0 - PB30           Parallel IO Controller B                       I/O                  Pulled-up input at reset

                                                   USB Device Port

DDM                  USB Device Port Data       -                 Analog

DDP                  USB Device Port Data +                       Analog

                                                      USART

SCK0 - SCK1          Serial Clock                                   I/O

TXD0 - TXD1          Transmit Data                                  I/O

RXD0 - RXD1          Receive Data                                   Input

RTS0 - RTS1          Request To Send                              Output

CTS0 - CTS1          Clear To Send                                  Input

DCD1                 Data Carrier Detect                            Input

                                                                                 SAM7X Series [DATASHEET]                 6

                                                                                                 6120K–ATARM–11-Feb-14
Table 3-1.     Signal Description List (Continued)

                                                                                 Active

Signal Name       Function                                          Type         Level   Comments

DTR1              Data Terminal Ready                Output

DSR1              Data Set Ready                                    Input

RI1               Ring Indicator                                    Input

                                         Synchronous Serial Controller

TD                Transmit Data                      Output

RD                Receive Data                                      Input

TK                Transmit Clock                                     I/O

RK                Receive Clock                                      I/O

TF                Transmit Frame Sync                                I/O

RF                Receive Frame Sync                                 I/O

                                                     Timer/Counter

TCLK0 - TCLK2     External Clock Inputs                             Input

TIOA0 - TIOA2     I/O Line A                                         I/O

TIOB0 - TIOB2     I/O Line B                                         I/O

                                                     PWM Controller

PWM0 - PWM3       PWM Channels                       Output

                                         Serial Peripheral Interface - SPIx

SPIx_MISO         Master In Slave Out                                I/O

SPIx_MOSI         Master Out Slave In                                I/O

SPIx_SPCK         SPI Serial Clock                                   I/O

SPIx_NPCS0        SPI Peripheral Chip Select 0                       I/O         Low

SPIx_NPCS1-NPCS3  SPI Peripheral Chip Select 1 to 3  Output                      Low

                                                    Two-wire Interface

TWD               Two-wire Serial Data                               I/O

TWCK              Two-wire Serial Clock                              I/O

                                                    Analog-to-Digital Converter

AD0-AD3           Analog Inputs                      Analog                              Digital pulled-up inputs at reset

AD4-AD7           Analog Inputs                      Analog                              Analog Inputs

ADTRG             ADC Trigger                                       Input

ADVREF            ADC Reference                      Analog

                                         Fast Flash Programming Interface

PGMEN0-PGMEN1     Programming Enabling                              Input

PGMM0-PGMM3       Programming Mode                                  Input

PGMD0-PGMD15      Programming Data                                   I/O

PGMRDY            Programming Ready                  Output                      High

PGMNVALID         Data Direction                     Output                      Low

PGMNOE            Programming Read                                  Input        Low

PGMCK             Programming Clock                                 Input

PGMNCMD           Programming Command                               Input        Low

                                                     CAN Controller

CANRX             CAN Input                                         Input

CANTX             CAN Output                         Output

                                                    Ethernet MAC 10/100

EREFCK            Reference Clock                                   Input                RMII only

ETXCK             Transmit Clock                                    Input                MII only

ERXCK             Receive Clock                                     Input                MII only

ETXEN             Transmit Enable                    Output

ETX0 - ETX3       Transmit Data                      Output                              ETX0 - ETX1 only in RMII

                                                                                 SAM7X Series [DATASHEET]                   7

                                                                                                   6120K–ATARM–11-Feb-14
Table 3-1.   Signal Description List (Continued)

                                                                     Active

Signal Name  Function                                        Type    Level   Comments

ETXER        Transmit Coding Error                           Output          MII only

ERXDV        Receive Data Valid                              Input           MII only

ECRSDV       Carrier Sense and Data Valid                    Input           RMII only

ERX0 - ERX3  Receive Data                                    Input           ERX0 - ERX1  only  in  RMII

ERXER        Receive Error                                   Input

ECRS         Carrier Sense                                   Input           MII only

ECOL         Collision Detected                              Input           MII only

EMDC         Management Data Clock                           Output

EMDIO        Management Data Input/Output                    I/O

EF100        Force 100 Mbits/sec.                            Output  High    RMII only

Note:  1.   Refer to Section 6. ”I/O Lines Considerations”.

                                                                     SAM7X Series [DATASHEET]                 8

                                                                                       6120K–ATARM–11-Feb-14
4.     Package

       The SAM7X512/256/128 is available in 100-lead LQFP Green and      100-ball TFBGA RoHS-compliant packages.

4.1    100-lead LQFP Package Outline

       Figure 4-1 shows the orientation of the 100-lead LQFP package. A  detailed mechanical description is given in the

       Mechanical Characteristics section.

       Figure 4-1.       100-lead LQFP Package Outline (Top View)

                                                         75              51

                                                  76                         50

                                                  100                        26

                                                             1           25

4.2    100-lead LQFP Pinout

Table  4-1.  Pinout in   100-lead  LQFP  Package

    1        ADVREF                26       PA18/PGMD6             51        TDI         76   TDO

    2        GND                   27       PB9                    52    GND             77   JTAGSEL

    3        AD4                   28       PB8                    53    PB16            78   TMS

    4        AD5                   29       PB14                   54    PB4             79   TCK

    5        AD6                   30       PB13                   55    PA23/PGMD11     80   PA30

    6        AD7                   31       PB6                    56    PA24/PGMD12     81   PA0/PGMEN0

    7        VDDOUT                32       GND                    57    NRST            82   PA1/PGMEN1

    8        VDDIN                 33       VDDIO                  58    TST             83   GND

    9        PB27/AD0              34       PB5                    59    PA25/PGMD13     84   VDDIO

10           PB28/AD1              35       PB15                   60    PA26/PGMD14     85   PA3

11           PB29/AD2              36       PB17                   61    VDDIO           86   PA2

12           PB30/AD3              37       VDDCORE                62    VDDCORE         87   VDDCORE

13           PA8/PGMM0             38       PB7                    63    PB18            88   PA4/PGMNCMD

14           PA9/PGMM1             39       PB12                   64    PB19            89   PA5/PGMRDY

15           VDDCORE               40       PB0                    65    PB20            90   PA6/PGMNOE

16           GND                   41       PB1                    66    PB21            91   PA7/PGMNVALID

17           VDDIO                 42       PB2                    67    PB22            92   ERASE

18           PA10/PGMM2            43       PB3                    68    GND             93   DDM

19           PA11/PGMM3            44       PB10                   69    PB23            94   DDP

20           PA12/PGMD0            45       PB11                   70    PB24            95   VDDFLASH

21           PA13/PGMD1            46       PA19/PGMD7             71    PB25            96   GND

22           PA14/PGMD2            47       PA20/PGMD8             72    PB26            97   XIN/PGMCK

23           PA15/PGMD3            48       VDDIO                  73    PA27/PGMD15     98   XOUT

24           PA16/PGMD4            49       PA21/PGMD9             74    PA28            99   PLLRC

25           PA17/PGMD5            50       PA22/PGMD10            75    PA29            100  VDDPLL

                                                                                  SAM7X  Series [DATASHEET]               9

                                                                                         6120K–ATARM–11-Feb-14
4.3     100-ball TFBGA Package Outline

        Figure 4-2 shows the orientation of the 100-ball TFBGA package. A detailed                 mechanical  description is given in the

        Mechanical Characteristics section of the full datasheet.

        Figure 4-2.  100-ball  TFBGA  Package  Outline      (Top   View)

                                                                              TOP VIEW

                                                            10

                                                            9

                                                            8

                                                            7

                                                            6

                                                            5

                                                            4

                                                            3

                                                            2

                                                            1

                                                   BALL A1         A  B  C    D  E  F  G  H  J  K

4.4     100-ball TFBGA Pinout

Pinout  in 100-ball TFBGA  Package

Pin     Signal Name            Pin    Signal Name                        Pin        Signal Name                Pin  Signal Name

A1      PA22/PGMD10            C6     PB17                               F1                  PB21              H6   PA7/PGMNVALID

A2      PA21/PGMD9             C7     PB13                               F2                  PB23              H7   PA9/PGMM1

A3      PA20/PGMD8             C8     PA13/PGMD1                         F3                  PB25              H8   PA8/PGMM0

A4      PB1                    C9     PA12/PGMD0                         F4                  PB26              H9   PB29/AD2

A5      PB7                    C10    PA15/PGMD3                         F5                  TCK               H10  PLLRC

A6      PB5                    D1     PA23/PGMD11                        F6            PA6/PGMNOE              J1   PA29

A7      PB8                    D2     PA24/PGMD12                        F7                  ERASE             J2   PA30

A8      PB9                    D3     NRST                               F8               VDDCORE              J3   PA0/PGMEN0

A9      PA18/PGMD6             D4     TST                                F9                  GND               J4   PA1/PGMEN1

A10     VDDIO                  D5     PB19                               F10                 VDDIN             J5   VDDFLASH

B1      TDI                    D6     PB6                                G1                  PB22              J6   GND

B2      PA19/PGMD7             D7     PA10/PGMM2                         G2                  PB24              J7   XIN/PGMCK

B3      PB11                   D8     VDDIO                              G3            PA27/PGMD15             J8   XOUT

B4      PB2                    D9     PB27/AD0                           G4                  TDO               J9   GND

B5      PB12                   D10    PA11/PGMM3                         G5                  PA2               J10  VDDPLL

B6      PB15                   E1     PA25/PGMD13                        G6            PA5/PGMRDY              K1   VDDCORE

B7      PB14                   E2     PA26/PGMD14                        G7               VDDCORE              K2   VDDCORE

B8      PA14/PGMD2             E3     PB18                               G8                  GND               K3   DDP

B9      PA16/PGMD4             E4     PB20                               G9               PB30/AD3             K4   DDM

B10     PA17/PGMD5             E5     TMS                                G10              VDDOUT               K5   GND

C1      PB16                   E6     GND                                H1               VDDCORE              K6   AD7

C2      PB4                    E7     VDDIO                              H2                  PA28              K7   AD6

C3      PB10                   E8     PB28/AD1                           H3               JTAGSEL              K8   AD5

C4      PB3                    E9     VDDIO                              H4                  PA3               K9   AD4

C5      PB0                    E10    GND                                H5            PA4/PGMNCMD             K10  ADVREF

                                                                                                    SAM7X      Series [DATASHEET]           10

                                                                                                                    6120K–ATARM–11-Feb-14
5.   Power Considerations

5.1  Power Supplies

     The SAM7X512/256/128 has six types of power supply pins and integrates a voltage regulator, allowing the device to be

     supplied with only one voltage. The six power supply pin types are:

       VDDIN pin. It powers the voltage regulator and the ADC; voltage ranges from 3.0V to 3.6V, 3.3V nominal. In order

        to decrease current consumption, if the voltage regulator and the ADC are not used, VDDIN, ADVREF, AD4, AD5,

        AD6 and AD7 should be connected to GND. In this case, VDDOUT should be left unconnected.

       VDDOUT pin. It is the output of the 1.8V voltage regulator.

       VDDIO pin. It powers the I/O lines; voltage ranges from 3.0V to 3.6V, 3.3V nominal.

       VDDFLASH pin. It powers the USB transceivers and a part of the Flash and is required for the Flash to operate

        correctly; voltage ranges from 3.0V to 3.6V, 3.3V nominal.

       VDDCORE pins. They power the logic of the device; voltage ranges from 1.65V to 1.95V, 1.8V typical. It can be

        connected to the VDDOUT pin with decoupling capacitor. VDDCORE is required for the device, including its

        embedded Flash, to operate correctly.

       VDDPLL pin. It powers the oscillator and the PLL. It can be connected directly to the VDDOUT pin.

     No separate ground pins are provided for the different power supplies. Only GND pins are provided and should be

     connected as shortly as possible to the system ground plane.

5.2  Power Consumption

     The SAM7X512/256/128 has a static current of less than 60 µA on VDDCORE at 25°C, including the RC oscillator, the

     voltage regulator and the power-on reset when the brownout detector is deactivated. Activating the brownout detector

     adds 28 µA static current.

     The dynamic power consumption on VDDCORE is less than 90 mA at full speed when running out of the Flash. Under

     the same conditions, the power consumption on VDDFLASH does not exceed 10 mA.

5.3  Voltage Regulator

     The SAM7X512/256/128 embeds a voltage regulator that is managed by the System Controller.

     In Normal Mode, the voltage regulator consumes less than 100 µA static current and draws 100 mA of output current.

     The voltage regulator also has a Low-power Mode. In this mode, it consumes less than 25 µA static current and draws 1

     mA of output current.

     Adequate output supply decoupling is mandatory for VDDOUT to reduce ripple and avoid oscillations. The best way to

     achieve this is to use two capacitors in parallel: one external 470 pF (or 1 nF) NPO capacitor should be connected

     between VDDOUT and GND as close to the chip as possible. One external 2.2 µF (or 3.3 µF) X7R capacitor should be

     connected between VDDOUT and GND.

     Adequate input supply decoupling is mandatory for VDDIN in order to improve startup stability and reduce source voltage

     drop. The input decoupling capacitor should be placed close to the chip. For example, two capacitors can be used in

     parallel: 100 nF NPO and 4.7 µF X7R.

5.4  Typical Powering Schematics

     The SAM7X512/256/128 supports a 3.3V single supply mode. The internal regulator input connected to the 3.3V source

     and its output feeds VDDCORE and the VDDPLL. Figure 5-1 shows the power schematics to be used for USB bus-

     powered systems.

                                                                          SAM7X Series [DATASHEET]                            11

                                                                                                6120K–ATARM–11-Feb-14
Figure 5-1.  3.3V System Single Power Supply Schematic

                                                        VDDFLASH

             Power Source                               VDDIO

             ranges           DC/DC Converter

             from 4.5V (USB)

             to 18V                                     VDDIN

                                                                  Voltage

                              3.3V                                Regulator

                                                        VDDOUT

                                                        VDDCORE

                                                        VDDPLL

                                                                  SAM7X Series [DATASHEET]          12

                                                                             6120K–ATARM–11-Feb-14
6.   I/O Lines Considerations

6.1  JTAG Port Pins

     TMS, TDI and TCK are schmitt trigger inputs and are not 5-V tolerant. TMS, TDI and TCK do not integrate a pull-up

     resistor.

     TDO is an output, driven at up to VDDIO, and has no pull-up resistor.

     The JTAGSEL pin is used to select the JTAG boundary scan when asserted at a high level. The JTAGSEL pin integrates

     a permanent pull-down resistor of about 15 kΩ to GND.

     To eliminate any risk of spuriously entering the JTAG boundary scan mode due to noise on JTAGSEL, it should be tied

     externally to GND if boundary scan is not used, or pulled down with an external low-value resistor (such as 1 kΩ) .

6.2  Test Pin

     The TST pin is used for manufacturing test or fast programming mode of the SAM7X512/256/128 when asserted high.

     The TST pin integrates a permanent pull-down resistor of about 15 kΩ to GND.

     To eliminate any risk of entering the test mode due to noise on the TST pin, it should be tied to GND if the FFPI is not

     used, or pulled down with an external low-value resistor (such as 1 kΩ)

     To enter fast programming mode, the TST pin and the PA0 and PA1 pins should be tied high and PA2 tied to low.

     Driving the TST pin at a high level while PA0 or PA1 is driven at 0 leads to unpredictable results.

6.3  Reset Pin

     The NRST pin is bidirectional with an open drain output buffer. It is handled by the on-chip reset controller and can be

     driven low to provide a reset signal to the external components or asserted low externally to reset the microcontroller.

     There is no constraint on the length of the reset pulse, and the reset controller can guarantee a minimum pulse length.

     This allows connection of a simple push-button on the NRST pin as system user reset, and the use of the signal NRST to

     reset all the components of the system.

     The NRST pin integrates a permanent pull-up resistor to VDDIO.

6.4  ERASE Pin

     The ERASE pin is used to re-initialize the Flash content and some of its NVM bits. It integrates a permanent pull-down

     resistor of about 15 kΩ to GND.

     To eliminate any risk of erasing the Flash due to noise on the ERASE pin, it shoul be tied externally to GND, which

     prevents erasing the Flash from the applicatiion, or pulled down with an external low-value resistor (such as 1 kΩ) .

     This pin is debounced by the RC oscillator to improve the glitch tolerance. When the pin is tied to high during less than

     100 ms, ERASE pin is not taken into account. The pin must be tied high during more than 220 ms to perform the re-

     initialization of the Flash.

6.5  PIO Controller Lines

     All the I/O lines, PA0 to PA30 and PB0 to PB30, are 5V-tolerant and all integrate a programmable pull-up resistor.

     Programming of this pull-up resistor is performed independently for each I/O line through the PIO controllers.

     5V-tolerant means that the I/O lines can drive voltage level according to VDDIO, but can be driven with a voltage of up to

     5.5V. However, driving an I/O line with a voltage over VDDIO while the programmable pull-up resistor is enabled will

     create a current path through the pull-up resistor from the I/O line to VDDIO. Care should be taken, in particular at reset,

     as all the I/O lines default to input with pull-up resistor enabled at reset.

                                                                                    SAM7X Series [DATASHEET]                       13

                                                                                                          6120K–ATARM–11-Feb-14
6.6  I/O Lines Current Drawing

     The PIO lines PA0 to PA3 are high-drive current capable. Each of these I/O lines can drive up to 16 mA permanently.

     The remaining I/O lines can draw only 8 mA.

     However, the total current drawn by all the I/O lines cannot exceed 200 mA.

                                                                                  SAM7X Series [DATASHEET]                14

                                                                                  6120K–ATARM–11-Feb-14
7.   Processor and Architecture

7.1  ARM7TDMI Processor

       RISC processor based on ARMv4T Von Neumann architecture

          Runs at up to 55 MHz, providing 0.9 MIPS/MHz

       Two instruction sets

          ARM high-performance 32-bit instruction set

          Thumb high code density 16-bit instruction set

       Three-stage pipeline architecture

          Instruction Fetch (F)

          Instruction Decode (D)

          Execute (E)

7.2  Debug and Test Features

       Integrated embedded in-circuit emulator

          Two watchpoint units

          Test access port accessible through a JTAG protocol

          Debug communication channel

       Debug Unit

          Two-pin UART

          Debug communication channel interrupt handling

          Chip ID Register

       IEEE1149.1 JTAG Boundary-scan on all digital pins

7.3  Memory Controller

       Programmable Bus Arbiter

          Handles requests from the ARM7TDMI, the Ethernet MAC and the       Peripheral  DMA  Controller

       Address decoder provides selection signals for

          Three internal 1 Mbyte memory areas

          One 256 Mbyte embedded peripheral area

       Abort Status Registers

          Source, Type and all parameters of the access leading to an abort  are saved

          Facilitates debug by detection of bad pointers

       Misalignment Detector

          Alignment checking of all data accesses

          Abort generation in case of misalignment

       Remap Command

          Remaps the SRAM in place of the embedded non-volatile memory

          Allows handling of dynamic exception vectors

                                                                              SAM7X Series [DATASHEET]           15

                                                                                          6120K–ATARM–11-Feb-14
       Embedded Flash Controller

          Embedded Flash interface, up to three programmable wait states

          Prefetch buffer, buffering and anticipating the 16-bit requests, reducing the required wait     states

          Key-protected program, erase and lock/unlock sequencer

          Single command for erasing, programming and locking operations

          Interrupt generation in case of forbidden operation

7.4  Peripheral DMA Controller

       Handles data transfer between peripherals and memories

       Thirteen channels

          Two for each USART

          Two for the Debug Unit

          Two for the Serial Synchronous Controller

          Two for each Serial Peripheral Interface

          One for the Analog-to-digital Converter

       Low bus arbitration overhead

          One Master Clock cycle needed for a transfer from memory to peripheral

          Two Master Clock cycles needed for a transfer from peripheral to memory

       Next Pointer management for reducing interrupt latency requirements

      Peripheral DMA Controller (PDC) priority is as follows (from the highest priority to the  lowest):

                                      Receive                   DBGU

                                      Receive                   USART0

                                      Receive                   USART1

                                      Receive                   SSC

                                      Receive                   ADC

                                      Receive                   SPI0

                                      Receive                   SPI1

                                      Transmit                  DBGU

                                      Transmit                  USART0

                                      Transmit                  USART

                                      Transmit                  SSC

                                      Transmit                  SPI0

                                      Transmit                  SPI1

                                                                             SAM7X Series [DATASHEET]                   16

                                                                                                 6120K–ATARM–11-Feb-14
8.   Memories

8.1  SAM7X512

       512 Kbytes of dual-plane Flash Memory

          2 contiguous banks of 1024 pages of 256 bytes

          Fast access time, 30 MHz single-cycle access in Worst Case  conditions

          Page programming time: 6 ms, including page auto-erase

          Page programming without auto-erase: 3 ms

          Full chip erase time: 15 ms

          10,000 write cycles, 10-year data retention capability

          32 lock bits, protecting 32 sectors of 64 pages

          Protection Mode to secure contents of the Flash

       128 Kbytes of Fast SRAM

          Single-cycle access at full speed

8.2  SAM7X256

       256 Kbytes of Flash Memory

          1024 pages of 256 bytes

          Fast access time, 30 MHz single-cycle access in Worst Case  conditions

          Page programming time: 6 ms, including page auto-erase

          Page programming without auto-erase: 3 ms

          Full chip erase time: 15 ms

          10,000 write cycles, 10-year data retention capability

          16 lock bits, each protecting 16 sectors of 64 pages

          Protection Mode to secure contents of the Flash

       64 Kbytes of Fast SRAM

          Single-cycle access at full speed

8.3  SAM7X128

       128 Kbytes of Flash Memory

          512 pages of 256 bytes

          Fast access time, 30 MHz single-cycle access in Worst Case  conditions

          Page programming time: 6 ms, including page auto-erase

          Page programming without auto-erase: 3 ms

          Full chip erase time: 15 ms

          10,000 write cycles, 10-year data retention capability

          8 lock bits, each protecting 8 sectors of 64 pages

          Protection Mode to secure contents of the Flash

       32 Kbytes of Fast SRAM

          Single-cycle access at full speed

                                                                       SAM7X       Series [DATASHEET]     17

                                                                                   6120K–ATARM–11-Feb-14
Figure 8-1.  SAM7X512/256/128 Memory             Mapping

                                                                 Internal Memory Mapping                     Note:

                                                                                                             (1) Can be ROM, Flash or SRAM

                                                    0x0000 0000  Boot Memory (1)                             depending on GPNVM2 and REMAP

                                                                 Flash before Remap              1 MBytes

                                                                 SRAM after Remap

                                                    0x000F FFF

                                                    0x0010 0000

                                                                      Internal Flash             1 MBytes

                                                    0x001F FFF

                                                    0x0020 0000

                                                                      Internal SRAM              1 MBytes

                                                    0x002F FFF

                                                    0x0030 0000

             Address Memory Space                                      Internal ROM              1 MBytes

0x0000 0000                                         0x003F FFF

                                                    0x0040 0000

             Internal Memories     256  MBytes                             Reserved              252 MBytes

0x0FFF FFFF                                         0x0FFF FFFF

                                                                                                             System       Controller  Mapping

0x1000 0000

                                                                                                             0xFFFF F000

                                                                                                                          AIC         512      Bytes/128  registers

                                                                                                             0xFFFF F1FF

                                                                 Peripheral Mapping                          0xFFFF F200

                                                    0xF000 0000

                                                                 Reserved                                                 DBGU        512      Bytes/128  registers

                                                    0xFFF9 FFFF

             Undefined             14 x 256 MBytes  0xFFFA 0000  TC0, TC1, TC2       16  Kbytes              0xFFFF F3FF

             (Abort)               3,584 MBytes     0xFFFA 3FFF                                              0xFFFF F400

                                                    0xFFFA 4000

                                                                 Reserved                                                 PIOA        512 Bytes/128 registers

                                                    0xFFFA FFFF

                                                    0xFFFB 0000  UDP                 16  Kbytes              0xFFFF F5FF

                                                    0xFFFB 3FFF                                              0xFFFF F600

                                                    0xFFFB 4000

                                                                 Reserved

                                                    0xFFFB 7FFF                                                           PIOB        512 Bytes/128 registers

                                                    0xFFFB 8000  TWI                 16  Kbytes

                                                    0xFFFB BFFF                                              0xFFFF F7FF

                                                    0xFFFB C000  Reserved                                    0xFFFF F800

0xEFFF FFFF                                         0xFFFB FFFF                                                           Reserved

0xF000 0000                                         0xFFFC 0000  USART0              16  Kbytes              0xFFFF FBFF

                                                    0xFFFC 3FFF                                              0xFFFF FC00

                                                    0xFFFC 4000  USART1              16  Kbytes

                                                    0xFFFC 7FFF                                                           PMC         256 Bytes/64 registers

             Internal Peripherals  256 MBytes       0xFFFC 8000  Reserved                                    0xFFFF FCFF

                                                    0xFFFC BFFF                                              0xFFFF FD00  RSTC        16 Bytes/4 registers

                                                    0xFFFC C000  PWMC                16  Kbytes              0xFFFF FD0F

0xFFFF FFFF                                         0xFFFC FFFF                                                           Reserved

                                                    0xFFFD 0000  CAN                 16  Kbytes              0xFFFF FD20

                                                    0xFFFD 3FFF                                              0xFFFF FC2F  RTT         16 Bytes/4 registers

                                                    0xFFFD 4000  SSC                 16  Kbytes              0xFFFF FD30

                                                    0xFFFD 7FFF                                              0xFFFF FC3F  PIT         16 Bytes/4 registers

                                                    0xFFFD 8000  ADC                 16  Kbytes              0xFFFF FD40

                                                    0xFFFD BFFF                                                           WDT         16 Bytes/4 registers

                                                    0xFFFD C000                                              0xFFFF FD4F

                                                                 EMAC                16  Kbytes                           Reserved

                                                    0xFFFD FFFF

                                                    0xFFFE 0000  SPI0                16  Kbytes              0xFFFF FD60

                                                    0xFFFE 3FFF                                              0xFFFF FC6F  VREG        4 Bytes/1 register

                                                    0xFFFE 4000  SPI1                16  Kbytes              0xFFFF FD70

                                                    0xFFFE 7FFF                                              0xFFFF FEFF  Reserved

                                                    0xFFFE 8000                                              0xFFFF FF00

                                                                 Reserved                                                 MC          256 Bytes/64 registers

                                                    0xFFFF EFFF

                                                    0xFFFF F000  SYSC

                                                    0xFFFF FFFF                                              0xFFFF FFFF

                                                                                                             SAM7X Series [DATASHEET]                                18

                                                                                                                                6120K–ATARM–11-Feb-14
8.4    Memory Mapping

8.4.1  Internal SRAM

         The SAM7X512 embeds a high-speed 128-Kbyte SRAM bank.

         The SAM7X256 embeds a high-speed 64-Kbyte SRAM bank.

         The SAM7X128 embeds a high-speed 32-Kbyte SRAM bank.

       After reset and until the Remap Command is performed, the SRAM is only accessible at address 0x0020 0000. After

       Remap, the SRAM also becomes available at address 0x0.

8.4.2  Internal ROM

       The SAM7X512/256/128 embeds an Internal ROM. At any time, the ROM is mapped at address 0x30 0000. The ROM

       contains the FFPI and the SAM-BA program.

8.4.3  Internal Flash

         The SAM7X512 features two banks (dual plane) of 256 Kbytes of Flash.

         The SAM7X256 features one bank (single plane) of 256 Kbytes of Flash.

         The SAM7X128 features one bank (single plane) of 128 Kbytes of Flash.

       At any time, the Flash is mapped to address 0x0010 0000. It is also accessible at address 0x0 after the reset, if GPNVM

       bit 2 is set and before the Remap Command.

       A general purpose NVM (GPNVM) bit is used to boot either on the ROM (default) or from the Flash.

       This GPNVM bit can be cleared or set respectively through the commands “Clear General-purpose NVM Bit” and “Set

       General-purpose NVM Bit” of the EFC User Interface.

       Setting the GPNVM Bit 2 selects the boot from the Flash. Asserting ERASE clears the GPNVM Bit 2 and thus selects the

       boot from the ROM by default.

       Figure 8-2.     Internal Memory Mapping with GPNVM Bit 2 = 0 (default)

                                      0x0000 0000           ROM Before Remap

                                                            SRAM After Remap     1 M Bytes

                                      0x000F FFFF

                                      0x0010 0000

                                                            Internal FLASH       1 M Bytes

                                      0x001F FFFF

                                      0x0020 0000

                       256M Bytes                           Internal SRAM        1 M Bytes

                                      0x002F FFFF

                                      0x0030 0000

                                                            Internal ROM         1 M Bytes

                                      0x003F FFFF

                                      0x0040 0000

                                                            Undefined Areas      252 M Bytes

                                                               (Abort)

                                      0x0FFF FFFF

                                                                                 SAM7X Series [DATASHEET]                       19

                                                                                            6120K–ATARM–11-Feb-14
       Figure 8-3.  Internal Memory  Mapping with      GPNVM Bit 2 = 1

                                     0x0000 0000       Flash Before Remap

                                                       SRAM After Remap                    1 M Bytes

                                          0x000F FFFF

                                     0x0010 0000

                                                       Internal FLASH                      1 M Bytes

                                          0x001F FFFF

                                     0x0020 0000

                       256M Bytes                      Internal SRAM                       1 M Bytes

                                          0x002F FFFF

                                          0x0030 0000

                                                       Internal ROM                        1 M Bytes

                                          0x003F FFFF

                                          0x0040 0000

                                                       Undefined Areas                     252 M Bytes

                                                       (Abort)

                                          0x0FFF FFFF

8.5    Embedded Flash

8.5.1  Flash Overview

         The Flash of the SAM7X512 is organized in two banks (dual plane) of 1024 pages of 256 bytes. The 524,288 bytes

          are organized in 32-bit words.

         The Flash of the SAM7X256 is organized in 1024 pages of 256 bytes (single plane). It reads as 65,536 32-bit

          words.

         The Flash of the SAM7X128 is organized in 512 pages of 256 bytes (single plane). It reads as 32,768 32-bit words.

       The Flash contains a 256-byte write buffer, accessible through a 32-bit interface.

       The Flash benefits from the integration of a power reset cell and from the brownout detector. This prevents code

       corruption during power supply changes, even in the worst conditions.

       When Flash is not used (read or write access), it is automatically placed into standby mode.

8.5.2  Embedded Flash Controller

       The Embedded Flash Controller (EFC) manages accesses performed by the masters of the system. It enables reading

       the Flash and writing the write buffer. It also contains a User Interface, mapped within the Memory Controller on the APB.

       The User Interface allows:

         programming of the access parameters of the Flash (number of wait states, timings, etc.)

         starting commands such as full erase, page erase, page program, NVM bit set, NVM bit clear, etc.

         getting the end status of the last command

         getting error status

         programming interrupts on the end of the last commands or on errors

       The Embedded Flash Controller also provides a dual 32-bit Prefetch Buffer that optimizes 16-bit access to the Flash.

       This is particularly efficient when the processor is running in Thumb mode.

       Two EFCs are embedded in the SAM7X512 to control each bank of 256 KBytes. Dual-plane organization allows

       concurrent read and program functionality. Read from one memory plane may be performed even while program or

       erase functions are being executed in the other memory plane.

       One EFC is embedded in the SAM7X256/128 to control the single plane of 256/128 KBytes.

                                                                                           SAM7X Series [DATASHEET]                20

                                                                                                      6120K–ATARM–11-Feb-14
8.5.3    Lock Regions

8.5.3.1  SAM7X512

         Two Embedded Flash Controllers each manage 16 lock bits to protect 16 regions of the flash against inadvertent flash

         erasing or programming commands. The SAM7X512 contains 32 lock regions and each lock region contains 64 pages of

         256 bytes. Each lock region has a size of 16 Kbytes.

         If a locked-region’s erase or program command occurs, the command is aborted and the EFC trigs an interrupt.

         The 32 NVM bits are software programmable through both of the EFC User Interfaces. The command “Set Lock Bit”

         enables the protection. The command “Clear Lock Bit” unlocks the lock region.

         Asserting the ERASE pin clears the lock bits, thus unlocking the entire Flash.

8.5.3.2  SAM7X256

         The Embedded Flash Controller manages 16 lock bits to protect 16 regions of the flash against inadvertent flash erasing

         or programming commands. The SAM7X256 contains 16 lock regions and each lock region contains 64 pages of 256

         bytes. Each lock region has a size of 16 Kbytes.

         If a locked-region’s erase or program command occurs, the command is aborted and the EFC trigs an interrupt.

         The 16 NVM bits are software programmable through the EFC User Interface. The command “Set Lock Bit” enables the

         protection. The command “Clear Lock Bit” unlocks the lock region.

         Asserting the ERASE pin clears the lock bits, thus unlocking the entire Flash.

8.5.3.3  SAM7X128

         The Embedded Flash Controller manages 8 lock bits to protect 8 regions of the flash against inadvertent flash erasing or

         programming commands. The SAM7X128 contains 8 lock regions and each lock region contains 64 pages of 256 bytes.

         Each lock region has a size of 16 Kbytes.

         If a locked-region’s erase or program command occurs, the command is aborted and the EFC trigs an interrupt.

         The 8 NVM bits are software programmable through the EFC User Interface. The command “Set Lock Bit” enables the

         protection. The command “Clear Lock Bit” unlocks the lock region.

         Asserting the ERASE pin clears the lock bits, thus unlocking the entire Flash.

8.5.4    Security Bit Feature

         The SAM7X512/256/128 features a security bit, based on a specific NVM-Bit. When the security is enabled, any access

         to the Flash, either through the ICE interface or through the Fast Flash Programming Interface, is forbidden. This ensures

         the confidentiality of the code programmed in the Flash.

         This security bit can only be enabled, through the Command “Set Security Bit” of the EFC User Interface. Disabling the

         security bit can only be achieved by asserting the ERASE pin at 1, and after a full flash erase is performed. When the

         security bit is deactivated, all accesses to the flash are permitted.

         It is important to note that the assertion of the ERASE pin should always be longer than 220 ms.

         As the ERASE pin integrates a permanent pull-down, it can be left unconnected during normal operation. However, it is

         safer to connect it directly to GND for the final application.

8.5.5    Non-volatile Brownout Detector Control

         Two general purpose NVM (GPNVM) bits are used for controlling the brownout detector (BOD), so that even after a

         power loss, the brownout detector operations remain in their state.

         These two GPNVM bits can be cleared or set respectively through the commands “Clear General-purpose NVM Bit” and

         “Set General-purpose NVM Bit” of the EFC User Interface.

           GPNVM Bit 0 is used as a brownout detector enable bit. Setting the GPNVM Bit 0 enables the BOD, clearing it

            disables the BOD. Asserting ERASE clears the GPNVM Bit 0 and thus disables the brownout detector by default.

                                                                                         SAM7X Series [DATASHEET]                    21

                                                                                                           6120K–ATARM–11-Feb-14
         The GPNVM Bit 1 is used as a brownout reset enable signal for the reset controller. Setting the GPNVM Bit 1

          enables the brownout reset when a brownout is detected, Clearing the GPNVM Bit 1 disables the brownout reset.

          Asserting ERASE disables the brownout reset by default.

8.5.6  Calibration Bits

       Eight NVM bits are used to calibrate the brownout detector and the voltage regulator. These bits are factory configured

       and cannot be changed by the user. The ERASE pin has no effect on the calibration bits.

8.6    Fast Flash Programming Interface

       The Fast Flash Programming Interface allows programming the device through either a serial JTAG interface or through

       a multiplexed fully-handshaked parallel port. It allows gang-programming with market-standard industrial programmers.

       The FFPI supports read, page program, page erase, full erase, lock, unlock and protect commands.

       The Fast Flash Programming Interface is enabled and the Fast Programming Mode is entered when the TST pin and the

       PA0 and PA1 pins are all tied high.

8.7    SAM-BA Boot Assistant

       The SAM-BA Boot Assistant is a default Boot Program that provides an easy way to program in-situ the on-chip Flash

       memory.

       The SAM-BA Boot Assistant supports serial communication via the DBGU or the USB Device Port.

         Communication via the DBGU supports a wide range of crystals from 3 to 20 MHz via software auto-detection.

         Communication via the USB Device Port is limited to an 18.432 MHz crystal.

       The SAM-BA Boot provides an interface with SAM-BA Graphic User Interface (GUI).

       The SAM-BA Boot is in ROM and is mapped at address 0x0 when the GPNVM Bit 2 is set to 0.

       When GPNVM bit 2 is set to 1, the device boots from the Flash.

       When GPNVM bit 2 is set to 0, the device boots from ROM (SAM-BA).

                                                                                      SAM7X Series [DATASHEET]                  22

                                                                                                     6120K–ATARM–11-Feb-14
9.  System Controller

    The System Controller manages all vital blocks of the microcontroller: interrupts, clocks, power, time, debug and reset.

    The System Controller peripherals are all mapped to the highest 4 Kbytes of address space, between addresses 0xFFFF

    F000 and 0xFFFF FFFF.

    Figure 9-1 on page 24 shows the System Controller Block Diagram.

    Figure 8-1 on page 18 shows the mapping of the User Interface of the System Controller peripherals. Note that the

    Memory Controller configuration user interface is also mapped within this address space.

                                                                      SAM7X Series [DATASHEET]                                23

                                                                                              6120K–ATARM–11-Feb-14
Figure 9-1.  System    Controller Block Diagram

                                                         System Controller                                        jtag_nreset        Boundary Scan

                                                                                                                                     TAP Controller

                                 irq0-irq1                                                                             nirq

                                   fiq                      Advanced                                                   nfiq

                                                            Interrupt

                       periph_irq[2..19]                    Controller                                            proc_nreset        ARM7TDMI

                                                                                   int                                 PCK

                       pit_irq                                                                                         debug

                       rtt_irq

                       wdt_irq

                       dbgu_irq                                                                                   power_on_reset

                       pmc_irq

                       rstc_irq                                                                                   force_ntrst

                       efc_irq

                                   MCK                      Debug                  dbgu_irq

                           periph_nreset                                           force_ntrst

                                                            Unit

                                 dbgu_rxd                                          dbgu_txd

                                                                                                                       security_bit

                                   MCK                      Periodic

                                   debug                    Interval               pit_irq

                           periph_nreset                    Timer

                                   SLCK                     Real-Time                                             flash_poe          Embedded

                                                            Timer                  rtt_irq                                           Flash

                       power_on_reset                                                                             flash_wrdis

                                   SLCK                                                                                cal

                                   debug                    Watchdog               wdt_irq                        gpnvm[0..2]

                                   idle                     Timer

                            proc_nreset

                              cal           gpnvm[1]                    wdt_fault

                              gpnvm[0]                                  WDRPROC                                       efc_irq

                       en                   flash_wrdis     bod_rst_en                                                 MCK           Memory

                       BOD                                                                                                           Controller

                                            power_on_reset                                                        proc_nreset

                                            jtag_nreset     Reset                  periph_nreset

                       POR                                  Controller             proc_nreset        Voltage

                                            flash_poe                                                 Regulator       standby

                                                                                                      Mode                           Voltage

             NRST                                                                  rstc_irq           Controller                     Regulator

                                   SLCK                                                                           cal

                       RCOSC       SLCK                                            periph_clk[2..18]

                                                                                                                      UDPCK

                                                                                   pck[0-3]                       periph_clk[11]

             XIN                                                                                                                     USB Device

                       OSC         MAINCK                   Power                  PCK                            periph_nreset      Port

             XOUT                                           Management             UDPCK

                                                            Controller                                            periph_irq[11]

                                                                                   MCK

                                                                                                                  usb_suspend

             PLLRC     PLL         PLLCK

                                                                                   pmc_irq

                                   int

                       periph_nreset                                               idle

                       usb_suspend                                                                                periph_clk[4..19]

                                                                                                                  periph_nreset

                                                                                                                                     Embedded

                       periph_nreset                                               periph_irq{2-3]                                   Peripherals

                       periph_clk[2-3]                                             irq0-irq1

                              dbgu_rxd                      PIO                    fiq                            periph_irq[4..19]

                                                            Controller             dbgu_txd

                                                                                                                  in

             PA0-PA30                                                                                             out

             PB0-PB30                                                                                             enable

                                                                                                               SAM7X Series [DATASHEET]                     24

                                                                                                                                     6120K–ATARM–11-Feb-14
9.1    Reset Controller

         Based on one power-on reset cell and one brownout detector

         Status of the last reset, either Power-up Reset, Software Reset, User Reset, Watchdog Reset, Brownout Reset

         Controls the internal resets and the NRST pin output

         Allows to shape a signal on the NRST line, guaranteeing that the length of the pulse meets any requirement.

9.1.1  Brownout Detector and Power-on Reset

       The SAM7X512/256/128 embeds one brownout detection circuit and a power-on reset cell. The power-on reset is

       supplied with and monitors VDDCORE.

       Both signals are provided to the Flash to prevent any code corruption during power-up or power-down sequences or if

       brownouts occur on the power supplies.

       The power-on reset cell has a limited-accuracy threshold at around 1.5V. Its output remains low during power-up until

       VDDCORE goes over this voltage level. This signal goes to the reset controller and allows a full re-initialization of the

       device.

       The brownout detector monitors the VDDCORE and VDDFLASH levels during operation by comparing them to a fixed

       trigger level. It secures system operations in the most difficult environments and prevents code corruption in case of

       brownout on the VDDCORE or VDDFLASH.

       When the brownout detector is enabled and VDDCORE decreases to a value below the trigger level (Vbot18-, defined as

       Vbot18 - hyst/2), the brownout output is immediately activated.

       When VDDCORE increases above the trigger level (Vbot18+, defined as Vbot18 + hyst/2), the reset is released. The

       brownout detector only detects a drop if the voltage on VDDCORE stays below the threshold voltage for longer than

       about 1µs.

       The VDDCORE threshold voltage has a hysteresis of about 50 mV, to ensure spike free brownout detection. The typical

       value of the brownout detector threshold is 1.68V with an accuracy of ± 2% and is factory calibrated.

       When the brownout detector is enabled and VDDFLASH decreases to a value below the trigger level (Vbot33-, defined

       as Vbot33 - hyst/2), the brownout output is immediately activated.

       When VDDFLASH increases above the trigger level (Vbot33+, defined as Vbot33 + hyst/2), the reset is released. The

       brownout detector only detects a drop if the voltage on VDDCORE stays below the threshold voltage for longer than

       about 1µs.

       The VDDFLASH threshold voltage has a hysteresis of about 50 mV, to ensure spike free brownout detection. The typical

       value of the brownout detector threshold is 2.80V with an accuracy of ± 3.5% and is factory calibrated.

       The brownout detector is low-power, as it consumes less than 28 µA static current. However, it can be deactivated to

       save its static current. In this case, it consumes less than 1µA. The deactivation is configured through the GPNVM bit 0 of

       the Flash.

                                                                           SAM7X Series [DATASHEET]                                 25

                                                                           6120K–ATARM–11-Feb-14
9.2  Clock Generator

     The Clock Generator embeds one low-power RC Oscillator, one Main    Oscillator         and  one  PLL  with  the  following

     characteristics:

       RC Oscillator ranges between 22 KHz and 42 KHz

       Main Oscillator frequency ranges between 3 and 20 MHz

       Main Oscillator can be bypassed

       PLL output ranges between 80 and 200 MHz

     It provides SLCK, MAINCK and PLLCK.

     Figure 9-2.       Clock Generator Block Diagram

                                                        Clock Generator

                                                        Embedded                Slow Clock

                                                               RC               SLCK

                                                        Oscillator

                                          XIN           Main                    Main Clock

                                                        Oscillator              MAINCK

                                          XOUT

                                                        PLL and                 PLL Clock

                                          PLLRC         Divider                 PLLCK

                                                        Status         Control

                                                        Power

                                                        Management

                                                        Controller

                                                                                            SAM7X Series [DATASHEET]              26

                                                                                                           6120K–ATARM–11-Feb-14
9.3  Power Management Controller

     The Power Management Controller uses the Clock Generator outputs to provide:

       the Processor Clock PCK

       the Master Clock MCK

       the USB Clock UDPCK

       all the peripheral clocks, independently controllable

       four programmable clock outputs

     The Master Clock (MCK) is programmable from a few hundred Hz to the maximum operating frequency of the device.

     The Processor Clock (PCK) switches off when entering processor idle mode, thus allowing reduced power consumption

     while waiting for an interrupt.

     Figure 9-3.  Power  Management Controller Block Diagram

                                                                               Processor         PCK

                                                                               Clock

                                                                               Controller

                                              Master Clock Controller                            int

                                                                               Idle Mode

                                      SLCK    Prescaler

                                      MAINCK                                                     MCK

                                      PLLCK   /1,/2,/4,...,/64

                                                                               Peripherals       periph_clk[2..18]

                                                                               Clock Controller

                                                                               ON/OFF

                                              Programmable Clock Controller

                                      SLCK

                                      MAINCK                 Prescaler                           pck[0..3]

                                      PLLCK                  /1,/2,/4,...,/64

                                              USB Clock Controller

                                                             ON/OFF

                                      PLLCK                  Divider                             UDPCK

                                                             /1,/2,/4

9.4  Advanced Interrupt Controller

       Controls the interrupt lines (nIRQ and nFIQ) of an ARM Processor

       Individually maskable and vectored interrupt sources

                 Source 0 is reserved for the Fast Interrupt Input (FIQ)

                 Source 1 is reserved for system peripherals (RTT, PIT, EFC, PMC, DBGU, etc.)

                 Other sources control the peripheral interrupts or external interrupts

                 Programmable edge-triggered or level-sensitive internal sources

                 Programmable positive/negative edge-triggered or high/low level-sensitive external                sources

       8-level Priority Controller

                 Drives the normal interrupt nIRQ of the processor

                 Handles priority of the interrupt sources

                 Higher priority interrupts can be served during service of lower priority interrupt

       Vectoring

                 Optimizes interrupt service routine branch and execution

                 One 32-bit vector register per interrupt source

                 Interrupt vector register reads the corresponding current interrupt vector

                                                                                                 SAM7X Series [DATASHEET]                  27

                                                                                                                    6120K–ATARM–11-Feb-14
       Protect Mode

          Easy debugging by preventing automatic operations

       Fast Forcing

          Permits redirecting any interrupt source on the fast interrupt

       General Interrupt Mask

          Provides processor synchronization on events without triggering an interrupt

9.5  Debug Unit

       Comprises:

          One two-pin UART

          One Interface for the Debug Communication Channel (DCC) support

          One set of Chip ID Registers

          One Interface providing ICE Access Prevention

       Two-pin UART

          USART-compatible User Interface

          Programmable Baud Rate Generator

          Parity, Framing and Overrun Error

          Automatic Echo, Local Loopback and Remote Loopback Channel Modes

       Debug Communication Channel Support

          Offers visibility of COMMRX and COMMTX signals from the ARM Processor

       Chip ID Registers

          Identification of the device revision, sizes of the embedded memories, set of peripherals

          Chip ID is 0x275C 0A40 (MRL A) for SAM7X512

          Chip ID is 0x275B 0940 (MRL A or B) for SAM7X256

          Chip ID is 0x275B 0942 (MRL C) for SAM7X256

          Chip ID is 0x275A 0740 (MRL A or B) for SAM7X128

          Chip ID is 0x275A 0742 (MRL C) for SAM7X128

9.6  Periodic Interval Timer

       20-bit programmable counter plus 12-bit interval counter

9.7  Watchdog Timer

       12-bit key-protected Programmable Counter running on prescaled SLCK

       Provides reset or interrupt signals to the system

       Counter may be stopped while the processor is in debug state or in idle mode

9.8  Real-time Timer

       32-bit free-running counter with alarm running on prescaled SLCK

       Programmable 16-bit prescaler for SLCK accuracy compensation

9.9  PIO Controllers

       Two PIO Controllers, each controlling 31 I/O lines

       Fully programmable through set/clear registers

       Multiplexing of two peripheral functions per I/O line

       For each I/O line (whether assigned to a peripheral or used as general-purpose I/O)

          Input change interrupt

                                                                             SAM7X Series [DATASHEET]               28

                                                                                             6120K–ATARM–11-Feb-14
           Half a clock period glitch filter

           Multi-drive option enables driving in open drain

           Programmable pull-up on each I/O line

           Pin data status register, supplies visibility of the level on the    pin at any time

        Synchronous output, provides Set and Clear of several I/O lines in      a single write

9.10  Voltage Regulator Controller

      The purpose of this controller is to select the Power Mode of the Voltage  Regulator between Normal Mode (bit 0    is

      cleared) or Standby Mode (bit 0 is set).

                                                                                 SAM7X Series [DATASHEET]                    29

                                                                                                  6120K–ATARM–11-Feb-14
10.   Peripherals

10.1  User Interface

      The User Peripherals are mapped in the 256 Mbytes of address space between 0xF000 0000 and 0xFFFF EFFF. Each

      peripheral is allocated 16 Kbytes of address space.

      A complete memory map is provided in Figure 8-1 on page 18.

10.2  Peripheral Identifiers

      The SAM7X512/256/128 embeds a wide range of peripherals. Table 10-1 defines the Peripheral Identifiers of the

      SAM7X512/256/128. Unique peripheral identifiers are defined for both the Advanced Interrupt Controller and the Power

      Management Controller.

      Table 10-1.      Peripheral Identifiers

                                                                                            External

      Peripheral   ID  Peripheral Mnemonic     Peripheral Name                              Interrupt

      0                AIC                     Advanced Interrupt Controller                FIQ

      1                SYSC(1)                 System Controller

      2                PIOA                    Parallel I/O Controller A

      3                PIOB                    Parallel I/O Controller B

      4                SPI0                    Serial Peripheral Interface 0

      5                SPI1                    Serial Peripheral Interface 1

      6                US0                     USART 0

      7                US1                     USART 1

      8                SSC                     Synchronous Serial Controller

      9                TWI                     Two-wire Interface

      10               PWMC                    Pulse Width Modulation Controller

      11               UDP                     USB Device Port

      12               TC0                     Timer/Counter 0

      13               TC1                     Timer/Counter 1

      14               TC2                     Timer/Counter 2

      15               CAN                     CAN Controller

      16               EMAC                    Ethernet MAC

      17               ADC(1)                  Analog-to Digital Converter

      18 - 29          Reserved

      30               AIC                     Advanced Interrupt Controller                IRQ0

      31               AIC                     Advanced Interrupt Controller                IRQ1

      Note:    1.  Setting SYSC and ADC bits in the clock set/clear registers of  the  PMC  has no effect.  The  System  Controller

                   and ADC are continuously clocked.

                                                                                       SAM7X Series [DATASHEET]               30

                                                                                                       6120K–ATARM–11-Feb-14
10.3  Peripheral Multiplexing on PIO Lines

      The SAM7X512/256/128 features two PIO controllers, PIOA and PIOB, that multiplex the I/O lines of the peripheral set.

      Each PIO Controller controls 31 lines. Each line can be assigned to one of two peripheral functions, A or B. Some of

      them can also be multiplexed with the analog inputs of the ADC Controller.

      Table 10-2 on page 32 and Table 10-3 on page 33 defines how the I/O lines of the peripherals A, B or the analog inputs

      are multiplexed on the PIO Controller A and PIO Controller B. The two columns “Function” and “Comments” have been

      inserted for the user’s own comments; they may be used to track how pins are defined in an application.

      Note that some peripheral functions that are output only, may be duplicated in the table.

      At reset, all I/O lines are automatically configured as input with the programmable pull-up enabled, so that the device is

      maintained in a static state as soon as a reset is detected.

                                                                                  SAM7X Series [DATASHEET]                        31

                                                                                                 6120K–ATARM–11-Feb-14
10.4  PIO    Controller A Multiplexing

Table 10-2.  Multiplexing on PIO Controller A

                    PIO Controller A                       Application Usage

I/O Line     Peripheral A  Peripheral B        Comments    Function           Comments

      PA0    RXD0                              High-drive

      PA1    TXD0                              High-drive

      PA2    SCK0          SPI1_NPCS1          High-drive

      PA3    RTS0          SPI1_NPCS2          High-drive

      PA4    CTS0          SPI1_NPCS3

      PA5    RXD1

      PA6    TXD1

      PA7    SCK1          SPI0_NPCS1

      PA8    RTS1          SPI0_NPCS2

      PA9    CTS1          SPI0_NPCS3

PA10         TWD

PA11         TWCK

PA12         SPI_NPCS0

PA13         SPI0_NPCS1    PCK1

PA14         SPI0_NPCS2    IRQ1

PA15         SPI0_NPCS3    TCLK2

PA16         SPI0_MISO

PA17         SPI0_MOSI

PA18         SPI0_SPCK

PA19         CANRX

PA20         CANTX

PA21         TF            SPI1_NPCS0

PA22         TK            SPI1_SPCK

PA23         TD            SPI1_MOSI

PA24         RD            SPI1_MISO

PA25         RK            SPI1_NPCS1

PA26         RF            SPI1_NPCS2

PA27         DRXD          PCK3

PA28         DTXD

PA29         FIQ           SPI1_NPCS3

PA30         IRQ0          PCK2

                                                                     SAM7X Series [DATASHEET]        32

                                                                              6120K–ATARM–11-Feb-14
10.5  PIO    Controller B Multiplexing

Table 10-3.  Multiplexing on PIO Controller B

                    PIO Controller B                     Application Usage

I/O Line     Peripheral A  Peripheral B        Comments  Function           Comments

      PB0    ETXCK/EREFCK  PCK0

      PB1    ETXEN

      PB2    ETX0

      PB3    ETX1

      PB4    ECRS

      PB5    ERX0

      PB6    ERX1

      PB7    ERXER

      PB8    EMDC

      PB9    EMDIO

PB10         ETX2          SPI1_NPCS1

PB11         ETX3          SPI1_NPCS2

PB12         ETXER         TCLK0

PB13         ERX2          SPI0_NPCS1

PB14         ERX3          SPI0_NPCS2

PB15         ERXDV/ECRSDV

PB16         ECOL          SPI1_NPCS3

PB17         ERXCK         SPI0_NPCS3

PB18         EF100         ADTRG

PB19         PWM0          TCLK1

PB20         PWM1          PCK0

PB21         PWM2          PCK1

PB22         PWM3          PCK2

PB23         TIOA0         DCD1

PB24         TIOB0         DSR1

PB25         TIOA1         DTR1

PB26         TIOB1         RI1

PB27         TIOA2         PWM0                AD0

PB28         TIOB2         PWM1                AD1

PB29         PCK1          PWM2                AD2

PB30         PCK2          PWM3                AD3

                                                                   SAM7X Series [DATASHEET]        33

                                                                            6120K–ATARM–11-Feb-14
10.6  Ethernet MAC

        DMA Master on Receive and Transmit Channels

        Compatible with IEEE Standard 802.3

        10 and 100 Mbit/s operation

        Full- and half-duplex operation

        Statistics Counter Registers

        MII/RMII interface to the physical layer

        Interrupt generation to signal receive and transmit completion

        28-byte transmit FIFO and 28-byte receive FIFO

        Automatic pad and CRC generation on transmitted frames

        Automatic discard of frames received with errors

        Address checking logic supports up to four specific 48-bit addresses

        Support Promiscuous Mode where all valid received frames are copied to  memory

        Hash matching of unicast and multicast destination addresses

        Physical layer management through MDIO interface

        Half-duplex flow control by forcing collisions on incoming frames

        Full-duplex flow control with recognition of incoming pause frames

        Support for 802.1Q VLAN tagging with recognition of incoming VLAN and   priority tagged   frames

        Multiple buffers per receive and transmit frame

        Jumbo frames up to 10240 bytes supported

10.7  Serial Peripheral Interface

        Supports communication with external serial devices

           Four chip selects with external decoder allow communication with up to 15 peripherals

           Serial memories, such as DataFlash® and 3-wire EEPROMs

           Serial peripherals, such as ADCs, DACs, LCD Controllers, CAN Controllers and Sensors

           External co-processors

        Master or slave serial peripheral bus interface

           8- to 16-bit programmable data length per chip select

           Programmable phase and polarity per chip select

           Programmable transfer delays per chip select, between consecutive transfers and between        clock  and    data

           Programmable delay between consecutive transfers

           Selectable mode fault detection

           Maximum frequency at up to Master Clock

10.8  Two-wire Interface

        Master Mode only

        Compatibility with I2C compatible devices (refer to the TWI section of the datasheet)

        One, two or three bytes internal address registers for easy Serial Memory access

        7-bit or 10-bit slave addressing

        Sequential read/write operations

                                                                                 SAM7X Series [DATASHEET]                34

                                                                                                  6120K–ATARM–11-Feb-14
10.9   USART

         Programmable Baud Rate Generator

         5- to 9-bit full-duplex synchronous or asynchronous serial communications

             1, 1.5 or 2 stop bits in Asynchronous Mode

             1 or 2 stop bits in Synchronous Mode

             Parity generation and error detection

             Framing error detection, overrun error detection

             MSB or LSB first

             Optional break generation and detection

             By 8 or by 16 over-sampling receiver frequency

             Hardware handshaking RTS - CTS

             Modem Signals Management DTR-DSR-DCD-RI on USART1

             Receiver time-out and transmitter timeguard

             Multi-drop Mode with address generation and detection

         RS485 with driver control signal

         ISO7816, T = 0 or T = 1 Protocols for interfacing with smart cards

             NACK handling, error counter with repetition and iteration limit

         IrDA modulation and demodulation

             Communication at up to 115.2 Kbps

         Test Modes

             Remote Loopback, Local Loopback, Automatic Echo

10.10  Serial Synchronous Controller

         Provides serial synchronous communication links used in audio and telecom applications

         Contains an independent receiver and transmitter and a common clock divider

         Offers a configurable frame sync and data length

         Receiver and transmitter can be programmed to start automatically or on detection of different event  on  the  frame

          sync signal

         Receiver and transmitter include a data signal, a clock signal and a frame synchronization signal

10.11  Timer Counter

         Three 16-bit Timer Counter Channels

             Two output compare or one input capture       per  channel

         Wide range of functions including:

             Frequency measurement

             Event counting

             Interval measurement

             Pulse generation

             Delay timing

             Pulse Width Modulation

             Up/down capabilities

         Each channel is user-configurable and contains:

             Three external clock inputs

                                                                                     SAM7X Series [DATASHEET]            35

                                                                                                  6120K–ATARM–11-Feb-14
            Five internal clock inputs, as defined in Table 10-4

       Table 10-4.  Timer Counter Clocks Assignment

          TC Clock input                                  Clock

          TIMER_CLOCK1                                    MCK/2

          TIMER_CLOCK2                                    MCK/8

          TIMER_CLOCK3                                    MCK/32

          TIMER_CLOCK4                                    MCK/128

          TIMER_CLOCK5                                    MCK/1024

                   Two multi-purpose input/output signals

                   Two global registers that act on all three TC channels

10.12  Pulse Width Modulation Controller

            Four channels, one 16-bit counter per channel

            Common clock generator, providing thirteen different clocks

                   One Modulo n counter providing eleven clocks

                   Two independent linear dividers working on modulo n counter         outputs

            Independent channel programming

                   Independent enable/disable commands

                   Independent clock selection

                   Independent period and duty cycle, with double buffering

                   Programmable selection of the output waveform polarity

                   Programmable center or left aligned output waveform

10.13  USB   Device Port

            USB V2.0 full-speed compliant,12 Mbits per second

            Embedded USB V2.0 full-speed transceiver

            Embedded 1352-byte dual-port RAM for endpoints

            Six endpoints

                   Endpoint 0: 8 bytes

                   Endpoint 1 and 2: 64 bytes ping-pong

                   Endpoint 3: 64 bytes

                   Endpoint 4 and 5: 256 bytes ping-pong

                   Ping-pong Mode (two memory banks) for bulk      endpoints

            Suspend/resume logic

10.14  CAN Controller

       •     Fully compliant with CAN 2.0A and 2.0B

       •     Bit rates up to 1Mbit/s

       •     Eight object oriented mailboxes each with the following properties:

                   CAN Specification 2.0 Part A or 2.0 Part B Programmable for each Message

                   Object configurable to receive (with overwrite or not) or transmit

                   Local tag and mask filters up to 29-bit identifier/channel

                   32-bit access to data registers for each mailbox data object

                   Uses a 16-bit time stamp on receive and transmit message

                   Hardware concatenation of ID unmasked bitfields to speedup family ID processing

                                                                                        SAM7X Series [DATASHEET]            36

                                                                                                     6120K–ATARM–11-Feb-14
            16-bit internal timer for time stamping and network synchronization

            Programmable reception buffer length up to 8 mailbox objects

            Priority management between transmission mailboxes

            Autobaud and listening mode

            Low power mode and programmable wake-up on bus activity or by the application

            Data, remote, error and overload frame handling

10.15  Analog-to-Digital Converter

         8-channel ADC

         10-bit 384 K samples/sec. Successive Approximation Register ADC

         ±2 LSB Integral Non Linearity, ±1 LSB Differential Non Linearity

         Integrated 8-to-1 multiplexer, offering eight independent 3.3V analog inputs

         External voltage reference for better accuracy on low voltage inputs

         Individual enable and disable of each channel

         Multiple trigger sources

            Hardware or software trigger

            External trigger pin

            Timer Counter 0 to 2 outputs TIOA0 to TIOA2 trigger

         Sleep Mode and conversion sequencer

            Automatic wakeup on trigger and back to sleep mode after conversions       of  all  enabled  channels

         Four of eight analog inputs shared with digital signals

                                                                                        SAM7X Series [DATASHEET]        37

                                                                                                 6120K–ATARM–11-Feb-14
11.   ARM7TDMI Processor Overview

11.1  Overview

      The ARM7TDMI core executes both the 32-bit ARM and 16-bit Thumb instruction sets, allowing the user to trade off

      between high performance and high code density.The ARM7TDMI processor implements Von Neuman architecture,

      using a three-stage pipeline consisting of Fetch, Decode, and Execute stages.

      The  main features of the ARM7tDMI processor are:

          ARM7TDMI Based on ARMv4T Architecture

          Two Instruction Sets

               ARM High-performance 32-bit Instruction Set

               Thumb High Code Density 16-bit Instruction Set

          Three-Stage Pipeline Architecture

               Instruction Fetch (F)

               Instruction Decode (D)

               Execute (E)

                                                                                     SAM7X Series [DATASHEET]           38

                                                                                     6120K–ATARM–11-Feb-14
11.2    ARM7TDMI Processor

        For further details on ARM7TDMI, refer to the following ARM documents:

        ARM Architecture Reference Manual (DDI 0100E)

        ARM7TDMI Technical Reference Manual (DDI 0210B)

11.2.1  Instruction Type

        Instructions are either 32 bits long (in ARM state) or 16 bits long (in THUMB state).

11.2.2  Data Type

        ARM7TDMI supports byte (8-bit), half-word (16-bit) and word (32-bit) data types. Words must be aligned to four-byte

        boundaries and half words to two-byte boundaries.

        Unaligned data access behavior depends on which instruction is used where.

11.2.3  ARM7TDMI Operating Mode

        The ARM7TDMI, based on ARM architecture v4T, supports seven processor modes:

           User: The normal ARM program execution state

           FIQ: Designed to support high-speed data transfer or channel process

           IRQ: Used for general-purpose interrupt handling

           Supervisor: Protected mode for the operating system

           Abort mode: Implements virtual memory and/or memory protection

           System: A privileged user mode for the operating system

           Undefined: Supports software emulation of hardware coprocessors

        Mode changes may be made under software control, or may be brought about by external interrupts or exception

        processing. Most application programs execute in User mode. The non-user modes, or privileged modes, are entered            in

        order to service interrupts or exceptions, or to access protected resources.

11.2.4  ARM7TDMI Registers

        The ARM7TDMI processor has a total of 37registers:

          31 general-purpose 32-bit registers

          6 status registers

        These registers are not accessible at the same time. The processor state and operating mode determine which registers

        are available to the programmer.

        At any one time 16 registers are visible to the user. The remainder are synonyms used to speed up exception

        processing.

        Register 15 is the Program Counter (PC) and can be used in all instructions to reference data relative to the current

        instruction.

        R14 holds the return address after a subroutine call.

        R13 is used (by software convention) as a stack pointer.

        Registers R0 to R7 are unbanked registers. This means that each of them refers to the same 32-bit physical register in all

        processor modes. They are general-purpose registers, with no special uses managed by the architecture, and can be

        used wherever an instruction allows a general-purpose register to be specified.

        Registers R8 to R14 are banked registers. This means that each of them depends on the current mode of the processor.

                                                                                               SAM7X Series [DATASHEET]             39

                                                                                               6120K–ATARM–11-Feb-14
          Table 11-1.  ARM7TDMI ARM  Modes and Registers Layout

          User and     Supervisor                              Undefined    Interrupt               Fast Interrupt

          System Mode  Mode             Abort Mode             Mode         Mode                    Mode

          R0           R0               R0                     R0           R0                      R0

          R1           R1               R1                     R1           R1                      R1

          R2           R2               R2                     R2           R2                      R2

          R3           R3               R3                     R3           R3                      R3

          R4           R4               R4                     R4           R4                      R4

          R5           R5               R5                     R5           R5                      R5

          R6           R6               R6                     R6           R6                      R6

          R7           R7               R7                     R7           R7                      R7

          R8           R8               R8                     R8           R8                      R8_FIQ

          R9           R9               R9                     R9           R9                      R9_FIQ

          R10          R10              R10                    R10          R10                     R10_FIQ

          R11          R11              R11                    R11          R11                     R11_FIQ

          R12          R12              R12                    R12          R12                     R12_FIQ

          R13          R13_SVC          R13_ABORT              R13_UNDEF    R13_IRQ                 R13_FIQ

          R14          R14_SVC          R14_ABORT              R14_UNDEF    R14_IRQ                 R14_FIQ

          PC           PC               PC                     PC           PC                      PC

          CPSR         CPSR             CPSR                     CPSR       CPSR                    CPSR

                       SPSR_SVC         SPSR_ABORT             SPSR_UNDEF   SPSR_IRQ                SPSR_FIQ

                                                                            Mode-specific banked registers

11.2.4.1  Modes and Exception Handling

          All exceptions have banked registers for R14 and R13.

          After an exception, R14 holds the return address for exception processing. This address is used to return after the

          exception is processed, as well as to address the instruction that caused the exception.

          R13 is banked across exception modes to provide each exception handler with a private stack pointer.

          The fast interrupt mode also banks registers 8 to 12 so that interrupt processing can begin without having to save these

          registers.

          A seventh processing mode, System Mode, does not have any banked registers. It uses the User Mode registers.

          System Mode runs tasks that require a privileged processor mode and allows them to invoke all classes of exceptions.

11.2.4.2  Status Registers

          All other processor states are held in status registers. The current operating processor status is in the Current Program

          Status Register (CPSR). The CPSR holds:

              four ALU flags (Negative, Zero, Carry, and Overflow)

              two interrupt disable bits (one for each type of interrupt)

              one bit to indicate ARM or Thumb execution

              five bits to encode the current processor mode

          All five exception modes also have a Saved Program Status Register (SPSR) that holds the CPSR of the task

          immediately preceding the exception.

                                                                                       SAM7X Series [DATASHEET]                      40

                                                                                                             6120K–ATARM–11-Feb-14
11.2.4.3  Exception Types

          The ARM7TDMI supports five types of exception and a privileged processing mode for each type. The types of exceptions

          are:

               fast interrupt (FIQ)

               normal interrupt (IRQ)

               memory aborts (used to implement memory protection or virtual memory)

               attempted execution of an undefined instruction

               software interrupts (SWIs)

          Exceptions are generated by internal and external sources.

          More than one exception can occur in the same time.

          When an exception occurs, the banked version of R14 and the SPSR for the exception mode are used to save state.

          To return after handling the exception, the SPSR is moved to the CPSR, and R14 is moved to the PC. This can be done

          in two ways:

               by using a data-processing instruction with the S-bit set, and the PC as the destination

               by using the Load Multiple with Restore CPSR instruction (LDM)

11.2.5    ARM Instruction Set Overview

          The ARM instruction set is divided into:

               Branch instructions

               Data processing instructions

               Status register transfer instructions

               Load and Store instructions

               Coprocessor instructions

               Exception-generating instructions

          ARM instructions can be executed conditionally.  Every instruction  contains a 4-bit condition code    field  (bit[31:28]).

          Table 11-2 gives the ARM instruction mnemonic    list.

          Table 11-2.   ARM Instruction Mnemonic List

          Mnemonic      Operation                                 Mnemonic    Operation

          MOV           Move                                      CDP         Coprocessor Data Processing

          ADD           Add                                       MVN         Move Not

          SUB           Subtract                                  ADC         Add with Carry

          RSB           Reverse Subtract                          SBC         Subtract with Carry

          CMP           Compare                                   RSC         Reverse Subtract with Carry

          TST           Test                                      CMN         Compare Negated

          AND           Logical AND                               TEQ         Test Equivalence

          EOR           Logical Exclusive OR                      BIC         Bit Clear

          MUL           Multiply                                  ORR         Logical (inclusive) OR

          SMULL         Sign Long Multiply                        MLA         Multiply Accumulate

          SMLAL         Signed Long Multiply Accumulate           UMULL       Unsigned Long Multiply

          MSR           Move to Status Register                   UMLAL       Unsigned Long Multiply Accumulate

          B             Branch                                    MRS         Move From Status Register

          BX            Branch and Exchange                       BL          Branch and Link

                                                                                               SAM7X Series [DATASHEET]                41

                                                                                                           6120K–ATARM–11-Feb-14
        Table 11-2.  ARM Instruction Mnemonic List

        Mnemonic     Operation                                  Mnemonic  Operation

        LDR          Load Word                                  SWI       Software Interrupt

        LDRSH        Load Signed Halfword                       STR       Store Word

        LDRSB        Load Signed Byte                           STRH      Store Half Word

        LDRH         Load Half Word                             STRB      Store Byte

        LDRB         Load Byte                                  STRBT     Store Register Byte with Translation

        LDRBT        Load Register Byte with Translation        STRT      Store Register with Translation

        LDRT         Load Register with Translation             STM       Store Multiple

        LDM          Load Multiple                              SWPB      Swap Byte

        SWP          Swap Word                                  MRC       Move From Coprocessor

        MCR          Move To Coprocessor                        STC       Store From Coprocessor

        LDC          Load To Coprocessor

11.2.6  Thumb Instruction Set Overview

        The Thumb instruction set is a re-encoded subset of the ARM instruction set.

        The Thumb instruction set is divided into:

             Branch instructions

             Data processing instructions

             Load and Store instructions

             Load and Store Multiple instructions

             Exception-generating instruction

        In Thumb mode, eight general-purpose registers, R0 to R7, are available that are the same physical registers as R0 to

        R7 when executing ARM instructions. Some Thumb instructions also access to the Program Counter (ARM Register 15),

        the Link Register (ARM Register 14) and the Stack Pointer (ARM Register 13). Further instructions allow limited access

        to the ARM registers 8 to 15.

        Table 11-3 gives the Thumb instruction mnemonic list.

        Table 11-3.  Thumb Instruction       Mnemonic     List

        Mnemonic     Operation                                  Mnemonic              Operation

        MOV          Move                                       MVN                   Move Not

        ADD          Add                                        ADC                   Add with Carry

        SUB          Subtract                                   SBC                   Subtract with Carry

        CMP          Compare                                    CMN                   Compare Negated

        TST          Test                                       NEG                   Negate

        AND          Logical AND                                BIC                   Bit Clear

        EOR          Logical Exclusive OR                       ORR                   Logical (inclusive) OR

        LSL          Logical Shift Left                         LSR                   Logical Shift Right

        ASR          Arithmetic Shift Right                     ROR                   Rotate Right

        MUL          Multiply

        B            Branch                                     BL                    Branch and Link

        BX           Branch and Exchange                        SWI                   Software Interrupt

                                                                                              SAM7X Series [DATASHEET]               42

                                                                                                              6120K–ATARM–11-Feb-14
Table 11-3.  Thumb Instruction Mnemonic  List

Mnemonic     Operation                         Mnemonic  Operation

LDR          Load Word                         STR       Store Word

LDRH         Load Half Word                    STRH      Store Half Word

LDRB         Load Byte                         STRB      Store Byte

LDRSH        Load Signed Halfword              LDRSB     Load Signed Byte

LDMIA        Load Multiple                     STMIA     Store Multiple

PUSH         Push Register to stack            POP       Pop Register from stack

                                                         SAM7X Series [DATASHEET]                        43

                                                                                  6120K–ATARM–11-Feb-14
12.   Debug and Test Features

12.1  Description

      The SAM7X Series features a number of complementary debug and test capabilities. A common JTAG/ICE (In-Circuit

      Emulator) port is used for standard debugging functions, such as downloading code and single-stepping through

      programs. The Debug Unit provides a two-pin UART that can be used to upload an application into internal SRAM. It

      manages the interrupt handling of the internal COMMTX and COMMRX signals that trace the activity of the Debug

      Communication Channel.

      A set of dedicated debug and test input/output pins gives direct access to these capabilities from a PC-based test

      environment.

12.2  Block Diagram

      Figure 12-1.  Debug and Test Block Diagram

                                                                             TMS

                                                                             TCK

                                                                             TDI

                     Boundary                     ICE/JTAG                   JTAGSEL

                         TAP                      TAP

                                                                             TDO

                                                            Reset       POR

                                   ICE                      and

                                                            Test             TST

                         ARM7TDMI

                                                                   PIO       DTXD

                    PDC            DBGU

                                                                             DRXD

                                                                        SAM7X Series [DATASHEET]                          44

                                                                             6120K–ATARM–11-Feb-14
12.3    Application Examples

12.3.1  Debug Environment

        Figure 12-2 shows a complete debug environment example. The ICE/JTAG interface is  used  for  standard  debugging

        functions, such as downloading code and single-stepping through the program.

        Figure 12-2.  Application Debug Environment Example

                                                                   Host Debugger

                              ICE/JTAG

                              Interface

                              ICE/JTAG

                              Connector

                              AT91SAMSxx  RS232                    Terminal

                                          Connector

                              AT91SAM7Sxx-based Application Board

                                                                                      SAM7X Series [DATASHEET]             45

                                                                                                 6120K–ATARM–11-Feb-14
12.3.2  Test Environment

        Figure 12-3 shows a test environment example. Test vectors are sent and interpreted  by the tester. In this  example, the

        “board in test” is designed using a number of JTAG-compliant devices. These devices  can be connected to     form a single

        scan chain.

        Figure 12-3.   Application Test Environment Example

                                                             Test Adaptor            Tester

                                                JTAG

                                                Interface

                                  ICE/JTAG                 Chip n  Chip 2

                                  Connector

                                                AT91SAM7Xxx        Chip 1

                                  AT91SAM7Xxx-based Application Board      In  Test

12.4    Debug     and  Test  Pin  Description

        Table 12-1.    Debug and Test Pin List

        Pin Name                  Function                                 Type              Active Level

                                                 Reset/Test

        NRST                      Microcontroller Reset                    Input/Output      Low

        TST                       Test Mode Select                         Input             High

                                                ICE and JTAG

        TCK                       Test Clock                               Input

        TDI                       Test Data In                             Input

        TDO                       Test Data Out                            Output

        TMS                       Test Mode Select                         Input

        JTAGSEL                   JTAG Selection                           Input

                                                 Debug Unit

        DRXD                      Debug Receive Data                       Input

        DTXD                      Debug Transmit Data                      Output

12.5    Functional Description

12.5.1  Test Pin

        One dedicated pin, TST, is used to define the device operating mode. The user must make sure that this pin is tied at low

        level to ensure normal operating conditions. Other values associated with this pin are reserved for manufacturing test.

                                                                                         SAM7X Series [DATASHEET]                  46

                                                                                                   6120K–ATARM–11-Feb-14
12.5.2    EmbeddedICE (Embedded In-circuit Emulator)

          The ARM7TDMI EmbeddedICE is supported via the ICE/JTAG port. The internal state of the ARM7TDMI is examined

          through an ICE/JTAG port.

          The ARM7TDMI processor contains hardware extensions for advanced debugging features:

            In halt mode, a store-multiple (STM) can be inserted into the instruction pipeline. This exports the contents of the

             ARM7TDMI registers. This data can be serially shifted out without affecting the rest of the system.

            In monitor mode, the JTAG interface is used to transfer data between the debugger and a simple monitor program

             running on the ARM7TDMI processor.

          There are three scan chains inside the ARM7TDMI processor that support testing, debugging, and programming of the

          EmbeddedICE. The scan chains are controlled by the ICE/JTAG port.

          EmbeddedICE mode is selected when JTAGSEL is low. It is not possible to switch directly between ICE and JTAG

          operations. A chip reset must be performed after JTAGSEL is changed.

          For further details on the EmbeddedICE, see the ARM7TDMI (Rev4) Technical Reference Manual (DDI0210B).

12.5.3    Debug Unit

          The Debug Unit provides a two-pin (DXRD and TXRD) USART that can be used for several debug and trace purposes

          and offers an ideal means for in-situ programming solutions and debug monitor communication. Moreover, the

          association with two peripheral data controller channels permits packet handling of these tasks with processor time

          reduced to a minimum.

          The Debug Unit also manages the interrupt handling of the COMMTX and COMMRX signals that come from the ICE and

          that trace the activity of the Debug Communication Channel. The Debug Unit allows blockage of access to the system

          through the ICE interface.

          A specific register, the Debug Unit Chip ID Register, gives information about the product version and its internal

          configuration.

          The SAM7X512 Debug Unit Chip ID value is 0x275C 0A40 on 32-bit width.

          The SAM7X256 Debug Unit Chip ID value is 0x275B 0940 on 32-bit width.

          The SAM7X128 Debug Unit Chip ID value is 0x275A 0740 on 32-bit width.

          For further details on the Debug Unit, see the Debug Unit section.

12.5.4    IEEE 1149.1 JTAG Boundary Scan

          IEEE 1149.1 JTAG Boundary Scan allows pin-level access independent of the device packaging technology.

          IEEE 1149.1 JTAG Boundary Scan is enabled when JTAGSEL is high. The SAMPLE, EXTEST and BYPASS functions

          are implemented. In ICE debug mode, the ARM processor responds with a non-JTAG chip ID that identifies the

          processor to the ICE system. This is not IEEE 1149.1 JTAG-compliant.

          It is not possible to switch directly between JTAG and ICE operations. A chip reset must be performed after JTAGSEL is

          changed.

          A Boundary-scan Descriptor Language (BSDL) file is provided to set up test.

12.5.4.1  JTAG Boundary-scan Register

          The Boundary-scan Register (BSR) contains 187 bits that correspond to active pins and associated control signals.

                                                                                       SAM7X Series [DATASHEET]                    47

                                                                                                6120K–ATARM–11-Feb-14
Each SAM7X input/output pin corresponds to a 3-bit register     in the BSR. The OUTPUT bit contains data that can be

forced on the pad. The INPUT bit facilitates the observability  of data applied to the pad. The CONTROL bit selects the

direction of the pad.

Table  12-2.   SAM7X   JTAG Boundary Scan Register

       Bit                                                                Associated BSR

       Number          Pin Name                                 Pin Type  Cells

       187                                                                INPUT

       186             PA30/IRQ0/PCK2                           IN/OUT    OUTPUT

       185                                                                CONTROL

       184                                                                INPUT

       183             PA0/RXD0                                 IN/OUT    OUTPUT

       182                                                                CONTROL

       181                                                                INPUT

       180             PA1/TXD0                                 IN/OUT    OUTPUT

       179                                                                CONTROL

       178                                                                INPUT

       177             PA3/RTS0/SPI1_NPCS2                      IN/OUT    OUTPUT

       176                                                                CONTROL

       175                                                                INPUT

       174             PA2/SCK0/SPI1_NPCS1                      IN/OUT    OUTPUT

       173                                                                CONTROL

       172                                                                INPUT

       171             PA4/CTS0/SPI1_NPCS3                      IN/OUT    OUTPUT

       170                                                                CONTROL

       169                                                                INPUT

       168             PA5/RXD1                                 IN/OUT    OUTPUT

       167                                                                CONTROL

       166                                                                CONTROL

       165             PA6/TXD1                                 IN/OUT    INPUT

       164                                                                OUTPUT

       163                                                                CONTROL

       162             PA7/SCK1/SPI0_NPCS1                      IN/OUT    INPUT

       161                                                                OUTPUT

       160             ERASE                                    IN        INPUT

       159                                                                INPUT

       158             PB27/TIOA2/PWM0/AD0                      IN/OUT    OUTPUT

       157                                                                CONTROL

       156                                                                INPUT

       155             PB28/TIOB2/PWM1/AD1                      IN/OUT    OUTPUT

       154                                                                CONTROL

                                                                          SAM7X Series [DATASHEET]                       48

                                                                                   6120K–ATARM–11-Feb-14
Table  12-2.   SAM7X  JTAG Boundary Scan Register  (Continued)

       Bit                                                      Associated BSR

       Number         Pin Name                     Pin Type     Cells

       153                                                      INPUT

       152            PB29/PCK1/PWM2/AD2           IN/OUT       OUTPUT

       151                                                      CONTROL

       150                                                      INPUT

       149            PB30/PCK2/PWM3/AD3           IN/OUT       OUTPUT

       148                                                      CONTROL

       147                                                      INPUT

       146            PA8/RTS1/SPI0_NPCS2          IN/OUT       OUTPUT

       145                                                      CONTROL

       144                                                      INPUT

       143            PA9/CTS1/SPI0_NPCS3          IN/OUT       OUTPUT

       142                                                      CONTROL

       141                                                      INPUT

       140            PA10/TWD                     IN/OUT       OUTPUT

       139                                                      CONTROL

       138                                                      INPUT

       137            PA11/TWCK                    IN/OUT       OUTPUT

       136                                                      CONTROL

       135                                                      INPUT

       134            PA12/SPI0_NPCS0              IN/OUT       OUTPUT

       133                                                      CONTROL

       132                                                      INPUT

       131            PA13/SPI0_NPCS1/PCK1         IN/OUT       OUTPUT

       130                                                      CONTROL

       129                                                      INPUT

       128            PA14/SPI0_NPCS2/IRQ1         IN/OUT       OUTPUT

       127                                                      CONTROL

       126                                                      INPUT

       125            PA15/SPI0_NPCS3/TCLK2        IN/OUT       OUTPUT

       124                                                      CONTROL

       123                                                      INPUT

       122            PA16/SPI0_MISO               IN/OUT       OUTPUT

       121                                                      CONTROL

       120                                                      INPUT

       119            PA17/SPI0_MOSI               IN/OUT       OUTPUT

       118                                                      CONTROL

                                                                SAM7X Series [DATASHEET]        49

                                                                         6120K–ATARM–11-Feb-14
Table  12-2.   SAM7X  JTAG Boundary Scan Register  (Continued)

       Bit                                                        Associated BSR

       Number         Pin Name                     Pin Type       Cells

       117                                                        INPUT

       116            PA18/SPI0_SPCK               IN/OUT         OUTPUT

       115                                                        CONTROL

       114                                                        INPUT

       113            PB9/EMDIO                    IN/OUT         OUTPUT

       112                                                        CONTROL

       111                                                        INPUT

       110            PB8/EMDC                     IN/OUT         OUTPUT

       109                                                        CONTROL

       108                                                        INPUT

       107            PB14/ERX3/SPI0_NPCS2         IN/OUT         OUTPUT

       106                                                        CONTROL

       105                                                        INPUT

       104            PB13/ERX2/SPI0_NPCS1         IN/OUT         OUTPUT

       103                                                        CONTROL

       102                                                        INPUT

       101            PB6/ERX1                     IN/OUT         OUTPUT

       100                                                        CONTROL

       99                                                         INPUT

       98             PB5/ERX0                     IN/OUT         OUTPUT

       97                                                         CONTROL

       96                                                         INPUT

       95             PB15/ERXDV/ECRSDV            IN/OUT         OUTPUT

       94                                                         CONTROL

       93                                                         INPUT

       92             PB17/ERXCK/SPI0_NPCS3        IN/OUT         OUTPUT

       91                                                         CONTROL

       90                                                         INPUT

       89             PB7/ERXER                    IN/OUT         OUTPUT

       88                                                         CONTROL

       87                                                         INPUT

       86             PB12/ETXER/TCLK0             IN/OUT         OUTPUT

       85                                                         CONTROL

       84                                                         INPUT

       83             PB0/ETXCK/EREFCK/PCK0        PB0/ETXCK/ERE  OUTPUT

                                                   FCK/PCK0

       82                                                         CONTROL

                                                                  SAM7X Series [DATASHEET]        50

                                                                           6120K–ATARM–11-Feb-14
Table  12-2.   SAM7X  JTAG Boundary Scan Register  (Continued)

       Bit                                                      Associated BSR

       Number         Pin Name                     Pin Type     Cells

       81                                                       INPUT

       80             PB1/ETXEN                    PB1/ETXEN    OUTPUT

       79                                                       CONTROL

       78                                                       INPUT

       77             PB2/ETX0                     PB2/ETX0     OUTPUT

       76                                                       CONTROL

       75                                                       INPUT

       74             PB3/ETX1                     PB3/ETX1     OUTPUT

       73                                                       CONTROL

       72                                                       INPUT

       71             PB10/ETX2/SPI1_NPCS1         IN/OUT       OUTPUT

       70                                                       CONTROL

       69                                                       INPUT

       68             PB11/ETX3/SPI1_NPCS2         IN/OUT       OUTPUT

       67                                                       CONTROL

       66                                                       INPUT

       65             PA19/CANRX                   IN/OUT       OUTPUT

       64                                                       CONTROL

       63                                                       INPUT

       62             PA20/CANTX                   IN/OUT       OUTPUT

       61                                                       CONTROL

       60                                                       INPUT

       59             PA21/TF/SPI1_NPCS0           IN/OUT       OUTPUT

       58                                                       CONTROL

       57                                                       INPUT

       56             PA22/TK/SPI1_SPCK            IN/OUT       OUTPUT

       55                                                       CONTROL

       54                                                       INPUT

       53             PB16/ECOL/SPI1_NPCS3         IN/OUT       OUTPUT

       52                                                       CONTROL

       51                                                       INPUT

       50             PB4/ECRS                     IN/OUT       OUTPUT

       49                                                       CONTROL

       48                                                       INPUT

       47             PA23/TD/SPI1_MOSI            IN/OUT       OUTPUT

       46                                                       CONTROL

                                                                SAM7X Series [DATASHEET]        51

                                                                         6120K–ATARM–11-Feb-14
Table  12-2.   SAM7X  JTAG Boundary Scan Register  (Continued)

       Bit                                                      Associated BSR

       Number         Pin Name                     Pin Type     Cells

       45                                                       INPUT

       44             PA24/RD/SPI1_MISO            IN/OUT       OUTPUT

       43                                                       CONTROL

       42                                                       INPUT

       41             PA25/RK/SPI1_NPCS1           IN/OUT       OUTPUT

       40                                                       CONTROL

       39                                                       INPUT

       38             PA26/RF/SPI1_NPCS2           IN/OUT       OUTPUT

       37                                                       CONTROL

       36                                                       INPUT

       35             PB18/EF100/ADTRG             IN/OUT       OUTPUT

       34                                                       CONTROL

       33                                                       INPUT

       32             PB19/PWM0/TCLK1              IN/OUT       OUTPUT

       31                                                       CONTROL

       30                                                       INPUT

       29             PB20/PWM1/PCK0               IN/OUT       OUTPUT

       28                                                       CONTROL

       27                                                       INPUT

       26             PB21/PWM2/PCK2               IN/OUT       OUTPUT

       25                                                       CONTROL

       24                                                       INPUT

       23             PB22/PWM3/PCK2               IN/OUT       OUTPUT

       22                                                       CONTROL

       21                                                       INPUT

       20             PB23/TIOA0/DCD1              IN/OUT       OUTPUT

       19                                                       CONTROL

       18                                                       INPUT

       17             PB24/TIOB0/DSR1              IN/OUT       OUTPUT

       16                                                       CONTROL

       15                                                       INPUT

       14             PB25/TIOA1/DTR1              IN/OUT       OUTPUT

       13                                                       CONTROL

       12                                                       INPUT

       11             PB26/TIOB1/RI1               IN/OUT       OUTPUT

       10                                                       CONTROL

                                                                SAM7X Series [DATASHEET]        52

                                                                         6120K–ATARM–11-Feb-14
Table  12-2.   SAM7X  JTAG Boundary Scan Register  (Continued)

       Bit                                                      Associated BSR

       Number         Pin Name                     Pin Type     Cells

       9                                                        INPUT

       8              PA27DRXD/PCK3                IN/OUT       OUTPUT

       7                                                        CONTROL

       6                                                        INPUT

       5              PA28/DTXD                    IN/OUT       OUTPUT

       4                                                        CONTROL

       3                                                        INPUT

       2              PA29/FIQ/SPI1_NPCS3          IN/OUT       OUTPUT

       1                                                        CONTROL

                                                                SAM7X Series [DATASHEET]        53

                                                                         6120K–ATARM–11-Feb-14
12.5.5     ID Code Register

Access: Read-only

        31         30                 29       28                27  26           25            24

                             VERSION                                 PART NUMBER

        23         22                 21       20                19  18           17            16

                                               PART NUMBER

        15         14                 13       12                11  10           9             8

                      PART NUMBER                                    MANUFACTURER IDENTITY

        7          6                  5        4                 3   2            1             0

                                          MANUFACTURER IDENTITY                                 1

•  VERSION[31:28]: Product Version Number

Set to 0x0.

•  PART NUMBER[27:12]: Product Part Number

AT91SAM7X512: 0x5B18

AT91SAM7X256: 0x5B17

AT91SAM7X128: 0x5B16

•  MANUFACTURER IDENTITY[11:1]

Set to 0x01F.

Bit[0] Required by IEEE Std. 1149.1.

Set to 0x1.

AT91SAM7X512: JTAG ID Code value is 05B1_803F

AT91SAM7X256: JTAG ID Code value is 05B1_703F

AT91SAM7X128: JTAG ID Code value is 05B1_603F

                                                                     SAM7X Series [DATASHEET]       54

                                                                         6120K–ATARM–11-Feb-14
13.   Reset Controller (RSTC)

      The Reset Controller (RSTC), based on power-on reset cells, handles all the resets of the system without any external

      components. It reports which reset occurred last.

      The Reset Controller also drives independently or simultaneously the external reset and the peripheral and processor

      resets.

      A brownout detection is also available to prevent the processor from falling into an unpredictable state.

13.1  Block Diagram

      Figure 13-1.  Reset Controller Block Diagram

                                                         Reset Controller

                    bod_rst_en                           Brownout  bod_reset

                    brown_out                            Manager

                                                                                 Reset

                                                                                 State    rstc_irq

                    Main Supply                          Startup                 Manager

                     POR                                 Counter

                                                                                          proc_nreset

                                                                   user_reset

                          NRST

                                                         NRST                             periph_nreset

                                                         Manager

                                 nrst_out                          exter_nreset

                    WDRPROC

                     wd_fault

                                                                                 SLCK

                                                                                          SAM7X Series [DATASHEET]           55

                                                                                          6120K–ATARM–11-Feb-14
13.2      Functional Description

13.2.1    Reset Controller Overview

          The Reset Controller is made up of an NRST Manager, a Brownout Manager, a Startup Counter and a Reset State

          Manager. It runs at Slow Clock and generates the following reset signals:

            proc_nreset: Processor reset line. It also resets the Watchdog Timer.

            periph_nreset: Affects the whole set of embedded peripherals.

            nrst_out: Drives the NRST pin.

          These reset signals are asserted by the Reset Controller, either on external events or on software action. The Reset

          State Manager controls the generation of reset signals and provides a signal to the NRST Manager when an assertion of

          the NRST pin is required.

          The NRST Manager shapes the NRST assertion during a programmable time, thus controlling external device resets.

          The startup counter waits for the complete crystal oscillator startup. The wait delay is given by the crystal oscillator

          startup time maximum value that can be found in the section Crystal Oscillator Characteristics in the Electrical

          Characteristics section of the product documentation.

13.2.2    NRST Manager

          The NRST Manager samples the NRST input pin and drives this pin low when required by the Reset State Manager.

          Figure 13-2 shows the block diagram of the NRST Manager.

          Figure 13-2.  NRST  Manager

                                                                          RSTC_MR

                                             RSTC_SR                             URSTIEN

                                             URSTS

                                                                                                            rstc_irq

                                                    NRSTL        RSTC_MR             Other

                                                                 URSTEN              interrupt

                                                                                     sources

                                                                                                user_reset

                              NRST                               RSTC_MR

                                                                 ERSTL

                                             nrst_out      External Reset Timer                 exter_nreset

13.2.2.1  NRST Signal or Interrupt

          The NRST Manager samples the NRST pin at Slow Clock speed. When the line is detected low, a User Reset is reported

          to the Reset State Manager.

          However, the NRST Manager can be programmed to not trigger a reset when an assertion of NRST occurs. Writing the

          bit URSTEN at 0 in RSTC_MR disables the User Reset trigger.

          The level of the pin NRST can be read at any time in the bit NRSTL (NRST level) in RSTC_SR. As soon as the pin NRST

          is asserted, the bit URSTS in RSTC_SR is set. This bit clears only when RSTC_SR is read.

          The Reset Controller can also be programmed to generate an interrupt instead of generating a reset. To do so, the bit

          URSTIEN in RSTC_MR must be written at 1.

13.2.2.2  NRST External Reset Control

          The Reset State Manager asserts the signal ext_nreset to assert the NRST pin. When this occurs, the “nrst_out” signal is

          driven low by the NRST Manager for a time programmed by the field ERSTL in RSTC_MR. This assertion duration,

          named EXTERNAL_RESET_LENGTH, lasts 2(ERSTL+1) Slow Clock cycles. This gives the approximate duration of an

          assertion between 60 µs and 2 seconds. Note that ERSTL at 0 defines a two-cycle duration for the NRST pulse.

                                                                                                SAM7X Series [DATASHEET]            56

                                                                                                            6120K–ATARM–11-Feb-14
        This feature allows the Reset Controller to shape the NRST pin level, and thus to guarantee that the NRST line is driven

        low for a time compliant with potential external devices connected on the system reset.

13.2.3  Brownout Manager

        Brownout detection prevents the processor from falling into an unpredictable state if the power supply drops below a

        certain level. When VDDCORE drops below the brownout threshold, the brownout manager requests a brownout reset

        by asserting the bod_reset signal.

        The programmer can disable the brownout reset by setting low the bod_rst_en input signal, i.e.; by locking the

        corresponding general-purpose NVM bit in the Flash. When the brownout reset is disabled, no reset is performed.

        Instead, the brownout detection is reported in the bit BODSTS of RSTC_SR. BODSTS is set and clears only when

        RSTC_SR is read.

        The bit BODSTS can trigger an interrupt if the bit BODIEN is set in the RSTC_MR.

        At factory, the brownout reset is disabled.

        Figure 13-3.  Brownout Manager

                          bod_rst_en

                                                                                                 bod_reset

                                                              RSTC_MR

                                                              BODIEN

                                                     RSTC_SR

                          brown_out                  BODSTS                                      rstc_irq

                                                                       Other

                                                                       interrupt

                                                                       sources

                                                                                          SAM7X Series [DATASHEET]                 57

                                                                                                            6120K–ATARM–11-Feb-14
13.2.4    Reset States

          The Reset State Manager handles the different reset sources and generates the internal reset signals. It reports the reset

          status in the field RSTTYP of the Status Register (RSTC_SR). The update of the field RSTTYP is performed when the

          processor reset is released.

13.2.4.1  Power-up Reset

          When VDDCORE is powered on, the Main Supply POR cell output is filtered with a start-up counter that operates at Slow

          Clock. The purpose of this counter is to ensure that the Slow Clock oscillator is stable before starting up the device.

          The startup time, as shown in Figure 13-4, is hardcoded to comply with the Slow Clock Oscillator startup time. After the

          startup time, the reset signals are released and the field RSTTYP in RSTC_SR reports a Power-up Reset.

          When VDDCORE is detected low by the Main Supply POR Cell, all reset signals are asserted immediately.

Figure 13-4.  Power-up Reset

              SLCK

              MCK                                                            Any

                                                                             Freq.

              Main Supply

              POR output                Startup Time

                                                      Processor Startup

                                                      = 3 cycles

              proc_nreset

          periph_nreset

              NRST

              (nrst_out)

                                                      EXTERNAL RESET LENGTH

                                                      = 2 cycles

                                                                             SAM7X Series [DATASHEET]                                 58

                                                                             6120K–ATARM–11-Feb-14
13.2.4.2  User Reset

          The User Reset is entered when a low level is detected on the NRST pin and the bit URSTEN in RSTC_MR is at 1. The

          NRST input signal is resynchronized with SLCK to insure proper behavior of the system.

          The User Reset is entered as soon as a low level is detected on NRST. The Processor Reset and the Peripheral Reset

          are asserted.

          The User Reset is left when NRST rises, after a two-cycle resynchronization time and a three-cycle processor startup.

          The processor clock is re-enabled as soon as NRST is confirmed high.

          When the processor reset signal is released, the RSTTYP field of the Status Register (RSTC_SR) is loaded with the

          value 0x4, indicating a User Reset.

          The NRST Manager guarantees that the NRST line is asserted for EXTERNAL_RESET_LENGTH Slow Clock cycles, as

          programmed in the field ERSTL. However, if NRST does not rise after EXTERNAL_RESET_LENGTH because it is

          driven low externally, the internal reset lines remain asserted until NRST actually rises.

Figure 13-5.  User Reset State

              SLCK

              MCK               Any

                                Freq.

              NRST

                                Resynch.                                 Resynch.  Processor Startup

                                2 cycles                                 2 cycles  = 3 cycles

              proc_nreset

              RSTTYP            Any                                      XXX                          0x4 = User Reset

              periph_nreset

              NRST

              (nrst_out)

                                               >= EXTERNAL RESET LENGTH

                                                                                   SAM7X Series [DATASHEET]                      59

                                                                                                      6120K–ATARM–11-Feb-14
13.2.4.3  Brownout Reset

          When the brown_out/bod_reset signal is asserted, the Reset State Manager immediately enters the Brownout Reset. In

          this state, the processor, the peripheral and the external reset lines are asserted.

          The Brownout Reset is left 3 Slow Clock cycles after the rising edge of brown_out/bod_reset after a two-cycle

          resynchronization. An external reset is also triggered.

          When the processor reset is released, the field RSTTYP in RSTC_SR is loaded with the value 0x5, thus indicating that

          the last reset is a Brownout Reset.

Figure 13-6.  Brownout Reset State

              SLCK

              MCK            Any

                             Freq.

              brown_out

              or bod_reset

                                               Resynch.            Processor Startup

                                               2 cycles            = 3 cycles

              proc_nreset

              RSTTYP                Any        XXX                                                        0x5 = Brownout Reset

              periph_nreset

              NRST

              (nrst_out)

                                                                               EXTERNAL RESET LENGTH

                                                                                      8 cycles (ERSTL=2)

                                                                                                SAM7X Series [DATASHEET]         60

                                                                                                          6120K–ATARM–11-Feb-14
13.2.4.4  Software Reset

          The Reset Controller offers several commands used to assert the different reset signals. These commands are

          performed by writing the Control Register (RSTC_CR) with the following bits at 1:

            PROCRST: Writing PROCRST at 1 resets the processor and the watchdog timer.

            PERRST: Writing PERRST at 1 resets all the embedded peripherals, including the memory system, and, in

             particular, the Remap Command. The Peripheral Reset is generally used for debug purposes.

             Except for Debug purposes, PERRST must always be used in conjuction with PROCRST (PERRST and

             PROCRST set both at 1 simultaneously).

            EXTRST: Writing EXTRST at 1 asserts low the NRST pin during a time defined by the field ERSTL in the Mode

             Register (RSTC_MR).

          The software reset is entered if at least one of these bits is set by the software. All these commands can be performed

          independently or simultaneously. The software reset lasts 3 Slow Clock cycles.

          The internal reset signals are asserted as soon as the register write is performed. This is detected on the Master Clock

          (MCK). They are released when the software reset is left, i.e.; synchronously to SLCK.

          If EXTRST is set, the nrst_out signal is asserted depending on the programming of the field ERSTL. However, the

          resulting falling edge on NRST does not lead to a User Reset.

          If and only if the PROCRST bit is set, the Reset Controller reports the software status in the field RSTTYP of the Status

          Register (RSTC_SR). Other Software Resets are not reported in RSTTYP.

          As soon as a software operation is detected, the bit SRCMP (Software Reset Command in Progress) is set in the Status

          Register (RSTC_SR). It is cleared as soon as the software reset is left. No other software reset can be performed while

          the SRCMP bit is set, and writing any value in RSTC_CR has no effect.

          Figure 13-7.  Software Reset

                                  SLCK

                                        MCK  Any

                                             Freq.

                          Write RSTC_CR

                                                         Resynch.  Processor Startup

                                                         1 cycle         = 3 cycles

                          proc_nreset

                          if PROCRST=1

                                  RSTTYP            Any            XXX                                    0x3  =  Software  Reset

                          periph_nreset

                          if PERRST=1

                                  NRST

                          (nrst_out)

                          if EXTRST=1

                                                                                     EXTERNAL RESET LENGTH

                                                                                      8 cycles (ERSTL=2)

                          SRCMP in RSTC_SR

                                                                                                          SAM7X Series [DATASHEET]                        61

                                                                                                                                   6120K–ATARM–11-Feb-14
13.2.4.5  Watchdog Reset

          The Watchdog Reset is entered when a watchdog fault occurs. This state lasts 3 Slow Clock cycles.

          When in Watchdog Reset, assertion of the reset signals depends on the WDRPROC bit in WDT_MR:

            If WDRPROC is 0, the Processor Reset and the Peripheral Reset are asserted. The NRST line is also asserted,

             depending on the programming of the field ERSTL. However, the resulting low level on NRST does not result in a

             User Reset state.

            If WDRPROC = 1, only the processor reset is asserted.

          The Watchdog Timer is reset by the proc_nreset signal. As the watchdog fault always causes a processor reset if

          WDRSTEN is set, the Watchdog Timer is always reset after a Watchdog Reset, and the Watchdog is enabled by default

          and with a period set to a maximum.

          When the WDRSTEN in WDT_MR bit is reset, the watchdog fault has no impact on the reset controller.

          Figure 13-8.  Watchdog Reset

                                        SLCK

                                        MCK     Any

                                                Freq.

                                 wd_fault

                                                                    Processor Startup

                                                                    = 3 cycles

                                 proc_nreset

                                 RSTTYP                Any          XXX                0x2 = Watchdog      Reset

                                 periph_nreset

                        Only if

             WDRPROC = 0                NRST

                                 (nrst_out)

                                                                         EXTERNAL RESET LENGTH

                                                                                       8 cycles (ERSTL=2)

                                                                                       SAM7X Series [DATASHEET]                   62

                                                                                                           6120K–ATARM–11-Feb-14
13.2.5  Reset State Priorities

        The Reset State Manager manages the following priorities between the different reset sources, given in descending

        order:

               Power-up Reset

               Brownout Reset

               Watchdog Reset

               Software Reset

               User Reset

        Particular cases are listed below:

               When in User Reset:

                  A watchdog event is impossible because the Watchdog Timer is being reset by    the  proc_nreset  signal.

                  A software reset is impossible, since the processor reset is being activated.

               When in Software Reset:

                  A watchdog event has priority over the current state.

                  The NRST has no effect.

               When in Watchdog Reset:

                  The processor reset is active and so a Software Reset cannot be programmed.

                  A User Reset cannot be entered.

                                                                          SAM7X Series [DATASHEET]                           63

                                                                                                  6120K–ATARM–11-Feb-14
13.2.6  Reset Controller Status Register

        The    Reset Controller status register (RSTC_SR) provides several status fields:

              RSTTYP field: This field gives the type of the last reset, as explained in previous sections.

              SRCMP bit: This field indicates that a Software Reset Command is in progress and that no further software reset

               should be performed until the end of the current one. This bit is automatically cleared at the end of the current

               software reset.

              NRSTL bit: The NRSTL bit of the Status Register gives the level of the NRST pin sampled on each MCK rising

               edge.

              URSTS bit: A high-to-low transition of the NRST pin sets the URSTS bit of the RSTC_SR register. This transition is

               also detected on the Master Clock (MCK) rising edge (see Figure 13-9). If the User Reset is disabled (URSTEN =

               0) and if the interruption is enabled by the URSTIEN bit in the RSTC_MR register, the URSTS bit triggers an

               interrupt. Reading the RSTC_SR status register resets the URSTS bit and clears the interrupt.

              BODSTS bit: This bit indicates a brownout detection when the brownout reset is disabled (bod_rst_en = 0). It

               triggers an interrupt if the bit BODIEN in the RSTC_MR register enables the interrupt. Reading the RSTC_SR

               register resets the BODSTS bit and clears the interrupt.

Figure 13-9.   Reset Controller Status and Interrupt

               MCK

                                                                                            read

            Peripheral Access                                                               RSTC_SR

                                2 cycle                                  2 cycle

                               resynchronization                         resynchronization

               NRST

               NRSTL

               URSTS

               rstc_irq

        if  (URSTEN = 0) and

               (URSTIEN = 1)

                                                                                            SAM7X Series [DATASHEET]                 64

                                                                                                              6120K–ATARM–11-Feb-14
13.3    Reset Controller (RSTC)  User  Interface

Table 13-1.  Register Mapping

Offset       Register                             Name     Access      Reset

0x00         Control Register                     RSTC_CR  Write-only  -

0x04         Status Register                      RSTC_SR  Read-only   0x0000_0000

0x08         Mode Register                        RSTC_MR  Read-write  0x0000_0000

                                                           SAM7X Series [DATASHEET]           65

                                                                       6120K–ATARM–11-Feb-14
13.3.1  Reset Controller Control Register

Register Name:    RSTC_CR

Access Type:      Write-only

        31        30          29                       28                    27                 26          25                     24

                                                                 KEY

        23        22          21                       20                    19                 18          17                     16

        –         –           –                        –                     –                  –           –                      –

        15        14          13                       12                    11                 10          9                      8

        –         –           –                        –                     –                  –                                  –

        7         6           5                        4                     3                  2           1                      0

        –         –           –                        –                     EXTRST             PERRST      –   PROCRST

•  PROCRST: Processor Reset

0 = No effect.

1 = If KEY is correct, resets the processor.

•  PERRST: Peripheral Reset

0 = No effect.

1 = If KEY is correct, resets the peripherals.

•  EXTRST: External Reset

0 = No effect.

1 = If KEY is correct, asserts the NRST pin.

•  KEY: Password

Should be written at value 0xA5. Writing any    other  value in  this field  aborts the  write  operation.

                                                                                                SAM7X       Series [DATASHEET]         66

                                                                                                            6120K–ATARM–11-Feb-14
13.3.2     Reset Controller Status Register

Register Name:      RSTC_SR

Access Type:        Read-only

        31          30         29                    28        27                        26             25                     24

        –           –                 –              –               –                   –              –                      –

        23          22         21                    20        19                        18             17                     16

        –           –                 –              –               –                   –              SRCMP     NRSTL

        15          14         13                    12        11                        10             9                      8

        –           –                 –              –               –                                  RSTTYP

        7           6                 5              4               3                   2              1                      0

        –           –                 –              –               –                   –              BODSTS    URSTS

•  URSTS: User Reset Status

0 = No high-to-low edge on NRST happened since the last read of RSTC_SR.

1 = At least one high-to-low transition of NRST has been detected since the last read of RSTC_SR.

•  BODSTS: Brownout Detection Status

0 = No brownout high-to-low transition happened since the last read of RSTC_SR.

1 = A brownout high-to-low transition has been detected since the last read of RSTC_SR.

•  RSTTYP: Reset Type

Reports the cause of the last processor reset. Reading this RSTC_SR does not reset this field.

            RSTTYP        Reset Type                 Comments

   0        0       0     Power-up Reset             VDDCORE rising

   0        1       0     Watchdog Reset             Watchdog fault occurred

   0        1       1     Software Reset             Processor reset required by the software

   1        0       0     User Reset                 NRST pin detected low

   1        0       1     Brownout Reset             Brownout reset occurred

•  NRSTL: NRST Pin Level

Registers the NRST Pin Level at Master Clock (MCK).

•  SRCMP: Software Reset Command in Progress

0 = No software command is being performed by the reset controller. The reset controller is ready for a software  command.

1 = A software reset command is being performed by the reset controller. The reset controller is busy.

                                                                                         SAM7X Series [DATASHEET]                  67

                                                                                                        6120K–ATARM–11-Feb-14
13.3.3     Reset Controller Mode Register

Register Name:    RSTC_MR

Access Type:      Read-write

        31        30             29                       28             27       26                       25                     24

                                                               KEY

        23        22             21                       20             19       18                       17                     16

        –         –              –                        –              –        –                        –           BODIEN

        15        14             13                       12             11       10                       9                      8

        –         –              –                        –                                         ERSTL

        7         6              5                        4              3        2                        1                      0

        –         –                               URSTIEN                –        –                        –           URSTEN

•  URSTEN: User Reset Enable

0 = The detection of a low level on the pin NRST does not generate a User Reset.

1 = The detection of a low level on the pin NRST triggers a User Reset.

•  URSTIEN: User Reset Interrupt Enable

0 = USRTS bit in RSTC_SR at 1 has no effect on rstc_irq.

1 = USRTS bit in RSTC_SR at 1 asserts rstc_irq if URSTEN = 0.

•  BODIEN: Brownout Detection Interrupt Enable

0 = BODSTS bit in RSTC_SR at 1 has no effect on rstc_irq.

1 = BODSTS bit in RSTC_SR at 1 asserts rstc_irq.

•  ERSTL: External Reset Length

This field defines the external reset length. The external reset is asserted during a time of 2(ERSTL+1)  Slow  Clock  cycles. This

allows assertion duration to be programmed between 60 µs and 2 seconds.

•  KEY: Password

Should be written at value 0xA5. Writing any other value in this field aborts the write operation.

                                                                                  SAM7X Series [DATASHEET]                            68

                                                                                                           6120K–ATARM–11-Feb-14
14.   Real-time Timer (RTT)

14.1  Overview

      The Real-time Timer is built around a 32-bit counter   and  used to count elapsed  seconds. It generates a periodic      interrupt

      or/and triggers an alarm on a programmed value.

14.2  Block Diagram

Figure 14-1.  Real-time Timer

      RTT_MR          RTT_MR

      RTTRST          RTPRES

                                                                                         RTT_MR

SLCK          reload                                                                     RTTINCIEN

                      16-bit

              Divider                             0                        set

                               RTT_MR                             RTT_SR   RTTINC

                               RTTRST             1  0                     reset

                                                                                                                               rtt_int

                                                     32-bit

                                                  Counter            read                RTT_MR

                                                                  RTT_SR

                                                                                         ALMIEN

                               RTT_VR                CRTV                  reset

                                                                  RTT_SR        ALMS

                                                                           set

                                                                                                    rtt_alarm

                                                                  =

                               RTT_AR                ALMV

14.3  Functional Description

      The Real-time Timer is used to count elapsed seconds. It is built around a 32-bit counter fed by Slow Clock divided by a

      programmable 16-bit value. The value can be programmed in the field RTPRES of the Real-time Mode Register

      (RTT_MR).

      Programming RTPRES at 0x00008000 corresponds to feeding the real-time counter with a 1 Hz signal (if the Slow Clock

      is 32.768 Hz). The 32-bit counter can count up to 232 seconds, corresponding to more than 136 years, then roll over to 0.

      The Real-time Timer can also be used as a free-running timer with a lower time-base. The best accuracy is achieved by

      writing RTPRES to 3. Programming RTPRES to 1 or 2 is possible, but may result in losing status events because the

      status register is cleared two Slow Clock cycles after read. Thus if the RTT is configured to trigger an interrupt, the

      interrupt occurs during 2 Slow Clock cycles after reading RTT_SR. To prevent several executions of the interrupt

      handler, the interrupt must be disabled in the interrupt handler and re-enabled when the status register is clear.

      The Real-time Timer value (CRTV) can be read at any time in the register RTT_VR (Real-time Value Register). As this

      value can be updated asynchronously from the Master Clock, it is advisable to read this register twice at the same value

      to improve accuracy of the returned value.

                                                                                         SAM7X Series [DATASHEET]                       69

                                                                                         6120K–ATARM–11-Feb-14
        The current value of the counter is compared with the value written in the alarm register RTT_AR (Real-time Alarm

        Register). If the counter value matches the alarm, the bit ALMS in RTT_SR is set. The alarm register is set to its

        maximum value, corresponding to 0xFFFF_FFFF, after a reset.

        The bit RTTINC in RTT_SR is set each time the Real-time Timer counter is incremented. This bit can be used to start a

        periodic interrupt, the period being one second when the RTPRES is programmed with 0x8000 and Slow Clock equal to

        32.768 Hz.

        Reading the RTT_SR status register resets the RTTINC and ALMS fields.

        Writing the bit RTTRST in RTT_MR immediately reloads and restarts the clock divider with the new programmed value.

        This also resets the 32-bit counter.

        Note:  Because of the asynchronism between the Slow Clock (SCLK) and the System Clock (MCK):

               1) The restart of the counter and the reset of the RTT_VR current value register is effective only 2 slow clock

               cycles after the write of the RTTRST bit in the RTT_MR register.

               2) The status register flags reset is taken into account only 2 slow clock cycles after the read of the RTT_SR

               (Status Register).

Figure  14-2.  RTT Counting

                                                   APB cycle                                    APB cycle

                    MCK

                    RTPRES - 1

                    Prescaler

                             0

                    RTT            0          ...  ALMV-1            ALMV  ALMV+1       ALMV+2  ALMV+3

               RTTINC (RTT_SR)

               ALMS (RTT_SR)

               APB Interface

                                                                           read RTT_SR

                                                                                        SAM7X Series [DATASHEET]                70

                                                                                                6120K–ATARM–11-Feb-14
14.4    Real-time Timer (RTT)  User  Interface

Table 14-1.  Register Mapping

Offset       Register                           Name    Access      Reset Value

0x00         Mode Register                      RTT_MR  Read-write  0x0000_8000

0x04         Alarm Register                     RTT_AR  Read-write  0xFFFF_FFFF

0x08         Value Register                     RTT_VR  Read-only   0x0000_0000

0x0C         Status Register                    RTT_SR  Read-only   0x0000_0000

                                                        SAM7X Series [DATASHEET]           71

                                                                    6120K–ATARM–11-Feb-14
14.4.1  Real-time Timer Mode Register

Register Name:  RTT_MR

Access Type:    Read-write

        31      30                  29                    28            27      26                       25                     24

        –       –                   –                     –             –               –                –                      –

        23      22                  21                    20            19      18                       17                     16

        –       –                   –                     –             –       RTTRST               RTTINCIEN     ALMIEN

        15      14                  13                    12            11      10                       9                      8

                                                              RTPRES

        7       6                   5                     4             3               2                1                      0

                                                              RTPRES

•  RTPRES: Real-time Timer Prescaler Value

Defines the number of SLCK periods required to increment the real-time  timer.  RTPRES  is  defined  as  follows:

RTPRES = 0: The Prescaler Period is equal to 216

RTPRES ≠ 0: The Prescaler Period is equal to RTPRES.

•  ALMIEN: Alarm Interrupt Enable

0 = The bit ALMS in RTT_SR has no effect on interrupt.

1 = The bit ALMS in RTT_SR asserts interrupt.

•  RTTINCIEN: Real-time Timer Increment Interrupt Enable

0 = The bit RTTINC in RTT_SR has no effect on interrupt.

1 = The bit RTTINC in RTT_SR asserts interrupt.

•  RTTRST: Real-time Timer Restart

1 = Reloads and restarts the clock divider with the new programmed value. This also resets the 32-bit counter.

                                                                                        SAM7X Series [DATASHEET]                    72

                                                                                                         6120K–ATARM–11-Feb-14
14.4.2  Real-time Timer Alarm Register

Register Name:        RTT_AR

Access Type:          Read-write

        31      30                29               28                27  26     25                     24

                                                       ALMV

        23      22                21               20                19  18     17                     16

                                                       ALMV

        15      14                13               12                11  10     9                      8

                                                       ALMV

        7             6           5                4                 3   2      1                      0

                                                       ALMV

•  ALMV: Alarm Value

Defines the alarm value (ALMV+1) compared with the Real-time Timer.

14.4.3  Real-time Timer Value Register

Register Name:        RTT_VR

Access Type:          Read-only

        31      30                29               28                27  26     25                     24

                                                       CRTV

        23      22                21               20                19  18     17                     16

                                                       CRTV

        15      14                13               12                11  10     9                      8

                                                       CRTV

        7             6           5                4                 3   2      1                      0

                                                       CRTV

•  CRTV: Current Real-time Value

Returns the current value of the Real-time Timer.

                                                                         SAM7X  Series [DATASHEET]         73

                                                                                6120K–ATARM–11-Feb-14
14.4.4     Real-time Timer Status Register

Register Name:  RTT_SR

Access Type:    Read-only

        31      30               29         28                           27          26     25                     24

        –       –                –          –                            –           –      –                      –

        23      22               21         20                           19          18     17                     16

        –       –                –          –                            –           –      –                      –

        15      14               13         12                           11          10     9                      8

        –       –                –          –                            –           –      –                      –

        7       6                5          4                            3           2      1                      0

        –       –                –          –                            –           –      RTTINC  ALMS

•  ALMS: Real-time Alarm Status

0 = The Real-time Alarm has not occurred since the last read of RTT_SR.

1 = The Real-time Alarm occurred since the last read of RTT_SR.

•  RTTINC: Real-time Timer Increment

0 = The Real-time Timer has not been incremented since the last read of the RTT_SR.

1 = The Real-time Timer has been incremented since the last read of the RTT_SR.

                                                                                     SAM7X  Series [DATASHEET]         74

                                                                                            6120K–ATARM–11-Feb-14
15.     Periodic Interval Timer (PIT)

15.1    Overview

        The Periodic Interval Timer (PIT) provides  the operating system’s scheduler interrupt.  It  is  designed  to  offer  maximum

        accuracy and efficient management, even     for systems with long response time.

15.2    Block Diagram

Figure  15-1.   Periodic Interval Timer

                                                    PIT_MR

                                                    PIV

                                                    =?                                                                  PIT_MR

                                                                                                                        PITIEN

                                                                                                         set

                                                              0                                  PIT_SR  PITS                   pit_irq

                                                                                                         reset

                                         0                    0  1

                        0                1                       12-bit

                                                                 Adder

                                                                                                         read PIT_PIVR

        MCK             20-bit

                        Counter

                MCK/16  CPIV                        PIT_PIVR  PICNT

     Prescaler

                        CPIV                        PIT_PIIR     PICNT

                                                                                          SAM7X Series [DATASHEET]                       75

                                                                                                         6120K–ATARM–11-Feb-14
15.3    Functional Description

        The Periodic Interval Timer aims at providing periodic interrupts for use by operating systems.

        The PIT provides a programmable overflow counter and a reset-on-read feature. It is built around two counters: a 20-bit

        CPIV counter and a 12-bit PICNT counter. Both counters work at Master Clock /16.

        The first 20-bit CPIV counter increments from 0 up to a programmable overflow value set in the field PIV of the Mode

        Register (PIT_MR). When the counter CPIV reaches this value, it resets to 0 and increments the Periodic Interval

        Counter, PICNT. The status bit PITS in the Status Register (PIT_SR) rises and triggers an interrupt, provided the

        interrupt is enabled (PITIEN in PIT_MR).

        Writing a new PIV value in PIT_MR does not reset/restart the counters.

        When CPIV and PICNT values are obtained by reading the Periodic Interval Value Register (PIT_PIVR), the overflow

        counter (PICNT) is reset and the PITS is cleared, thus acknowledging the interrupt. The value of PICNT gives the

        number of periodic intervals elapsed since the last read of PIT_PIVR.

        When CPIV and PICNT values are obtained by reading the Periodic Interval Image Register (PIT_PIIR), there is no effect

        on the counters CPIV and PICNT, nor on the bit PITS. For example, a profiler can read PIT_PIIR without clearing any

        pending interrupt, whereas a timer interrupt clears the interrupt by reading PIT_PIVR.

        The PIT may be enabled/disabled using the PITEN bit in the PIT_MR register (disabled on reset). The PITEN bit only

        becomes effective when the CPIV value is 0. Figure 15-2 illustrates the PIT counting. After the PIT Enable bit is reset

        (PITEN= 0), the CPIV goes on counting until the PIV value is reached, and is then reset. PIT restarts counting, only if the

        PITEN is set again.

        The PIT is stopped when the core enters debug state.

Figure  15-2.  Enabling/Disabling  PIT  with PITEN

                                                                         APB   cycle            APB  cycle

                                                                    MCK

                       15

                                                                                                            restarts  MCK  Prescaler

        MCK Prescaler 0

               PITEN

               CPIV        0       1                PIV  -  1  PIV                 0                                  1

               PICNT                    0                                1                               0

        PITS (PIT_SR)

        APB Interface

                                                                    read PIT_PIVR

                                                                                          SAM7X Series [DATASHEET]                    76

                                                                                                            6120K–ATARM–11-Feb-14
15.4    Periodic Interval Timer (PIT) User     Interface

Table 15-1.  Register Mapping

Offset       Register                          Name       Access      Reset

0x00         Mode Register                     PIT_MR     Read-write  0x000F_FFFF

0x04         Status Register                   PIT_SR     Read-only   0x0000_0000

0x08         Periodic Interval Value Register  PIT_PIVR   Read-only   0x0000_0000

0x0C         Periodic Interval Image Register  PIT_PIIR   Read-only   0x0000_0000

                                                          SAM7X Series [DATASHEET]           77

                                                                      6120K–ATARM–11-Feb-14
15.4.1  Periodic Interval Timer Mode Register

Register Name:  PIT_MR

Access Type:    Read-write

        31      30               29                     28                  27            26       25                     24

        –       –                –                      –                   –             –        PITIEN  PITEN

        23      22               21                     20                  19            18       17                     16

        –       –                –                      –                                     PIV

        15      14               13                     12                  11            10       9                      8

                                                            PIV

        7       6                5                      4                   3             2        1                      0

                                                            PIV

•  PIV: Periodic Interval Value

Defines the value compared with the primary 20-bit counter of the Periodic      Interval  Timer (CPIV). The period is equal to (PIV  +  1).

•  PITEN: Period Interval Timer Enabled

0 = The Periodic Interval Timer is disabled when the PIV value is reached.

1 = The Periodic Interval Timer is enabled.

•  PITIEN: Periodic Interval Timer Interrupt Enable

0 = The bit PITS in PIT_SR has no effect on interrupt.

1 = The bit PITS in PIT_SR asserts interrupt.

                                                                                          SAM7X Series [DATASHEET]                      78

                                                                                                   6120K–ATARM–11-Feb-14
15.4.2  Periodic Interval Timer Status Register

Register Name:  PIT_SR

Access Type:    Read-only

        31      30         29                    28  27                               26     25                     24

        –       –          –                     –   –                                –      –                      –

        23      22         21                    20  19                               18     17                     16

        –       –          –                     –   –                                –      –                      –

        15      14         13                    12  11                               10     9                      8

        –       –          –                     –   –                                –      –                      –

        7       6          5                     4   3                                2      1                      0

        –       –          –                     –   –                                –      –   PITS

•  PITS: Periodic Interval Timer Status

0 = The Periodic Interval timer has not reached PIV since the last read of PIT_PIVR.

1 = The Periodic Interval timer has reached PIV since the last read of PIT_PIVR.

                                                                                      SAM7X  Series [DATASHEET]         79

                                                                                             6120K–ATARM–11-Feb-14
15.4.3  Periodic Interval Timer Value Register

Register Name:  PIT_PIVR

Access Type:    Read-only

        31      30                   29                    28           27        26                  25                     24

                                                               PICNT

        23      22                   21                    20           19        18                  17                     16

                    PICNT                                                                       CPIV

        15      14                   13                    12           11        10                  9                      8

                                                               CPIV

        7       6                    5                     4            3                    2        1                      0

                                                               CPIV

Reading this register clears PITS in PIT_SR.

•  CPIV: Current Periodic Interval Value

Returns the current value of the periodic interval timer.

•  PICNT: Periodic Interval Counter

Returns the number of occurrences of periodic intervals since the last  read  of  PIT_PIVR.

                                                                                             SAM7X Series [DATASHEET]            80

                                                                                                      6120K–ATARM–11-Feb-14
15.4.4  Periodic Interval Timer Image Register

Register Name:  PIT_PIIR

Access Type:    Read-only

        31      30                   29                    28           27        26                  25                     24

                                                               PICNT

        23      22                   21                    20           19        18                  17                     16

                    PICNT                                                                       CPIV

        15      14                   13                    12           11        10                  9                      8

                                                               CPIV

        7       6                    5                     4            3                    2        1                      0

                                                               CPIV

•  CPIV: Current Periodic Interval Value

Returns the current value of the periodic interval timer.

•  PICNT: Periodic Interval Counter

Returns the number of occurrences of periodic intervals since the last  read  of  PIT_PIVR.

                                                                                             SAM7X Series [DATASHEET]            81

                                                                                                      6120K–ATARM–11-Feb-14
16.     Watchdog Timer (WDT)

16.1    Overview

        The Watchdog Timer can be used to prevent system lock-up if the software becomes trapped in a deadlock. It features a

        12-bit down counter that allows a watchdog period of up to 16 seconds (slow clock at 32.768 kHz). It can generate a

        general reset or a processor reset only. In addition, it can be stopped while the processor is in debug mode or idle mode.

16.2    Block Diagram

Figure  16-1.  Watchdog Timer Block Diagram

                   write WDT_MR

                                                        WDT_MR

               WDT_CR                                   WDV

               WDRSTT                           reload

                                                        1         0

                                                        12-bit Down

                                                        Counter

                                 WDT_MR                                reload

                                 WDD                    Current        1/128   SLCK

                                                           Value

                                 <= WDD

                                                                               WDT_MR

                                                                               WDRSTEN

                                                             =0

                                                                                        wdt_fault

                                                                set                     (to Reset Controller)

                                                        WDUNF                           wdt_int

                                         set                    reset

                                 WDERR

               read WDT_SR               reset                                 WDFIEN

               or                                                              WDT_MR

               reset

                                                                               SAM7X Series [DATASHEET]                             82

                                                                                        6120K–ATARM–11-Feb-14
16.3  Functional Description

      The Watchdog Timer can be used to prevent system lock-up if the software becomes trapped in a deadlock. It is supplied

      with VDDCORE. It restarts with initial values on processor reset.

      The Watchdog is built around a 12-bit down counter, which is loaded with the value defined in the field WV of the Mode

      Register (WDT_MR). The Watchdog Timer uses the Slow Clock divided by 128 to establish the maximum Watchdog

      period to be 16 seconds (with a typical Slow Clock of 32.768 kHz).

      After a Processor Reset, the value of WV is 0xFFF, corresponding to the maximum value of the counter with the external

      reset generation enabled (field WDRSTEN at 1 after a Backup Reset). This means that a default Watchdog is running at

      reset, i.e., at power-up. The user must either disable it (by setting the WDDIS bit in WDT_MR) if he does not expect to

      use it or must reprogram it to meet the maximum Watchdog period the application requires.

      The Watchdog Mode Register (WDT_MR) can be written only once. Only a processor reset resets it. Writing the

      WDT_MR register reloads the timer with the newly programmed mode parameters.

      If the watchdog is restarted by writing into the WDT_CR register, the WDT_MR register must not be programmed

      during a period of time of 3 slow clock period following the WDT_CR write access. In any case, programming a

      new value in WDT_MR automatically initiates a restart instruction.

      In normal operation, the user reloads the Watchdog at regular intervals before the timer underflow occurs, by writing the

      Control Register (WDT_CR) with the bit WDRSTT to 1. The Watchdog counter is then immediately reloaded from

      WDT_MR and restarted, and the Slow Clock 128 divider is reset and restarted. The WDT_CR register is write-protected.

      As a result, writing WDT_CR without the correct hard-coded key has no effect. If an underflow does occur, the “wdt_fault”

      signal to the Reset Controller is asserted if the bit WDRSTEN is set in the Mode Register (WDT_MR). Moreover, the bit

      WDUNF is set in the Watchdog Status Register (WDT_SR).

      To prevent a software deadlock that continuously triggers the Watchdog, the reload of the Watchdog must occur while

      the Watchdog counter is within a window between 0 and WDD, WDD is defined in the WatchDog Mode Register

      WDT_MR.

      Any attempt to restart the Watchdog while the Watchdog counter is between WDV and WDD results in a Watchdog error,

      even if the Watchdog is disabled. The bit WDERR is updated in the WDT_SR and the “wdt_fault” signal to the Reset

      Controller is asserted.

      Note that this feature can be disabled by programming a WDD value greater than or equal to the WDV value. In such a

      configuration, restarting the Watchdog Timer is permitted in the whole range [0; WDV] and does not generate an error.

      This is the default configuration on reset (the WDD and WDV values are equal).

      The status bits WDUNF (Watchdog Underflow) and WDERR (Watchdog Error) trigger an interrupt, provided the bit

      WDFIEN is set in the mode register. The signal “wdt_fault” to the reset controller causes a Watchdog reset if the

      WDRSTEN bit is set as already explained in the reset controller programmer Datasheet. In that case, the processor and

      the Watchdog Timer are reset, and the WDERR and WDUNF flags are reset.

      If a reset is generated or if WDT_SR is read, the status bits are reset, the interrupt is cleared, and the “wdt_fault” signal to

      the reset controller is deasserted.

      Writing the WDT_MR reloads and restarts the down counter.

      While the processor is in debug state or in idle mode, the counter may be stopped depending on the value programmed

      for the bits WDIDLEHLT and WDDBGHLT in the WDT_MR.

                                                                                      SAM7X Series [DATASHEET]                          83

                                                                                                 6120K–ATARM–11-Feb-14
Figure 16-2.  Watchdog  Behavior

                                                    Watchdog  Error  Watchdog Underflow

                                                                     if WDRSTEN is 1

FFF

                        Normal behavior                              if WDRSTEN is 0

WDV

Forbidden

Window

WDD

Permitted

Window

        0

                                         WDT_CR  =  WDRSTT

              Watchdog

              Fault

                                                                     SAM7X Series [DATASHEET]  84

                                                                     6120K–ATARM–11-Feb-14
16.4    Watchdog Timer (WDT)           User   Interface

Table 16-1.    Register Mapping

      Offset      Register                                     Name                                Access          Reset Value

        0x00      Control Register                             WDT_CR                              Write-only      -

        0x04      Mode Register                                WDT_MR                          Read-write Once     0x3FFF_2FFF

        0x08      Status Register                              WDT_SR                              Read-only       0x0000_0000

16.4.1  Watchdog Timer Control Register

Register Name:    WDT_CR

Access Type:      Write-only

        31        30                29               28                    27                  26              25                     24

                                                               KEY

        23        22                21               20                    19                  18              17                     16

        –         –                 –                –                     –                   –               –                      –

        15        14                13               12                    11                  10              9                      8

        –         –                 –                –                     –                   –               –                      –

        7         6                 5                4                     3                   2               1                      0

        –         –                 –                –                     –                   –               –   WDRSTT

•  WDRSTT: Watchdog Restart

0: No effect.

1: Restarts the Watchdog.

•  KEY: Password

Should be written at value 0xA5. Writing any  other  value in  this field  aborts  the  write  operation.

                                                                                               SAM7X Series [DATASHEET]                   85

                                                                                                               6120K–ATARM–11-Feb-14
16.4.2     Watchdog Timer Mode Register

Register Name:  WDT_MR

Access Type:    Read-write Once

        31      30                 29                         28        27                 26                25                     24

        –       –                WDIDLEHLT   WDDBGHLT                                          WDD

        23      22                 21                         20        19                 18                17                     16

                                                                  WDD

        15      14                 13                         12        11                 10                9                      8

    WDDIS       WDRPROC          WDRSTEN     WDFIEN                                            WDV

        7       6                  5                          4         3                  2                 1                      0

                                                                  WDV

•   WDV: Watchdog Counter Value

Defines the value loaded in the 12-bit Watchdog Counter.

•   WDFIEN: Watchdog Fault Interrupt Enable

0:  A Watchdog fault (underflow or error) has no effect on interrupt.

1:  A Watchdog fault (underflow or error) asserts interrupt.

•   WDRSTEN: Watchdog Reset Enable

0:  A Watchdog fault (underflow or error) has no effect on the resets.

1:  A Watchdog fault (underflow or error) triggers a Watchdog reset.

•   WDRPROC: Watchdog Reset Processor

0:  If WDRSTEN is 1, a Watchdog fault (underflow or error) activates all resets.

1:  If WDRSTEN is 1, a Watchdog fault (underflow or error) activates the processor reset.

•   WDD: Watchdog Delta Value

Defines the permitted range for reloading the Watchdog Timer.

If the Watchdog Timer value is less than or equal to WDD, writing WDT_CR with WDRSTT = 1 restarts the timer.

If the Watchdog Timer value is greater than WDD, writing WDT_CR with WDRSTT = 1 causes a Watchdog error.

•   WDDBGHLT: Watchdog Debug Halt

0: The Watchdog runs when the processor is in debug state.

1: The Watchdog stops when the processor is in debug state.

•   WDIDLEHLT: Watchdog Idle Halt

0: The Watchdog runs when the system is in idle mode.

1: The Watchdog stops when the system is in idle state.

•   WDDIS: Watchdog Disable

0: Enables the Watchdog Timer.

1: Disables the Watchdog Timer.

Note:   The WDD and WDV values must not be modified within three slow clock periods after a restart of the watchdog performed           by a

        write access in WDT_CR; otherwise, the watchdog may trigger an end of period earlier than expected.

                                                                                           SAM7X Series [DATASHEET]                     86

                                                                                                             6120K–ATARM–11-Feb-14
16.4.3     Watchdog Timer Status Register

Register Name:  WDT_SR

Access Type:    Read-only

        31      30            29           28                           27  26     25                     24

        –       –             –            –                            –   –      –                      –

        23      22            21           20                           19  18     17                     16

        –       –             –            –                            –   –      –                      –

        15      14            13           12                           11  10     9                      8

        –       –             –            –                            –   –      –                      –

        7       6             5            4                            3   2      1                      0

        –       –             –            –                            –   –      WDERR  WDUNF

•  WDUNF: Watchdog Underflow

0: No Watchdog underflow occurred since the last read of WDT_SR.

1: At least one Watchdog underflow occurred since the last read of WDT_SR.

•  WDERR: Watchdog Error

0: No Watchdog error occurred since the last read of WDT_SR.

1: At least one Watchdog error occurred since the last read of WDT_SR.

                                                                            SAM7X  Series [DATASHEET]         87

                                                                                   6120K–ATARM–11-Feb-14
17.   Voltage Regulator Mode Controller (VREG)

17.1  Overview

      The Voltage Regulator Mode Controller contains one Read-write register, the Voltage Regulator Mode Register. Its offset

      is 0x60 with respect to the System Controller offset.

      This register controls the Voltage Regulator Mode. Setting PSTDBY (bit 0) puts the Voltage Regulator in Standby Mode

      or Low-power Mode. On reset, the PSTDBY is reset, so as to wake up the Voltage Regulator in Normal Mode.

                                                             SAM7X Series [DATASHEET]                                          88

                                                             6120K–ATARM–11-Feb-14
17.2       Voltage Regulator Power Controller (VREG) User           Interface

Table 17-1.   Register Mapping

   Offset       Register                                  Name                     Access          Reset Value

   0x60         Voltage Regulator Mode Register           VREG_MR                  Read-write      0x0

17.2.1        Voltage Regulator Mode Register

Register Name:  VREG_MR

Access Type:    Read-write

         31     30                     29         28            27             26              25                     24

           –    –                      –          –             –              –               –                      –

         23     22                     21         20            19             18              17                     16

           –    –                      –          –             –              –               –                      –

         15     14                     13         12            11             10              9                      8

           –    –                      –          –             –              –               –                      –

           7    6                      5          4             3              2               1                      0

           –    –                      –          –             –              –               –   PSTDBY

•  PSTDBY: Periodic Interval Value

0 = Voltage regulator in normal mode.

1 = Voltage regulator in standby mode (low-power  mode).

                                                                               SAM7X Series [DATASHEET]                   89

                                                                                               6120K–ATARM–11-Feb-14
18.   Memory Controller (MC)

18.1  Overview

The Memory Controller (MC) manages the ASB bus and controls accesses requested by the masters, typically the ARM7TDMI

processor and the Peripheral DMA Controller. It features a bus arbiter, an address decoder, an abort status, a misalignment

detector and an Embedded Flash Controller.

18.2  Block Diagram

Figure 18-1.  Memory Controller Block Diagram

                                            Memory Controller

                                                          ASB

              ARM7TDMI                                                            Embedded    Internal

              Processor                                                           Flash       Flash

                          Abort                                                   Controller

                                                               Abort

                                                               Status

                                                                                              Internal

                                                                                              RAM

                                                          Misalignment         Address

              EMAC                             Bus             Detector        Decoder

              DMA                           Arbiter

                                                               User

                                                               Interface

              Peripheral

              DMA                                                         APB

              Controller                                                  Bridge

                                            Peripheral 0

                                            Peripheral 1                  APB

                                                                                              From Master

                                                                                              to Slave

                                            Peripheral N

18.3  Functional Description

      The Memory Controller handles  the    internal ASB  bus and arbitrates the accesses of up to three masters.

                                                                                        SAM7X Series [DATASHEET]             90

                                                                                              6120K–ATARM–11-Feb-14
          It is made up of:

            A bus arbiter

            An address decoder

            An abort status

            A misalignment detector

            An Embedded Flash Controller

          The MC handles only little-endian mode accesses. The masters work in little-endian mode only.

18.3.1    Bus Arbiter

          The Memory Controller has a simple, hard-wired priority bus arbiter that gives the control of the bus to one of the three

          masters. The EMAC has the highest priority; the Peripheral DMA Controller has the medium priority; the ARM processor

          has the lowest one.

18.3.2    Address Decoder

          The Memory Controller features an Address Decoder that first decodes the four highest bits of the 32-bit address bus

          and defines three separate areas:

            One 256-Mbyte address space for the internal memories

            One 256-Mbyte address space reserved for the embedded peripherals

            An undefined address space of 3584M bytes representing fourteen 256-Mbyte areas that return an Abort if

             accessed

          Figure 18-2 shows the assignment of the 256-Mbyte memory areas.

          Figure 18-2.  Memory Areas

                                                           0x0000 0000

                                             256M Bytes                          Internal Memories

                                                           0x0FFF FFFF

                                                           0x1000 0000

                                      14 x 256MBytes                             Undefined

                                             3,584 Mbytes                        (Abort)

                                                           0xEFFF FFFF

                                                           0xF000 0000

                                             256M Bytes                          Peripherals

                                                           0xFFFF FFFF

18.3.2.1  Internal Memory Mapping

          Within the Internal Memory address space, the Address Decoder of the Memory Controller decodes eight more address

          bits to allocate 1-Mbyte address spaces for the embedded memories.

          The allocated memories are accessed all along the 1-Mbyte address space and so are repeated n times within this

          address space, n equaling 1M bytes divided by the size of the memory.

          When the address of the access is undefined within the internal memory area, the Address Decoder returns an Abort to

          the master.

                                                                                 SAM7X Series [DATASHEET]                            91

                                                                                                         6120K–ATARM–11-Feb-14
          Figure 18-3.  Internal Memory    Mapping

                                               0x0000 0000  Internal Memory Area 0

                                                                                    1 M Bytes

                                               0x000F FFFF

                                               0x0010 0000

                                                            Internal Memory Area 1  1 M Bytes

                                               0x001F FFFF  Internal Flash

                                               0x0020 0000

                         256M Bytes                         Internal Memory Area 2  1 M Bytes

                                               0x002F FFFF  Internal SRAM

                                               0x0030 0000

                                                            Internal Memory Area 3  1 M Bytes

                                               0x003F FFFF  Internal ROM

                                               0x0040 0000

                                                            Undefined Areas         252 M Bytes

                                                                        (Abort)

                                               0x0FFF FFFF

18.3.2.2  Internal Memory Area 0

          The first 32 bytes of Internal Memory Area 0 contain the ARM processor exception vectors, in particular, the Reset

          Vector at address 0x0.

          Before execution of the remap command, the on-chip Flash is mapped into Internal Memory Area 0, so that the

          ARM7TDMI reaches an executable instruction contained in Flash. After the remap command, the internal SRAM at

          address 0x0020 0000 is mapped into Internal Memory Area 0. The memory mapped into Internal Memory Area 0 is

          accessible in both its original location and at address 0x0.

18.3.3    Remap Command

          After execution, the Remap Command causes the Internal SRAM to be accessed through the Internal Memory Area 0.

          As the ARM vectors (Reset, Abort, Data Abort, Prefetch Abort, Undefined Instruction, Interrupt, and Fast Interrupt) are

          mapped from address 0x0 to address 0x20, the Remap Command allows the user to redefine dynamically these vectors

          under software control.

          The Remap Command is accessible through the Memory Controller User Interface by writing the MC_RCR (Remap

          Control Register) RCB field to one.

          The Remap Command can be cancelled by writing the MC_RCR RCB field to one, which acts as a toggling command.

          This allows easy debug of the user-defined boot sequence by offering a simple way to put the chip in the same

          configuration as after a reset.

18.3.4    Abort Status

          There are two reasons for an abort to occur:

               access to an undefined address

               an access to a misaligned address.

          When an abort occurs, a signal is sent back to all the masters, regardless of which one has generated the access.

          However, only the ARM7TDMI can take an abort signal into account, and only under the condition that it was generating

          an access. The Peripheral DMA Controller and the EMAC do not handle the abort input signal. Note that the connections

          are not represented in Figure 18-1.

          To facilitate debug or for fault analysis by an operating system, the Memory Controller integrates an Abort Status register

          set.

          The full 32-bit wide abort address is saved in MC_AASR. Parameters of the access are saved in MC_ASR and include:

               the size of the request (field ABTSZ)

                                                                                    SAM7X Series [DATASHEET]                           92

                                                                                               6120K–ATARM–11-Feb-14
          the type of the access, whether it is a data read or write, or a code fetch (field ABTTYP)

          whether the access is due to accessing an undefined address (bit UNDADD) or a misaligned address (bit

           MISADD)

          the source of the access leading to the last abort (bits MST_EMAC, MST_PDC and MST_ARM)

          whether or not an abort occurred for each master since the last read of the register (bits SVMST_EMAC,

           SVMST_PDC and SVMST_ARM) unless this information is loaded in MST bits

        In the case of a Data Abort from the processor, the address of the data access is stored. This is useful, as searching for

        which address generated the abort would require disassembling the instructions and full knowledge of the processor

        context.

        In the case of a Prefetch Abort, the address may have changed, as the prefetch abort is pipelined in the ARM processor.

        The ARM processor takes the prefetch abort into account only if the read instruction is executed and it is probable that

        several aborts have occurred during this time. Thus, in this case, it is preferable to use the content of the Abort Link

        register of the ARM processor.

18.3.5  Embedded Flash Controller

        The Embedded Flash Controller is added to the Memory Controller and ensures the interface of the flash block with the

        32-bit internal bus. It allows an increase of performance in Thumb Mode for Code Fetch with its system of 32-bit buffers.

        It also manages with the programming, erasing, locking and unlocking sequences thanks to a full set of commands.

18.3.6  Misalignment Detector

        The Memory Controller features a Misalignment Detector that checks the consistency of the accesses.

        For each access, regardless of the master, the size of the access and the bits 0 and 1 of the address bus are checked. If

        the type of access is a word (32-bit) and the bits 0 and 1 are not 0, or if the type of the access is a half-word (16-bit) and

        the bit 0 is not 0, an abort is returned to the master and the access is cancelled. Note that the accesses of the ARM

        processor when it is fetching instructions are not checked.

        The misalignments are generally due to software bugs leading to wrong pointer handling. These bugs are particularly

        difficult to detect in the debug phase.

        As the requested address is saved in the Abort Status Register and the address of the instruction generating the

        misalignment is saved in the Abort Link Register of the processor, detection and fix of this kind of software bugs is

        simplified.

                                                                     SAM7X Series [DATASHEET]                                           93

                                                                                                       6120K–ATARM–11-Feb-14
18.4    Memory Controller (MC) User Interface

Base Address: 0xFFFFFF00

Table 18-1.  Register Mapping

Offset       Register                             Name     Access      Reset State

0x00         MC Remap Control Register            MC_RCR   Write-only

0x04         MC Abort Status Register             MC_ASR   Read-only                          0x0

0x08         MC Abort Address Status Register     MC_AASR  Read-only                          0x0

0x10-0x5C    Reserved

0x60         EFC0 Configuration Registers

             EFC1(1) Configuration Registers      See the  Embedded Flash Controller Section

0x70

Note:   1.   EFC1 pertains to AT91SAM7X512 only.

                                                           SAM7X Series [DATASHEET]                94

                                                                       6120K–ATARM–11-Feb-14
18.4.1   MC Remap  Control Register

Register Name:     MC_RCR

Access Type:       Write-only

Offset:            0x0

         31        30                29                     28             27            26            25                       24

         –         –                 –                      –              –             –             –                        –

         23        22                21                     20             19            18            17                       16

         –         –                 –                      –              –             –             –                        –

         15        14                13                     12             11            10            9                        8

         –         –                 –                      –              –             –             –                        –

         7         6                 5                      4              3             2             1                        0

         –         –                 –                      –              –             –             –                        RCB

•  RCB: Remap Command Bit

0: No effect.

1: This Command Bit acts on a toggle basis:  writing  a  1  alternatively  cancels  and  restores the  remapping of  the  page  zero mem-

ory devices.

                                                                                         SAM7X Series [DATASHEET]                    95

                                                                                                       6120K–ATARM–11-Feb-14
18.4.2   MC Abort  Status Register

Register Name:     MC_ASR

Access Type:       Read-only

Reset Value:       0x0

Offset:            0x04

         31        30               29                  28          27                     26        25                     24

         –         –                –                   –           –   SVMST_ARM                    SVMST_PDC  SVMST_EMAC

         23        22               21                  20          19                     18        17                     16

         –         –                –                   –           –                  MST_ARM       MST_PDC           MST_EMAC

         15        14               13                  12          11                     10        9                      8

         –         –                –                   –               ABTTYP                                  ABTSZ

         7         6                5                   4           3                      2         1                      0

         –         –                –                   –           –                      –         MISADD            UNDADD

•   UNDADD: Undefined Address Abort Status

0: The last abort was not due to the access of an undefined address in the address space.

1: The last abort was due to the access of an undefined address in the address space.

•   MISADD: Misaligned Address Abort Status

0: The last aborted access was not due to an address misalignment.

1: The last aborted access was due to an address misalignment.

•   ABTSZ: Abort Size Status

                ABTSZ                        Abort Size

             0                   0                  Byte

             0                   1                  Half-word

             1                   0                  Word

             1                   1                  Reserved

•   ABTTYP: Abort Type Status

                ABTTYP                       Abort Type

             0                   0           Data Read

             0                   1           Data Write

             1                   0           Code Fetch

             1                   1           Reserved

•   MST_EMAC: EMAC Abort         Source

0:  The last aborted access was  not due to  the EMAC.

1:  The last aborted access was  due to the  EMAC.

                                                                                              SAM7X  Series [DATASHEET]          96

                                                                                                     6120K–ATARM–11-Feb-14
•   MST_PDC: PDC Abort Source

0:  The last aborted access was not due to the PDC.

1:  The last aborted access was due to the PDC.

•   MST_ARM: ARM Abort Source

0:  The last aborted access was not due to the ARM.

1:  The last aborted access was due to the ARM.

•   SVMST_EMAC: Saved EMAC Abort Source

0:  No abort due to the EMAC occurred since the last read of MC_ASR or it is notified in the bit MST_EMAC.

1:  At least one abort due to the EMAC occurred since the last read of MC_ASR.

•   SVMST_PDC: Saved PDC Abort Source

0:  No abort due to the PDC occurred since the last read of MC_ASR or it is notified in the bit MST_PDC.

1:  At least one abort due to the PDC occurred since the last read of MC_ASR.

•   SVMST_ARM: Saved ARM Abort Source

0:  No abort due to the ARM occurred since the last read of MC_ASR or it is notified in the bit MST_ARM.

1:  At least one abort due to the ARM occurred since the last read of MC_ASR.

                                                                                SAM7X Series [DATASHEET]                           97

                                                                                                            6120K–ATARM–11-Feb-14
18.4.3   MC Abort  Address Status  Register

Register Name:     MC_AASR

Access Type:       Read-only

Reset Value:       0x0

Offset:            0x08

         31        30              29                28               27  26     25                     24

                                                              ABTADD

         23        22              21                20               19  18     17                     16

                                                              ABTADD

         15        14              13                12               11  10     9                      8

                                                              ABTADD

         7         6               5                 4                3   2      1                      0

                                                              ABTADD

•  ABTADD: Abort Address

This field contains the address of the last aborted  access.

                                                                          SAM7X  Series [DATASHEET]         98

                                                                                 6120K–ATARM–11-Feb-14
19.     Embedded Flash Controller (EFC)

19.1    Overview

        The Embedded Flash Controller (EFC ) is a part of the Memory Controller and ensures the interface of the Flash block

        with the 32-bit internal bus. It increases performance in Thumb Mode for Code Fetch with its system of 32-bit buffers. It

        also manages the programming, erasing, locking and unlocking sequences using a full set of commands.

        The AT91SAM7X512 is equipped with two EFCs, EFC0 and EFC1. EFC1 does not feature the Security bit and GPNVM

        bits. The Security and GPNVM bits embedded only on EFC0 apply to the two blocks in the AT91SAM7X512.

19.2    Functional Description

19.2.1  Embedded Flash Organization

        The Embedded Flash interfaces directly to the 32-bit internal bus. It is composed of several interfaces:

          One memory plane organized in several pages of the same size

          Two 32-bit read buffers used for code read optimization (see “Read Operations” on page 100).

          One write buffer that manages page programming. The write buffer size is equal to the page size. This buffer is

           write-only and accessible all along the 1 MByte address space, so that each word can be written to its final

           address (see “Write Operations” on page 102).

          Several lock bits used to protect write and erase operations on lock regions. A lock region is composed of several

           consecutive pages, and each lock region has its associated lock bit.

          Several general-purpose NVM bits. Each bit controls a specific feature in the device. Refer to the product definition

           section to get the GPNVM assignment.

        The Embedded Flash size, the page size and the lock region organization are described in the product definition section.

        Table 19-1.  Product Specific Lock and General-purpose NVM Bits

           SAM7X512  SAM7X256        SAM7X128             Denomination

           3         3                           3        Number of General-purpose NVM bits

           32        16                          8        Number of Lock Bits

                                                                                 SAM7X Series [DATASHEET]                          99

                                                                                              6120K–ATARM–11-Feb-14
        Figure 19-1.  Embedded Flash Memory Mapping

                                                                                        Page 0

                                        Flash Memory

                         Start Address

                                        Lock Region 0                     Lock Bit 0    Page (m-1)

                                        Lock Region 1                     Lock Bit 1

                                        Lock Region (n-1)                 Lock Bit n-1  Page ( (n-1)*m )

                                        32-bit wide

                                                                                        Page (n*m-1)

19.2.2  Read Operations

        An optimized controller manages embedded Flash reads. A system of 2 x 32-bit buffers is added in order to start access

        at following address during the second read, thus increasing performance when the processor is running in Thumb mode

        (16-bit instruction set). See Figure 19-2, Figure 19-3 and Figure 19-4.

        This optimization concerns only Code Fetch and not Data.

        The read operations can be performed with or without wait state. Up to 3 wait states can be programmed in the field FWS

        (Flash Wait State) in the Flash Mode Register MC_FMR (see “MC Flash Mode Register” on page 108). Defining FWS to

        be 0 enables the single-cycle access of the embedded Flash.

        The Flash memory is accessible through 8-, 16- and 32-bit reads.

        As the Flash block size is smaller than the address space reserved for the internal memory area, the embedded Flash

        wraps around the address space and appears to be repeated within it.

                                                                                        SAM7X Series [DATASHEET]                 100

                                                                                                          6120K–ATARM–11-Feb-14
Figure 19-2.  Code Read           Optimization  in    Thumb Mode  for FWS = 0

       Master Clock

ARM Request (16-bit)

       Code Fetch

                         @Byte 0   @Byte 2            @Byte 4     @Byte 6            @Byte 8     @Byte 10         @Byte 12     @Byte 14         @Byte 16

       Flash Access                Bytes 0-3          Bytes 4-7                      Bytes 8-11                   Bytes 12-15                   Bytes 16-19

       Buffer (32 bits)                               Bytes 0-3   Bytes 4-7                      Bytes 8-11                    Bytes 12-15

Data To ARM                        Bytes 0-1          Bytes 2-3   Bytes 4-5          Bytes 6-7   Bytes 8-9        Bytes 10-11  Bytes 12-13      Bytes 14-15

Note:  When FWS is equal to 0, all accesses are performed in a single-cycle access.

Figure 19-3.  Code Read Optimization in Thumb Mode for FWS = 1

                                  1 Wait State Cycle             1 Wait State Cycle           1 Wait State Cycle            1 Wait State Cycle

       Master Clock

ARM Request (16-bit)

       Code Fetch

                         @Byte 0                      @Byte 2     @Byte 4            @Byte 6     @Byte 8          @Byte 10     @Byte 12         @Byte 14

       Flash Access                Bytes 0-3                      Bytes 4-7                      Bytes 8-11                    Bytes 12-15

       Buffer (32 bits)                                           Bytes 0-3                      Bytes 4-7                     Bytes 8-11

Data To ARM                                           Bytes 0-1   Bytes 2-3          Bytes 4-5   Bytes 6-7        Bytes 8-9    Bytes 10-11      Bytes 12-13

Note:         When FWS is equal to 1, in case of sequential reads, all the accesses are performed in a single-cycle access (except

              for the first one).

                                                                                                            SAM7X Series [DATASHEET]                  101

                                                                                                                               6120K–ATARM–11-Feb-14
Figure 19-4.  Code Read Optimization in Thumb Mode for FWS = 3

                                  3 Wait State Cycles       3 Wait State Cycles       3 Wait State Cycles        3 Wait State Cycles

        Master Clock

ARM Request (16-bit)

        Code Fetch

                         @Byte 0                       @2   @4                   @6   @8                    @10  @12

        Flash Access              Bytes 0-3                      Bytes 4-7                      Bytes 8-11              Bytes 12-15

       Buffer (32 bits)                                          Bytes 0-3                      Bytes 4-7               Bytes 8-11

        Data To ARM                                    0-1  2-3                  4-5    6-7                 8-9  10-11                  12-13

Note:         When FWS is equal to 2 or 3, in case of sequential reads, the first access takes FWS cycles, the second access one

              cycle, the third access FWS cycles, the fourth access one cycle, etc.

19.2.3  Write Operations

        The internal memory area reserved for the embedded Flash can also be written through a write-only latch buffer. Write

        operations take into account only the 8 lowest address bits and thus wrap around within the internal memory area

        address space and appear to be repeated 1024 times within it.

        Write operations can be prevented by programming the Memory Protection Unit of the product.

        Writing 8-bit and 16-bit data is not allowed and may lead to unpredictable data corruption.

        Write operations are performed in the number of wait states equal to the number of wait states for read operations + 1,

        except for FWS = 3 (see “MC Flash Mode Register” on page 108).

19.2.4  Flash Commands

        The EFC          offers a command set to manage     programming the      memory flash,  locking and unlocking   lock  sectors,

        consecutive programming and locking, and            full Flash erasing.

        Table 19-2.      Set of Commands

        Command                                                                  Value          Mnemonic

        Write page                                                               0x01           WP

        Set Lock Bit                                                             0x02           SLB

        Write Page and Lock                                                      0x03           WPL

        Clear Lock Bit                                                           0x04           CLB

        Erase all                                                                0x08           EA

        Set General-purpose NVM Bit                                              0x0B           SGPB

        Clear General-purpose NVM Bit                                            0x0D           CGPB

        Set Security Bit                                                         0x0F           SSB

        To run one of these commands, the field FCMD of the MC_FCR register has to be written with the command number. As

        soon as the MC_FCR register is written, the FRDY flag is automatically cleared. Once the current command is achieved,

        then the FRDY flag is automatically set. If an interrupt has been enabled by setting the bit FRDY in MC_FMR, the

        interrupt line of the Memory Controller is activated.

                                                                                                SAM7X Series [DATASHEET]                102

                                                                                                                 6120K–ATARM–11-Feb-14
          All the commands are protected by the same keyword, which has to be written in the eight highest bits of the MC_FCR

          register.

          Writing MC_FCR with data that does not contain the correct key and/or with an invalid command has no effect on the

          memory plane; however, the PROGE flag is set in the MC_FSR register. This flag is automatically cleared by a read

          access to the MC_FSR register.

          When the current command writes or erases a page in a locked region, the command has no effect on the whole memory

          plane; however, the LOCKE flag is set in the MC_FSR register. This flag is automatically cleared by a read access to the

          MC_FSR register.

          Figure 19-5.  Command State Chart

                                          Read Status: MC_FSR

                                                                   No

                                          Check if FRDY flag set

                                             Yes

                             Write  FCMD and PAGENB in MC_FCR

                                          Read Status: MC_FSR

                                                                   No

                                          Check if FRDY flag set

                                             Yes

                                          Check if LOCKE flag set  Yes  Locking region  violation

                                             No

                                          Check if PROGE flag set  Yes  Bad keyword violation and/or Invalid command

                                             No

                                          Command Successful

          In order to guarantee valid operations on the Flash memory, the field Flash Microsecond Cycle Number (FMCN)          in   the

          Flash Mode Register MC_FMR must be correctly programmed (see “MC Flash Mode Register” on page 108).

19.2.4.1  Flash Programming

          Several commands can be used to program the Flash.

                                                                                                   SAM7X Series [DATASHEET]         103

                                                                                                   6120K–ATARM–11-Feb-14
          The Flash technology requires that an erase must be done before programming. The entire memory plane can be erased

          at the same time, or a page can be automatically erased by clearing the NEBP bit in the MC_FMR register before writing

          the command in the MC_FCR register.

          By setting the NEBP bit in the MC_FMR register, a page can be programmed in several steps if it has been erased

          before (see Figure 19-6).

Figure 19-6.      Example of Partial Page Programming

                        32 bits wide                       32 bits wide                        32 bits wide

                  FF    FF  ...  FF   FF               FF  FF       FF   FF                FF  FF                 ...  FF  FF

16 words                                                       ...

                  FF    FF       FF   FF               FF  FF       FF   FF                FF  FF                      FF  FF

                  FF    FF       FF   FF               FF  FF       FF   FF                FF  FF                      FF  FF

                  FF    FF  ...  FF   FF               CA  FE       CA   FE                CA  FE                      CA  FE

16 words                                                       ...                                                ...

                  FF    FF       FF   FF               CA  FE       CA   FE                CA  FE                      CA  FE

                  FF    FF       FF   FF               CA  FE       CA   FE                CA  FE                      CA  FE

                  FF    FF  ...  FF   FF               FF  FF  ...  FF   FF                DE  CA                      DE  CA

                                                                                                                  ...

16 words          FF    FF       FF   FF               FF  FF       FF   FF                DE  CA                      DE  CA

                  FF    FF       FF   FF               FF  FF       FF   FF                DE  CA                      DE  CA

                  FF    FF...    FF   FF               FF  FF       FF   FF                FF  FF                 ...  FF  FF

                                                               ...

16 words          FF    FF       FF   FF               FF  FF       FF   FF                FF  FF                      FF  FF

                  FF    FF       FF   FF               FF  FF       FF   FF                FF  FF                      FF  FF

                        Step 1.                            Step 2.                                                Step 3.

                  Erase All Flash            Programming of the second part of Page 7  Programming of the third part of Page 7

                  Page 7 erased                            (NEBP = 1)                          (NEBP = 1)

          The Partial Programming mode works only with 32-bit (or higher) boundaries. It cannot be used with boundaries lower

          than 32 bits (8 or 16-bit for example).

          After programming, the page (the whole lock region) can be locked to prevent miscellaneous write or erase sequences.

          The lock bit can be automatically set after page programming using WPL.

          Data to be written are stored in an internal latch buffer. The size of the latch buffer corresponds to the page size. The

          latch buffer wraps around within the internal memory area address space and appears to be repeated by the number of

          pages in it.

          Note:   Writing of 8-bit and 16-bit data is not allowed and may lead to unpredictable data corruption.

          Data are written to the latch buffer before the programming command is written to the Flash Command Register

          MC_FCR. The sequence is as follows:

                 Write the full page, at any page address, within the internal memory area address space using only 32-bit access.

                 Programming starts as soon as the page number and the programming command are written to the Flash

                  Command Register. The FRDY bit in the Flash Programming Status Register (MC_FSR) is automatically cleared.

                 When programming is completed, the bit FRDY in the Flash Programming Status Register (MC_FSR) rises. If an

                  interrupt was enabled by setting the bit FRDY in MC_FMR, the interrupt line of the Memory Controller is activated.

          Two errors can be detected in the MC_FSR register after a programming sequence:

                 Programming Error: A bad keyword and/or an invalid command have been written in the MC_FCR register.

                 Lock Error: The page to be programmed belongs to a locked region. A command must be previously run to unlock

                  the corresponding region.

19.2.4.2  Erase All Command

          The entire memory can be erased if the Erase All Command (EA) in the Flash Command Register MC_FCR is written.

          Erase All operation is allowed only if there are no lock bits set. Thus, if at least one lock region is locked, the bit LOCKE

          in MC_FSR rises and the command is cancelled. If the bit LOCKE has been written at 1 in MC_FMR, the interrupt line

          rises.

                                                                                           SAM7X Series [DATASHEET]                      104

                                                                                               6120K–ATARM–11-Feb-14
          When programming is complete, the bit FRDY bit in the Flash Programming Status Register (MC_FSR) rises. If an

          interrupt has been enabled by setting the bit FRDY in MC_FMR, the interrupt line of the Memory Controller is activated.

          Two errors can be detected in the MC_FSR register after a programming sequence:

                Programming Error: A bad keyword and/or an invalid command have been written in the MC_FCR register.

                Lock Error: At least one lock region to be erased is protected. The erase command has been refused and no page

                 has been erased. A Clear Lock Bit command must be executed previously to unlock the corresponding lock

                 regions.

19.2.4.3  Lock Bit Protection

          Lock bits are associated with several pages in the embedded Flash memory plane. This defines lock regions in the

          embedded Flash memory plane. They prevent writing/erasing protected pages.

          After production, the device may have some embedded Flash lock regions locked. These locked regions are reserved for

          a default application. Refer to the product definition section for the default embedded Flash mapping. Locked sectors can

          be unlocked to be erased and then programmed with another application or other data.

          The lock sequence is:

                The Flash Command register must be written with the following value:

                 (0x5A << 24) | (lockPageNumber << 8 & PAGEN) | SLB

                 lockPageNumber is a page of the corresponding lock region.

                When locking completes, the bit FRDY in the Flash Programming Status Register (MC_FSR) rises. If an interrupt

                 has been enabled by setting the bit FRDY in MC_FMR, the interrupt line of the Memory Controller is activated.

          A programming error, where a bad keyword and/or an invalid command have been written in the MC_FCR register, may

          be detected in the MC_FSR register after a programming sequence.

          It is possible to clear lock bits that were set previously. Then the locked region can be erased or programmed. The unlock

          sequence is:

                The Flash Command register must be written with the following value:

                 (0x5A << 24) | (lockPageNumber << 8 & PAGEN) | CLB

                 lockPageNumber is a page of the corresponding lock region.

                When the unlock completes, the bit FRDY in the Flash Programming Status Register (MC_FSR) rises. If an

                 interrupt has been enabled by setting the bit FRDY in MC_FMR, the interrupt line of the Memory Controller is

                 activated.

          A programming error, where a bad keyword and/or an invalid command have been written in the MC_FCR register, may

          be detected in the MC_FSR register after a programming sequence.

          The Unlock command programs the lock bit to 1; the corresponding bit LOCKSx in MC_FSR reads 0. The Lock

          command programs the lock bit to 0; the corresponding bit LOCKSx in MC_FSR reads 1.

          Note:  Access to the Flash in Read Mode is permitted when a Lock or Unlock command is performed.

19.2.4.4  General-purpose NVM Bits

          General-purpose NVM bits do not interfere with the embedded Flash memory plane. (Does not apply to EFC1 on the

          AT91SAM7X512.) These general-purpose bits are dedicated to protect other parts of the product. They can be set

          (activated) or cleared individually. Refer to the product definition section for the general-purpose NVM bit action.

          The activation sequence is:

                Start the Set General Purpose Bit command (SGPB) by writing the Flash Command Register with the SEL

                 command and the number of the general-purpose bit to be set in the PAGEN field.

                When the bit is set, the bit FRDY in the Flash Programming Status Register (MC_FSR) rises. If an interrupt has

                 been enabled by setting the bit FRDY in MC_FMR, the interrupt line of the Memory Controller is activated.

          Two errors can be detected in the MC_FSR register after a programming sequence:

                Programming Error: A bad keyword and/or an invalid command have been written in the MC_FCR register

                                                                                           SAM7X Series [DATASHEET]                   105

                                                                                                  6120K–ATARM–11-Feb-14
                If the general-purpose bit number is greater than the total number of general-purpose bits, then the command has

                 no effect.

          It is possible to deactivate a general-purpose NVM bit set previously. The clear sequence is:

                Start the Clear General-purpose Bit command (CGPB) by writing the Flash Command Register with CGPB and the

                 number of the general-purpose bit to be cleared in the PAGEN field.

                When the clear completes, the bit FRDY in the Flash Programming Status Register (MC_FSR) rises. If an interrupt

                 has been enabled by setting the bit FRDY in MC_FMR, the interrupt line of the Memory Controller is activated.

          Two errors can be detected in the MC_FSR register after a programming sequence:

                Programming Error: a bad keyword and/or an invalid command have been written in the MC_FCR register

                If the number of the general-purpose bit set in the PAGEN field is greater than the total number of general-purpose

                 bits, then the command has no effect.

          The Clear General-purpose Bit command programs the general-purpose NVM bit to 0; the corresponding bit GPNVM0 to

          GPNVMx in MC_FSR reads 0. The Set General-purpose Bit command programs the general-purpose NVM bit to 1; the

          corresponding bit GPNVMx in MC_FSR reads 1.

          Note:  Access to the Flash in read mode is permitted when a Set, Clear or Get General-purpose NVM Bit command is

                 performed.

19.2.4.5  Security Bit

          The goal of the security bit is to prevent external access to the internal bus system. (Does not apply to EFC1 on the

          AT91SAM7X512.) JTAG, Fast Flash Programming and Flash Serial Test Interface features are disabled. Once set, this

          bit can be reset only by an external hardware ERASE request to the chip. Refer to the product definition section for the

          pin name that controls the ERASE. In this case, the full memory plane is erased and all lock and general-purpose NVM

          bits are cleared. The security bit in the MC_FSR is cleared only after these operations. The activation sequence is:

                Start the Set Security Bit command (SSB) by writing the Flash Command Register.

                When the locking completes, the bit FRDY in the Flash Programming Status Register (MC_FSR) rises. If an

                 interrupt has been enabled by setting the bit FRDY in MC_FMR, the interrupt line of the Memory Controller is

                 activated.

          When the security bit is active, the SECURITY bit in the MC_FSR is set.

                                                                                           SAM7X Series [DATASHEET]                   106

                                                                                                         6120K–ATARM–11-Feb-14
19.3    Embedded Flash Controller (EFC ) User Interface

The User Interface of the EFC  is integrated within the Memory Controller with Base Address: 0xFFFF FF00.

The AT91SAM7X512 is equipped with two EFCs, EFC0 and EFC1, as described in the Register Mapping tables and Register

descriptions that follow.

Table 19-3.  Embedded Flash Controller (EFC0) Register Mapping

Offset       Register                                           Name    Access                             Reset State

0x60         MC Flash Mode Register                             MC_FMR  Read-write                         0x0

0x64         MC Flash Command Register                          MC_FCR  Write-only                         –

0x68         MC Flash Status Register                           MC_FSR  Read-only                          –

0x6C         Reserved                                           –       –                                  –

Table 19-4.  Embedded Flash Controller (EFC1) Register Mapping

Offset       Register                                           Name    Access                             Reset State

0x70         MC Flash Mode Register                             MC_FMR  Read-write                         0x0

0x74         MC Flash Command Register                          MC_FCR  Write-only                         –

0x78         MC Flash Status Register                           MC_FSR  Read-only                          –

0x7C         Reserved                                           –       –                                  –

                                                                        SAM7X Series [DATASHEET]                        107

                                                                                    6120K–ATARM–11-Feb-14
19.3.1  MC Flash Mode Register

Register Name:     MC_FMR

Access Type:       Read-write

Offset: (EFC0)     0x60

Offset: (EFC1)     0x70

        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

•  FRDY: Flash Ready Interrupt Enable

0: Flash Ready does not generate an interrupt.

1: Flash Ready generates an interrupt.

•  LOCKE: Lock Error Interrupt Enable

0: Lock Error does not generate an interrupt.

1: Lock Error generates an interrupt.

•  PROGE: Programming Error Interrupt Enable

0: Programming Error does not generate an interrupt.

1: Programming Error generates an interrupt.

•  NEBP: No Erase Before Programming

0: A page erase is performed before programming.

1: No erase is performed before programming.

•  FWS: Flash Wait State

This field defines the number of wait states for read and  write  operations:

                FWS                                        Read Operations               Write Operations

                0                                                 1 cycle                2 cycles

                1                                              2 cycles                  3 cycles

                2                                              3 cycles                  4 cycles

                3                                              4 cycles                  4 cycles

                                                                                  SAM7X  Series [DATASHEET]         108

                                                                                         6120K–ATARM–11-Feb-14
•  FMCN: Flash Microsecond Cycle Number

Before writing Non Volatile Memory bits (Lock bits, General Purpose NVM bit and Security bits), this field must be set to the num-

ber of Master Clock cycles in one microsecond.

When writing the rest of the Flash, this field defines the number of Master Clock cycles in 1.5 microseconds. This number must be

rounded up.

Warning: The value 0 is only allowed for a master clock period superior to 30 microseconds.

Warning: In order to guarantee valid operations on the flash memory, the field Flash Microsecond Cycle Number (FMCN) must

be correctly programmed.

                                                                                             SAM7X Series [DATASHEET]               109

                                                                                             6120K–ATARM–11-Feb-14
19.3.2  MC Flash Command Register

Register Name:          MC_FCR

Access Type:            Write-only

Offset: (EFC0)          0x64

Offset: (EFC1)          0x74

        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: Flash Command

This field defines the Flash commands:

                FCMD                    Operations

                0000                    No command.

                                        Does not raise the Programming Error Status flag in the Flash Status Register MC_FSR.

                0001                    Write Page Command (WP):

                                        Starts the programming of the page specified in the PAGEN field.

                0010                    Set Lock Bit Command (SLB):

                                        Starts a set lock bit sequence of the lock region specified in the PAGEN field.

                                        Write Page and Lock Command (WPL):

                0011                    The lock sequence of the lock region associated with the page specified in the field PAGEN

                                        occurs automatically after completion of the programming sequence.

                0100                    Clear Lock Bit Command (CLB):

                                        Starts a clear lock bit sequence of the lock region specified in the PAGEN field.

                                        Erase All Command (EA):

                1000                    Starts the erase of the entire Flash.

                                        If at least one page is locked, the command is cancelled.

                                        Set General-purpose NVM Bit (SGPB):

                1011                    Activates the general-purpose NVM bit corresponding to the number specified in the PAGEN

                                        field.

                                        Clear General Purpose NVM Bit (CGPB):

                1101                    Deactivates the general-purpose NVM bit corresponding to the number specified in the

                                        PAGEN field.

                1111                    Set Security Bit Command (SSB):

                                        Sets security bit.

                Others                  Reserved.

                                        Raises the Programming Error Status flag in the Flash Status Register MC_FSR.

                                                                                   SAM7X Series [DATASHEET]                            110

                                                                                                            6120K–ATARM–11-Feb-14
•  PAGEN: Page Number

                             Command                    PAGEN Description

   Write Page Command                                   PAGEN defines the page number to be written.

   Write Page and Lock Command                          PAGEN defines the page number to be written and its associated

                                                        lock region.

   Erase All Command                                    This field is meaningless

   Set/Clear Lock Bit Command                           PAGEN defines one page number of the lock region to be locked or

                                                        unlocked.

   Set/Clear General Purpose NVM Bit Command            PAGEN defines the general-purpose bit number.

   Set Security Bit Command                             This field is meaningless

Note:  Depending on the command, all the      possible  unused bits of PAGEN are meaningless.

•  KEY: Write Protection Key

This field should be written with the value 0x5A to enable the command defined by the bits of the register. If the field is written with

a different value, the write is not performed and no action is started.

                                                                                   SAM7X Series [DATASHEET]                               111

                                                                                               6120K–ATARM–11-Feb-14
19.3.3  MC Flash Status Register

Register Name:  MC_FSR

Access Type:    Read-only

Offset: (EFC0)  0x68

Offset: (EFC1)  0x78

        31      30                29                     28      27              26                25                     24

   LOCKS15      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

        –       –                 –                        –     –               GPNVM2           GPNVM1  GPNVM0

        7       6                 5                        4     3               2                 1                      0

        –       –                 –              SECURITY        PROGE           LOCKE             –      FRDY

•  FRDY: Flash Ready Status

0: The EFC  is busy and the application must wait before running a new command.

1: The EFC  is ready to run a new command.

•  LOCKE: Lock Error Status

0: No programming of at least one locked lock region has happened since the last read of MC_FSR.

1: Programming of at least one locked lock region has happened since the last read of MC_FSR.

•  PROGE: Programming Error Status

0: No invalid commands and no bad keywords were written in the Flash Command Register MC_FCR.

1: An invalid command and/or a bad keyword was/were written in the Flash Command Register MC_FCR.

•  SECURITY: Security Bit Status (Does not apply to EFC1 on the  AT91SAM7X512.)

0: The security bit is inactive.

1: The security bit is active.

•  GPNVMx: General-purpose NVM Bit Status (Does not apply to EFC1 on the         AT91SAM7X512.)

0: The corresponding general-purpose NVM bit is inactive.

1: The corresponding general-purpose NVM bit is active.

•  EFC LOCKSx: Lock Region x Lock Status

0: The corresponding lock region is not locked.

1: The corresponding lock region is locked.

                                                                                 SAM7X Series [DATASHEET]                     112

                                                                                                   6120K–ATARM–11-Feb-14
20.     Fast Flash Programming Interface (FFPI)

20.1    Overview

        The Fast Flash Programming Interface provides two solutions - parallel or serial - for high-volume programming using a

        standard gang programmer. The parallel interface is fully handshaked and the device is considered to be a standard

        EEPROM. Additionally, the parallel protocol offers an optimized access to all the embedded Flash functionalities. The

        serial interface uses the standard IEEE 1149.1 JTAG protocol. It offers an optimized access to all the embedded Flash

        functionalities.

        Although the Fast Flash Programming Mode is a dedicated mode for high volume programming, this mode not designed

        for in-situ programming.

20.2    Parallel Fast Flash Programming

20.2.1  Device Configuration

        In Fast Flash Programming Mode, the device is in a specific test mode. Only a certain set of pins is significant, the rest of

        the PIOs are used as inputs with a pull-up. The crystal oscillator is in bypass mode. Other pins must be left unconnected.

        Figure 20-1.      Parallel  Programming Interface

                                        VDDIO       TST

                                        VDDIO       PGMEN0

                                        VDDIO       PGMEN1

                                                                                VDDCORE

                                        NCMD        PGMNCMD                     VDDIO

                                              RDY   PGMRDY                      VDDPLL

                                              NOE   PGMNOE                      VDDFLASH

                                        NVALID      PGMNVALID                   GND

                                        MODE[3:0]   PGMM[3:0]

                                        DATA[15:0]  PGMD[15:0]

                                        0 - 50MHz   XIN

Table 20-1.  Signal   Description List

                                                                         Active

Signal Name               Function                                Type   Level       Comments

                                                           Power

VDDFLASH                  Flash Power Supply                      Power

VDDIO                     I/O Lines Power Supply                  Power

VDDCORE                   Core Power Supply                       Power

                                                                         SAM7X Series [DATASHEET]                                      113

                                                                                          6120K–ATARM–11-Feb-14
Table 20-1.   Signal  Description List (Continued)

                                                                                         Active

Signal Name           Function                                             Type          Level   Comments

VDDPLL                PLL Power Supply                                     Power

GND                   Ground                                               Ground

                                                              Clocks

                      Main Clock Input.

XIN                   This input can be tied to GND. In this               Input                 32KHz to 50MHz

                      case, the device is clocked by the internal

                      RC oscillator.

                                                              Test

TST                   Test Mode Select                                     Input         High    Must be connected to VDDIO

PGMEN0                Test Mode Select                                     Input         High    Must be connected to VDDIO

PGMEN1                Test Mode Select                                     Input         High    Must be connected to VDDIO

                                                                   PIO

PGMNCMD               Valid command available                              Input         Low     Pulled-up input at reset

PGMRDY                0: Device is busy                                    Output        High    Pulled-up input at reset

                      1: Device is ready for a new command

PGMNOE                Output Enable (active high)                          Input         Low     Pulled-up input at reset

PGMNVALID             0: DATA[15:0] is in input mode                       Output        Low     Pulled-up input at reset

                      1: DATA[15:0] is in output mode

PGMM[3:0]             Specifies DATA type (See Table 20-2)                 Input                 Pulled-up input at reset

PGMD[15:0]            Bi-directional data bus                           Input/Output             Pulled-up input at reset

20.2.2  Signal Names

        Depending on the MODE settings, DATA is latched in different internal registers.

        Table 20-2.   Mode Coding

        MODE[3:0]     Symbol                                  Data

        0000          CMDE                                    Command Register

        0001          ADDR0                                   Address Register LSBs

        0010          ADDR1

        0101          DATA                                    Data Register

        Default       IDLE                                    No register

        When MODE     is equal to CMDE,  then  a  new  command (strobed on DATA[15:0]     signals)  is  stored  in  the  command

        register.

        Table 20-3.   Command Bit Coding

        DATA[15:0]    Symbol                                  Command Executed

        0x0011        READ                                    Read Flash

        0x0012        WP                                      Write Page Flash

        0x0022        WPL                                     Write Page and Lock Flash

        0x0032        EWP                                     Erase Page and Write Page

                                                                                          SAM7X Series [DATASHEET]                114

                                                                                                        6120K–ATARM–11-Feb-14
          Table 20-3.  Command Bit Coding  (Continued)

          DATA[15:0]         Symbol                     Command Executed

          0x0042             EWPL                       Erase Page and Write Page then  Lock

          0x0013             EA                         Erase All

          0x0014             SLB                        Set Lock Bit

          0x0024             CLB                        Clear Lock Bit

          0x0015             GLB                        Get Lock Bit

          0x0034             SGPB                       Set General Purpose NVM bit

          0x0044             CGPB                       Clear General Purpose NVM bit

          0x0025             GGPB                       Get General Purpose NVM bit

          0x0054             SSE                        Set Security Bit

          0x0035             GSE                        Get Security Bit

          0x001F             WRAM                       Write Memory

          0x0016             SEFC                       Select EFC Controller(1)

          0x001E             GVE                        Get Version

          Note:   1.   Applies to AT91SAM7X512.

20.2.3    Entering Programming Mode

          The following algorithm puts the device in Parallel Programming Mode:

                Apply GND, VDDIO, VDDCORE, VDDFLASH and VDDPLL.

                Apply XIN clock within TPOR_RESET if an external clock is available.

                Wait for TPOR_RESET

                Start a read or write handshaking.

          Note:   After reset, the device is clocked by the internal RC oscillator. Before clearing RDY signal, if an external clock ( >

                  32 kHz) is connected to XIN, then the device switches on the external clock. Else, XIN input is not considered. A

                  higher frequency on XIN speeds up the programmer handshake.

20.2.4    Programmer Handshaking

          An handshake is defined for read and write operations. When the device is ready to start a new operation (RDY signal

          set), the programmer starts the handshake by clearing the NCMD signal. The handshaking is achieved once NCMD

          signal is high and RDY is high.

20.2.4.1  Write Handshaking

          For details on the write handshaking sequence, refer to  Figure 20-2and Table 20-4.

                                                                                       SAM7X Series [DATASHEET]                           115

                                                                                               6120K–ATARM–11-Feb-14
          Figure 20-2.  Parallel Programming    Timing,  Write   Sequence

                                 NCMD              2                         4

                                 RDY                        3                      5

                                 NOE

                                 NVALID

                                 DATA[15:0]

                                             1

                                 MODE[3:0]

Table 20-4.  Write Handshake

Step         Programmer Action                           Device Action                                    Data I/O

1            Sets MODE and DATA signals                  Waits for NCMD low                               Input

2            Clears NCMD signal                          Latches MODE and DATA                            Input

3            Waits for RDY low                           Clears RDY signal                                Input

4            Releases MODE and DATA signals              Executes command and polls NCMD high             Input

5            Sets NCMD signal                            Executes command and polls NCMD high             Input

6            Waits for RDY high                          Sets RDY                                         Input

20.2.4.2     Read Handshaking

          For details on the read handshaking sequence, refer to Figure 20-3 and Table 20-5.

          Figure 20-3.  Parallel Programming Timing, Read Sequence

                                 NCMD           2                                                     12

                                 RDY                     3                                                13

                                 NOE                                5                 9

                                 NVALID                                         7              11

                                                                 4           6     8           10

                                DATA[15:0]            Adress IN         Z          Data OUT        X      IN

                                             1

                                MODE[3:0]             ADDR

                                                                                              SAM7X Series [DATASHEET]           116

                                                                                                          6120K–ATARM–11-Feb-14
Table 20-5.     Read Handshake

Step           Programmer Action                   Device Action                             DATA I/O

1              Sets MODE and DATA signals          Waits for NCMD low                        Input

2              Clears NCMD signal                  Latch MODE and DATA                       Input

3              Waits for RDY low                   Clears RDY signal                         Input

4              Sets DATA signal in tristate        Waits for NOE Low                         Input

5              Clears NOE signal                                                             Tristate

6              Waits for NVALID low                Sets DATA bus in output mode and outputs  Output

                                                   the flash contents.

7                                                  Clears NVALID signal                      Output

8              Reads value on DATA Bus             Waits for NOE high                        Output

9              Sets NOE signal                                                               Output

10             Waits for NVALID high               Sets DATA bus in input mode               X

11             Sets DATA in output mode            Sets NVALID signal                        Input

12             Sets NCMD signal                    Waits for NCMD high                       Input

13             Waits for RDY high                  Sets RDY signal                           Input

20.2.5    Device Operations

          Several commands on the Flash memory are available. These commands are summarized in Table 20-3 on page 114.

          Each command is driven by the programmer through the parallel interface running several read/write handshaking

          sequences.

          When a new command is executed, the previous one is automatically achieved. Thus, chaining a read command after a

          write automatically flushes the load buffer in the Flash.

20.2.5.1     Flash Read Command

          This command is used to read the contents of the Flash memory. The read command can start at any valid address in

          the memory plane and is optimized for consecutive reads. Read handshaking can be chained; an internal address buffer

          is automatically increased.

          Table 20-6.       Read Command

          Step         Handshake Sequence    MODE[3:0]               DATA[15:0]

          1            Write handshaking     CMDE                    READ

          2            Write handshaking     ADDR0                   Memory Address LSB

          3            Write handshaking     ADDR1                   Memory Address

          4            Read handshaking      DATA                    *Memory Address++

          5            Read handshaking      DATA                    *Memory Address++

          ...          ...                   ...                     ...

          n            Write handshaking     ADDR0                   Memory Address LSB

          n+1          Write handshaking     ADDR1                   Memory Address

          n+2          Read handshaking      DATA                    *Memory Address++

          n+3          Read handshaking      DATA                    *Memory Address++

          ...          ...                   ...                     ...

                                                                                         SAM7X Series [DATASHEET]               117

                                                                                                6120K–ATARM–11-Feb-14
20.2.5.2  Flash Write Command

          This command is used to write the Flash contents.

          The Flash memory plane is organized into several pages. Data to be written are stored in a load buffer that corresponds

          to a Flash memory page. The load buffer is automatically flushed to the Flash:

               before access to any page other than the current one

               when a new command is validated (MODE = CMDE)

          The Write Page command (WP) is optimized for consecutive writes. Write handshaking can be chained; an internal

          address buffer is automatically increased.

          Table 20-8.       Write Command

          Step         Handshake Sequence       MODE[3:0]                    DATA[15:0]

          1            Write handshaking        CMDE                         WP or WPL or EWP or  EWPL

          2            Write handshaking        ADDR0                        Memory Address LSB

          3            Write handshaking        ADDR1                        Memory Address

          4            Write handshaking        DATA                         *Memory Address++

          5            Write handshaking        DATA                         *Memory Address++

          ...          ...                      ...                          ...

          n            Write handshaking        ADDR0                        Memory Address LSB

          n+1          Write handshaking        ADDR1                        Memory Address

          n+2          Write handshaking        DATA                         *Memory Address++

          n+3          Write handshaking        DATA                         *Memory Address++

          ...          ...                      ...                          ...

          The Flash command Write Page and Lock (WPL) is equivalent to the Flash Write Command. However, the lock bit is

          automatically set at the end of the Flash write operation. As a lock region is composed of several pages, the programmer

          writes to the first pages of the lock region using Flash write commands and writes to the last page of the lock region using

          a Flash write and lock command.

          The Flash command Erase Page and Write (EWP) is equivalent to the Flash Write Command. However, before

          programming the load buffer, the page is erased.

          The Flash command Erase Page and Write the Lock (EWPL) combines EWP and WPL commands.

20.2.5.3  Flash Full Erase Command

          This command is used to erase the Flash memory planes.

          All lock regions must be unlocked before the Full Erase command by using the CLB command. Otherwise, the erase

          command is aborted and no page is erased.

          Table 20-9.       Full Erase Command

          Step         Handshake Sequence                         MODE[3:0]       DATA[15:0]

          1            Write handshaking                          CMDE            EA

          2            Write handshaking                          DATA            0

20.2.5.4  Flash Lock Commands

          Lock bits can be set using WPL or EWPL commands. They can also be set by using the Set Lock command (SLB). With

          this command, several lock bits can be activated. A Bit Mask is provided as argument to the command. When bit 0 of the

          bit mask is set, then the first lock bit is activated.

                                                                                                  SAM7X Series [DATASHEET]              118

                                                                                                        6120K–ATARM–11-Feb-14
          In the same way, the Clear Lock command (CLB) is used to clear lock bits. All the lock bits are also cleared by the EA

          command.

          Table 20-10.  Set and Clear Lock Bit Command

          Step      Handshake Sequence                         MODE[3:0]  DATA[15:0]

          1         Write handshaking                          CMDE       SLB or CLB

          2         Write handshaking                          DATA       Bit Mask

          Lock bits can be read using Get Lock Bit command (GLB). The nth lock bit is active when the bit n of the bit mask is set..

          Table 20-11.  Get Lock Bit Command

          Step      Handshake Sequence                         MODE[3:0]  DATA[15:0]

          1         Write handshaking                          CMDE       GLB

                                                                          Lock Bit Mask Status

          2         Read handshaking                           DATA       0 = Lock bit is cleared

                                                                          1 = Lock bit is set

20.2.5.5  Flash General-purpose NVM Commands

          General-purpose NVM bits (GP NVM bits) can be set using the Set GPNVM command (SGPB). This command also

          activates GP NVM bits. A bit mask is provided as argument to the command. When bit 0 of the bit mask is set, then the

          first GP NVM bit is activated.

          In the same way, the Clear GPNVM command (CGPB) is used to clear general-purpose NVM bits. All the general-

          purpose NVM bits are also cleared by the EA command. The general-purpose NVM bit is deactivated when the

          corresponding bit in the pattern value is set to 1.

          Table 20-12.  Set/Clear GP NVM Command

          Step      Handshake Sequence                         MODE[3:0]  DATA[15:0]

          1         Write handshaking                          CMDE       SGPB or CGPB

          2         Write handshaking                          DATA       GP NVM bit pattern value

          General-purpose NVM bits can be read using the Get GPNVM Bit command (GGPB). The nth GP NVM bit is active when

          bit n of the bit mask is set..

          Table 20-13.  Get GP NVM Bit Command

          Step      Handshake Sequence                         MODE[3:0]  DATA[15:0]

          1         Write handshaking                          CMDE       GGPB

                                                                          GP NVM Bit Mask Status

          2         Read handshaking                           DATA       0 = GP NVM bit is cleared

                                                                          1 = GP NVM bit is set

20.2.5.6  Flash Security Bit Command

          A security bit can be set using the Set Security Bit command (SSE). Once the security bit is active, the Fast Flash

          programming is disabled. No other command can be run. An event on the Erase pin can erase the security bit once the

          contents of the Flash have been erased.

                                                                                      SAM7X Series [DATASHEET]                        119

                                                                                                     6120K–ATARM–11-Feb-14
          The AT91SAM7X512 security bit is controlled by the EFC0. To use the Set Security Bit command, the EFC0 must be

          selected using the Select EFC command

          Table 20-14.  Set Security Bit Command

          Step  Handshake Sequence                     MODE[3:0]                   DATA[15:0]

          1     Write handshaking                      CMDE                        SSE

          2     Write handshaking                      DATA                        0

          Once the security bit is set, it is not possible to access FFPI. The only way to erase the security bit is to erase the Flash.

          In order to erase the Flash, the user must perform the following:

               Power-off the chip

               Power-on the chip with TST = 0

               Assert Erase during a period of more than 220 ms

               Power-off the chip

          Then it is possible to return to FFPI mode and check that Flash is erased.

20.2.5.7  AT91SAM7X512 Select EFC Command

          The commands WPx, EA, xLB, xFB are executed using the current EFC controller. The default EFC controller is EFC0.

          The Select EFC command (SEFC) allows selection of the current EFC controller.

          Table 20-15.  Select EFC Command

          Step  Handshake Sequence                   MODE[3:0]               DATA[15:0]

          1     Write handshaking                    CMDE                    SEFC

          2     Write handshaking                    DATA                    0 = Select EFC0

                                                                             1 = Select EFC1

20.2.5.8  Memory Write Command

          This command is used to perform a write access to any memory location.

          The Memory Write command (WRAM) is optimized for consecutive writes. Write handshaking can be chained; an

          internal address buffer is automatically increased.

          Table 20-16.  Write Command

          Step  Handshake Sequence              MODE[3:0]         DATA[15:0]

          1     Write handshaking               CMDE              WRAM

          2     Write handshaking               ADDR0             Memory Address LSB

          3     Write handshaking               ADDR1             Memory Address

          4     Write handshaking               DATA              *Memory Address++

          5     Write handshaking               DATA              *Memory Address++

          ...   ...                             ...               ...

          n     Write handshaking               ADDR0             Memory Address LSB

          n+1   Write handshaking               ADDR1             Memory Address

          n+2   Write handshaking               DATA              *Memory Address++

          n+3   Write handshaking               DATA              *Memory Address++

          ...   ...                             ...               ...

                                                                                               SAM7X Series [DATASHEET]                   120

                                                                                               6120K–ATARM–11-Feb-14
20.2.5.9  Get Version Command

          The Get Version (GVE) command retrieves the version of the FFPI interface.

          Table 20-17.  Get Version Command

          Step  Handshake Sequence           MODE[3:0]  DATA[15:0]

          1     Write handshaking            CMDE       GVE

          2     Write handshaking            DATA       Version

                                                                                      SAM7X Series [DATASHEET]  121

                                                                                      6120K–ATARM–11-Feb-14
20.3    Serial Fast Flash Programming

        The Serial Fast Flash programming interface is based on IEEE Std. 1149.1 “Standard Test Access Port and Boundary-

        Scan Architecture”. Refer to this standard for an explanation of terms used in this chapter and for a description of the

        TAP controller states.

        In this mode, data read/written from/to the embedded Flash of the device are transmitted through the JTAG interface of

        the device.

20.3.1  Device Configuration

        In Serial Fast Flash Programming Mode, the device is in a specific test mode.Only a certain set of pins is significant, the

        rest of the PIOs are used as inputs with a pull-up. The crystal oscillator is in bypass mode. Other pins must be left

        unconnected.

        Figure 20-4.  Serial Programing

                                        VDDIO    TST

                                        VDDIO    PGMEN0

                                        VDDIO    PGMEN1

                                                                              VDDCORE

                                          TDI                                 VDDIO

                                         TDO                                  VDDPLL

                                         TMS                                  VDDFLASH

                                         TCK                                  GND

                                        0-50MHz  XIN

Table 20-18.  Signal  Description List

                                                                              Active

Signal Name           Function                                        Type    Level   Comments

                                                              Power

VDDFLASH              Flash Power Supply                              Power

VDDIO                 I/O Lines Power Supply                          Power

VDDCORE               Core Power Supply                               Power

VDDPLL                PLL Power Supply                                Power

GND                   Ground                                          Ground

                                                              Clocks

                      Main Clock Input.

XIN                   This input can be tied to GND. In this          Input           32 kHz to 50 MHz

                      case, the device is clocked by the internal

                      RC oscillator.

                                                                              SAM7X Series [DATASHEET]                               122

                                                                                        6120K–ATARM–11-Feb-14
Table 20-18.   Signal  Description List (Continued)

                                                                                   Active

Signal Name                 Function                                       Type    Level         Comments

                                                     Test

TST                         Test Mode Select                               Input   High          Must be connected to VDDIO.

PGMEN0                      Test Mode Select                               Input   High          Must be connected to VDDIO

PGMEN1                      Test Mode Select                               Input   High          Must be connected to VDDIO

                                                     JTAG

TCK                         JTAG TCK                                       Input   -             Pulled-up input at reset

TDI                         JTAG Test Data In                              Input   -             Pulled-up input at reset

TDO                         JTAG Test Data Out                             Output  -

TMS                         JTAG Test Mode Select                          Input   -             Pulled-up input at reset

20.3.2  Entering Serial Programming Mode

        The following algorithm puts the device in Serial Programming Mode:

              Apply GND, VDDIO, VDDCORE, VDDFLASH and VDDPLL.

              Apply XIN clock within TPOR_RESET + 32(TSCLK) if an external clock is available.

              Wait for TPOR_RESET.

              Reset the TAP controller clocking 5 TCK pulses with TMS set.

              Shift 0x2 into the IR register (IR is 4 bits long, LSB first) without going through the Run-Test-Idle state.

              Shift 0x2 into the DR register (DR is 4 bits long, LSB first) without going through the Run-Test-Idle state.

              Shift 0xC into the IR register (IR is 4 bits long, LSB first) without going through the Run-Test-Idle state.

        Note:  After reset, the device is clocked by the internal RC oscillator. Before clearing RDY signal, if an external clock ( >

               32 kHz) is connected to XIN, then the device will switch on the external clock. Else, XIN input is not considered.

               An higher frequency on XIN speeds up the programmer handshake.

        Table  20-19.  Reset TAP      Controller and Go to Select-DR-Scan

                       TDI                      TMS  TAP Controller State

                       X                        1

                       X                        1

                       X                        1

                       X                        1

                       X                        1    Test-Logic Reset

                       X                        0    Run-Test/Idle

                       Xt                       1    Select-DR-Scan

20.3.3  Read/Write Handshake

        The read/write handshake is done by carrying out read/write operations on two registers of the device that are accessible

        through the JTAG:

              Debug Comms Control Register: DCCR

              Debug Comms Data Register: DCDR

        Access to these registers is done through the TAP 38-bit DR register comprising a 32-bit data field, a 5-bit address field

        and a read/write bit. The data to be written is scanned into the 32-bit data field with the address of the register to the 5-bit

                                                                                      SAM7X Series [DATASHEET]                            123

                                                                                                 6120K–ATARM–11-Feb-14
          address field and 1 to the read/write bit. A register is read by scanning its address into the address field and 0 into the

          read/write bit, going through the UPDATE-DR TAP state, then scanning out the data.

          Refer to the ARM7TDMI reference manuel for more information on Comm channel operations.

          Figure 20-5.  TAP 8-bit DR Register

                        TDI    r/w  4  Address    0  31                    Data                    0  TDO

                                        5                                          32

                                       Address              Debug Comms Control Register

                                       Decoder

                                                            Debug Comms Data Register

          A read or write takes place when the TAP controller enters UPDATE-DR state. Refer to the IEEE 1149.1 for more details

          on JTAG operations.

                The address of the Debug Comms Control Register is 0x04.

                The address of the Debug Comms Data Register is 0x05.

                 The Debug Comms Control Register is read-only and allows synchronized handshaking between the processor

                 and the debugger.

                       Bit 1 (W): Denotes whether the programmer can read a data through the Debug Comms Data Register. If

                        the device is busy W = 0, then the programmer must poll until W = 1.

                       Bit 0 (R): Denotes whether the programmer can send data from the Debug Comms Data Register. If R = 1,

                        data previously placed there through the scan chain has not been collected by the device and so the

                        programmer must wait.

          The write handshake is done by polling the Debug Comms Control Register until the R bit is cleared. Once cleared, data

          can be written to the Debug Comms Data Register.

          The read handshake is done by polling the Debug Comms Control Register until the W bit is set. Once set, data can be

          read in the Debug Comms Data Register.

20.3.4    Device Operations

          Several commands on the Flash memory are available. These commands are summarized in Table 20-3 on page 114.

          Commands are run by the programmer through the serial interface that is reading and writing the Debug Comms

          Registers.

20.3.4.1  Flash Read Command

          This command is used to read the Flash contents. The memory map is accessible through this command. Memory is

          seen as an array of words (32-bit wide). The read command can start at any valid address in the memory plane. This

          address must be word-aligned. The address is automatically incremented.

          Table 20-20.  Read Command

          Read/Write           DR Data

          Write                (Number of Words to Read) << 16 | READ

          Write                Address

          Read                 Memory [address]

                                                                                              SAM7X Series [DATASHEET]                 124

                                                                                                   6120K–ATARM–11-Feb-14
          Table 20-20.  Read Command (Continued)

          Read/Write           DR Data

          Read                 Memory [address+4]

          ...                  ...

          Read                 Memory [address+(Number of Words to Read - 1)* 4]

20.3.4.2  Flash Write Command

          This command is used to write the Flash contents. The address transmitted must be a valid Flash address in the memory

          plane.

          The Flash memory plane is organized into several pages. Data to be written is stored in a load buffer that corresponds to

          a Flash memory page. The load buffer is automatically flushed to the Flash:

                 before access to any page than the current one

                 at the end of the number of words transmitted

          The Write Page command (WP) is optimized for consecutive writes. Write handshaking can be chained; an internal

          address buffer is automatically increased.

          Table 20-21.  Write  Command

          Read/Write           DR Data

          Write                (Number of Words to Write)        << 16 | (WP or WPL or EWP   or  EWPL)

          Write                Address

          Write                Memory [address]

          Write                Memory [address+4]

          Write                Memory [address+8]

          Write                Memory [address+(Number           of Words to Write - 1)* 4]

          Flash Write Page and Lock command (WPL) is equivalent to the Flash Write Command. However, the lock bit is

          automatically set at the end of the Flash write operation. As a lock region is composed of several pages, the programmer

          writes to the first pages of the lock region using Flash write commands and writes to the last page of the lock region using

          a Flash write and lock command.

          Flash Erase Page and Write command (EWP) is equivalent to the Flash Write Command. However, before

          programming the load buffer, the page is erased.

          Flash Erase Page and Write the Lock command (EWPL) combines EWP and WPL commands.

20.3.4.3  Flash Full Erase Command

          This command is used to erase the Flash memory planes.

          All lock bits must be deactivated before using the Full Erase command. This can be done by using the CLB command.

          Table 20-22.  Full Erase Command

          Read/Write           DR Data

          Write                EA

20.3.4.4  Flash Lock Commands

          Lock bits can be set using WPL or EWPL commands. They can also be set by using the Set Lock command (SLB). With

          this command, several lock bits can be activated at the same time. Bit 0 of Bit Mask corresponds to the first lock bit and

          so on.

                                                                                             SAM7X Series [DATASHEET]                   125

                                                                                                        6120K–ATARM–11-Feb-14
          In the same way, the Clear Lock command (CLB) is used to clear lock bits. All the lock bits can also be cleared by the

          EA command.

          Table 20-23.  Set and Clear Lock Bit Command

          Read/Write    DR Data

          Write         SLB or CLB

          Write         Bit Mask

          Lock bits can be read using Get Lock Bit command (GLB). When a bit set in the Bit Mask is returned, then the

          corresponding lock bit is active.

          Table 20-24.  Get Lock Bit Command

          Read/Write    DR Data

          Write         GLB

          Read          Bit Mask

20.3.4.5  Flash General-purpose NVM Commands

          General-purpose NVM bits (GP NVM) can be set with the Set GPNVM command (SGPB). Using this command, several

          GP NVM bits can be activated at the same time. Bit 0 of Bit Mask corresponds to the first GPNVM bit and so on.

          In the same way, the Clear GPNVM command (CGPB) is used to clear GP NVM bits. All the general-purpose NVM bits

          are also cleared by the EA command.

          Table 20-25.  Set and Clear General-purpose NVM Bit Command

          Read/Write    DR Data

          Write         SGPB or CGPB

          Write         Bit Mask

          GP NVM bits can be read using Get GPNVM Bit command (GGPB). When a bit set in the Bit Mask is returned, then the

          corresponding GPNVM bit is set.

          Table 20-26.  Get General-purpose NVM Bit Command

          Read/Write    DR Data

          Write         GGPB

          Read          Bit Mask

20.3.4.6  Flash Security Bit Command

          Security bits can be set using Set Security Bit command (SSE). Once the security bit is active, the Fast Flash

          programming is disabled. No other command can be run. Only an event on the Erase pin can erase the security bit once

          the contents of the Flash have been erased.

          The AT91SAM7X512 security bit is controlled by the EFC0. To use the Set Security Bit command, the EFC0 must be

          selected using the Select EFC command.

          Table 20-27.  Set Security Bit Command

          Read/Write    DR Data

          Write         SSE

          Once the security bit is set, it is not possible to access FFPI. The only way to erase the security bit is to erase the Flash.

          In order to erase the Flash, the user must perform the following:

                Power-off the chip

                Power-on the chip with TST = 0

                                                                             SAM7X Series [DATASHEET]                                     126

                                                                             6120K–ATARM–11-Feb-14
                Assert Erase during a period of more than 220 ms

                Power-off the chip

          Then it is possible to return to FFPI mode and check that Flash is erased.

20.3.4.7  AT91SAM7X512 Select EFC Command

          The commands WPx, EA, xLB, xFB are executed using the current EFC controller. The default EFC controller is EFC0.

          The Select EFC command (SEFC) allows selection of the current EFC controller.

          Table 20-28.  Select EFC Command

          Step        Handshake Sequence           MODE[3:0]                  DATA[15:0]

          1           Write handshaking            CMDE                       SEFC

          2           Write handshaking            DATA                       0 = Select EFC0

                                                                              1 = Select EFC1

20.3.4.8  Memory Write Command

          This command is used to perform a write access to any memory location.

          The Memory Write command (WRAM) is optimized for consecutive writes. An internal address buffer is automatically

          increased.

          Table 20-29.  Write  Command

          Read/Write           DR Data

          Write                (Number of Words to Write)  << 16 | (WRAM)

          Write                Address

          Write                Memory [address]

          Write                Memory [address+4]

          Write                Memory [address+8]

          Write                Memory [address+(Number     of Words to Write  -  1)*  4]

20.3.4.9  Get Version Command

          The Get Version (GVE) command retrieves the version of the FFPI interface.

          Table 20-30.  Get Version Command

          Read/Write           DR Data

          Write                GVE

          Read                 Version

                                                                                          SAM7X Series [DATASHEET]           127

                                                                                               6120K–ATARM–11-Feb-14
21.   AT91SAM Boot Program

21.1  Overview

      The Boot Program integrates different programs permitting download and/or upload into       the      different memories     of  the

      product.

      First, it initializes the Debug Unit serial port (DBGU) and the USB Device Port.

      SAM-BA Boot is then executed. It waits for transactions either on the USB device, or on     the      DBGU serial port.

21.2  Flow Diagram

      The Boot Program implements the algorithm in Figure 21-1.

      Figure 21-1.  Boot Program Algorithm Flow Diagram

                                                                                        No

                               Device                                         No             AutoBaudrate

                                                         USB Enumeration                Sequence Successful ?

                               Setup                     Successful ?

                                                         Yes                                      Yes

                                                         Run SAM-BA Boot                Run SAM-BA Boot

21.3  Device Initialization

      Initialization follows the steps described below:

      1.   FIQ initialization

      1.   Stack setup for ARM supervisor mode

      2.   Setup the Embedded Flash Controller

      3.   External Clock detection

      4.   Main oscillator frequency detection if no external clock detected

      5.   Switch Master Clock on Main Oscillator

      6.   Copy code into SRAM

      7.   C variable initialization

      8.   PLL setup: PLL is initialized to generate a 48 MHz clock necessary to        use  the  USB  Device

      9.   Disable of the Watchdog and enable of the user reset

      10.  Initialization of the USB Device Port

      11.  Jump to SAM-BA Boot sequence (see “SAM-BA Boot” on page 129)

                                                                                        SAM7X Series [DATASHEET]                      128

                                                                                                           6120K–ATARM–11-Feb-14
21.4  SAM-BA Boot

      The SAM-BA boot principle is to:

                   Check if USB Device enumeration has occurred

                   Check if the AutoBaudrate sequence has succeeded (see Figure 21-2)

      Figure 21-2.  AutoBaudrate Flow Diagram

                                              Device

                                              Setup

                                        Character '0x80'         No      1st measurement

                                        received ?

                                        Yes

                                        Character '0x80'         No      2nd measurement

                                        received ?

                                        Yes

                                        Character '#'            No      Test Communication

                                        received ?

                                        Yes

                                        Send  Character '>'              UART operational

                                        Run SAM-BA Boot

                   Once the communication interface is identified, the application runs in an infinite loop waiting for different

                    commands as in Table 21-1.

      Table 21-1.   Commands Available  through the SAM-BA Boot

      Command       Action                      Argument(s)          Example

      O             write a byte                Address, Value#      O200001,CA#

      o             read a byte                 Address,#            o200001,#

      H             write a half word           Address, Value#      H200002,CAFE#

      h             read a half word            Address,#            h200002,#

      W             write a word                Address, Value#      W200000,CAFEDECA#

      w             read a word                 Address,#            w200000,#

      S             send a file                 Address,#            S200000,#

      R             receive a file              Address, NbOfBytes#  R200000,1234#

      G             go                          Address#             G200200#

      V             display version             No argument          V#

                                                                                SAM7X Series [DATASHEET]                            129

                                                                                             6120K–ATARM–11-Feb-14
              Write commands: Write a byte (O), a halfword (H) or a word (W) to the target.

                 Address: Address in hexadecimal.

                 Value: Byte, halfword or word to write in hexadecimal.

                 Output: ‘>’.

              Read commands: Read a byte (o), a halfword (h) or a word (w) from the target.

                 Address: Address in hexadecimal

                 Output: The byte, halfword or word read in hexadecimal following by ‘>’

              Send a file (S): Send a file to a specified address

                 Address: Address in hexadecimal

                 Output: ‘>’.

        Note:  There is a time-out on this command which is reached when the prompt ‘>’ appears       before  the  end  of    the  com-

               mand execution.

              Receive a file (R): Receive data into a file from a specified address

                 Address: Address in hexadecimal

                 NbOfBytes: Number of bytes in hexadecimal to receive

                 Output: ‘>’

              Go (G): Jump to a specified address and execute the code

                 Address: Address to jump in hexadecimal

                 Output: ‘>’

              Get Version (V): Return the SAM-BA boot version

                 Output: ‘>’

21.4.1  DBGU Serial Port

        Communication is performed through the DBGU serial port initialized to 115200 Baud, 8, n, 1.

        The Send and Receive File commands use the Xmodem protocol to communicate. Any terminal performing this protocol

        can be used to send the application file to the target. The size of the binary file to send depends on the SRAM size

        embedded in the product. In all cases, the size of the binary file must be lower than the SRAM size because the Xmodem

        protocol requires some SRAM memory to work.

21.4.2  Xmodem Protocol

        The Xmodem protocol supported is the 128-byte length block. This protocol uses a two-character CRC-16 to guarantee

        detection of a maximum bit error.

        Xmodem protocol with CRC is accurate provided both sender and receiver report successful transmission. Each block of

        the transfer looks like:

        <255-blk #><--128 data bytes--> in which:

                  = 01 hex

                  = binary number, starts at 01, increments by 1, and wraps 0FFH to 00H (not to 01)

                 <255-blk #> = 1’s complement of the blk#.

                  = 2 bytes CRC16

        Figure 21-3 shows a transmission using this protocol.

                                                                                      SAM7X Series [DATASHEET]                     130

                                                                                                      6120K–ATARM–11-Feb-14
          Figure 21-3.     Xmodem Transfer Example

                                              Host                                             Device

                                                                C

                                                        SOH 01 FE Data[128] CRC CRC

                                                                ACK

                                                        SOH 02 FD Data[128] CRC CRC

                                                                ACK

                                                        SOH 03 FC Data[100] CRC CRC

                                                                ACK

                                                                EOT

                                                                ACK

21.4.3    USB Device Port

          A 48 MHz USB clock is necessary to use the USB Device port. It has been programmed earlier in the device initialization

          procedure with PLLB configuration.

          The device uses the USB communication device class (CDC) drivers to take advantage of the installed PC RS-232

          software to talk over the USB. The CDC class is implemented in all releases of Windows®, from Windows 98SE to

          Windows XP®. The CDC document, available at www.usb.org, describes a way to implement devices such as ISDN

          modems and virtual COM ports.

          The Vendor ID is Atmel’s vendor ID 0x03EB. The product ID is 0x6124. These references are used by the host operating

          system to mount the correct driver. On Windows systems, the INF files contain the correspondence between vendor ID

          and product ID.

          Atmel provides an INF example to see the device as a new serial port and also provides another custom driver used by

          the SAM-BA application: atm6124.sys. Refer to the document “USB Basic Application”, literature number 6123, for more

          details.

21.4.3.1  Enumeration Process

          The USB protocol is a master/slave protocol. This is the host that starts the enumeration sending requests to the device

          through the control endpoint. The device handles standard requests as defined in the USB Specification.

          Table 21-2.      Handled Standard   Requests

          Request                                   Definition

          GET_DESCRIPTOR                            Returns the current device configuration value.

          SET_ADDRESS                               Sets the device address for all future device access.

          SET_CONFIGURATION                         Sets the device configuration.

          GET_CONFIGURATION                         Returns the current device configuration value.

          GET_STATUS                                Returns status for the specified recipient.

          SET_FEATURE                               Used to set or enable a specific feature.

          CLEAR_FEATURE                             Used to clear or disable a specific feature.

                                                                                                  SAM7X Series [DATASHEET]          131

                                                                                                           6120K–ATARM–11-Feb-14
          The device also handles some class requests defined in the CDC class.

          Table 21-3.  Handled Class Requests

          Request                              Definition

          SET_LINE_CODING                      Configures DTE rate, stop bits, parity and number of

                                               character bits.

          GET_LINE_CODING                      Requests current DTE rate, stop bits, parity and number of

                                               character bits.

          SET_CONTROL_LINE_STATE               RS-232 signal used to tell the DCE device the DTE device

                                               is now present.

          Unhandled requests are STALLed.

21.4.3.2  Communication Endpoints

          There are two communication endpoints and endpoint 0 is used for the enumeration process. Endpoint 1 is a 64-byte

          Bulk OUT endpoint and endpoint 2 is a 64-byte Bulk IN endpoint. SAM-BA Boot commands are sent by the host through

          the endpoint 1. If required, the message is split by the host into several data payloads by the host driver.

          If the command requires a response, the host can send IN transactions to pick up the response.

                                                                                 SAM7X Series [DATASHEET]                        132

                                                                                                          6120K–ATARM–11-Feb-14
21.5  Hardware and Software Constraints

        SAM-BA boot copies itself in the SRAM and      uses a block of internal SRAM for variables and stacks. The

         remaining available size for the user code is  122880 bytes for SAM7x512, 57344 bytes for SAM7X256 and      24576

         bytes for SAM7X128.

        USB requirements:

                  pull-up on DDP

                  18.432 MHz Quartz

      Table 21-4.  User Area Addresses

      Device                Start Address               End Address  Size (bytes)

      SAM7X512              0x202000                    0x220000     122880

      SAM7X256              0x202000                    0x210000     57344

      SAM7X128              0x202000                    0x208000     24576

      Table 21-5.  Pins Driven during Boot Program Execution

      Peripheral                      Pin                            PIO Line

      DBGU                            DRXD                           PA27

      DBGU                            DTXD                           PA28

                                                                     SAM7X Series [DATASHEET]                        133

                                                                                   6120K–ATARM–11-Feb-14
22.     Peripheral DMA Controller (PDC)

22.1    Overview

        The Peripheral DMA Controller (PDC) transfers data between on-chip serial peripherals such as the UART, USART,

        SSC, SPI, MCI and the on- and off-chip memories. Using the Peripheral DMA Controller avoids processor intervention

        and removes the processor interrupt-handling overhead. This significantly reduces the number of clock cycles required

        for a data transfer and, as a result, improves the performance of the microcontroller and makes it more power efficient.

        The PDC channels are implemented in pairs, each pair being dedicated to a particular peripheral. One channel in the pair

        is dedicated to the receiving channel and one to the transmitting channel of each UART, USART, SSC and SPI.

        The user interface of a PDC channel is integrated in the memory space of each peripheral. It contains:

          A 32-bit memory pointer register

          A 16-bit transfer count register

          A 32-bit register for next memory pointer

          A 16-bit register for next transfer count

        The peripheral triggers PDC transfers using transmit and receive signals. When the programmed data is transferred, an

        end of transfer interrupt is generated by the corresponding peripheral.

22.2    Block Diagram

        Figure 22-1.   Block Diagram

                       Peripheral                     Peripheral DMA Controller

                       THR                            PDC Channel 0

                       RHR                            PDC Channel 1              Control  Memory

                                                                                          Controller

                       Control                        Status & Control

22.3    Functional Description

22.3.1  Configuration

        The PDC channels user interface enables the user to configure and control the data transfers for each channel. The user

        interface of a PDC channel is integrated into the user interface of the peripheral (offset 0x100), which it is related to.

        Per peripheral, it contains four 32-bit Pointer Registers (RPR, RNPR, TPR, and TNPR) and four 16-bit Counter Registers

        (RCR, RNCR, TCR, and TNCR).

                                                                                          SAM7X Series [DATASHEET]                  134

                                                                                          6120K–ATARM–11-Feb-14
        The size of the buffer (number of transfers) is configured in an internal 16-bit transfer counter register, and it is possible,

        at any moment, to read the number of transfers left for each channel.

        The memory base address is configured in a 32-bit memory pointer by defining the location of the first address to access

        in the memory. It is possible, at any moment, to read the location in memory of the next transfer and the number of

        remaining transfers. The PDC has dedicated status registers which indicate if the transfer is enabled or disabled for each

        channel. The status for each channel is located in the peripheral status register. Transfers can be enabled and/or

        disabled by setting TXTEN/TXTDIS and RXTEN/RXTDIS in PDC Transfer Control Register. These control bits enable

        reading the pointer and counter registers safely without any risk of their changing between both reads.

        The PDC sends status flags to the peripheral visible in its status-register (ENDRX, ENDTX, RXBUFF, and TXBUFE).

        ENDRX flag is set when the PERIPH_RCR register reaches zero.

        RXBUFF flag is set when both PERIPH_RCR and PERIPH_RNCR reach zero.

        ENDTX flag is set when the PERIPH_TCR register reaches zero.

        TXBUFE flag is set when both PERIPH_TCR and PERIPH_TNCR reach zero.

        These status flags are described in the peripheral status register.

22.3.2  Memory Pointers

        Each peripheral is connected to the PDC by a receiver data channel and a transmitter data channel. Each channel has

        an internal 32-bit memory pointer. Each memory pointer points to a location anywhere in the memory space (on-chip

        memory or external bus interface memory).

        Depending on the type of transfer (byte, half-word or word), the memory pointer is incremented by 1, 2 or 4, respectively

        for peripheral transfers.

        If a memory pointer is reprogrammed while the PDC is in operation, the transfer address is changed, and the PDC

        performs transfers using the new address.

22.3.3  Transfer Counters

        There is one internal 16-bit transfer counter for each channel used to count the size of the block already transferred by its

        associated channel. These counters are decremented after each data transfer. When the counter reaches zero, the

        transfer is complete and the PDC stops transferring data.

        If the Next Counter Register is equal to zero, the PDC disables the trigger while activating the related peripheral end flag.

        If the counter is reprogrammed while the PDC is operating, the number of transfers is updated and the PDC counts

        transfers from the new value.

        Programming the Next Counter/Pointer registers chains the buffers. The counters are decremented after each data

        transfer as stated above, but when the transfer counter reaches zero, the values of the Next Counter/Pointer are loaded

        into the Counter/Pointer registers in order to re-enable the triggers.

        For each channel, two status bits indicate the end of the current buffer (ENDRX, ENTX) and the end of both current and

        next buffer (RXBUFF, TXBUFE). These bits are directly mapped to the peripheral status register and can trigger an

        interrupt request to the AIC.

        The peripheral end flag is automatically cleared when one of the counter-registers (Counter or Next Counter Register) is

        written.

        Note: When the Next Counter Register is loaded into the Counter Register, it is set to zero.

22.3.4  Data Transfers

        The peripheral triggers PDC transfers using transmit (TXRDY) and receive (RXRDY) signals.

        When the peripheral receives an external character, it sends a Receive Ready signal to the PDC which then requests

        access to the system bus. When access is granted, the PDC starts a read of the peripheral Receive Holding Register

        (RHR) and then triggers a write in the memory.

                                                                                SAM7X Series [DATASHEET]                                 135

                                                                                                      6120K–ATARM–11-Feb-14
        After each transfer, the relevant PDC memory pointer is incremented and the number of transfers left is decremented.

        When the memory block size is reached, a signal is sent to the peripheral and the transfer stops.

        The same procedure is followed, in reverse, for transmit transfers.

22.3.5  Priority of PDC Transfer Requests

        The Peripheral DMA Controller handles transfer requests from the channel according to priorities fixed for each

        product.These priorities are defined in the product datasheet.

        If simultaneous requests of the same type (receiver or transmitter) occur on identical peripherals, the priority is

        determined by the numbering of the peripherals.

        If transfer requests are not simultaneous, they are treated in the order they occurred. Requests from the receivers are

        handled first and then followed by transmitter requests.

22.4    Peripheral DMA Controller (PDC) User Interface

Table 22-1.  Register Mapping

Offset       Register                                    Name                               Access                                Reset

0x100        Receive Pointer Register                    PERIPH(1)_RPR                      Read-write                            0x0

0x104        Receive Counter Register                    PERIPH_RCR                         Read-write                            0x0

0x108        Transmit Pointer Register                   PERIPH_TPR                         Read-write                            0x0

0x10C        Transmit Counter Register                   PERIPH_TCR                         Read-write                            0x0

0x110        Receive Next Pointer Register               PERIPH_RNPR                        Read-write                            0x0

0x114        Receive Next Counter Register               PERIPH_RNCR                        Read-write                            0x0

0x118        Transmit Next Pointer Register              PERIPH_TNPR                        Read-write                            0x0

0x11C        Transmit Next Counter Register              PERIPH_TNCR                        Read-write                            0x0

0x120        PDC Transfer Control Register               PERIPH_PTCR                        Write-only                            -

0x124        PDC Transfer Status Register                PERIPH_PTSR                        Read-only                             0x0

Note:   1.   PERIPH: Ten registers are mapped in the peripheral memory space at the   same  offset. These can  be            defined by the

             user according to the function and the peripheral desired (DBGU, USART,  SSC,  SPI, MCI, etc.).

                                                                                      SAM7X Series [DATASHEET]                         136

                                                                                                           6120K–ATARM–11-Feb-14
22.4.1     PDC Receive Pointer Register

Register Name:  PERIPH_RPR

Access Type:    Read-write

        31      30                     29     28         27  26     25                     24

                                                  RXPTR

        23      22                     21     20         19  18     17                     16

                                                  RXPTR

        15      14                     13     12         11  10     9                      8

                                                  RXPTR

        7       6                      5      4          3   2      1                      0

                                                  RXPTR

•  RXPTR: Receive Pointer Address

Address of the next receive transfer.

22.4.2     PDC Receive Counter Register

Register Name:  PERIPH_RCR

Access Type:    Read-write

        31      30                     29     28         27  26     25                     24

                                                  --

        23      22                     21     20         19  18     17                     16

                                                  --

        15      14                     13     12         11  10     9                      8

                                                  RXCTR

        7       6                      5      4          3   2      1                      0

                                                  RXCTR

•  RXCTR: Receive Counter Value

Number of receive transfers to be performed.

                                                             SAM7X  Series [DATASHEET]         137

                                                                    6120K–ATARM–11-Feb-14
22.4.3     PDC Transmit Pointer Register

Register Name:  PERIPH_TPR

Access Type:    Read-write

        31      30                  29             28                        27          26                25                     24

                                                               TXPTR

        23      22                  21             20                        19          18                17                     16

                                                               TXPTR

        15      14                  13             12                        11          10                9                      8

                                                               TXPTR

        7       6                   5              4                         3           2                 1                      0

                                                               TXPTR

•  TXPTR: Transmit Pointer Address

Address of the transmit buffer.

22.4.4     PDC Transmit Counter Register

Register Name:  PERIPH_TCR

Access Type:    Read-write

        31      30                  29             28                        27          26                25                     24

                                                               --

        23      22                  21             20                        19          18                17                     16

                                                               --

        15      14                  13             12                        11          10                9                      8

                                                               TXCTR

        7       6                   5              4                         3           2                 1                      0

                                                               TXCTR

•  TXCTR: Transmit Counter Value

TXCTR is the size of the transmit transfer to  be  performed.  At zero, the  peripheral  DMA transfer  is  stopped.

                                                                                         SAM7X Series [DATASHEET]                     138

                                                                                                           6120K–ATARM–11-Feb-14
22.4.5     PDC Receive Next Pointer Register

Register Name:  PERIPH_RNPR

Access Type:    Read-write

        31      30           29                        28          27                   26                 25                     24

                                                           RXNPTR

        23      22           21                        20          19                   18                 17                     16

                                                           RXNPTR

        15      14           13                        12          11                   10                 9                      8

                                                           RXNPTR

        7       6            5                         4           3                    2                  1                      0

                                                           RXNPTR

•  RXNPTR: Receive Next Pointer Address

RXNPTR is the address of the next buffer to fill with  received data when the  current  buffer  is  full.

22.4.6     PDC Receive Next Counter Register

Register Name:  PERIPH_RNCR

Access Type:    Read-write

        31      30           29                        28          27                   26                 25                     24

                                                           --

        23      22           21                        20          19                   18                 17                     16

                                                           --

        15      14           13                        12          11                   10                 9                      8

                                                           RXNCR

        7       6            5                         4           3                    2                  1                      0

                                                           RXNCR

•  RXNCR: Receive Next Counter Value

RXNCR is the size of the next buffer to receive.

                                                                                        SAM7X              Series [DATASHEET]         139

                                                                                                           6120K–ATARM–11-Feb-14
22.4.7     PDC Transmit Next Pointer Register

Register Name:  PERIPH_TNPR

Access Type:    Read-write

        31      30           29                       28                 27                  26     25                     24

                                                            TXNPTR

        23      22           21                       20                 19                  18     17                     16

                                                            TXNPTR

        15      14           13                       12                 11                  10     9                      8

                                                            TXNPTR

        7       6            5                        4                  3                   2      1                      0

                                                            TXNPTR

•  TXNPTR: Transmit Next Pointer Address

TXNPTR is the address of the next buffer to transmit  when  the current  buffer  is  empty.

22.4.8     PDC Transmit Next Counter Register

Register Name:  PERIPH_TNCR

Access Type:    Read-write

        31      30           29                       28                 27                  26     25                     24

                                                            --

        23      22           21                       20                 19                  18     17                     16

                                                            --

        15      14           13                       12                 11                  10     9                      8

                                                            TXNCR

        7       6            5                        4                  3                   2      1                      0

                                                            TXNCR

•  TXNCR: Transmit Next Counter Value

TXNCR is the size of the next buffer to transmit.

                                                                                             SAM7X  Series [DATASHEET]         140

                                                                                                    6120K–ATARM–11-Feb-14
22.4.9     PDC Transfer Control Register

Register Name:  PERIPH_PTCR

Access Type:    Write-only

        31      30                  29                    28                 27  26     25                     24

        –       –                   –                     –                  –   –      –                      –

        23      22                  21                    20                 19  18     17                     16

        –       –                   –                     –                  –   –      –                      –

        15      14                  13                    12                 11  10     9                      8

        –       –                   –                     –                  –   –      TXTDIS  TXTEN

        7       6                   5                     4                  3   2      1                      0

        –       –                   –                     –                  –   –      RXTDIS  RXTEN

•  RXTEN: Receiver Transfer Enable

0 = No effect.

1 = Enables the receiver PDC transfer requests if RXTDIS      is  not  set.

•  RXTDIS: Receiver Transfer Disable

0 = No effect.

1 = Disables the receiver PDC transfer requests.

•  TXTEN: Transmitter Transfer Enable

0 = No effect.

1 = Enables the transmitter PDC transfer requests.

•  TXTDIS: Transmitter Transfer Disable

0 = No effect.

1 = Disables the transmitter PDC transfer requests

                                                                                 SAM7X  Series [DATASHEET]         141

                                                                                        6120K–ATARM–11-Feb-14
22.4.10 PDC Transfer Status Register

Register Name:  PERIPH_PTSR

Access Type:    Read-only

   31           30                  29               28  27  26     25                     24

   –            –                     –              –   –   –      –                      –

   23           22                  21               20  19  18     17                     16

   –            –                     –              –   –   –      –                      –

   15           14                  13               12  11  10     9                      8

   –            –                     –              –   –   –      –   TXTEN

   7            6                     5              4   3   2      1                      0

   –            –                     –              –   –   –      –   RXTEN

•  RXTEN: Receiver Transfer Enable

0 = Receiver PDC transfer requests are disabled.

1 = Receiver PDC transfer requests are enabled.

•  TXTEN: Transmitter Transfer Enable

0 = Transmitter PDC transfer requests are disabled.

1 = Transmitter PDC transfer requests are enabled.

                                                             SAM7X  Series [DATASHEET]         142

                                                                    6120K–ATARM–11-Feb-14
23.   Advanced Interrupt Controller (AIC)

23.1  Overview

      The Advanced Interrupt Controller (AIC) is an 8-level priority, individually maskable, vectored interrupt controller,

      providing handling of up to thirty-two interrupt sources. It is designed to substantially reduce the software and real-time

      overhead in handling internal and external interrupts.

      The AIC drives the nFIQ (fast interrupt request) and the nIRQ (standard interrupt request) inputs of an ARM processor.

      Inputs of the AIC are either internal peripheral interrupts or external interrupts coming from the product's pins.

      The 8-level Priority Controller allows the user to define the priority for each interrupt source, thus permitting higher priority

      interrupts to be serviced even if a lower priority interrupt is being treated.

      Internal interrupt sources can be programmed to be level sensitive or edge triggered. External interrupt sources can be

      programmed to be positive-edge or negative-edge triggered or high-level or low-level sensitive.

      The fast forcing feature redirects any internal or external interrupt source to provide a fast interrupt rather than a normal

      interrupt.

23.2  Block Diagram

      Figure 23-1.  Block Diagram

                                             FIQ              AIC

                                                                                      ARM

                                   IRQ0-IRQn                                          Processor

                                                              Up to

                                                              Thirty-two              nFIQ

                                   Embedded                   Sources

                                   PeEripmhbeeradlEdEed                               nIRQ

                                   PEermipbheerdadl ed

                                   Peripheral

                                                                     APB

                                                                                      SAM7X Series [DATASHEET]                           143

                                                                                                       6120K–ATARM–11-Feb-14
23.3  Application Block Diagram

      Figure 23-2.  Description of the Application Block

                                                               OS-based Applications

                                   Standalone

                                   Applications  OS Drivers          RTOS Drivers

                                                                                               Hard  Real Time Tasks

                                                   General OS  Interrupt Handler

                                                   Advanced Interrupt Controller

                                   Embedded Peripherals                           External Peripherals

                                                                                  (External Interrupts)

23.4  AIC Detailed Block Diagram

      Figure 23-3.  AIC Detailed Block Diagram

                                                          Advanced Interrupt Controller                         ARM

                    FIQ                                                                                       Processor

                                   PIO           External                                Fast            nFIQ

                                   Controller    Source                           Interrupt

                                                 Input                            Controller

                                                 Stage

                                                                                                         nIRQ

                    IRQ0-IRQn                                  Fast               Interrupt

                                   PIOIRQ                      Forcing            Priority               Processor

                                                 Internal                         Controller             Clock

                                                 Source

                                                 Input                                                        Power

                                   Embedded      Stage                                                   Management

                                   Peripherals                                                           Controller

                                                               User Interface                        Wake Up

                                                                        APB

23.5  I/O Line Description

Table 23-1.  I/O Line Description

Pin Name                           Pin Description                                                                    Type

FIQ                                Fast Interrupt                                                                     Input

IRQ0 - IRQn                        Interrupt 0 - Interrupt n                                                          Input

                                                                                               SAM7X Series [DATASHEET]                      144

                                                                                                                      6120K–ATARM–11-Feb-14
23.6    Product Dependencies

23.6.1  I/O Lines

        The interrupt signals FIQ and IRQ0 to IRQn are normally multiplexed through the PIO controllers. Depending on the

        features of the PIO controller used in the product, the pins must be programmed in accordance with their assigned

        interrupt function. This is not applicable when the PIO controller used in the product is transparent on the input path.

23.6.2  Power Management

        The Advanced Interrupt Controller is continuously clocked. The Power Management Controller has no effect on the

        Advanced Interrupt Controller behavior.

        The assertion of the Advanced Interrupt Controller outputs, either nIRQ or nFIQ, wakes up the ARM processor while it is

        in Idle Mode. The General Interrupt Mask feature enables the AIC to wake up the processor without asserting the

        interrupt line of the processor, thus providing synchronization of the processor on an event.

23.6.3  Interrupt Sources

        The Interrupt Source 0 is always located at FIQ. If the product does not feature an FIQ pin, the Interrupt Source 0 cannot

        be used.

        The Interrupt Source 1 is always located at System Interrupt. This is the result of the OR-wiring of the system peripheral

        interrupt lines, such as the System Timer, the Real Time Clock, the Power Management Controller and the Memory

        Controller. When a system interrupt occurs, the service routine must first distinguish the cause of the interrupt. This is

        performed by reading successively the status registers of the above mentioned system peripherals.

        The interrupt sources 2 to 31 can either be connected to the interrupt outputs of an embedded user peripheral or to

        external interrupt lines. The external interrupt lines can be connected directly, or through the PIO Controller.

        The PIO Controllers are considered as user peripherals in the scope of interrupt handling. Accordingly, the PIO

        Controller interrupt lines are connected to the Interrupt Sources 2 to 31.

        The peripheral identification defined at the product level corresponds to the interrupt source number (as well as the bit

        number controlling the clock of the peripheral). Consequently, to simplify the description of the functional operations and

        the user interface, the interrupt sources are named FIQ, SYS, and PID2 to PID31.

                                                                                          SAM7X Series [DATASHEET]                   145

                                                                                                           6120K–ATARM–11-Feb-14
23.7      Functional Description

23.7.1    Interrupt Source Control

23.7.1.1  Interrupt Source Mode

          The Advanced Interrupt Controller independently programs each interrupt source. The SRCTYPE field of the

          corresponding AIC_SMR (Source Mode Register) selects the interrupt condition of each source.

          The internal interrupt sources wired on the interrupt outputs of the embedded peripherals can be programmed either in

          level-sensitive mode or in edge-triggered mode. The active level of the internal interrupts is not important for the user.

          The external interrupt sources can be programmed either in high level-sensitive or low level-sensitive modes, or in

          positive edge-triggered or negative edge-triggered modes.

23.7.1.2  Interrupt Source Enabling

          Each interrupt source, including the FIQ in source 0, can be enabled or disabled by using the command registers;

          AIC_IECR (Interrupt Enable Command Register) and AIC_IDCR (Interrupt Disable Command Register). This set of

          registers conducts enabling or disabling in one instruction. The interrupt mask can be read in the AIC_IMR register. A

          disabled interrupt does not affect servicing of other interrupts.

23.7.1.3  Interrupt Clearing and Setting

          All interrupt sources programmed to be edge-triggered (including the FIQ in source 0) can be individually set or cleared

          by writing respectively the AIC_ISCR and AIC_ICCR registers. Clearing or setting interrupt sources programmed in level-

          sensitive mode has no effect.

          The clear operation is perfunctory, as the software must perform an action to reinitialize the “memorization” circuitry

          activated when the source is programmed in edge-triggered mode. However, the set operation is available for auto-test

          or software debug purposes. It can also be used to execute an AIC-implementation of a software interrupt.

          The AIC features an automatic clear of the current interrupt when the AIC_IVR (Interrupt Vector Register) is read. Only

          the interrupt source being detected by the AIC as the current interrupt is affected by this operation. (See “Priority

          Controller” on page 149.) The automatic clear reduces the operations required by the interrupt service routine entry code

          to reading the AIC_IVR. Note that the automatic interrupt clear is disabled if the interrupt source has the Fast Forcing

          feature enabled as it is considered uniquely as a FIQ source. (For further details, See “Fast Forcing” on page 153.)

          The automatic clear of the interrupt source 0 is performed when AIC_FVR is read.

23.7.1.4  Interrupt Status

          For each interrupt, the AIC operation originates in AIC_IPR (Interrupt Pending Register) and its mask in AIC_IMR

          (Interrupt Mask Register). AIC_IPR enables the actual activity of the sources, whether masked or not.

          The AIC_ISR register reads the number of the current interrupt (see “Priority Controller” on page 149) and the register

          AIC_CISR gives an image of the signals nIRQ and nFIQ driven on the processor.

          Each status referred to above can be used to optimize the interrupt handling of the systems.

                                                                                            SAM7X Series [DATASHEET]                  146

                                                                                                        6120K–ATARM–11-Feb-14
23.7.1.5  Internal Interrupt Source Input Stage

          Figure 23-4.  Internal Interrupt Source Input Stage

                                                 AIC_SMRI

                                                 (SRCTYPE)

                        Source i                               Level/  AIC_IPR

                                                               Edge             AIC_IMR

                                                                                             Fast Interrupt Controller

                                                                                             or

                                                                                             Priority Controller

                                       Edge                                              AIC_IECR

                                       Detector

                                       Set  Clear

                        AIC_ISCR                                                FF

                        AIC_ICCR

                                                                                         AIC_IDCR

23.7.1.6  External Interrupt Source Input Stage

          Figure 23-5.  External Interrupt Source Input Stage

                                                 AIC_SMRi

                                  High/Low         SRCTYPE

                                                               Level/  AIC_IPR

                                                               Edge

          Source i                                                              AIC_IMR

                                                                                                 Fast Interrupt Controller

                                                                                                 or

                                                                                                 Priority Controller

                                  Pos./Neg.                                                      AIC_IECR

                                  Edge

                                  Detector                                               FF

                                  Set  Clear

                        AIC_ISCR                                                                 AIC_IDCR

                        AIC_ICCR

                                                                                         SAM7X Series [DATASHEET]           147

                                                                                                     6120K–ATARM–11-Feb-14
23.7.2    Interrupt Latencies

          Global interrupt latencies depend on several parameters, including:

            The time the software masks the interrupts.

            Occurrence, either at the processor level or at the AIC level.

            The execution time of the instruction in progress when the interrupt occurs.

            The treatment of higher priority interrupts and the resynchronization of the hardware signals.

          This section addresses only the hardware resynchronizations. It gives details of the latency times between the event on

          an external interrupt leading in a valid interrupt (edge or level) or the assertion of an internal interrupt source and the

          assertion of the nIRQ or nFIQ line on the processor. The resynchronization time depends on the programming of the

          interrupt source and on its type (internal or external). For the standard interrupt, resynchronization times are given

          assuming there is no higher priority in progress.

          The PIO Controller multiplexing has no effect on the interrupt latencies of the external interrupt sources.

23.7.2.1  External Interrupt Edge Triggered Source

          Figure 23-6.  External Interrupt Edge Triggered Source

                               MCK

                               IRQ or FIQ

                               (Positive Edge)

                               IRQ or FIQ

                               (Negative Edge)

                               nIRQ

                                                             Maximum IRQ Latency = 4 Cycles

                               nFIQ

                                                             Maximum FIQ Latency = 4 Cycles

23.7.2.2  External Interrupt Level Sensitive Source

          Figure 23-7.  External Interrupt Level Sensitive Source

                               MCK

                               IRQ or FIQ

                               (High Level)

                               IRQ or FIQ

                               (Low Level)

                               nIRQ

                                                                   Maximum IRQ

                                                             Latency = 3 Cycles

                               nFIQ

                                                                   Maximum FIQ

                                                             Latency = 3 cycles

                                                                                             SAM7X Series [DATASHEET]                  148

                                                                                                             6120K–ATARM–11-Feb-14
23.7.2.3  Internal Interrupt Edge Triggered Source

          Figure 23-8.  Internal Interrupt Edge Triggered Source

                               MCK

                               nIRQ

                                                             Maximum IRQ  Latency  =  4.5  Cycles

                                           Peripheral Interrupt

                                           Becomes Active

23.7.2.4  Internal Interrupt Level Sensitive Source

          Figure 23-9.  Internal Interrupt Level Sensitive Source

                                     MCK

                                     nIRQ

                                                             Maximum IRQ Latency = 3.5 Cycles

                                           Peripheral Interrupt

                                           Becomes Active

23.7.3    Normal Interrupt

23.7.3.1  Priority Controller

          An 8-level priority controller drives the nIRQ line of the processor, depending on the interrupt conditions occurring on the

          interrupt sources 1 to 31 (except for those programmed in Fast Forcing).

          Each interrupt source has a programmable priority level of 7 to 0, which is user-definable by writing the PRIOR field of

          the corresponding AIC_SMR (Source Mode Register). Level 7 is the highest priority and level 0 the lowest.

          As soon as an interrupt condition occurs, as defined by the SRCTYPE field of the AIC_SMR (Source Mode Register), the

          nIRQ line is asserted. As a new interrupt condition might have happened on other interrupt sources since the nIRQ has

          been asserted, the priority controller determines the current interrupt at the time the AIC_IVR (Interrupt Vector Register)

          is read. The read of AIC_IVR is the entry point of the interrupt handling which allows the AIC to consider that the

          interrupt has been taken into account by the software.

          The current priority level is defined as the priority level of the current interrupt.

          If several interrupt sources of equal priority are pending and enabled when the AIC_IVR is read, the interrupt with the

          lowest interrupt source number is serviced first.

          The nIRQ line can be asserted only if an interrupt condition occurs on an interrupt source with a higher priority. If an

          interrupt condition happens (or is pending) during the interrupt treatment in progress, it is delayed until the software

          indicates to the AIC the end of the current service by writing the AIC_EOICR (End of Interrupt Command Register). The

          write of AIC_EOICR is the exit point of the interrupt handling.

                                                                                                   SAM7X Series [DATASHEET]             149

                                                                                                   6120K–ATARM–11-Feb-14
23.7.3.2  Interrupt Nesting

          The priority controller utilizes interrupt nesting in order for the high priority interrupt to be handled during the service of

          lower priority interrupts. This requires the interrupt service routines of the lower interrupts to re-enable the interrupt at the

          processor level.

          When an interrupt of a higher priority happens during an already occurring interrupt service routine, the nIRQ line is re-

          asserted. If the interrupt is enabled at the core level, the current execution is interrupted and the new interrupt service

          routine should read the AIC_IVR. At this time, the current interrupt number and its priority level are pushed into an

          embedded hardware stack, so that they are saved and restored when the higher priority interrupt servicing is finished and

          the AIC_EOICR is written.

          The AIC is equipped with an 8-level wide hardware stack in order to support up to eight interrupt nestings pursuant to

          having eight priority levels.

23.7.3.3  Interrupt Vectoring

          The interrupt handler addresses corresponding to each interrupt source can be stored in the registers AIC_SVR1 to

          AIC_SVR31 (Source Vector Register 1 to 31). When the processor reads AIC_IVR (Interrupt Vector Register), the value

          written into AIC_SVR corresponding to the current interrupt is returned.

          This feature offers a way to branch in one single instruction to the handler corresponding to the current interrupt, as

          AIC_IVR is mapped at the absolute address 0xFFFF F100 and thus accessible from the ARM interrupt vector at address

          0x0000 0018 through the following instruction:

                      LDR                   PC,[PC,#       -&F20]

          When the processor executes this instruction, it loads the read value in AIC_IVR in its program counter, thus branching

          the execution on the correct interrupt handler.

          This feature is often not used when the application is based on an operating system (either real time or not). Operating

          systems often have a single entry point for all the interrupts and the first task performed is to discern the source of the

          interrupt.

          However, it is strongly recommended to port the operating system on AT91 products by supporting the interrupt

          vectoring. This can be performed by defining all the AIC_SVR of the interrupt source to be handled by the operating

          system at the address of its interrupt handler. When doing so, the interrupt vectoring permits a critical interrupt to transfer

          the execution on a specific very fast handler and not onto the operating system’s general interrupt handler. This

          facilitates the support of hard real-time tasks (input/outputs of voice/audio buffers and software peripheral handling) to be

          handled efficiently and independently of the application running under an operating system.

23.7.3.4  Interrupt Handlers

          This section gives an overview of the fast interrupt handling sequence when using the AIC. It is assumed that the

          programmer understands the architecture of the ARM processor, and especially the processor interrupt modes and the

          associated status bits.

          It is assumed that:

          1.  The Advanced Interrupt Controller has been programmed, AIC_SVR registers are loaded with corresponding inter-

              rupt service routine addresses and interrupts are enabled.

          2.  The instruction at the ARM interrupt exception vector address is required to work with the vectoring

                      LDR  PC,  [PC,     #  -&F20]

          When nIRQ is asserted, if the bit “I” of CPSR is 0, the sequence is as follows:

          1.  The CPSR is stored in SPSR_irq, the current value of the Program Counter is loaded in the Interrupt link register

              (R14_irq) and the Program Counter (R15) is loaded with 0x18. In the following cycle during fetch at address 0x1C,

              the ARM core adjusts R14_irq, decrementing it by four.

          2.  The ARM core enters Interrupt mode, if it has not already done so.

          3.  When the instruction loaded at address 0x18 is executed, the program counter is loaded with the value read in

              AIC_IVR. Reading the AIC_IVR has the following effects:

                                                                                           SAM7X Series [DATASHEET]                          150

                                                                                                       6120K–ATARM–11-Feb-14
           Sets the current interrupt to be the pending and enabled interrupt with the highest priority. The current level

            is the priority level of the current interrupt.

           De-asserts the nIRQ line on the processor. Even if vectoring is not used, AIC_IVR must be read in order to

            de-assert nIRQ.

           Automatically clears the interrupt, if it has been programmed to be edge-triggered.

           Pushes the current level and the current interrupt number on to the stack.

           Returns the value written in the AIC_SVR corresponding to the current interrupt.

4.     The previous step has the effect of branching to the corresponding interrupt service routine. This should start by

       saving the link register (R14_irq) and SPSR_IRQ. The link register must be decremented by four when it is saved

       if it is to be restored directly into the program counter at the end of the interrupt. For example, the instruction SUB

       PC,  LR,  #4 may be used.

5.     Further interrupts can then be unmasked by clearing the “I” bit in CPSR, allowing re-assertion of the nIRQ to be

       taken into account by the core. This can happen if an interrupt with a higher priority than the current interrupt

       occurs.

6.     The interrupt handler can then proceed as required, saving the registers that will be used and restoring them at the

       end. During this phase, an interrupt of higher priority than the current level will restart the sequence from step 1.

Note:  If the interrupt is programmed to be level sensitive, the source of the interrupt must be cleared during this phase.

7.     The “I” bit in CPSR must be set in order to mask interrupts before exiting to ensure that the interrupt is completed

       in an orderly manner.

8.     The End of Interrupt Command Register (AIC_EOICR) must be written in order to indicate to the AIC that the cur-

       rent interrupt is finished. This causes the current level to be popped from the stack, restoring the previous current

       level if one exists on the stack. If another interrupt is pending, with lower or equal priority than the old current level

       but with higher priority than the new current level, the nIRQ line is re-asserted, but the interrupt sequence does not

       immediately start because the “I” bit is set in the core. SPSR_irq is restored. Finally, the saved value of the link reg-

       ister is restored directly into the PC. This has the effect of returning from the interrupt to whatever was being

       executed before, and of loading the CPSR with the stored SPSR, masking or unmasking the interrupts depending

       on the state saved in SPSR_irq.

Note:  The “I” bit in SPSR is significant. If it is set, it indicates that the ARM core was on the verge of masking an inter-

       rupt when the mask instruction was interrupted. Hence, when SPSR is restored, the mask instruction is

       completed (interrupt is masked).

                                                             SAM7X Series [DATASHEET]                                              151

                                                                                                 6120K–ATARM–11-Feb-14
23.7.4    Fast Interrupt

23.7.4.1  Fast Interrupt Source

          The interrupt source 0 is the only source which can raise a fast interrupt request to the processor except if fast forcing is

          used. The interrupt source 0 is generally connected to a FIQ pin of the product, either directly or through a PIO

          Controller.

23.7.4.2  Fast Interrupt Control

          The fast interrupt logic of the AIC has no priority controller. The mode of interrupt source 0 is programmed with the

          AIC_SMR0 and the field PRIOR of this register is not used even if it reads what has been written. The field SRCTYPE of

          AIC_SMR0 enables programming the fast interrupt source to be positive-edge triggered or negative-edge triggered or

          high-level sensitive or low-level sensitive

          Writing 0x1 in the AIC_IECR (Interrupt Enable Command Register) and AIC_IDCR (Interrupt Disable Command

          Register) respectively enables and disables the fast interrupt. The bit 0 of AIC_IMR (Interrupt Mask Register) indicates

          whether the fast interrupt is enabled or disabled.

23.7.4.3  Fast Interrupt Vectoring

          The fast interrupt handler address can be stored in AIC_SVR0 (Source Vector Register 0). The value written into this

          register is returned when the processor reads AIC_FVR (Fast Vector Register). This offers a way to branch in one single

          instruction to the interrupt handler, as AIC_FVR is mapped at the absolute address 0xFFFF F104 and thus accessible

          from the ARM fast interrupt vector at address 0x0000 001C through the following instruction:

              LDR                      PC,[PC,#               -&F20]

          When the processor executes this instruction it loads the value read in AIC_FVR in its program counter, thus branching

          the execution on the fast interrupt handler. It also automatically performs the clear of the fast interrupt source if it is

          programmed in edge-triggered mode.

23.7.4.4  Fast Interrupt Handlers

          This section gives an overview of the fast interrupt handling sequence when using the AIC. It is assumed that the

          programmer understands the architecture of the ARM processor, and especially the processor interrupt modes and

          associated status bits.

          Assuming that:

          1.  The Advanced Interrupt Controller has been programmed, AIC_SVR0 is loaded with the fast interrupt service rou-

              tine address, and the interrupt source 0 is enabled.

          2.  The Instruction at address 0x1C (FIQ exception vector address) is required to vector the fast interrupt:

              LDR      PC,  [PC,   #   -&F20]

          3.  The user does not need nested fast interrupts.

          When nFIQ is asserted, if the bit “F” of CPSR is 0, the sequence is:

          1.  The CPSR is stored in SPSR_fiq, the current value of the program counter is loaded in the FIQ link register

              (R14_FIQ) and the program counter (R15) is loaded with 0x1C. In the following cycle, during fetch at address

              0x20, the ARM core adjusts R14_fiq, decrementing it by four.

          2.  The ARM core enters FIQ mode.

          3.  When the instruction loaded at address 0x1C is executed, the program counter is loaded with the value read in

              AIC_FVR. Reading the AIC_FVR has effect of automatically clearing the fast interrupt, if it has been programmed

              to be edge triggered. In this case only, it de-asserts the nFIQ line on the processor.

          4.  The previous step enables branching to the corresponding interrupt service routine. It is not necessary to save the

              link register R14_fiq and SPSR_fiq if nested fast interrupts are not needed.

          5.  The Interrupt Handler can then proceed as required. It is not necessary to save registers R8 to R13 because FIQ

              mode has its own dedicated registers and the user R8 to R13 are banked. The other registers, R0 to R7, must be

              saved before being used, and restored at the end (before the next step). Note that if the fast interrupt is pro-

              grammed to be level sensitive, the source of the interrupt must be cleared during this phase in order to de-assert

              the interrupt source 0.

                                                                                            SAM7X Series [DATASHEET]                     152

                                                                                                        6120K–ATARM–11-Feb-14
          6.     Finally, the Link Register R14_fiq is restored into the PC after decrementing it by four (with instruction  SUB         PC,

                 LR,  #4 for example). This has the effect of returning from the interrupt to whatever was being executed before,

                 loading the CPSR with the SPSR and masking or unmasking the fast interrupt depending on the state saved in the

                 SPSR.

          Note:  The “F” bit in SPSR is significant. If it is set, it indicates that the ARM core was just about to mask FIQ interrupts

                 when the mask instruction was interrupted. Hence when the SPSR is restored, the interrupted instruction is com-

                 pleted (FIQ is masked).

          Another way to handle the fast interrupt is to map the interrupt service routine at the address of the ARM vector 0x1C.

          This method does not use the vectoring, so that reading AIC_FVR must be performed at the very beginning of the

          handler operation. However, this method saves the execution of a branch instruction.

23.7.4.5  Fast Forcing

          The Fast Forcing feature of the advanced interrupt controller provides redirection of any normal Interrupt source on the

          fast interrupt controller.

          Fast Forcing is enabled or disabled by writing to the Fast Forcing Enable Register (AIC_FFER) and the Fast Forcing

          Disable Register (AIC_FFDR). Writing to these registers results in an update of the Fast Forcing Status Register

          (AIC_FFSR) that controls the feature for each internal or external interrupt source.

          When Fast Forcing is disabled, the interrupt sources are handled as described in the previous pages.

          When Fast Forcing is enabled, the edge/level programming and, in certain cases, edge detection of the interrupt source

          is still active but the source cannot trigger a normal interrupt to the processor and is not seen by the priority handler.

          If the interrupt source is programmed in level-sensitive mode and an active level is sampled, Fast Forcing results in the

          assertion of the nFIQ line to the core.

          If the interrupt source is programmed in edge-triggered mode and an active edge is detected, Fast Forcing results in the

          assertion of the nFIQ line to the core.

          The Fast Forcing feature does not affect the Source 0 pending bit in the Interrupt Pending Register (AIC_IPR).

          The FIQ Vector Register (AIC_FVR) reads the contents of the Source Vector Register 0 (AIC_SVR0), whatever the

          source of the fast interrupt may be. The read of the FVR does not clear the Source 0 when the fast forcing feature is used

          and the interrupt source should be cleared by writing to the Interrupt Clear Command Register (AIC_ICCR).

          All enabled and pending interrupt sources that have the fast forcing feature enabled and that are programmed in edge-

          triggered mode must be cleared by writing to the Interrupt Clear Command Register. In doing so, they are cleared

          independently and thus lost interrupts are prevented.

          The read of AIC_IVR does not clear the source that has the fast forcing feature enabled.

          The source 0, reserved to the fast interrupt, continues operating normally and becomes one of the Fast Interrupt sources.

                                                                                                SAM7X Series [DATASHEET]                 153

                                                                                                    6120K–ATARM–11-Feb-14
Figure