74
2015-2019 Microchip Technology Inc. DS30010073D-page 1 PIC24FJ256GA412/GB412 FAMILY 1.0 DEVICE OVERVIEW This document defines the programming specification for the PIC24FJ256GA412/GB412 family of 16-bit microcontrollers with Dual Partition Flash mode func- tionality. This programming specification is required only for those developing programming support for the following devices: Customers using only one of these devices should use the development tools that already provide support for device programming. Topics covered include: Section 1.0 “Device Overview” Section 2.0 “Programming Overview” Section 3.0 “Device Programming – ICSP” Section 4.0 “Device Programming – Enhanced ICSP” Section 5.0 “Programming the Programming Executive to Memory” Section 6.0 “The Programming Executive” Section 7.0 “Dual Partition Flash Programming Considerations” Section 8.0 “Device ID” Section 9.0 “Checksum Computation” Section 10.0 “AC/DC Characteristics and Timing Requirements” • PIC24FJ256GB412 • PIC24FJ256GA412 • PIC24FJ128GB412 • PIC24FJ128GA412 • PIC24FJ64GB412 • PIC24FJ64GA412 • PIC24FJ256GB410 • PIC24FJ256GA410 • PIC24FJ128GB410 • PIC24FJ128GA410 • PIC24FJ64GB410 • PIC24FJ64GA410 • PIC24FJ256GB406 • PIC24FJ256GA406 • PIC24FJ128GB406 • PIC24FJ128GA406 • PIC24FJ64GB406 • PIC24FJ64GA406 PIC24FJ256GA412/GB412 Family Flash Programming Specification

PIC24FJ256GA412/GB412 Family Flash Programming … · 2019. 3. 5. · PIC24FJ256GA412/GB412 FAMILY DS30010073D-page 6 2015-2019 Microchip Technology Inc. FIGURE 2-6: PIN DIAGRAMS

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

  • PIC24FJ256GA412/GB412 FAMILYPIC24FJ256GA412/GB412 Family Flash Programming Specification

    1.0 DEVICE OVERVIEWThis document defines the programming specificationfor the PIC24FJ256GA412/GB412 family of 16-bitmicrocontrollers with Dual Partition Flash mode func-tionality. This programming specification is requiredonly for those developing programming support for thefollowing devices:

    Customers using only one of these devices should usethe development tools that already provide support fordevice programming.

    Topics covered include:

    • Section 1.0 “Device Overview”• Section 2.0 “Programming Overview”• Section 3.0 “Device Programming – ICSP”• Section 4.0 “Device Programming – Enhanced

    ICSP”• Section 5.0 “Programming the Programming

    Executive to Memory”• Section 6.0 “The Programming Executive”• Section 7.0 “Dual Partition Flash

    Programming Considerations”• Section 8.0 “Device ID”• Section 9.0 “Checksum Computation”• Section 10.0 “AC/DC Characteristics and

    Timing Requirements”

    • PIC24FJ256GB412 • PIC24FJ256GA412• PIC24FJ128GB412 • PIC24FJ128GA412• PIC24FJ64GB412 • PIC24FJ64GA412• PIC24FJ256GB410 • PIC24FJ256GA410• PIC24FJ128GB410 • PIC24FJ128GA410• PIC24FJ64GB410 • PIC24FJ64GA410• PIC24FJ256GB406 • PIC24FJ256GA406• PIC24FJ128GB406 • PIC24FJ128GA406• PIC24FJ64GB406 • PIC24FJ64GA406

    2015-2019 Microchip Technology Inc. DS30010073D-page 1

  • PIC24FJ256GA412/GB412 FAMILY

    2.0 PROGRAMMING OVERVIEWThere are two methods of programming that arediscussed in this programming specification:

    • In-Circuit Serial Programming™ (ICSP™)• Enhanced In-Circuit Serial Programming

    The ICSP programming method is the most directmethod to program the device; however, it is also theslower of the two methods. It provides native, low-levelprogramming capability to erase, program and verifythe device.

    The Enhanced ICSP protocol uses a faster method thattakes advantage of the Programming Executive (PE), asillustrated in Figure 2-1. The PE provides all thenecessary functionality to erase, program and verify thechip through a small command set. The command setallows the programmer to program a PIC24FJ256GA412/GB412 family device without dealing with the low-levelprogramming protocols.

    FIGURE 2-1: PROGRAMMING SYSTEM OVERVIEW FOR ENHANCED ICSP™

    This programming specification is divided into twomajor sections that describe the programming methodsindependently. Section 3.0 “Device Programming –ICSP” describes the ICSP method. Section 4.0“Device Programming – Enhanced ICSP” describesthe Enhanced ICSP method.

    2.1 Required ConnectionsThese devices require specific connections forprogramming to take place. These connections includepower, VCAP, MCLR and one programming pair (PGEDx/PGECx). Table 2-1 describes these connections (refer tothe specific device data sheet for pin descriptions andpower connection requirements).

    2.2 Power RequirementsAll PIC24FJ256GA412/GB412 family devices powertheir core digital logic at a nominal 1.8V. To simplifysystem design, all devices in the PIC24FJ256GA412/GB412 family incorporate an on-chip regulator thatallows the device to run its core logic from VDD.

    The regulator provides power to the core from the otherVDD pins. A low-ESR capacitor (such as ceramic ortantalum) must be connected to the VCAP pin (seeTable 2-1 and Figure 2-2). This helps to maintain thestability of the regulator. The specifications for corevoltage and capacitance are listed in Section 10.0 “AC/DC Characteristics and Timing Requirements”.

    FIGURE 2-2: CONNECTIONS FOR THE ON-CHIP REGULATOR

    TABLE 2-1: PINS USED DURING PROGRAMMING

    PIC24FJ256GA412/GB412

    Programmer ProgrammingExecutive

    On-Chip Memory

    VDD

    VCAP

    VSS

    PIC24FJ256GA412/GB412

    CEFC

    3.3V

    (10 µF typ)

    Pin Name Pin Type Pin Description

    MCLR I Programming EnableVDD and AVDD(1) P Power Supply(1)

    VSS and AVSS(1) P Ground(1)

    VCAP P On-Chip Voltage Regulator Filter CapacitorPGECx I Programming Pin Pair: Serial Clock PGEDx I/O Programming Pin Pair: Serial Data Legend: I = Input O = Output P = PowerNote 1: All power supply and ground pins must be connected, including AVDD and AVSS. It is also recommended

    to connect the VBAT pin to the battery or VDD during programming.

    DS30010073D-page 2 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    2.3 Pin DiagramsFigure 2-3 through Figure 2-7 show the pin diagramsfor the PIC24FJ256GA412/GB412 family. The pins thatare required for programming are listed in Table 2-1and are indicated in bold text in the figures. Refer to theappropriate device data sheet for complete pindescriptions.

    2.3.1 PGECx AND PGEDx PIN PAIRSAll devices in the PIC24FJ256GA412/GB412 familyhave three separate pairs of programming pins, labeledas PGEC1/PGED1, PGEC2/PGED2 and PGEC3/PGED3. Any one of these pin pairs may be used fordevice programming by either ICSP or Enhanced ICSP.Unlike voltage supply and ground pins, it is notnecessary to connect all three pin pairs to program thedevice. However, the programming method must useboth pins of the same pair.

    FIGURE 2-3: PIN DIAGRAMS

    Legend: Shaded pins indicate pins tolerant to up to +5.5 VDC.Note 1: It is recommended to connect the metal pad on the bottom of the 64-pin QFN package to VSS.

    2: A pull-up resistor is connected to this pin during power-up and programming.

    64-Pin TQFP 64-Pin QFN(1)

    2

    3

    4

    5

    67

    8

    9

    10

    11

    12

    13

    14

    15

    16

    48

    47

    22

    44

    24 25 26 27 28 29 30 31 32

    1

    46

    45

    23

    43

    42

    41

    40

    39

    63 62 61 5960 58 57 56 5455 53 52 51 4950

    38

    37

    34

    36

    35

    33

    17 19 20 211864

    VDDVSS

    RG9MCLR

    RG8RG7RG6RE7RE6RE5

    PGEC3/RB5PGED3/RB4

    RB3RB2

    PGEC1/RB1PGED1/RB0

    OSCI/CLKI/RC12

    OSCO/RC15

    VSSRD8RD9RD10RD11RD0SOSCI/RC13SOSCO/RC14

    VDDRG2RG3RF6RF2RF3

    VDD

    VSS

    RB

    11R

    B10(

    2)R

    B9R

    B8AV

    SS

    AVD

    D

    PGED

    2/R

    B7PG

    EC2/

    RB6

    RB

    12R

    B13

    RB

    14R

    B15

    RF4

    RF5

    RD

    7V C

    AP

    VB

    AT

    RF0

    RF1

    RE

    0R

    E1

    RE

    2R

    E3

    RE

    4

    RD

    6R

    D5

    RD

    4R

    D3

    RD

    2R

    D1

    PIC24FJXXXGA406

    2015-2019 Microchip Technology Inc. DS30010073D-page 3

  • PIC24FJ256GA412/GB412 FAMILY

    FIGURE 2-4: PIN DIAGRAMS (CONTINUED)

    Legend: Shaded pins indicate pins tolerant to up to +5.5 VDC. Note 1: It is recommended to connect the metal pad on the bottom of the 64-pin QFN package to VSS.

    2: PIC24FJ256GB406 devices use VUSB3V3 instead of RF6 and VBUS/RF7 instead of RF2.3: A pull-up resistor is connected to this pin during power-up and programming.

    64-Pin TQFP 64-Pin QFN(1)

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    48

    4722

    44

    24 25 26 27 28 29 30 31 32

    1

    46

    45

    23

    43

    42

    41

    40

    39

    63 62 61 5960 58 57 56 5455 53 52 51 4950

    38

    37

    34

    36

    35

    33

    17 19 20 211864

    VDDVSS

    RG9MCLR

    RG8RG7RG6RE7RE6RE5

    PGEC3/RB5PGED3/RB4

    RB3RB2

    PGEC1/RB1PGED1/RB0

    OSCI/CLKI/RC12OSCO/RC15VSSRD8RD9RD10RD11RD0SOSCI/RC13SOSCO/RC14

    VDD D+/RG2D-/RG3VUSB3V3(2)

    VBUS/RF7(2)

    RF3

    VDD

    VSS

    RB

    11R

    B10

    (3)

    RB

    9R

    B8

    AVSS

    AVD

    DPG

    ED2/

    RB

    7PG

    EC2/

    RB

    6

    RB

    12R

    B13

    RB

    14R

    B15

    RF4

    RF5

    RD

    7VC

    AP

    VB

    AT

    RF0

    RF1

    RE

    0R

    E1

    RE

    2R

    E3

    RE

    4

    RD

    6R

    D5

    RD

    4R

    D3

    RD

    2R

    D1

    PIC24FJXXXGB406

    DS30010073D-page 4 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    FIGURE 2-5: PIN DIAGRAMS (CONTINUED)

    Legend: Shaded pins indicate pins tolerant to up to +5.5 VDC. Note 1: A pull-up resistor is connected to this pin during power-up and programming.

    100-Pin TQFP

    9294 93 91 90 89 88 87 86 85 84 83 82 81 80 79 78

    20

    23456789101112

    13141516

    65646362616059

    26

    56

    4544434241403928 29 30 31 32 33 34 35 36 37 38

    171819

    2122

    951

    7677

    72717069686766

    757473

    5857

    2423

    25

    9698 979927 46 47 48 49 50

    5554535251

    100

    RD

    5R

    D4

    RD

    13R

    D12

    RD

    3R

    D2

    RD

    1

    RA7

    RA6

    RE2

    RG

    13R

    G12

    RG

    14R

    E1R

    E0

    RG

    0

    RE4

    RE3

    RF0

    V CA

    P

    SOSCI/RC13

    RD0

    RD10RD9RD8

    RD11

    RA15RA14

    OSCO/RC15

    OSCI/CLKI/RC12VDD

    RG2

    RF7RF8

    RG3

    RF2RF3

    VSS

    SOSCO/RC14

    RA1

    0R

    A9

    AVD

    D

    AVSS

    RB8

    RB9

    RB1

    0R

    B11

    VDD

    RF1

    2R

    F13

    V SS

    VDD

    RD

    15R

    D14

    PGEC

    2/R

    B6PG

    ED2/

    RB7

    RF5

    RF4

    RE5RE6RE7RC1RC2RC3RC4RG6

    VDDRA0(1)

    RE8RE9

    PGEC3/RB5PGED3/RB4

    RB3RB2

    RG7RG8

    PGEC1/RB1PGED1/RB0

    RG15VDD

    RG9MCLR

    RB1

    2R

    B13

    RB1

    4R

    B15

    RG

    1R

    F1

    RD

    7R

    D6

    RA5

    RA3RA2

    VSS

    VSS

    VSSVB

    AT

    RA4

    RA1

    PIC24FJXXXGA410

    RF6

    2015-2019 Microchip Technology Inc. DS30010073D-page 5

  • PIC24FJ256GA412/GB412 FAMILY

    FIGURE 2-6: PIN DIAGRAMS (CONTINUED)

    Legend: Shaded pins indicate pins tolerant to up to +5.5 VDC. Note 1: PIC24FJ256GB410 devices use VUSB3V3 instead of RF6.

    2: A pull-up resistor is connected to this pin during power-up and programming.

    100-Pin TQFP

    9294 93 91 90 89 88 87 86 85 84 83 82 81 80 79 78

    20

    23456789101112

    13141516

    65646362616059

    26

    56

    4544434241403928 29 30 31 32 33 34 35 36 37 38

    171819

    2122

    95

    1

    7677

    72717069686766

    757473

    5857

    2423

    25

    9698 979927 46 47 48 49 50

    5554535251

    100

    RD

    5R

    D4

    RD

    13R

    D12

    RD

    3R

    D2

    RD

    1

    RA

    7R

    A6

    RE

    2R

    G13

    RG

    12R

    G14

    RE

    1R

    E0

    RG

    0

    RE

    4R

    E3

    RF0

    VCA

    P

    SOSCI/RC13RD0

    RD10RD9RD8

    RD11

    RA15RA14

    OSCO/RC15

    OSCI/CLKI/RC12VDD

    D+/RG2

    VUSB3V3(1)

    VBUS/RF7RF8

    D-/RG3

    RF2RF3

    VSS

    SOSCO/RC14

    RA1

    0R

    A9

    AVD

    D

    AVSS

    RB8

    RB9

    RB1

    0R

    B11

    VDD

    RF1

    2R

    F13

    V SS

    VDD

    RD

    15R

    D14

    PGEC

    2/R

    B6PG

    ED2/

    RB7 RF5

    RF4

    RE5RE6RE7RC1RC2RC3RC4RG6

    VDDRA0(2)

    RE8RE9

    PGEC3/RB5PGED3/RB4

    RB3RB2

    RG7RG8

    PGEC1/RB1PGED1/RB0

    RG15VDD

    RG9MCLR

    RB1

    2R

    B13

    RB1

    4R

    B15

    RG

    1R

    F1

    RD

    7R

    D6

    RA5

    RA3RA2

    VSS

    VSS

    VSSV

    BAT

    RA4

    RA1

    PIC24FJXXXGB410

    DS30010073D-page 6 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    FIGURE 2-7: PIN DIAGRAMS (CONTINUED)

    PIC24FJXXXGA412, 121-Pin TFBGA

    RE4 RE3 RG13 RE0 RG0 RF1 VBAT RH14 RD12 RD2 RD1

    RH1 RG15 RE2 RE1 RA7 RF0 VCAP RD5 RD3 VSS RC14

    RE6 VDD RG12 RG14 RA6 VSS RD7 RD4 RH13 RC13 RD11

    RC1 RE7 RE5 RH2 RJ0 VDD RD6 RD13 RD0 VSS RD10

    RC4 RC3 RG6 RC2 RJ1 RG1 VDD RA15 RD8 RD9 RA14

    MCLR RG8 RG9 RG7 VSS RH15 RH12 VDD OSCI/RC12 VSS OSCO/RC15

    RE8 RE9 RA0(1) RH3 VDD VSS VSS RH11 RA5 RA3 RA4

    PGEC3/RB5 PGED3/RB4 RH4 RH5 RB10 VDD RH8 RF7 RG2 RA2

    RB3 RB2 PGED2/RB7 AVDD RH7 RA1 RB12 RH9 RH10 RF8

    PGEC1/RB1 PGED1/RB0 RA10 RB8 RB11 RF12 RB14 VDD RD15 RF3 RF2

    PGEC2/RB6 RA9 AVSS RB9 RH6 RF13 RB13 RB15 RD14 RF4 RF5

    1 2 3 4 5 6 7 8 9 10 11

    A

    B

    C

    D

    E

    F

    G

    H

    J

    K

    L

    Legend: Shaded balls indicate pins tolerant to up to +5.5 VDC. Note 1: A pull-up resistor is connected to this pin during power-up and programming.

    RG3

    RF6

    2015-2019 Microchip Technology Inc. DS30010073D-page 7

  • PIC24FJ256GA412/GB412 FAMILY

    FIGURE 2-8: PIN DIAGRAMS (CONTINUED)

    PIC24FJXXXGB412, 121-Pin TFBGA

    RE4 RE3 RG13 RE0 RG0 RF1 VBAT RH14 RD12 RD2 RD1

    RH1 RG15 RE2 RE1 RA7 RF0 VCAP RD5 RD3 VSS RC14

    RE6 VDD RG12 RG14 RA6 VSS RD7 RD4 RH13 RC13 RD11

    RC1 RE7 RE5 RH2 RJ0 VDD RD6 RD13 RD0 VSS RD10

    RC4 RC3 RG6 RC2 RJ1 RG1 VDD RA15 RD8 RD9 RA14

    MCLR RG8 RG9 RG7 VSS RH15 RH12 VDD OSCI/RC12 VSS OSCO/RC15

    RE8 RE9 RA0(2) RH3 VDD VSS VSS RH11 RA5 RA3 RA4

    PGEC3/RB5 PGED3/RB4 RH4 RH5 RB10 VDD RH8 VBUS/RF7 VUSB3V3(1) D+/RG2 RA2

    RB3 RB2 PGED2/RB7 AVDD RH7 RA1 RB12 RH9 RH10 RF8

    PGEC1/RB1 PGED1/RB0 RA10 RB8 RB11 RF12 RB14 VDD RD15 RF3 RF2

    PGEC2/RB6 RA9 AVSS RB9 RH6 RF13 RB13 RB15 RD14 RF4 RF5

    1 2 3 4 5 6 7 8 9 10 11

    A

    B

    C

    D

    E

    F

    G

    H

    J

    K

    L

    Legend: Shaded balls indicate pins tolerant to up to +5.5 VDC. Note 1: PIC24FJ256GB412 devices use VUSB3V3 instead of RF6.

    2: A pull-up resistor is connected to this pin during power-up and programming.

    D-/RG3

    DS30010073D-page 8 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    2.4 Program Memory Write/Erase Requirements

    The Program Flash Memory (PFM) has a specific write/erase requirement that must be adhered to for properdevice operation. The rule is that any given word inmemory must not be written without first erasing thepage in which it is located. Thus, the easiest way toconform to this rule is to write all the data in aprogramming block within one write cycle. The pro-gramming methods specified in this document complywith this requirement.

    2.5 Memory MapThe program memory map extends from 0x00 0000 to0xFF FFFE. Code storage is located at the base of thememory map. The last locations of implementedprogram memory are reserved for the deviceConfiguration bits.

    Table 2-2 lists the code memory size, the size of theerase blocks and the number of erase blocks presentin each device variant.

    Locations, 0x80 0100 through 0x80 0BFE, arereserved for executive code memory. This regionstores the PE and the debugging executive, which isused for device programming. This region of memorycannot be used to store user code. See Section 6.0“The Programming Executive” for more information.Locations, 0x80 1380 through 0x80 13FE, are reservedfor the customer OTP data. This area can be used forstoring product information, such as serial numbers,system manufacturing dates, manufacturing lot numbersand other application-specific information; it is describedin Section 2.6.3 “One-Time-Programmable (OTP)Memory”.Locations, 0xFF 0000 and 0xFF 0002, are reserved forthe Device ID Word registers. These bits can be usedby the programmer to identify which device type isbeing programmed. They are described in Section 8.0“Device ID”. The Device ID registers read out normally,even after code protection is applied.

    Figure 2-9 and Figure 2-10 show the generic memorymaps for the devices described in this specification.See the “Memory Organization” chapter in thespecific device data sheet for exact memoryaddresses.

    TABLE 2-2: PROGRAM MEMORY SIZES AND BOUNDARIES

    Device

    Program Memory Upper Boundary (Instruction Words)Write

    Blocks(1)Erase

    Blocks(1)Single Partition Flash Mode

    Dual Partition Flash Mode

    Active Partition Inactive Partition

    PIC24FJ256GX4XX 0x02 AFFE (86K) 0x01 57FE (43K) 0x41 57FE (43K) 1376 172PIC24FJ128GX4XX 0x01 57FE (43K) 0x00 ABFE (22K) 0x40 ABFE (22K) 688 86PIC24FJ64GX4XX 0x00 AFFE (22K) 0x00 57FE (11K) 0x40 57FE (11K) 352 44Note 1: 1 Write Block = 64 Instruction Words; 1 Erase Block = 512 Instruction Words.

    2015-2019 Microchip Technology Inc. DS30010073D-page 9

  • PIC24FJ256GA412/GB412 FAMILY

    FIGURE 2-9: PROGRAM MEMORY MAP FOR SINGLE PARTITION FLASH MODE

    0x00 0000

    0xF8 00260xF8 0028

    0xFE FFFE

    0xFF FFFF

    Con

    figur

    atio

    n M

    emor

    y Sp

    ace

    Use

    r Mem

    ory

    Spac

    e

    Legend: Memory areas are not shown to scale.Note 1: Exact boundary addresses are determined by the size of the implemented program memory. See Table 2-2

    for details.

    Device Config Registers

    DEVID (2)

    Reserved

    0xFF 0000

    0xF7 FFFE0xF8 0000

    0x80 00000x7F FFFF

    Reserved

    Flash Config Words0x0X XX00(1)0x0X XXFE(1)

    UnimplementedRead ‘0’

    User Flash Program Memory

    FBOOT 0x80 18020x80 1800

    Reserved

    0xFF 0004Reserved

    Executive Code Memory 0x80 0BFE0x80 0100

    Customer OTP Memory 0x80 13FE0x80 1380

    Reserved0x80 0C00

    0x80 1804

    0x80 137E

    0x80 14000x80 17FEReserved

    0xFA 007E0xFA 0080

    Flash Write Latches0xF9 FFFE0xFA 0000

    Reserved

    DS30010073D-page 10 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    FIGURE 2-10: PROGRAM MEMORY MAP FOR DUAL PARTITION FLASH MODES

    0x00 0000

    0xF8 00260xF8 0028

    0xFE FFFE

    0xFF FFFF

    Con

    figur

    atio

    n M

    emor

    y Sp

    ace

    Use

    r Mem

    ory

    Spac

    e

    Legend: Memory areas are not shown to scale.Note 1: Exact boundary addresses are determined by the size of the implemented program memory. See Table 2-2

    for details.

    Device Config Registers

    DEVID (2) 0xFF 0000

    0xF7 FFFE0xF8 0000

    0x80 00000x7F FFFF

    Reserved

    Flash Config Words0x0X XX00(1)0x0X XXFE(1)

    UnimplementedRead ‘0’

    User Flash Program Memory

    FBOOT 0x80 18020x80 1800

    Reserved

    0xFF 0004Reserved

    Executive Code Memory 0x80 0BFE0x80 0100

    Customer OTP Memory 0x80 13FE0x80 1380

    Reserved0x80 0C00

    0x80 1804

    0x80 137E

    0x40 0000

    Flash Config Words

    User Flash Program Memory

    0x4X XX00(1)0x4X XXFE(1)

    UnimplementedRead ‘0’

    Active Partition

    Inactive Partition

    0x80 14000x80 17FEReserved

    Reserved

    0xFA 007E0xFA 0080

    Flash Write Latches0xF9 FFFE0xFA 0000

    Reserved

    2015-2019 Microchip Technology Inc. DS30010073D-page 11

  • PIC24FJ256GA412/GB412 FAMILY

    2.6 Configuration Bits2.6.1 OVERVIEWThe Configuration bits are stored in the last page loca-tion of implemented program memory. These bits can beset or cleared to select various device configurations.There are two types of Configuration bits: system oper-ation bits and code-protect bits. The system operationbits determine the power-on settings for system-levelcomponents, such as the oscillator and the WatchdogTimer. The code-protect bits prevent program memoryfrom being read and written.Table 2-3 lists the Configuration register address rangefor each device in Single and Dual Partition modes.Table 2-4 lists all of the Configuration bits found in thePIC24FJ256GA412/GB412 family devices, as well astheir Configuration register locations. Refer to the“Special Features” chapter in the specific device datasheet for the full Configuration register description for aspecific device.

    2.6.2 CODE-PROTECT CONFIGURATION BITS

    The device implements an intermediate security featuredefined by the FSEC register. The Boot Segment (BS) isthe higher privilege segment and the General Segment(GS) is the lower privilege segment. The total user codememory can be split into BS or GS. The size of thesegments is determined by the BSLIM[12:0] bits. Therelative location of the segments within user space doesnot change, such that BS (if present) occupies thememory area just after the Interrupt Vector Table (IVT)and the GS occupies the space just after the BS (or if theAlternate IVT is enabled, just after it). The Configuration Segment (or CS) is a small segment(less than a page, typically just one row) within userFlash address space. It contains all user configurationdata that is loaded by the NVM Controller during theReset sequence.

    TABLE 2-3: CONFIGURATION WORD ADDRESSES

    Configuration Register

    Single Partition Flash Mode

    PIC24FJ256GX4XX PIC24FJ128GX4XX PIC24FJ64GX4XX

    FSEC 0x02 AF80 0x01 5780 0x00 AF80FBSLIM 0x02 AF90 0x01 5790 0x00 AF90FSIGN 0x02 AF94 0x01 5794 0x00 AF94FOSCSEL 0x02 AF98 0x01 5798 0x00 AF98FOSC 0x02 AF9C 0x01 579C 0x00 AF9CFWDT 0x02 AFA0 0x01 57A0 0x00 AFA0FPOR 0x02 AFA4 0x01 57A4 0x00 AFA4FICD 0x02 AFA8 0x01 57A8 0x00 AFA8FDS 0x02 AFAC 0x01 57AC 0x00 AFACFDEVOPT1 0x02 AFB0 0x01 57B0 0x00 AFB0FBOOT 0x80 1800

    Dual Partition Flash Modes(1)

    FSEC(2) 0x01 5780/0x41 5780 0x00 AB80/0x40 AB80 0x00 5780/0x40 5780FBSLIM(2) 0x01 5790/0x41 5790 0x00 AB90/0x40 AB90 0x00 5790/0x40 5790FSIGN(2) 0x01 5794/0x41 5794 0x00 AB94/0x40 AB94 0x00 5794/0x40 5794FOSCSEL 0x01 5798/0x41 5798 0x00 AB98/0x40 AB98 0x00 5798/0x40 5598FOSC 0x01 579C/0x41 579C 0x00 AB9C/0x40 AB9C 0x00 559C/0x40 579CFWDT 0x01 57A0/0x41 57A0 0x00 ABA0/0x40 ABA0 0x00 57A0/0x40 57A0FPOR 0x01 57A4/0x41 57A4 0x00 ABA4/0x40 ABA4 0x00 57A4/0x40 57A4FICD 0x01 57A8/0x41 57A8 0x00 ABA8/0x40 ABA8 0x00 57A8/0x40 57A8FDS 0x01 57AC/0x41 57AC 0x00 ABAC/0x40 ABAC 0x00 57AC/0x40 57ACFDEVOPT1 0x01 57B0/0x41 57B0 0x00 ABB0/0x40 ABB0 0x00 57B0/0x40 57B0FBTSEQ 0x01 57FC/0x41 57FC 0x00 ABFC/0x40 ABFC 0x00 57FC/0x40 57FCFBOOT 0x80 1800Note 1: Addresses shown for Dual Partition Flash modes are for the Active/Inactive Partitions, respectively.

    2: Changes to these Inactive Partition Configuration Words affect how the Active Partition accesses the Inactive Partition.

    DS30010073D-page 12 2015-2019 Microchip Technology Inc.

  • 2015-2019 M

    icrochip Technology Inc.D

    S30010073D

    -page 13

    PIC24FJ256G

    A412/G

    B412 FA

    MILY

    TAR Bit 3 Bit 2 Bit 1 Bit 0

    FS BSS[2:0] BWRP

    FB

    FS — — — —

    FO FNOSC[2:0]

    FO SOSCSEL OSCIOFNC POSCMD[1:0]

    FW WDTPS[3:0]

    FP — RETVRDIS BOREN[1:0]

    FIC — — ICS[1:0]

    FD DSWDTPS[4:0]

    FD DOPT[3:1] —

    FB

    FB — — BTMODE[1:0]

    LeNo

    BLE 2-4: CONFIGURATION REGISTERS MAPegister Name

    Bits 23-16 Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4

    EC — AIVTDIS — — — CSS[2:0] CWRP GSS[1:0] GWRP —

    SLIM — — — — BSLIM[12:0]

    IGN — SIGN — — — — — — — — — — —

    SCSEL — — — — — — — — — IESO PLLMODE[3:0]

    SC — — — — — — — — — FCKSM[1:0] IOL1WAY PLLSS

    DT — — WDTCLK[1:0] — WDTCMX — WDTWIN[1:0] WINDIS FWDTEN[1:0] WDTPRE

    OR — — — — — — — — — r(1) — — —

    D — NOBTSWP — — — — — — — BKBUG — JTAGEN —

    S — DSBITEN — — — — — — — DSWDTEN DSZPBOR DSWDTLPRC

    EVOPT1 — — — — — — — — — — — — —

    TSEQ IBSEQ[11:0] BSEQ[11:0]

    OOT — — — — — — — — — — — — —

    gend: — = unimplemented bit, read as ‘1’.te 1: Bit is reserved, maintain as ‘0’.

  • PIC24FJ256GA412/GB412 FAMILY

    2.6.3 ONE-TIME-PROGRAMMABLE (OTP) MEMORY

    PIC24FJ256GA412/GB412 family devices provide384 bytes of One-Time Programmable (OTP)memory, located at addresses, 0x80 1700 through0x80 17FE. This memory can be used for persistentstorage of application-specific information that will notbe erased by reprogramming the device. Thisincludes many types of information, such as (but notlimited to):

    • Application checksums• Code revision information• Product information• Serial numbers• System manufacturing dates• Manufacturing lot numbers

    Customer OTP memory may be programmed in anymode, including user RTSP mode, but it cannot beerased. Data is not cleared by a Chip Erase.

    Do not perform repeated writes on the OTP memory.

    DS30010073D-page 14 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    3.0 DEVICE PROGRAMMING – ICSPICSP mode is a special programming protocol thatallows you to read and write to device memory. TheICSP mode is the most direct method used to programthe device, which is accomplished by applying controlcodes and instructions serially to the device, using thePGECx and PGEDx pins. ICSP mode also has theability to read executive memory to determine if theProgramming Executive (PE) is present and to writethe PE to executive memory if Enhanced ICSP modewill be used.

    In ICSP mode, the system clock is taken from thePGECx pin, regardless of the device’s OscillatorConfiguration bits. All instructions are shifted seriallyinto an internal buffer, then loaded into the InstructionRegister (IR) and executed. No program fetchingoccurs from internal memory. Instructions are fed in24 bits at a time. PGEDx is used to shift data in, andPGECx is used as both the serial shift clock and theCPU execution clock.

    3.1 Overview of the Programming Process

    Figure 3-1 illustrates the high-level overview of theprogramming process. After entering ICSP mode, thefirst action is to Chip Erase program memory. Next, thecode memory is programmed, followed by the deviceConfiguration bits. Code memory (including the Config-uration bits) is then verified to ensure that programmingwas successful. Then, the code-protect Configurationbits are programmed, if required.

    FIGURE 3-1: HIGH-LEVEL ICSP™ PROGRAMMING FLOW

    Note 1: During ICSP operation, the operatingfrequency of PGECx must not exceed5 MHz.

    2: ICSP mode is slower than EnhancedICSP mode for programming.

    Start

    Perform ChipErase

    Program Memory,

    Verify Program Memory,

    End

    Enter ICSP™

    Program Code-Protect

    Exit ICSP

    Configuration Wordsand User ID Words

    Configuration Wordsand User ID Words

    Configuration Bits

    2015-2019 Microchip Technology Inc. DS30010073D-page 15

  • PIC24FJ256GA412/GB412 FAMILY

    3.2 Entering ICSP ModeAs illustrated in Figure 3-2, entering ICSP Program/Verify mode requires three steps:

    1. MCLR is briefly driven high and then low(P21).(1)

    2. A 32-bit key sequence is clocked into PGEDx.3. MCLR is then driven high within a specified

    period of time, ‘P19’, and held.

    The programming voltage applied to MCLR isVIH, which is essentially VDD in the case ofPIC24FJ256GA412/GB412 family devices. There is nominimum time requirement for holding at VIH. After VIHis removed, an interval of at least P18 must elapsebefore presenting the key sequence on PGEDx.

    The key sequence is a specific 32-bit pattern,‘0100 1101 0100 0011 0100 1000 0101 0001’(more easily remembered as 0x4D43 4851 in hexa-decimal). The device will enter Program/Verify mode onlyif the sequence is valid. The Most Significant bit (MSb) ofthe most significant nibble must be shifted in first.

    Once the key sequence is complete, VIH must beapplied to MCLR and held at that level for as long asProgram/Verify mode is to be maintained. An intervaltime of at least P19, P7 and P1 * 5 must elapse beforepresenting data on PGEDx. Signals appearing onPGEDx before P7 has elapsed will not be interpretedas valid.

    On successful entry, the program memory can beaccessed and programmed in serial fashion. While inICSP mode, all unused I/Os are placed in ahigh-impedance state.

    FIGURE 3-2: ENTERING ICSP™ MODE

    Note 1: If a capacitor is present on the MCLR pin,the high time for entering ICSP mode canvary.

    MCLR

    PGEDx

    PGECx

    VDD

    P6P14

    b31 b30 b29 b28 b27 b2 b1 b0b3...

    Program/Verify Entry Code = 0x4D43 4851

    P1AP1B

    P18

    P19

    0 1 0 0 1 0 0 0 1

    P7VIH VIH

    P21 P1 * 5

    DS30010073D-page 16 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    3.3 ICSP OperationAfter entering into ICSP mode, the CPU is Idle.Execution of the CPU is governed by an internal statemachine. A 4-bit control code is clocked in usingPGECx and PGEDx, and this control code is used tocommand the CPU (see Table 3-1).

    The SIX control code is used to send instructions to theCPU for execution and the REGOUT control code is usedto read data out of the device through the VISI register.

    TABLE 3-1: CPU CONTROL CODES IN ICSP™ MODE

    3.3.1 SIX SERIAL INSTRUCTION EXECUTION

    The SIX control code allows execution of assemblyinstructions. When the SIX code is received, the CPU issuspended for 24 clock cycles as the instruction is thenclocked into the internal buffer. Once the instruction isshifted in, the state machine allows it to be executed overthe next four clock cycles. While the received instructionis executed, the state machine simultaneously shifts inthe next 4-bit command (see Figure 3-3).

    FIGURE 3-3: SIX SERIAL EXECUTION

    FIGURE 3-4: PROGRAM ENTRY AFTER RESET

    4-Bit Control Code Mnemonic Description

    0000 SIX Shift in 24-bit instruction and execute.

    0001 REGOUT Shift out the VISIregister.

    0010-1111 N/A Reserved.

    Note 1: Coming out of the ICSP entry sequence,the first 4-bit control code is alwaysforced to SIX and a forced NOPinstruction is executed by the CPU. Fiveadditional PGECx clocks are needed onstart-up, thereby resulting in a 9-bit SIXcommand instead of the normal 4-bit SIXcommand. After the forced SIX isclocked in, ICSP operation resumes asnormal (the next 24 clock cycles load thefirst instruction word to the CPU). SeeFigure 3-4 for details.

    2: TBLRDH, TBLRDL, TBLWTH and TBLWTLinstructions must be followed by a NOPinstruction.

    P4

    1 2 3 23 24 1 2 3 4P1

    PGECxP4a

    PGEDx

    24-Bit Instruction Fetch Execute 24-Bit Instruction,Execute PC – 1,Fetch SIX Control Code Fetch Next Control Code

    4 5 6 7 8 18 19 20 21 2217

    LSB X X X X X X X X X X X X X X MSB

    PGEDx = Input

    P2

    P3P1B

    P1A

    1 2

    0 0 0 00 0

    3 4

    0 0

    P4

    2 3 1 2 3 23 24 1 2 3 4P1

    PGECxP4a

    PGEDx

    24-Bit Instruction Fetch Execute 24-bit Instruction,Execute PC – 1,

    1 4

    0 0 0 0

    Fetch SIX Control Code Fetch Next Control Code

    4 5 6 7 8 18 19 20 21 2217

    LSB X X X X X X X X X X X X X X MSB

    PGEDx = Input

    P2

    P3P1B

    P1A

    5 6 7

    0 0 0 00 0 0

    8 9

    0 0

    2015-2019 Microchip Technology Inc. DS30010073D-page 17

  • PIC24FJ256GA412/GB412 FAMILY

    3.3.2 REGOUT SERIAL INSTRUCTION EXECUTION

    The REGOUT control code allows for data to beextracted from the device in ICSP mode. It is used toclock the contents of the VISI register out of the deviceover the PGEDx pin. After the REGOUT control code isreceived, the CPU is held Idle for eight cycles. Afterthese eight cycles, an additional 16 cycles are requiredto clock the data out (see Figure 3-5).

    The REGOUT code is unique because the PGEDx pin isan input when the control code is transmitted to thedevice. However, after the control code is processed,the PGEDx pin becomes an output as the VISI registeris shifted out.

    FIGURE 3-5: REGOUT SERIAL EXECUTION

    Note: The device will latch input PGEDx data onthe rising edge of PGECx and will outputdata on the PGEDx line on the rising edgeof PGECx. For all data transmissions, theLeast Significant bit (LSb) is transmittedfirst.

    1 2 3 4 1 2 7 8PGECx

    P4

    PGEDx

    PGEDx = Input

    Execute Previous Instruction, CPU Held in Idle Shift Out VISI Register[15:0]

    P5

    PGEDx = Output

    1 2 3 1 2 3 4

    P4a

    11 13 15 161412

    No Execution Takes Place,Fetch Next Control Code

    0 0 0 0 0

    PGEDx = Input

    MSb1 2 3 41

    4 5 6

    LSb 141312... 11100

    Fetch REGOUT Control Code

    0

    DS30010073D-page 18 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    3.4 Flash Memory Programming in ICSP Mode

    3.4.1 PROGRAMMING OPERATIONSFlash memory write/erase operations are controlled bythe NVMCON register. Programming is performed bysetting NVMCON to select the type of erase operation(Table 3-2) or write operation (Table 3-3) and initiatingthe programming by setting the WR control bit(NVMCON[15]).

    In ICSP mode, all programming operations areself-timed. There is an internal delay between the usersetting the WR control bit and the automatic clearingof the WR control bit when the programmingoperation is complete. Refer to Section 10.0 “AC/DCCharacteristics and Timing Requirements” fordetailed information about the delays associated withvarious programming operations.

    TABLE 3-2: NVMCON ERASE OPERATIONS

    TABLE 3-3: NVMCON WRITE OPERATIONS

    3.4.2 STARTING AND STOPPING A PROGRAMMING CYCLE

    For protection against accidental operations, the erase/write initiate sequence must be written to the NVMKEYregister to allow any erase or program operation toproceed. The two instructions following the start of theprogramming sequence should be NOPs. To start anerase or write sequence, the following steps must becompleted:

    1. Write 0x55 to the NVMKEY register.2. Write 0xAA to the NVMKEY register.3. Set the WR bit in the NVMCON register.4. Execute three NOP instructions.All erase and write cycles are self-timed. The WR bitshould be polled to determine if the erase or write cyclehas been completed.

    NVMCONValue Erase Operation

    0x400E Chip Erase user memory (does not erase Device ID, customer OTP or Program Executive memory).

    0x4003 Erase a page of program or executive memory.

    0x4004 Erase user memory and Configuration Words in the Inactive Partition (Dual Partition modes only).

    NVMCONValue Write Operation

    0x4001 Double-word program operation.0x4002 Row programming operation.

    2015-2019 Microchip Technology Inc. DS30010073D-page 19

  • PIC24FJ256GA412/GB412 FAMILY

    3.5 Erasing Program MemoryThe general procedure for erasing user memory isshown in Figure 3-6. The process for Chip Erase, PageErase and Inactive Partition Erase are all substantiallysimilar, and are described in Table 3-4 throughTable 3-6.

    The last row of the last page of program memorycontains the Flash Configuration Words. Before pro-gramming these Words, they must be erased. If theyare erased with a Page Erase operation, all other rowsin the page will also be erased. Users may want to eitheravoid using the rest of this page for application code, orensure that the non-configuration data in the CS page iscopied before the erase and reprogrammed afterwards.

    The Configuration Read registers can only be loadedas part of the Reset sequence and cannot be modifiedat any other time.

    FIGURE 3-6: ERASE FLOW

    TABLE 3-4: SERIAL EXECUTION FOR CHIP ERASE

    Note 1: Program memory must be erased beforewriting any data to program memory.

    2: For Page Erase operations, theNVMADRL/H registers must also beloaded with the address of the page to beerased.

    Start

    End

    Set the WR Bit to Initiate Erase

    Write Appropriate Value to NVMCON[3:0]

    Delay P11 + P10 Time

    Set the WREN bit

    Command (Binary)

    Data (Hex) Description

    Step 1: Exit the Reset vector.000000000000

    000000040200000000

    NOPGOTO 0x200NOP

    Step 2: Configure the NVMCON register to perform a Chip Erase.00000000

    2400E0883B00

    MOV #0x400E, W0MOV W0, NVMCON

    Step 3: Set the WR bit.00000000000000000000000000000000

    200550883B30200AA0883B30A8E761000000000000000000

    MOV #0x55, W0MOV W0, NVMKEYMOV #0xAA, W0MOV W0, NVMKEYBSET NVMCON, #WRNOPNOPNOP

    Step 4: Repeat this step to poll the WR bit until it is cleared by hardware.00000000000000000000000100000000

    04020000000803B02883C22000000

    000000060000

    GOTO 0x200NOPMOV NVMCON, W2MOV W2, VISINOPClock out the contents of the VISI register.NOPRETURN

    DS30010073D-page 20 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    TABLE 3-5: SERIAL EXECUTION FOR PAGE ERASECommand (Binary)

    Data (Hex) Description

    Step 1: Exit the Reset vector.000000000000

    000000 040200 000000

    NOPGOTO 0x200NOP

    Step 2: Set the NVMCON register to erase a page.00000000

    240030 883B00

    MOV #0x4003, W0MOV W0, NVMCON

    Step 3: Load the address of the page to be erased into the NVMADR register pair.0000000000000000

    200000 883B10 200000 883B20

    MOV #PageAddress, W0MOV W0, NVMADRMOV #PageAddress, W0MOV W0, NVMADRU

    Step 4: Set the WR bit.00000000000000000000000000000000

    200550 883B30 200AA0 883B30 A8E761 000000 000000 000000

    MOV #0x55, W0MOV W0, NVMKEYMOV #0xAA, W0MOV W0, NVMKEYBSET NVMCON, #WRNOPNOPNOP

    Step 5: Repeat this step to poll the WR bit until it is cleared by hardware.0000000000000000000000010000

    040200 000000 803B02 883C22 000000

    000000

    GOTO 0x200NOPMOV NVMCON, W2MOV W2, VISINOPClock out the contents of the VISI register.NOP

    Step 6: Clear the WREN bit.00000000

    200000 883B00

    MOV NVMCON, W2MOV W0, NVMCON

    2015-2019 Microchip Technology Inc. DS30010073D-page 21

  • PIC24FJ256GA412/GB412 FAMILY

    TABLE 3-6: SERIAL EXECUTION FOR INACTIVE PARTITION ERASECommand (Binary)

    Data (Hex) Description

    Step 1: Exit the Reset vector.000000000000

    000000 040200 000000

    NOPGOTO 0x200NOP

    Step 2: Set the NVMCON register to erase a page.00000000

    240040 883B00

    MOV #0x4004, W0MOV W0, NVMCON

    Step 3: Set the WR bit.00000000000000000000000000000000

    200550 883B30 200AA0 883B30 A8E761 000000 000000 000000

    MOV #0x55, W0MOV W0, NVMKEYMOV #0xAA, W0MOV W0, NVMKEYBSET NVMCON, #WRNOPNOPNOP

    Step 4: Repeat this step to poll the WR bit until it is cleared by hardware.0000000000000000000000010000

    040200 000000 803B02 883C22 000000

    000000

    GOTO 0x200NOPMOV NVMCON, W2MOV W2, VISINOPClock out the contents of the VISI register.NOP

    Step 5: Clear the WREN bit.00000000

    200000 883B00

    MOV NVMCON, W2MOV W0, NVMCON

    DS30010073D-page 22 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    3.6 Writing Code MemoryFor PIC24FJ256GA412/GB412 devices, there are twomethods available for writing to code memory:two-word writes using the write latches or 64-word rowwrites. Figure 3-7 provides a high-level description ofthe two methods.

    Two-word writes program code memory with twoinstruction words at a time. Two words are loaded intothe write latches and the Write Pointer is incremented.Next, the write sequence is initiated, and finally, the WRbit is checked for the sequence to be complete. Thisprocess continues for all the data to be programmed.

    Table 3-7 provides an example of ICSP programmingfor a two-word write operation.

    FIGURE 3-7: PROGRAM CODE MEMORY FLOW

    Start

    Configure Devicefor Writes

    All Data Written?

    No

    Yes

    Initiate WriteSequence and Poll

    WR Bit to be Cleared

    Initialize Write Pointerwith Row Address

    (DestinationAddress)

    Load Two Words intoWrite Latches

    IncrementWrite Pointer

    End

    No

    Using RAM RowProgramming

    Using Two-WordProgramming

    Load 64 Wordsinto Write Latches

    2015-2019 Microchip Technology Inc. DS30010073D-page 23

  • PIC24FJ256GA412/GB412 FAMILY

    TABLE 3-7: SERIAL INSTRUCTION EXECUTION FOR PROGRAMMING CODE MEMORY:TWO-WORD LATCH WRITES

    Command(Binary)

    Data(Hex) Description

    Step 1: Exit the Reset vector.000000000000

    000000040200000000

    NOPGOTO 0x200NOP

    Step 2: Initialize the TBLPAG register for writing to the latches.00000000

    200FAC8802AC

    MOV #0xFA, W12MOV W12, TBLPAG

    Step 3: Load W0:W2 with the next two packed instruction words to program.000000000000

    2xxxx02xxxx12xxxx2

    MOV #, W0MOV #, W1MOV #, W2

    Step 4: Set the Read Pointer (W6) and Write Pointer (W7), and load the (next set of) write latches.0000000000000000000000000000000000000000000000000000000000000000

    EB0300000000EB0380000000BB0BB6000000000000BBDBB6000000000000BBEBB6000000000000BB1BB6000000000000

    CLR W6NOPCLR W7NOPTBLWTL [W6++], [W7] NOPNOPTBLWTH.B [W6++], [W7++]NOPNOPTBLWTH.B [W6++], [++W7]NOPNOPTBLWTL.W [W6++], [W7++]NOP NOP

    Step 5: Set the NVMADRU/NVMADR register pair to point to the correct address.0000000000000000

    2xxxx32xxxx4883B13883B24

    MOV #DestinationAddress, W3MOV #DestinationAddress, W4MOV W3, NVMADRMOV W4, NVMADRU

    Step 6: Set the NVMCON register to program two instruction words.000000000000

    24001A883B0A000000

    MOV #0x4001, W10MOV W10, NVMCONNOP

    Step 7: Initiate the write cycle.00000000000000000000000000000000

    200551883B31200AA1883B31A8E761000000000000000000

    MOV #0x55, W1MOV W1, NVMKEYMOV #0xAA, W1MOV W1, NVMKEYBSET NVMCON, #WRNOPNOPNOP

    DS30010073D-page 24 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    Step 8: Wait for program operation to complete and make sure the WR bit is clear.0000000000000001000000000000

    803B00883C20000000

    000000040200000000

    MOV NVMCON, W0MOV W0, VISINOPClock out the contents of the VISI register.NOPGOTO 0x200NOPRepeat until the WR bit is clear.

    Step 9: Repeat Steps 3-8 until all code memory is programmed.Step 10: Clear the WREN bit.

    00000000

    803B02 883B00

    MOV NVMCON, W2MOV W0, NVMCON

    TABLE 3-7: SERIAL INSTRUCTION EXECUTION FOR PROGRAMMING CODE MEMORY:TWO-WORD LATCH WRITES (CONTINUED)

    Command(Binary)

    Data(Hex) Description

    2015-2019 Microchip Technology Inc. DS30010073D-page 25

  • PIC24FJ256GA412/GB412 FAMILY

    Row writes program one row (64 instruction words) ata time. First, the Table Pointer is initialized to point tothe program latches and data is written into them withTable Writes. Next, the Write Pointer is initialized(NVMADRU and NVMADR register pair) with therow address (DestinationAddress). Finally, the writesequence is initiated and the WR bit is checked for therow programming to be complete. This process isrepeated for all data to be programmed. Table 3-8shows the ICSP programming details for row writes.

    To minimize programming time, the data to be pro-grammed is stored in the W0:W5 registers in a packeddata format (Figure 3-8). This is the same packedformat used by the PE. See Section 6.2.2 “PackedData Format” for additional information.

    FIGURE 3-8: PACKED INSTRUCTION WORD STORAGE IN W0:W5

    MSB0MSB1

    LSW1

    LSW0

    0715

    MSB2MSB3

    LSW3

    LSW2

    W0

    W1

    W2

    W3

    W4

    W5

    TABLE 3-8: SERIAL INSTRUCTION EXECUTION FOR PROGRAMMING CODE MEMORY: ROW WRITES

    Command(Binary)

    Data(Hex) Description

    Step 1: Exit the Reset vector.000000000000

    000000040200000000

    NOPGOTO 0x200NOP

    Step 2: Set the NVMCON register to program 64 instruction words.00000000

    240020883B00

    MOV #0x4002, W0MOV W0, NVMCON

    Step 3: Initialize the TBLPAG register for writing to the latches.00000000

    200FAC8802AC

    MOV #0xFA, W12MOV W12, TBLPAG

    Step 4: Load W0:W5 with the next 4 instruction words to program.000000000000000000000000

    2xxxx02xxxx12xxxx22xxxx32xxxx42xxxx5

    MOV #, W0MOV #, W1MOV #, W2MOV #, W3MOV #, W4MOV #, W5

    DS30010073D-page 26 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    Step 5: Set the Read Pointer (W6) and load the (next set of) write latches.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

    EB0300000000EB0380000000BB0BB6000000000000BBDBB6000000000000BBEBB6000000000000BB1BB6000000000000BB0BB6000000000000BBDBB6000000000000BBEBB6000000000000BB1BB6000000000000

    CLR W6NOPCLR W7NOPTBLWTL [W6++], [W7]NOPNOPTBLWTH.B [W6++], [W7++]NOPNOPTBLWTH.B [W6++], [++W7]NOPNOPTBLWTL [W6++], [W7++]NOPNOPTBLWTL [W6++], [W7]NOPNOPTBLWTH.B [W6++], [W7++]NOPNOPTBLWTH.B [W6++], [++W7]NOPNOPTBLWTL [W6++], [W7++]NOPNOP

    Step 6: Repeat Steps 4 and 5, for a total of 16 times, to load the write latches with 64 instructions.Step 7: Set the NVMADRU/NVMADR register pair to point to the correct address.

    0000000000000000

    2xxxx32xxxx4883B13883B24

    MOV #DestinationAddress, W3MOV #DestinationAddress, W4MOV W3, NVMADRMOV W4, NVMADRU

    Step 8: Execute the WR bit unlock sequence and initiate the write cycle.00000000000000000000000000000000

    200550883B30200AA0883B30A8E761000000000000000000

    MOV #0x55, W0MOV W0, NVMKEYMOV #0xAA, W0MOV W0, NVMKEYBSET NVMCON, #WRNOPNOPNOP

    Step 9: Repeat this step to poll the WR bit until it is cleared by hardware.0000000000000000000000010000

    040200 000000 803B02 883C22 000000

    000000

    GOTO 0x200NOPMOV NVMCON, W2MOV W2, VISINOPClock out the contents of the VISI register.NOP

    TABLE 3-8: SERIAL INSTRUCTION EXECUTION FOR PROGRAMMING CODE MEMORY: ROW WRITES (CONTINUED)

    Command(Binary)

    Data(Hex) Description

    2015-2019 Microchip Technology Inc. DS30010073D-page 27

  • PIC24FJ256GA412/GB412 FAMILY

    Step 10: Reset the device’s internal Program Counter.00000000

    040200000000

    GOTO 0x200NOP

    Step 11: Repeat Steps 3 through 9 until all code memory is programmed.Step 12: Clear the WREN bit.

    00000000

    803B02 883B00

    MOV NVMCON, W2MOV W0, NVMCON

    TABLE 3-8: SERIAL INSTRUCTION EXECUTION FOR PROGRAMMING CODE MEMORY: ROW WRITES (CONTINUED)

    Command(Binary)

    Data(Hex) Description

    DS30010073D-page 28 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    3.7 Writing Configuration BitsThe procedure for writing Configuration bits is similar tothe procedure for writing code memory. Table 3-9shows the ICSP programming details for writing theConfiguration bits.

    For all Configuration Words, except FBTSEQ, only thelower two bytes of the Word contain configuration data;the upper byte is unused. It is recommended that theupper byte be programmed with 0xFFFF, as indicatedin Step 3 (see Table 3-9). FBTSEQ (implemented onlyin Dual Partition modes) uses all 24 bits of the programmemory’s width to store the Boot Sequence Numberbits, BSEQ[11:0] (FBTSEQ[11:0]), and their one’scomplement, IBSEQ[11:0] (FBTSEQ[23:12]).

    To change the values of the Configuration bits oncethey have been programmed, the device must beerased, as described in Section 3.5 “ErasingProgram Memory”, and reprogrammed to the desiredvalue. Note that it is only possible to program aConfiguration bit from ‘1’ to ‘0’ to enable codeprotection; it is not possible to program it from ‘0’ to ‘1’.The Flash page on which the Configuration Segmentresides is shared with the General Segment. To erase andrewrite the Configuration bits, the entire page must beerased. To avoid losing data held in the General Segment:

    1. Copy the page to RAM.2. Update the RAM copy with the new

    Configuration bit values.3. Write back the data to the Flash page.

    Alternatively, avoid use of the portion of this Flash pageused by the General Segment.

    TABLE 3-9: SERIAL INSTRUCTION EXECUTION FOR PROGRAMMING CONFIGURATION WORDS:TWO-WORD LATCH WRITES

    Command(Binary)

    Data(Hex) Description

    Step 1: Exit the Reset vector.000000000000

    000000040200000000

    NOPGOTO 0x200NOP

    Step 2: Initialize the TBLPAG register for writing to the latches.00000000

    200FAC8802AC

    MOV #0xFA, W12MOV W12, TBLPAG

    Step 3: Load W0:W1 with the next two Configuration Words to program.0000

    —00000000

    2xxxx0—

    2xxxx12FFFF2

    MOV #, W0Upper word is 0xFFFF for all Configuration Words except FBTSEQ.MOV #, W1MOV #, W2

    Step 4: Set the Read Pointer (W6) and Write Pointer (W7), and load the (next set of) write latches.0000000000000000000000000000000000000000000000000000000000000000

    EB0300000000EB0380000000BB0BB6000000000000BBDBB6000000000000BBEBB6000000000000BB1BB6000000000000

    CLR W6NOPCLR W7NOPTBLWTL [W6++], [W7]NOPNOPTBLWTH.B [W6++], [W7++]NOPNOPTBLWTH.B [W6++], [++W7]NOPNOPTBLWTL.W [W6++], [W7++]NOPNOP

    2015-2019 Microchip Technology Inc. DS30010073D-page 29

  • PIC24FJ256GA412/GB412 FAMILY

    Step 5: Set the NVMADRU/NVMADR register pair to point to the correct address.0000000000000000

    2xxxx32xxxx4883B13883B24

    MOV #DestinationAddress, W3MOV #DestinationAddress, W4MOV W3, NVMADRMOV W4, NVMADRU

    Step 6: Set the NVMCON register to program two instruction words.000000000000

    24001A883B0A000000

    MOV #0x4001, W10MOV W10, NVMCONNOP

    Step 7: Initiate the write cycle.00000000000000000000000000000000

    200551883B31200AA1883B31A8E761000000000000000000

    MOV #0x55, W1MOV W1, NVMKEYMOV #0xAA, W1MOV W1, NVMKEYBSET NVMCON, #WRNOPNOPNOP

    Step 8: Wait for program operation to complete and make sure the WR bit is clear.0000000000000001000000000000

    803B00883C20000000

    000000040200000000

    MOV NVMCON, W0MOV W0, VISINOPClock out the contents of the VISI register.NOPGOTO 0x200NOPRepeat until the WR bit is clear.

    Step 9: Repeat Steps 3-8 until all code memory is programmed.Step 10: Clear the WREN bit.

    00000000

    803B02 883B00

    MOV NVMCON, W2MOV W0, NVMCON

    TABLE 3-9: SERIAL INSTRUCTION EXECUTION FOR PROGRAMMING CONFIGURATION WORDS:TWO-WORD LATCH WRITES (CONTINUED)

    Command(Binary)

    Data(Hex) Description

    DS30010073D-page 30 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    3.8 Reading Code MemoryReading from code memory is performed by executinga series of TBLRD instructions and clocking out the datausing the REGOUT command.Table 3-10 shows the ICSP programming details forreading code memory.

    To minimize reading time, the same packed dataformat that the PE uses is utilized. See Section 6.2“Programming Executive Commands” for moredetails on the packed data format.

    3.9 Reading Configuration WordsThe procedure for reading Configuration Words isidentical to the procedure for reading code memory,shown in Table 3-10. Since there are multipleConfiguration Words, they are read one at a time.

    TABLE 3-10: SERIAL INSTRUCTION EXECUTION FOR READING CODE MEMORYCommand

    (Binary)Data(Hex) Description

    Step 1: Exit the Reset vector.000000000000

    000000040200000000

    NOPGOTO 0x200NOP

    Step 2: Initialize the Write Pointer (W7) to point to the VISI register.00000000

    207847000000

    MOV #VISI, W7NOP

    Step 3: Initialize the TBLPAG register and the Read Pointer (W6) for the TBLRD instruction.000000000000

    200xx08802A02xxxx6

    MOV #, W0MOV W0, TBLPAGMOV #, W6

    Step 4: Read and clock out the contents of the next two locations of code memory, through the VISI register, using the REGOUT command.

    000000000000000100000000000000000000000000000001000000000000000000010000

    BA0B96000000000000

    000000BADBB6000000000000BAD3D6000000000000

    000000BA0BB6000000000000

    000000

    TBLRDL [W6], [W7]NOPNOPClock out the contents of the VISI register.NOPTBLRDH.B [W6++], [W7++]NOPNOPTBLRDH.B [++W6], [W7--]NOPNOPClock out the contents of the VISI register.NOPTBLRDL [W6++], [W7]NOPNOPClock out the contents of the VISI register.NOP

    Step 5: Reset the device’s internal Program Counter.00000000

    040200000000

    GOTO 0x200NOP

    Step 6: Repeat Steps 3 through 5 until all desired code memory is read (note that “Reset the device’s internal Program Counter” will be Step 5).

    2015-2019 Microchip Technology Inc. DS30010073D-page 31

  • PIC24FJ256GA412/GB412 FAMILY

    3.10 Verify Code Memory and Configuration Bits

    The verify step involves reading back the code memoryspace and comparing it against the copy held in theprogrammer’s buffer. The Configuration Words areverified with the rest of the code.

    The verify process is illustrated in Figure 3-9. The lowerword of the instruction is read, and then the lower byteof the upper word is read and compared against theinstruction stored in the programmer’s buffer. Referto Section 3.8 “Reading Code Memory” forimplementation details of reading code memory.

    FIGURE 3-9: VERIFY CODE MEMORY FLOW

    3.11 Exiting ICSP ModeExiting Program/Verify mode is done by removing VIHfrom MCLR, as illustrated in Figure 3-10. The onlyrequirement for exit is that an interval, P16, shouldelapse between the last clock, and program signals onPGECx and PGEDx, before removing VIH.

    FIGURE 3-10: EXITING ICSP™ MODE

    Note: Because the Configuration bytes includethe device code protection bit, code memoryshould be verified immediately after writ-ing if the code protection is to be enabled.This is because the device will not bereadable or verifiable if a device Resetoccurs after the code-protect bit has beencleared.

    Read Low Word

    Read High Byte

    Data?

    AllCode Memory

    Verified?

    No

    Yes

    No

    Set TBLPTR = 0

    Start

    Yes

    End

    with Post-Increment

    with Post-Increment

    FailureReport Error

    DoesInstruction Word

    = Expected

    MCLR

    P16

    PGEDx

    PGEDx = Input

    PGECx

    VDD

    VIH

    VIH

    P17

    DS30010073D-page 32 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    4.0 DEVICE PROGRAMMING – ENHANCED ICSP

    This section discusses programming the devicethrough Enhanced ICSP and the ProgrammingExecutive (PE). The PE resides in executive memory(separate from code memory) and is executed whenEnhanced ICSP Programming mode is entered. ThePE provides the mechanism for the programmer (hostdevice) to program and verify the PIC24FJ256GA412/GB412 family devices, using a simple command setand communication protocol. There are several basicfunctions provided by the PE:

    • Read Memory• Erase Memory• Program Memory• Blank Check

    The PE performs the low-level tasks required forerasing, programming and verifying a device. Thisallows the programmer to program the device byissuing the appropriate commands and data. A detaileddescription for each command is provided inSection 6.2 “Programming Executive Commands”.

    4.1 Overview of the Programming Process

    Figure 4-1 shows the high-level overview of theprogramming process. First, it must be determined ifthe PE is present in executive memory, and then,Enhanced ICSP mode is entered. The programmemory is then erased, and the program memory andConfiguration Words are programmed and verified.Last, the code-protect Configuration bits areprogrammed (if required) and Enhanced ICSP mode isexited.

    FIGURE 4-1: HIGH-LEVEL ENHANCED ICSP™ PROGRAMMING FLOW

    Note: The PE uses the device’s data RAM forvariable storage and program execution.After running the PE, no assumptionsshould be made about the contents ofdata RAM.

    Start

    End

    Program Memory,

    Verify Program Memory,

    Erase

    Program Code-Protect

    Exit Enhanced ICSP

    Confirm Presence of

    Enter Enhanced

    Configuration Words

    Configuration Bits

    Programming Executive

    ICSP™ mode

    Program Memory

    Configuration Wordsand User ID Words

    and User ID Words

    2015-2019 Microchip Technology Inc. DS30010073D-page 33

  • PIC24FJ256GA412/GB412 FAMILY

    4.2 Confirming the Presence of the Programming Executive

    Before programming, the programmer must confirmthat the PE is stored in executive memory. Theprocedure for this task is illustrated in Figure 4-2.

    First, ICSP mode is entered. Then, the unique Applica-tion ID Word, stored in executive memory, is read. If theApplication ID has the value, 0xE0, the ProgrammingExecutive is resident in memory and the device can beprogrammed. However, if the Application ID Word isnot present, the PE must be programmed to executivecode memory using the method described inSection 5.0 “Programming the ProgrammingExecutive to Memory”. Section 3.0 “Device Programming – ICSP”describes the ICSP programming method. Section 4.3“Reading the Application ID Word” describes theprocedure for reading the Application ID Word in ICSPmode.

    FIGURE 4-2: CONFIRMING PRESENCE OF PROGRAMMING EXECUTIVE

    Is

    Start

    Enter ICSP™ mode

    Content = 0xE0?

    Yes

    No

    Application IDCheck the

    be ProgrammedProg. Executive must

    by Reading Address0x80 0BFE

    End

    Exit ICSP mode

    Enter Enhanced

    Sanity Check

    ICSP mode

    DS30010073D-page 34 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    4.3 Reading the Application ID WordThe Application ID Word is stored at address,0x80 0FF0, in executive code memory. To read thismemory location, you must use the SIX control code tomove this program memory location to the VISIregister. Then, the REGOUT control code must be usedto clock the contents of the VISI register out of thedevice. The corresponding control and instructioncodes that must be serially transmitted to the device toperform this operation are shown in Table 4-1.

    If the Application ID has the value, 0x0E, theProgramming Executive is resident in memory and thedevice can be programmed using the mechanismdescribed in this section. However, if the ApplicationID has any other value, the PE is not resident inmemory; it must be loaded to memory before thedevice can be programmed. The procedure for loadingthe PE to memory is described in Section 5.0“Programming the Programming Executive toMemory”.

    TABLE 4-1: SERIAL INSTRUCTION EXECUTION FOR READING THE APPLICATION ID WORDCommand

    (Binary)Data(Hex) Description

    Step 1: Exit the Reset vector.000000000000

    000000040200000000

    NOPGOTO 0x200NOP

    Step 2: Initialize the TBLPAG register and the Read Pointer (W0) for the TBLRD instruction.000000000000000000000000000000000000

    2008008802A020FF00207841000000BA0890000000000000000000

    MOV #0x80, W0 MOV W0, TBLPAGMOV #0xFF0, W0 MOV #VISI, W1 NOP TBLRDL [W0], [W1] NOPNOPNOP

    Step 3: Output the VISI register using the REGOUT command.0001 Clock out the contents of the VISI register.

    2015-2019 Microchip Technology Inc. DS30010073D-page 35

  • PIC24FJ256GA412/GB412 FAMILY

    4.4 Entering Enhanced ICSP ModeAs illustrated in Figure 4-3, entering Enhanced ICSPProgram/Verify mode requires three steps:

    1. The MCLR pin is briefly driven high and thenlow.

    2. A 32-bit key sequence is clocked into PGEDx.3. MCLR is then driven high within a specified

    period of time and held.

    The programming voltage applied to MCLR is VIH,which is essentially VDD in PIC24FJ256GA412/GB412family devices. There is no minimum time requirementfor holding at VIH. After VIH is removed, an interval of atleast P18 must elapse before presenting the keysequence on PGEDx.

    The key sequence is a specific 32-bit pattern,‘0100 1101 0100 0011 0100 1000 0101 0000’(more easily remembered as 0x4D43 4850 in hexa-decimal format). The device will enter Program/Verifymode only if the key sequence is valid. The MostSignificant bit (MSb) of the most significant nibble mustbe shifted in first.

    Once the key sequence is complete, VIH must beapplied to MCLR and held at that level for as long asProgram/Verify mode is to be maintained. An intervaltime of at least P19, P7 and P1 * 5 must elapse beforepresenting data on PGEDx. During the P7 interval, theprogrammer’s PGEDx and PGECx lines must betri-stated.

    On successful entry, the program memory can beaccessed and programmed in serial fashion. While inthe Program/Verify mode, all unused I/Os are placed inthe high-impedance state.

    4.5 Blank CheckThe term, “Blank Check”, implies verifying that thedevice has been successfully erased and has noprogrammed memory locations. A blank or erasedmemory location is always read as ‘1’. The Device ID registers (0xFF 0000:0xFF 0002) can beignored by the Blank Check, since this region storesdevice information that cannot be erased. Additionally,all unimplemented memory space should be ignored bythe Blank Check.

    The QBLANK command is used for the Blank Check. Itdetermines if the code memory is erased by testingthese memory regions. A ‘BLANK’ or ‘NOT BLANK’response is returned. If it is determined that the deviceis not blank, it must be erased before attempting toprogram the chip.

    FIGURE 4-3: ENTERING ENHANCED ICSP™ MODE

    MCLR

    PGEDx

    PGECx

    VDD

    P6P14

    b31 b30 b29 b28 b27 b2 b1 b0b3...

    Program/Verify Entry Code = 4D434850h

    P1AP1B

    P18

    P19

    0 1 0 0 1 0 0 0 0

    P7VIH VIH

    P21 P1 * 5

    PGEDx/PGECx must bein a High-Impedance State

    During P7 Interval

    X

    X

    DS30010073D-page 36 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    4.6 Code Memory Programming

    4.6.1 PROGRAMMING METHODOLOGYThere are two commands that can be used forprogramming code memory when utilizing the PE. ThePROG2W command programs and verifies two 24-bitinstruction words into the program memory, starting at theaddress specified. The second and faster command,PROGP, allows up to 64 instruction words (each 24 bits) tobe programmed and verified into program memory,starting at the address specified. See Section 6.0 “TheProgramming Executive” for a full description of each ofthese commands.

    FIGURE 4-4: FLOWCHART FOR DOUBLE-WORD PROGRAMMING

    Figure 4-4 and Figure 4-5 show the programmingmethodology for the PROG2W and PROGP commands. Inboth instances, 87552 instruction words of the deviceare programmed.

    FIGURE 4-5: FLOWCHART FOR MULTIPLE WORD PROGRAMMING

    BaseAddress = 0hRemainingCmds = 43776

    Start

    FailureReport ErrorEnd

    Yes

    No

    RemainingCmds =RemainingCmds – 1

    Yes

    PASS?

    No

    BaseAddressCommand to Program

    Send PROG2W

    RemainingCmdsIs

    ‘0’?

    BaseAddress + 0x04BaseAddress =

    PROG2W ResponseIs

    Note: If a bootloader needs to be programmed,its code must not be programmed into thefirst page of code memory. For example, ifa bootloader located at address, 0x200,attempts to erase the first page, it wouldinadvertently erase itself. Instead,program the bootloader into the secondpage (e.g., 0x400).

    BaseAddress = 0hRemainingCmds = 684

    Start

    FailureReport ErrorEnd

    Yes

    No

    RemainingCmds =RemainingCmds – 1

    Yes

    PASS?

    No

    BaseAddressCommand to Program

    Send PROGP

    RemainingCmdsIs

    ‘0’?

    BaseAddress + 0x100BaseAddress =

    PROGP responseIs

    2015-2019 Microchip Technology Inc. DS30010073D-page 37

  • PIC24FJ256GA412/GB412 FAMILY

    4.7 Configuration Bit ProgrammingConfiguration bits are programmed one at a time usingthe PROG2W command. This command specifies theconfiguration data and address. When Configurationbits are programmed, any unimplemented bits must beprogrammed with a ‘1’. Multiple PROG2W commands are required to program allConfiguration bits. A flowchart for Configuration bitprogramming is shown in Figure 4-6.

    FIGURE 4-6: CONFIGURATION BIT PROGRAMMING FLOW

    4.8 Programming VerificationAfter code memory is programmed, the contents ofmemory can be verified to ensure that programmingwas successful. Verification requires code memory tobe read back and compared against the copy held inthe programmer’s buffer.

    The READP command can be used to read back all theprogrammed code memory and Configuration Words.

    Alternatively, you can have the programmer performthe verification after the entire device is programmedusing a checksum computation.

    See Section 9.0 “Checksum Computation” for moreinformation on calculating the checksum.

    4.9 Exiting Enhanced ICSP ModeExiting Program/Verify mode is done by removing VIHfrom MCLR, as illustrated in Figure 4-7. The onlyrequirement for exit is that an interval, P16, shouldelapse between the last clock, and program signals onPGECx and PGEDx before removing VIH.

    FIGURE 4-7: EXITING ENHANCED ICSP™ MODE

    Send PROG2WCommand

    IsPROG2W Response

    PASS?

    No

    Yes

    No

    FailureReport Error

    Start

    End

    Yes

    LastConfiguration

    Byte?

    ConfigAddress =ConfigAddress +

    0x04

    MCLR

    P16

    PGEDx

    PGEDx = Input

    PGECx

    VDD

    VIH

    VIH

    P17

    DS30010073D-page 38 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    5.0 PROGRAMMING THE PROGRAMMING EXECUTIVETO MEMORY

    5.1 OverviewIf it is determined that the PE is not present in executivememory (as described in Section 4.2 “Confirming thePresence of the Programming Executive”), the PEmust be programmed to executive memory.

    Figure 5-1 shows the high-level process of program-ming the PE into executive memory. First, ICSP modemust be entered, and executive memory and usermemory are erased; then, the PE is programmed andverified. Finally, ICSP mode is exited.

    FIGURE 5-1: HIGH-LEVEL PROGRAMMING EXECUTIVE PROGRAM FLOW

    5.2 Erasing Executive MemoryExecutive memory is erased by a series of Page Eraseoperations, as shown in Figure 5-2. This consists ofseveral cycles of setting NVMCON to 0x400E, execut-ing the programming cycle and repeating these stepsfor each page of executive memory.

    Table 5-1 illustrates the ICSP programming process forChip Erasing memory.

    FIGURE 5-2: PAGE ERASE FLOW

    Note: The Programming Executive (PE) can beobtained from each device page on theMicrochip website: www.microchip.com.

    Start

    End

    Read/Verify the

    Program the

    Enter ICSP™ mode

    Erase

    Programming Executive

    Programming Executive

    Memory

    Exit ICSP mode

    Note: The PE must always be erased before itis programmed, as shown in Figure 5-1.

    Start

    i = 4Address = 0x80 0000

    Write 0x4003

    Set WR Bit

    Delay P11 + P10

    i = 0?

    i = i – 1

    N

    End

    Y

    Address =

    to NVMCON

    to Initiate EraseAddress + 512

    2015-2019 Microchip Technology Inc. DS30010073D-page 39

  • PIC24FJ256GA412/GB412 FAMILY

    TABLE 5-1: SERIAL INSTRUCTION EXECUTION FOR ERASING EXECUTIVE MEMORYCommand

    (Binary)Data

    (Hex) Description

    Step 1: Exit the Reset vector.0000000000000000

    000000040200000000000000

    NOPGOTO 0x200NOPNOP

    Step 2: Set the NVMCON register to erase a page.00000000

    240030883B00

    MOV #0x4003, W0MOV W0, NVMCON

    Step 3: Load the address of the page to be erased into the NVMADR register pair.0000000000000000

    200004883B14200800883B20

    MOV #0000, W4MOV W4, NVMADRMOV #0080, W0MOV W0, NVMADRU

    Step 4: Set the WR bit.00000000000000000000000000000000

    200550883B30200AA0883B30A8E761000000000000000000

    MOV #0x55, W0MOV W0, NVMKEYMOV #0xAA, W0MOV W0, NVMKEYBSET NVMCON, #WRNOPNOPNOP

    Step 5: Repeat this step to poll the WR bit until it is cleared by hardware.0000000000000000000000010000

    040200000000803B02883C22000000

    000000

    GOTO 0x200NOPMOV NVMCON, W2MOV W2, VISINOPClock out the contents of the VISI register.NOP

    Step 6: Increment W4 by 1024 (0x400).000000000000

    204003418204883B24

    MOV #0x400, W3ADD W3, W4, W4MOV W4, NVMADRU

    Step 7: Repeat Steps 4-6 until the entire test memory has been erased.Step 8: Clear the WREN bit.

    00000000

    803B02 883B00

    MOV NVMCON, W2MOV W0, NVMCON

    DS30010073D-page 40 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    5.3 Program the Programming Executive

    Storing the PE to executive memory is similar to normalprogramming of code memory. The executive memorymust first be erased, and then programmed, usingeither two-word writes (two instruction words) or rowwrites (64 instruction words). The control flow for bothmethods is identical to that for programming codememory, as shown in Figure 3-7.

    Table 5-2 and Table 5-3 illustrate the ICSP programmingprocesses for PE memory. To minimize programmingtime, the same packed data format that the PE uses isutilized. See Section 6.2 “Programming ExecutiveCommands” for more details on the packed dataformat.

    TABLE 5-2: PROGRAMMING THE PROGRAMMING EXECUTIVE (TWO-WORD LATCH WRITES)

    Command(Binary)

    Data(Hex) Description

    Step 1: Exit the Reset vector.000000000000

    000000040200000000

    NOPGOTO 0x200NOP

    Step 2: Initialize the TBLPAG register for writing to the latches.00000000

    200FAC8802AC

    MOV #0xFA, W12MOV W12, TBLPAG

    Step 3: Load W0:W2 with the next two packed instruction words to program.000000000000

    2xxxx02xxxx12xxxx2

    MOV #, W0MOV #, W1MOV #, W2

    Step 4: Set the Read Pointer (W6) and the Write Pointer (W7), and load the write latches.0000000000000000000000000000000000000000000000000000000000000000

    EB0300000000EB0380000000BB0BB6000000000000BBDBB6000000000000BBEBB6000000000000BB1BB6000000000000

    CLR W6NOPCLR W7NOPTBLWTL [W6++], [W7] NOPNOPTBLWTH.B [W6++], [W7++] NOPNOPTBLWTH.B [W6++], [++W7] NOPNOPTBLWTL.W [W6++], [W7++] NOP NOP

    Step 5: Set the NVMADRU/NVMADR register pair to point to the correct row.0000000000000000

    2xxxx32xxxx4883B13883B24

    MOV #DestinationAddress, W3MOV #DestinationAddress, W4MOV W3, NVMADRMOV W4, NVMADRU

    Step 6: Set the NVMCON register to program two instruction words.00000000000000000000

    24001A000000883B0A000000000000

    MOV #0x4001, W10NOPMOV W10, NVMCONNOPNOP

    2015-2019 Microchip Technology Inc. DS30010073D-page 41

  • PIC24FJ256GA412/GB412 FAMILY

    Step 7: Initiate the write cycle.0000000000000000000000000000000000000000

    200551883B31200AA1883B31A8E761000000000000000000000000000000

    MOV #0x55, W1MOV W1, NVMKEYMOV #0xAA, W1MOV W1, NVMKEYBSET NVMCON, #WRNOPNOPNOPNOPNOP

    Step 8: Wait for program operation to complete and make sure the WR bit is clear.000000000000000000000001000000000000

    000000803B00000000883C20000000

    000000040200000000

    NOPMOV NVMCON, W0NOPMOV W0, VISINOPClock out the contents of the VISI register.NOPGOTO 0x200NOPRepeat until the WR bit is clear.

    Step 9: Repeat Steps 3-8 until all code memory is programmed.Step 10: Clear the WREN bit.

    00000000

    803B02 883B00

    MOV NVMCON, W2MOV W0, NVMCON

    TABLE 5-2: PROGRAMMING THE PROGRAMMING EXECUTIVE (TWO-WORD LATCH WRITES) (CONTINUED)

    Command(Binary)

    Data(Hex) Description

    DS30010073D-page 42 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    TABLE 5-3: PROGRAMMING THE PROGRAMMING EXECUTIVE (ROW WRITES)Command

    (Binary)Data(Hex) Description

    Step 1: Exit the Reset vector.000000000000

    000000040200000000

    NOPGOTO 0x200NOP

    Step 2: Set the NVMCON register to program 64 instruction words.00000000

    240020883B00

    MOV #0x4002, W0MOV W0, NVMCON

    Step 3: Initialize the TBLPAG register for writing to the latches.00000000

    200FAC8802AC

    MOV #0xFA, W12MOV W12, TBLPAG

    Step 4: Load W0:W5 with the next 4 instruction words to program.000000000000000000000000

    2xxxx02xxxx12xxxx22xxxx32xxxx42xxxx5

    MOV #, W0MOV #, W1MOV #, W2MOV #, W3MOV #, W4MOV #, W5

    Step 5: Set the Read Pointer (W6) and load the (next set of) write latches.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

    EB0300000000EB0380000000BBDBB6000000000000BBEBB6000000000000BB1BB6000000000000BB0BB6000000000000BBDBB6000000000000BBEBB6000000000000BB1BB6000000000000

    CLR W6NOPCLR W7NOPTBLWTL [W6++], [W7]NOPNOPTBLWTH.B [W6++], [++W7]NOPNOPTBLWTL [W6++], [W7++]NOPNOPTBLWTL [W6++], [W7]NOPNOPTBLWTH.B [W6++], [W7++]NOPNOPTBLWTH.B [W6++], [++W7]NOPNOPTBLWTL [W6++], [W7++]NOPNOP

    Step 6: Repeat Steps 4 and 5, for a total of 16 times, to load the write latches with 64 instructions.Step 7: Set the NVMADRU/NVMADR register pair to point to the correct address.

    0000000000000000

    2xxxx32xxxx4883B13883B24

    MOV #DestinationAddress, W3MOV #DestinationAddress, W4MOV W3, NVMADRMOV W4, NVMADRU

    2015-2019 Microchip Technology Inc. DS30010073D-page 43

  • PIC24FJ256GA412/GB412 FAMILY

    Step 8: Execute the WR bit unlock sequence and initiate the write cycle.0000000000000000000000000000000000000000

    200551883B31200AA1883B31A8E761000000000000000000000000000000

    MOV #0x55, W1MOV W1, NVMKEYMOV #0xAA, W1MOV W1, NVMKEYBSET NVMCON, #WRNOPNOPNOPNOPNOP

    Step 9: Repeat this step to poll the WR bit until it is cleared by hardware.0000000000000000000000010000

    040200 000000 803B00 883C20 000000

    000000

    GOTO 0x200NOPMOV NVMCON, W0MOV W0, VISINOPClock out the contents of the VISI register.NOP

    Step 10: Reset the device’s internal Program Counter.00000000

    040200000000

    GOTO 0x200NOP

    Step 11: Repeat Steps 3 through 9 until all code memory is programmed.Step 12: Clear the WREN bit.

    00000000

    803B02 883B00

    MOV NVMCON, W2MOV W0, NVMCON

    TABLE 5-3: PROGRAMMING THE PROGRAMMING EXECUTIVE (ROW WRITES) (CONTINUED)Command

    (Binary)Data(Hex) Description

    DS30010073D-page 44 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    5.4 Reading Executive MemoryReading from executive memory is performed byexecuting a series of TBLRD instructions and clockingout the data using the REGOUT command.Table 5-4 shows the ICSP programming details forreading executive memory.

    To minimize reading time, the same packed data formatthat the PE uses is utilized. See Section 6.2“Programming Executive Commands” for moredetails on the packed data format.

    TABLE 5-4: SERIAL EXECUTION FOR READING EXECUTIVE MEMORYCommand

    (Binary)Data

    (Hex) Description

    Step 1: Exit the Reset vector.000000000000

    000000040200000000

    NOPGOTO 0x200NOP

    Step 2: Initialize the TBLPAG register and the Read Pointer (W6) for the TBLRD instruction.000000000000

    200xx08802A02xxxx6

    MOV #, W0MOV W0, TBLPAGMOV #, W6

    Step 3: Initialize the Write Pointer (W7) and store the next four locations of code memory in W0:W5.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

    EB0380000000BA1B96000000000000BADBB6000000000000BADBD6000000000000BA1BB6000000000000BA1B96000000000000BADBB6000000000000BADBD6000000000000BA0BB6000000000000

    CLR W7NOPTBLRDL [W6], [W7++]NOPNOPTBLRDH.B [W6++], [W7++]NOPNOPTBLRDH.B [++W6], [W7++]NOPNOPTBLRDL [W6++], [W7++]NOPNOPTBLRDL [W6], [W7++]NOPNOPTBLRDH.B [W6++], [W7++]NOPNOPTBLRDH.B [++W6], [W7++]NOPNOPTBLRDL [W6++], [W7]NOPNOP

    2015-2019 Microchip Technology Inc. DS30010073D-page 45

  • PIC24FJ256GA412/GB412 FAMILY

    Step 4: Output W0:W5 using the VISI register and the REGOUT command.000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000

    883C20000000

    000000883C21000000

    000000883C22000000

    000000883C23000000

    000000883C24000000

    000000883C25000000

    000000

    MOV W0, VISINOPClock out the contents of the VISI register.NOPMOV W1, VISINOPClock out the contents of the VISI register.NOPMOV W2, VISINOPClock out the contents of the VISI register.NOPMOV W3, VISINOPClock out the contents of the VISI register.NOPMOV W4, VISINOPClock out the contents of the VISI register.NOPMOV W5, VISINOPClock out the contents of the VISI register.NOP

    Step 5: Reset the device’s internal Program Counter.000000000000

    000000040200000000

    NOPGOTO 0x200NOP

    Step 6: Repeat Steps 3 through 5 until all desired code memory is read (note that “Reset the device’s internal Program Counter” will be Step 5).

    TABLE 5-4: SERIAL EXECUTION FOR READING EXECUTIVE MEMORY (CONTINUED)Command

    (Binary)Data

    (Hex) Description

    DS30010073D-page 46 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    5.5 Verify Programming ExecutiveThe verify step involves reading back the executivememory space and comparing it against the copy heldin the programmer’s buffer.

    The verify process is illustrated in Figure 5-3. The lowerword of the instruction is read, and then the lower byteof the upper word is read and compared against theinstruction stored in the programmer’s buffer. Refer toSection 5.4 “Reading Executive Memory” forimplementation details of reading executive memory.

    FIGURE 5-3: VERIFY PROGRAMMING EXECUTIVE MEMORY FLOW

    Read Low Word

    Read High Byte

    Does

    = ExpectedData?

    AllExecutive Memory

    Verified?

    No

    Yes

    No

    Set TBLPTR = 0

    Start

    Yes

    End

    with Post-Increment

    with Post-Increment

    FailureReport Error

    Instruction Word

    2015-2019 Microchip Technology Inc. DS30010073D-page 47

  • PIC24FJ256GA412/GB412 FAMILY

    6.0 THE PROGRAMMING EXECUTIVE

    6.1 Programming Executive Communication

    The programmer and PE have a master-slaverelationship, where the programmer is the masterprogramming device and the PE is the slave.

    All communication is initiated by the programmer in theform of a command. Only one command at a time canbe sent to the PE. In turn, the PE only sends oneresponse to the programmer after receiving andprocessing a command. The PE command set isdescribed in Section 6.2 “Programming ExecutiveCommands”. The response set is described inSection 6.3 “Programming Executive Responses”.

    6.1.1 COMMUNICATION INTERFACE AND PROTOCOL

    The ICSP/Enhanced ICSP interface is a 2-wire SPI,implemented using the PGECx and PGEDx pins. ThePGECx pin is used as a clock input pin and the clocksource must be provided by the programmer. ThePGEDx pin is used for sending command data to andreceiving response data from the PE.

    Since a 2-wire SPI is used, and data transmissions arebidirectional, a simple protocol is used to control thedirection of PGEDx. When the programmer completesa command transmission, it releases the PGEDx lineand allows the PE to drive this line high. The PE keepsthe PGEDx line high to indicate that it is processing thecommand.

    FIGURE 6-1: PROGRAMMING EXECUTIVE SERIAL TIMING

    After the PE has processed the command, it bringsPGEDx low (P9B) to indicate to the programmerthat the response is available to be clocked out. Theprogrammer can begin to clock out the response after a maximum wait (P9B) and it must provide the necessaryamount of clock pulses to receive the entire responsefrom the PE.

    After the entire response is clocked out, theprogrammer should terminate the clock on PGECx untilit is time to send another command to the PE. Thisprotocol is illustrated in Figure 6-2.

    6.1.2 SPI RATEIn Enhanced ICSP mode, PIC24FJ256GA412/GB412family devices operate from the Fast Internal RC (FRC)oscillator, which has a nominal frequency of 8 MHz.This oscillator frequency yields an effective systemclock frequency of 4 MHz. To ensure that theprogrammer does not clock too fast, it is recommendedthat a 2 MHz clock be provided by the programmer.

    FIGURE 6-2: PROGRAMMING EXECUTIVE – PROGRAMMER COMMUNICATION PROTOCOL

    Note: For Enhanced ICSP, all serial data istransmitted on the falling edge of PGECxand latched on the rising edge of PGECx.All data transmissions are sent to the MSbfirst using 16-bit mode (see Figure 6-1).

    PGECx

    PGEDx

    1 2 3 11 13 15 161412

    LSb14 13 12 11

    4 5 6

    MSb 123... 45

    P2

    P3

    P1

    P1BP1A

    1 2 15 16 1 2 15 16

    PGECx

    PGEDx

    PGECx = Input PGECx = Input (Idle)

    Host TransmitsLast Command Word

    PGEDx = Input PGEDx = Output

    P8

    1 2 15 16

    MSB X X X LSB1 0P9b

    PGECx = InputPGEDx = Output

    P9a

    Programming ExecutiveProcesses Command Host Clocks Out Response

    Note 1: A delay of 25 ms is required between commands.

    MSB X X X LSB MSB X X X LSB

    DS30010073D-page 48 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    6.1.3 TIME-OUTSThe PE uses no Watchdog Timer or time-out for transmit-ting responses to the programmer. If the programmerdoes not follow the flow control mechanism, using PGECxas described in Section 6.1.1 “Communication Inter-face and Protocol”, it is possible that the PE will behaveunexpectedly while trying to send a response to the pro-grammer. Since the PE has no time-out, it is imperativethat the programmer correctly follow the describedcommunication protocol.

    As a safety measure, the programmer should use thecommand time-outs identified in Table 6-1. If thecommand time-out expires, the programmer shouldreset the PE and start programming the device again.

    6.2 Programming Executive Commands

    The PE command set is shown in Table 6-1. This tablecontains the opcode, mnemonic, length, time-outand description for each command. Functionaldetails on each command are provided in thecommand descriptions (Section 6.2.4 “CommandDescriptions”).

    6.2.1 COMMAND FORMATAll PE commands have a general format, consisting ofa 16-bit header and any required data for the command(see Figure 6-3). The 16-bit header consists of a 4-bitopcode field, which is used to identify the command,followed by a 12-bit command length field.

    FIGURE 6-3: COMMAND FORMAT

    The command opcode must match one of those in thecommand set. Any command that is received whichdoes not match the list in Table 6-1 will return a “NACK”response (see Section 6.3.1.1 “Opcode Field”). The command length is represented in 16-bit words sincethe SPI operates in 16-bit mode. The PE uses the com-mand length field to determine the number of words toread from the SPI port. If the value of this field is incorrect,the command will not be properly received by the PE.

    TABLE 6-1: PROGRAMMING EXECUTIVE COMMAND SET

    15 12 11 0

    Opcode Length

    Command Data First Word (if required)

    Command Data Last Word (if required)

    Opcode Mnemonic Length(16-bit words) Time-out Description

    0x0 SCHECK 1 1 ms Sanity check.0x1 READC 3 1 ms Read an 8-bit word from the specified Configuration register

    or Device ID register.0x2 READP 4 1 ms/row Read ‘N’ 24-bit instruction words of primary Flash memory,

    starting from the specified address.0x3 PROG2W 6 5 ms Program a double instruction word of code memory at the

    specified address and verify.0x4 Reserved N/A N/A This command is reserved; it will return a NACK.0x5 PROGP 99 5 ms Program 64 words of program memory at the specified

    starting address, then verify.0x6 Reserved N/A N/A This command is reserved; it will return a NACK.0x7 ERASEB 1 125 ms Chip Erase the device.0x8 Reserved N/A N/A This command is reserved; it will return a NACK.0x9 ERASEP 3 25 ms Command to erase a page.0xA Reserved N/A N/A This command is reserved; it will return a NACK.0xB QVER 1 1 ms Query the PE software version.0xC CRCP 5 1s Performs a CRC-16 on the specified range of memory.0xD Reserved N/A N/A This command is reserved; it will return a NACK.0xE QBLANK 5 700 ms Query to check whether the code memory is blank.

    2015-2019 Microchip Technology Inc. DS30010073D-page 49

  • PIC24FJ256GA412/GB412 FAMILY

    6.2.2 PACKED DATA FORMATWhen 24-bit instruction words are transferred acrossthe 16-bit SPI interface, they are packed to conservespace using the format illustrated in Figure 6-4. Thisformat minimizes traffic over the SPI and provides thePE with data that is properly aligned for performingTable Write operations.

    FIGURE 6-4: PACKED INSTRUCTION WORD FORMAT

    6.2.3 PROGRAMMING EXECUTIVE ERROR HANDLING

    The PE will “NACK” all unsupported commands. Addi-tionally, due to the memory constraints of the PE, nochecking is performed on the data contained in theprogrammer command. It is the responsibility of theprogrammer to command the PE with valid commandarguments or the programming operation may fail.Additional information on error handling is provided inSection 6.3.1.3 “QE_Code Field”.

    6.2.4 COMMAND DESCRIPTIONSAll commands supported by the PE are described inSection 6.2.4.1 “SCHECK Command” throughSection 6.2.4.10 “QBLANK Command”.6.2.4.1 SCHECK Command

    Table 6-2 shows the description for the SCHECKcommand.

    TABLE 6-2: COMMAND DESCRIPTION

    The SCHECK command instructs the PE to do nothingbut generate a response. This command is used as a“Sanity Check” to verify that the PE is operational.

    Expected Response (2 words):0x1000 0x0002

    Note: When the number of instruction wordstransferred is odd, MSB2 is zero andLSW2 cannot be transmitted.

    15 8 7 0LSW1

    MSB2 MSB1LSW2

    LSWx: Least Significant 16 bits of instruction wordMSBx: Most Significant Byte of instruction word

    15 12 11 0Opcode Length

    Field Description

    Opcode 0x0Length 0x1

    Note: This instruction is not required forprogramming, but is provided fordevelopment purposes only.

    DS30010073D-page 50 2015-2019 Microchip Technology Inc.

  • PIC24FJ256GA412/GB412 FAMILY

    6.2.4.2 READC Command

    Table 6-3 shows the description for the READCcommand.

    TABLE 6-3: COMMAND DESCRIPTION

    The READC command instructs the PE to read N Con-figuration registers or Device ID registers, starting fromthe 24-bit address specified by Addr_MSB andAddr_LS. This command can only be used to read 8-bitor 16-bit data.

    When this command is used to read Configurationregisters, the upper byte in every data word returnedby the PE is 0x00 and the lower byte contains theConfiguration register value.

    Expected Response (4 + 3 * (N – 1)/2 words for N odd):

    0x1100

    2 + N

    Configuration register or Device ID Register 1

    ...

    Configuration register or Device ID Register N

    6.2.4.3 READP Command

    Table 6-4 shows the description for the READPcommand.

    TABLE 6-4: COMMAND DESCRIPTION

    The READP command instructs the PE to read N 24-bitwords of code memory, starting from the 24-bit addressspecified by Addr_MSB and Addr_LS. This commandcan only be used to read 24-bit data. All data returnedin response to this command uses the packed dataformat described in Section 6.2.2 “Packed DataFormat”.Expected Response (2 + 3 * N/2 words for N even):

    0x1200

    2 + 3 * N/2

    Least Significant Program Memory Word 1

    ...

    Least Significant Data Word N

    Expected Response (4 + 3 * (N – 1)/2 words for N odd):

    0x1200

    4 + 3 * (N – 1)/2Least Significant Program Memory Word 1

    ...

    MSB of Program Memory Word N (zero-padded)

    15 12 11 8 7 0Opcode Length

    N Addr_MSBAddr_LS

    Field Description

    Opcode 0x1Length 0x3N Number of 8-bit Configuration registers

    or Device ID registers to read (maximum of 256)

    Addr_MSB MSB of 24-bit source address.Addr_LS Least Significant 16 bits of 24-bit

    source address

    Note: Reading unimplemented memory willcause the PE to reset. To prevent this fromoccurring, ensure that only memory loca-tions present on a particular device ar