+ All Categories
Home > Documents > dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

Date post: 05-Feb-2022
Category:
Upload: others
View: 9 times
Download: 0 times
Share this document with a friend
52
2012 Microchip Technology Inc. Advance Information DS70685A-page 1 dsPIC33EPXXXGM3XX/6XX/7XX 1.0 DEVICE OVERVIEW This document defines the programming specification for the dsPIC33EPXXXGM3XX/6XX/7XX 16-bit Digital Signal Controller (DSC) family. This programming specification is required only for those developing programming support for the dsPIC33EPXXXGM3XX/ 6XX/7XX family. All other customers should use development tools that already provide support for device programming. Topics covered include: Section 1.0 “Device Overview” Section 2.0 “Programming Overview of the dsPIC33EPXXXGM3XX/6XX/7XX” Section 3.0 “Device Programming – Enhanced ICSP” Section 4.0 “Checksum Computation” Section 5.0 “The Programming Executive” Section 6.0 “Device Programming – ICSP” Section 7.0 “Programming the Programming Executive to Memory” Section 8.0 “Device ID” Section 9.0 “AC/DC Characteristics and Timing Requirements” Appendix A: “Hex File Format” Appendix B: “Revision History” 2.0 PROGRAMMING OVERVIEW OF THE dsPIC33EPXXXGM3XX/ 6XX/7XX There are two methods of programming the dsPIC33EPXXXGM3XX/6XX/7XX family of devices discussed in this programming specification. They are: In-Circuit Serial Programming™ (ICSP™) Enhanced In-Circuit Serial Programming The ICSP programming method is the most direct method to program the device; however, it is also the slower of the two methods. It provides native, low-level programming capability to erase, program and verify the chip. The Enhanced ICSP protocol uses a faster method that takes advantage of the Programming Executive, as illustrated in Figure 2-1. The Programming Executive provides all the necessary functionality to erase, program and verify the chip through a small command set. The command set allows the programmer to program the dsPIC33EPXXXGM3XX/6XX/7XX devices without having to deal with the low-level programming protocols of the chip. FIGURE 2-1: PROGRAMMING SYSTEM OVERVIEW FOR ENHANCED ICSP™ This specification is divided into major sections that describe the programming methods independently. Section 3.0 “Device Programming – Enhanced ICSP” describes the Enhanced ICSP method. Section 6.0 “Device Programming – ICSP” describes the ICSP method. dsPIC33EPXXXGM3XX/6XX/7XX Programmer Programming Executive On-Chip Memory dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification
Transcript
Page 1: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

1.0 DEVICE OVERVIEW

This document defines the programming specificationfor the dsPIC33EPXXXGM3XX/6XX/7XX 16-bit DigitalSignal Controller (DSC) family. This programmingspecification is required only for those developingprogramming support for the dsPIC33EPXXXGM3XX/6XX/7XX family. All other customers should usedevelopment tools that already provide support fordevice programming.

Topics covered include:

• Section 1.0 “Device Overview”

• Section 2.0 “Programming Overview of the dsPIC33EPXXXGM3XX/6XX/7XX”

• Section 3.0 “Device Programming – Enhanced ICSP”

• Section 4.0 “Checksum Computation”

• Section 5.0 “The Programming Executive”

• Section 6.0 “Device Programming – ICSP”

• Section 7.0 “Programming the Programming Executive to Memory”

• Section 8.0 “Device ID”

• Section 9.0 “AC/DC Characteristics and Timing Requirements”

• Appendix A: “Hex File Format”

• Appendix B: “Revision History”

2.0 PROGRAMMING OVERVIEW OF THE dsPIC33EPXXXGM3XX/6XX/7XX

There are two methods of programming thedsPIC33EPXXXGM3XX/6XX/7XX family of devicesdiscussed in this programming specification. They are:

• 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 chip.

The Enhanced ICSP protocol uses a faster method thattakes advantage of the Programming Executive, asillustrated in Figure 2-1. The Programming Executiveprovides all the necessary functionality to erase,program and verify the chip through a small commandset. The command set allows the programmer toprogram the dsPIC33EPXXXGM3XX/6XX/7XX deviceswithout having to deal with the low-level programmingprotocols of the chip.

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

This specification is divided into major sections thatdescribe the programming methods independently.Section 3.0 “Device Programming – EnhancedICSP” describes the Enhanced ICSP method.Section 6.0 “Device Programming – ICSP” describesthe ICSP method.

dsPIC33EPXXXGM3XX/6XX/7XX

ProgrammerProgramming

Executive

On-Chip Memory

2012 Microchip Technology Inc. Advance Information DS70685A-page 1

Page 2: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

2.1 Required Connections

These devices require specific connections forprogramming to take place. These connections includepower, VCAP, MCLR and one programming pair(PGEDx/PGECx). Table 2-1 describes theseconnections (refer to the specific device data sheet forpin descriptions and power connection requirements).

TABLE 2-1: PINS USED DURING PROGRAMMING

2.2 Program Memory Write/Erase Requirements

The program Flash memory on thedsPIC33EPXXXGM3XX/6XX/7XX devices has aspecific write/erase requirement that must be adheredto for proper device operation. The rule is that anygiven word in memory must not be written without firsterasing the page in which it is located. Thus, theeasiest way to conform to this rule is to write all the datain a programming block within one write cycle. Theprogramming methods specified in this documentcomply with this requirement.

2.3 Memory Map

The program memory map extends from 0x0 to0xFFFFFE. Code storage is located at the base of thememory map and supports up to 175,104 instructions(about 512 Kbytes). Table 2-2 shows the programmemory size and number of erase and program blockspresent in each device variant. Each erase block orpage contains 512 instructions and each program blockor row contains 64 instructions.

Locations, 0x800000 through 0x800FFE, are reservedfor executive code memory. This region stores theProgramming Executive and the debugging executive.The Programming Executive is used for deviceprogramming and the debug executive is used forin-circuit debugging. This region of memory cannot beused to store user code.

The last four locations of the executive code memoryconsist of four User ID registers (FUID0-FUID3) thatare used for storing product information, such as serialnumbers, system manufacturing dates, manufacturinglot numbers and other application-specific information.

Locations, 0xFF0000 and 0xFF0002, are reserved forthe Device ID Word registers (DEVID). These bits canbe used by the programmer to identify which devicetype is being programmed. They are described inSection 8.0 “Device ID”. The Device ID registers readout normally, even after code protection is applied.

Figure 2-2 shows the memory map for thedsPIC33EPXXXGM3XX/6XX/7XX family variants.

Note: Refer to the specific device data sheetfor complete pin diagrams of thedsPIC33EPXXXGM3XX/6XX/7XX familydevices.

During Programming

Pin NamePin

TypePin Description

MCLR I Programming Enable

VDD and AVDD P Power Supply(1)

VSS and AVSS P Ground(1)

VCAP P CPU Logic Filter Capacitor Connection

PGECx I Programming Pin Pair: Serial Clock

PGEDx I/O Programming Pin Pair: Serial Data

Legend: I = Input O = Output P = Power

Note 1: All power supply and ground pins must be connected, including AVDD and AVSS.

Note: A program memory word can beprogrammed twice before an erase, butonly if (a) the same data is used in bothprogram operations or (b) bits containing‘1’ are set to ‘0’ but no ‘0’ is set to ‘1’.

DS70685A-page 2 Advance Information 2012 Microchip Technology Inc.

Page 3: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

TABLE 2-2: CODE MEMORY SIZE

dsPIC33EPXXXGM3XX/6XX/7XX Device

User Memory Address Limit

(Instruction Words)

Write Blocks

Erase Blocks

Executive Memory Address Limit (Instruction Words)

dsPIC33EP128GM304 0x157FE (44032) 688 86 0x800000-0x800FFE (2K)

dsPIC33EP128GM604 0x157FE (44032) 688 86 0x800000-0x800FFE (2K)

dsPIC33EP128GM306 0x157FE (44032) 688 86 0x800000-0x800FFE (2K)

dsPIC33EP128GM706 0x157FE (44032) 688 86 0x800000-0x800FFE (2K)

dsPIC33EP128GM310 0x157FE (44032) 688 86 0x800000-0x800FFE (2K)

dsPIC33EP128GM710 0x157FE (44032) 688 86 0x800000-0x800FFE (2K)

dsPIC33EP256GM304 0x2AFFE (87552) 1368 171 0x800000-0x800FFE (2K)

dsPIC33EP256GM604 0x2AFFE (87552) 1368 171 0x800000-0x800FFE (2K)

dsPIC33EP256GM306 0x2AFFE (87552) 1368 171 0x800000-0x800FFE (2K)

dsPIC33EP256GM706 0x2AFFE (87552) 1368 171 0x800000-0x800FFE (2K)

dsPIC33EP256GM310 0x2AFFE (87552) 1368 171 0x800000-0x800FFE (2K)

dsPIC33EP256GM710 0x2AFFE (87552) 1368 171 0x800000-0x800FFE (2K)

dsPIC33EP512GM304 0x0557FE (175104) 2736 342 0x800000-0x800FFE (2K)

dsPIC33EP512GM604 0x0557FE (175104) 2736 342 0x800000-0x800FFE (2K)

dsPIC33EP512GM306 0x0557FE (175104) 2736 342 0x800000-0x800FFE (2K)

dsPIC33EP512GM706 0x0557FE (175104) 2736 342 0x800000-0x800FFE (2K)

dsPIC33EP512GM310 0x0557FE (175104) 2736 342 0x800000-0x800FFE (2K)

dsPIC33EP512GM710 0x0557FE (175104) 2736 342 0x800000-0x800FFE (2K)

2012 Microchip Technology Inc. Advance Information DS70685A-page 3

Page 4: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

FIGURE 2-2: PROGRAM MEMORY MAP FOR dsPIC33EP128GM3XX/6XX/7XX DEVICES

0x0000000x000002

0xFEFFFE0xFF0000

0xFF0002

0x000004

0x0002000x0001FE

Note 1: Memory areas are not shown to scale.

Reset Address

User ProgramFlash Memory

(44032 instructions)

DEVID (2 Words)

Unimplemented(Read ‘0’s)

GOTO Instruction

Reserved

Interrupt Vector Table

dsPIC33EP128GM3XX/6XX/7XX

0x0158000x0157FE

Reserved

0xFFFFFE

0x800000

Reserved

Write Latch

0xF9FFFE0xFA0000

0xFA00020xFA0100

Executive Code Memory(2043 x 24-bit) 0x800FF6

0x800FF8

0x0157EA

Flash Configuration Bytes

0x7FFFFE

User ID0x800FFE0x801000

0x0157EC

DS70685A-page 4 Advance Information 2012 Microchip Technology Inc.

Page 5: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

FIGURE 2-3: PROGRAM MEMORY MAP FOR dsPIC33EP256GM3XX/6XX/7XX DEVICES

0x0000000x000002

0xFEFFFE0xFF0000

0xFF0002

0x000004

0x0002000x0001FE

Note 1: Memory areas are not shown to scale.

Reset Address

User ProgramFlash Memory

(87552 instructions)

DEVID (2 Words)

Unimplemented(Read ‘0’s)

GOTO Instruction

Reserved

Interrupt Vector Table

dsPIC33EP256GM3XX/6XX/7XX

0x02B0000x02AFFE

Reserved

0xFFFFFE

0x800000

Reserved

Write Latch

0xF9FFFE0xFA0000

0xFA00020xFA0100

Executive Code Memory(2043 x 24-bit) 0x800FF6

0x800FF8

0x02AFEA

Flash Configuration Bytes

0x7FFFFE

User ID0x800FFE0x801000

0x02AFEC

2012 Microchip Technology Inc. Advance Information DS70685A-page 5

Page 6: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

FIGURE 2-4: PROGRAM MEMORY MAP FOR dsPIC33EP512GM3XX/6XX/7XX DEVICES

0x0000000x000002

0xFEFFFE0xFF0000

0xFF0002

0x000004

0x0002000x0001FE

Note 1: Memory areas are not shown to scale.

Reset Address

User ProgramFlash Memory

(175104 instructions)

DEVID (2 Words)

Unimplemented(Read ‘0’s)

GOTO Instruction

Reserved

Interrupt Vector Table

dsPIC33EP512GM3XX/6XX/7XX

0x0558000x0557FE

Reserved

0xFFFFFE

0x800000

Reserved

Write Latch

0xF9FFFE0xFA0000

0xFA00020xFA0100

Executive Code Memory(2043 x 24-bit) 0x800FF6

0x800FF8

0x0557EA

Flash Configuration Bytes

0x7FFFFE

User ID0x800FFE0x801000

0x0557EC

DS70685A-page 6 Advance Information 2012 Microchip Technology Inc.

Page 7: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

3.0 DEVICE PROGRAMMING – ENHANCED ICSP

This section discusses programming the devicethrough Enhanced ICSP and the ProgrammingExecutive. The Programming Executive resides inexecutive memory (separate from code memory) and isexecuted when Enhanced ICSP Programming mode isentered. The Programming Executive provides themechanism for the programmer (host device) toprogram and verify the dsPIC33EPXXXGM3XX/6XX/7XX family devices using a simple command set andcommunication protocol. There are several basicfunctions provided by the Programming Executive:

• Read Memory

• Erase Memory

• Program Memory

• Blank Check

• Read Executive Firmware Revision

The Programming Executive performs the low-leveltasks required for erasing, programming and verifyinga device. This allows the programmer to program thedevice by issuing the appropriate commands and data.Table 3-1 summarizes the commands. A detaileddescription for each command is provided inSection 5.2 “Programming Executive Commands”.

TABLE 3-1: COMMAND SET SUMMARY

The Programming Executive uses the device’s dataRAM for variable storage and program execution. Afterthe Programming Executive is run, no assumptionsshould be made about the contents of data RAM.

3.1 Overview of the Programming Process

Figure 3-1 shows the high-level overview of theprogramming process. After entering Enhanced ICSPmode, the Programming Executive is verified. Next, thedevice is erased and then, the program Flash memory(primary Flash memory) is programmed, followed bythe nonvolatile device Configuration registers. Codememory (including the Configuration registers) is thenverified to ensure that programming was successful.

After the Programming Executive has been verifiedin memory (or loaded if not present), thedsPIC33EPXXXGM3XX/6XX/7XX devices can beprogrammed using the command set shown inTable 3-1.

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

Command Description

SCHECK Sanity check.

READC Read Configuration registers or Device ID registers.

READP Read primary Flash memory.

PROGP Program one row of code memory and verify.

PROG2W Program a double instruction word of code memory and verify.

ERASEB Bulk Erase the device.

ERASEP Erase Page command.

CRCP Performs CRC on memory.

QBLANK Query to check whether code memory is blank.

QVER Query the software version.

Start

End

Perform BulkErase

Program Memory

Verify Program

Enter Enhanced ICSP™

Program Configuration Bits

Verify Configuration Bits

Exit Enhanced ICSP

2012 Microchip Technology Inc. Advance Information DS70685A-page 7

Page 8: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

3.2 Confirming the Presence of the Programming Executive

Before programming, the programmer must confirmthat the Programming Executive is stored in executivememory. The procedure for this task is shown inFigure 3-2.

First, ICSP mode is entered. Then, the uniqueApplication ID Word stored in executive memory is read.If the Programming Executive is resident, the correctApplication ID Word is read and programming canresume as normal. However, if the Application ID Word isnot present, the Programming Executive must beprogrammed to executive code memory using themethod described in Section 7.0 “Programming theProgramming Executive to Memory”. See Table 8-1for the Application ID of each device.

Section 6.0 “Device Programming – ICSP” describesthe ICSP programming method. Section 6.10 “Readingthe Application ID Word” describes the procedure forreading the Application ID Word in ICSP mode.

FIGURE 3-2: CONFIRMING PRESENCE OF PROGRAMMING EXECUTIVE

3.3 Entering Enhanced ICSP Mode

As shown in Figure 3-3, entering Enhanced ICSPProgram/Verify mode requires three steps:

1. The MCLR pin is briefly driven high, then low.

2. A 32-bit key sequence is clocked into PGD.

3. MCLR is then driven high within a specifiedperiod of time and held.

The programming voltage applied to MCLR is VIH,which is essentially VDD in the case ofdsPIC33EPXXXGM3XX/6XX/7XX devices. There is nominimum time requirement for holding at VIH. After VIH

is removed, an interval of at least P18 must elapsebefore presenting the key sequence on PGD.

The key sequence is a specific 32-bit pattern,‘0100 1101 0100 0011 0100 1000 0101 0000’(more easily remembered as 0x4D434850 inhexadecimal format). The device will enter Program/Verify mode 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 PGD. Signals appearing on PGDbefore this time has elapsed will not be interpreted asvalid.

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.

Is

Start

Enter ICSP™ Mode

Application IDpresent?(1)

Yes

No

Application IDCheck the

be ProgrammedProg. Executive must

by reading Address,0x8007F0

End

Exit ICSP™ Mode

Enter Enhanced

Sanity Check

Note 1: See Table 8-1 for the Application ID ofeach device.

ICSP™ Mode

DS70685A-page 8 Advance Information 2012 Microchip Technology Inc.

Page 9: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

FIGURE 3-3: ENTERING ENHANCED ICSP™ MODE

3.4 Blank Check

The 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 (0xFF0000:0xFF0002) can beignored by the Blank Check since this region storesdevice information that cannot be erased. The deviceConfiguration registers are also ignored by the BlankCheck. Additionally, all unimplemented memory spaceshould be ignored from the 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.

3.5 Code Memory Programming

3.5.1 PROGRAMMING METHODOLOGY

Code memory (primary Flash) is programmed with thePROGP command. PROGP programs one row of codememory, starting from the memory address specified inthe command. The number of PROGP commandsrequired to program a device depends on the numberof write blocks that must be programmed in the device.

A flowchart for programming code memory is shown inFigure 3-4. In this example, all 175,104 instructionwords of a dsPIC33EPXXXGM3XX/6XX/7XX deviceare programmed. First, the number of commands tosend (called ‘RemainingCmds’ in the flowchart) is set to2736 and the destination address (called‘BaseAddress’) is set to ‘0’. Next, one write block in thedevice is programmed with a PROGP command. EachPROGP command contains data for one row of codememory of the dsPIC33EPXXXGM3XX/6XX/7XX.After the first command is processed successfully,‘RemainingCmds’ is decremented by ‘1’ and comparedwith ‘0’. Since there are more PROGP commands tosend, ‘BaseAddress’ is incremented by 0x80 to point tothe next row of memory.

On the second PROGP command, the second row isprogrammed. This process is repeated until the entiredevice is programmed.

MCLR

PGEDx

PGECx

VDD

P6P14

b31 b30 b29 b28 b27 b2 b1 b0b3...

Program/Verify Entry Code = 0x4D434850

P1A

P1BP18

P19

0 1 0 0 1 0 0 0 0

P7

VIH VIH

P21 P1 · 5

Note: If a bootloader needs to be programmed,the bootloader code must not beprogrammed into the first page of codememory. For example, if a bootloaderlocated at address, 0x200, attempts toerase the first page, it would inadvertentlyerase itself. Instead, program thebootloader into the second page (e.g.,0x400).

2012 Microchip Technology Inc. Advance Information DS70685A-page 9

Page 10: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

FIGURE 3-4: FLOWCHART FOR PROGRAMMING CODE MEMORY

3.5.2 PROGRAMMING VERIFICATION

After 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.

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

BaseAddress = 0x0RemainingCmds = 2736

Start

FailureReport ErrorEnd

Yes

No

RemainingCmds =RemainingCmds – 1

Yes

PASS?

No

BaseAddressCommand to Program

Send PROGP

RemainingCmdsIs

‘0’?

BaseAddress + 0x80BaseAddress =

PROGP responseIs

DS70685A-page 10 Advance Information 2012 Microchip Technology Inc.

Page 11: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

4.0 CHECKSUM COMPUTATION

Checksums for devices are 16 bits in size. Thechecksum is calculated by summing the following:

• Contents of code memory locations

• Contents of configuration bytes

All memory locations are summed, one byte at a time,using only their native data size. Configuration bytesare summed by adding the lower byte of these loca-tions (the upper bytes are ignored), while code memoryis summed by adding all three bytes of code memory.

Table 4-1 is an example of the checksum calculation forthe dsPIC33EP512GM710 device.

Table 4-2 describes the Configuration bit masks foreach device.

TABLE 4-2: CONFIGURATION BIT MASKS

TABLE 4-1: CHECKSUM COMPUTATION EXAMPLE

DeviceRead CodeProtection

Checksum ComputationErasedValue

Value with0xAAAAAA at 0x0

and LastCode Address

dsPIC33EP512GM710 Disabled CFGB + SUM(0:0x0557EA)(1) 0xF7F1 0xF3F5

Enabled Reads of program memory return 0x00

0x0000 0x0000

Item Description:SUM(a:b)= Byte sum of locations, a to b inclusive (all 3 bytes of code memory)CFGB = Configuration Block (masked) = Byte sum of ((FGS & 0x03) + (FOSCSEL & 0xC7) + (FOSC & 0xE7) +

(FWDT & 0xFF) + (FPOR & 0xF8) + (FICD & 0x67))

Note 1: For the checksum computation example, the Configuration bits are set to the recommended default value as shown in Table 4-2.

DeviceConfiguration Bit Masks

FGS FOSCSEL FOSC FWDT FPOR FICD

dsPIC33EP128GM304 0x03 0xC7 0xE7 0xFF 0xF8 0x67

dsPIC33EP128GM604 0x03 0xC7 0xE7 0xFF 0xF8 0x67

dsPIC33EP128GM306 0x03 0xC7 0xE7 0xFF 0xF8 0x67

dsPIC33EP128GM706 0x03 0xC7 0xE7 0xFF 0xF8 0x67

dsPIC33EP128GM310 0x03 0xC7 0xE7 0xFF 0xF8 0x67

dsPIC33EP128GM710 0x03 0xC7 0xE7 0xFF 0xF8 0x67

dsPIC33EP256GM304 0x03 0xC7 0xE7 0xFF 0xF8 0x67

dsPIC33EP256GM604 0x03 0xC7 0xE7 0xFF 0xF8 0x67

dsPIC33EP256GM306 0x03 0xC7 0xE7 0xFF 0xF8 0x67

dsPIC33EP256GM706 0x03 0xC7 0xE7 0xFF 0xF8 0x67

dsPIC33EP256GM310 0x03 0xC7 0xE7 0xFF 0xF8 0x67

dsPIC33EP256GM710 0x03 0xC7 0xE7 0xFF 0xF8 0x67

dsPIC33EP512GM304 0x03 0xC7 0xE7 0xFF 0xF8 0x67

dsPIC33EP512GM604 0x03 0xC7 0xE7 0xFF 0xF8 0x67

dsPIC33EP512GM306 0x03 0xC7 0xE7 0xFF 0xF8 0x67

dsPIC33EP512GM706 0x03 0xC7 0xE7 0xFF 0xF8 0x67

dsPIC33EP512GM310 0x03 0xC7 0xE7 0xFF 0xF8 0x67

dsPIC33EP512GM710 0x03 0xC7 0xE7 0xFF 0xF8 0x67

2012 Microchip Technology Inc. Advance Information DS70685A-page 11

Page 12: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

4.1 Configuration Bits Programming

4.1.1 OVERVIEW

The dsPIC33EPXXXGM3XX/6XX/7XX devices haveConfiguration bits stored in eight 8-bit Configurationregisters, aligned on even configuration memoryaddress boundaries. These bits can be set or clearedto select various device configurations. There are threetypes of Configuration bits: system operation bits,code-protect bits and unit ID bits. The system operationbits determine the power-on settings for system levelcomponents, such as oscillator and Watchdog Timer.The code-protect bits prevent program memory frombeing read and written.

The register descriptions for the FGS, FOSCSEL,FOSC, FWDT, FPOR and FICD Configurationregisters are shown in Table 4-3.

The Configuration register map is shown in Table 4-4.

TABLE 4-3: dsPIC33EPXXXGM3XX/6XX/7XX CONFIGURATION BITS DESCRIPTION

Bit Field Register Description

GCP FGS General Segment Code-Protect bit

1 = User program memory is not code-protected0 = User program memory is code-protected

GWRP FGS General Segment Write-Protect bit

1 = User program memory is not write-protected0 = User program memory is write-protected

IESO FOSCSEL Two-Speed Oscillator Start-up Enable bit

1= Start-up device with FRC, then automatically switch to the user-selected oscillator source when ready

0 = Start-up device with user-selected oscillator source

FNOSC<2:0> FOSCSEL Initial Oscillator Source Selection bits

111 = Internal Fast RC (FRC) oscillator with postscaler110 = Internal Fast RC (FRC) oscillator with divide-by-16101 = LPRC oscillator100 = Secondary (LP) oscillator011 = Primary (XT, HS, EC) oscillator with PLL010 = Primary (XT, HS, EC) oscillator001 = Internal Fast RC (FRC) oscillator with PLL000 = FRC oscillator

PWMLOCK FOSCSEL PWM Lock Enable bit

1 = Certain PWM registers may only be written after the key sequence0 = PWM registers may be written without the key sequence

FCKSM<1:0> FOSC Clock Switching Mode bits

1x = Clock switching is disabled, Fail-Safe Clock Monitor is disabled01 = Clock switching is enabled, Fail-Safe Clock Monitor is disabled00 = Clock switching is enabled, Fail-Safe Clock Monitor is enabled

IOL1WAY FOSC Peripheral Pin Select Configuration bit

1 = Allow only one reconfiguration0 = Allow multiple reconfigurations

OSCIOFNC FOSC OSC2 Pin Function bit (except in XT and HS modes)

1 = OSC2 is clock output0 = OSC2 is general purpose digital I/O pin

POSCMD<1:0> FOSC Primary Oscillator Mode Select bits

11 = Primary oscillator is disabled10 = HS Crystal Oscillator mode01 = XT Crystal Oscillator mode00 = EC (External Clock) mode

DS70685A-page 12 Advance Information 2012 Microchip Technology Inc.

Page 13: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

FWDTEN FWDT Watchdog Timer Enable bit

1 = Watchdog Timer is always enabled (LPRC oscillator cannot be disabled.Clearing the SWDTEN bit in the RCON register has no effect.)

0 = Watchdog Timer is enabled/disabled by user software (LPRC can bedisabled by clearing the SWDTEN bit in the RCON register)

WINDIS FWDT Watchdog Timer Window Enable bit

1 = Watchdog Timer in Non-Window mode0 = Watchdog Timer in Window mode

PLLKEN FWDT PLL Lock Wait Enable bit

1 = Clock switches to the PLL source will wait until the PLL lock signal isvalid

0 = Clock switch will not wait for PLL lock

WDTPRE FWDT Watchdog Timer Prescaler bit

1 = 1:1280 = 1:32

WDTPOST<3:0> FWDT Watchdog Timer Postscaler bits

1111 = 1:32,7681110 = 1:16,384

0001 = 1:20000 = 1:1

WDTWIN<1:0> FPOR Watchdog Window Select bits

11 = WDT Window is 25% of WDT period10 = WDT Window is 37.5% of WDT period01 = WDT Window is 50% of WDT period00 = WDT Window is 75% of WDT period

BOREN FPOR Brown-out Reset (BOR) Detection Enable bit

1 = BOR is enabled0 = BOR is disabled

ALTI2C2 FPOR Alternate I2C™ pins for I2C2 bit

1 = I2C2 is mapped to the SDA2/SCL2 pins0 = I2C2 is mapped to the ASDA2/ASCL2 pins

ALTI2C1 FPOR Alternate I2C pins for I2C1 bit

1 = I2C1 is mapped to the SDA1/SCL1 pins0 = I2C1 is mapped to the ASDA1/ASCL1 pins

JTAGEN FICD JTAG Enable bit

1 = JTAG is enabled0 = JTAG is disabled

ICS<1:0> FICD ICD Communication Channel Select bits

11 = Communicate on PGEC1 and PGED110 = Communicate on PGEC2 and PGED201 = Communicate on PGEC3 and PGED300 = Reserved, do not use

TABLE 4-3: dsPIC33EPXXXGM3XX/6XX/7XX CONFIGURATION BITS DESCRIPTION (CONTINUED)

Bit Field Register Description

2012 Microchip Technology Inc. Advance Information DS70685A-page 13

Page 14: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

4.1.2 BENEFIT OF USER UNIT ID

The dsPIC33EPXXXGM3XX/6XX/7XX devices containfour User ID Words, located at addresses, 0x800FF8through 0x800FFE. The User ID Words can be utilizedby the user for storing checksum, code revisions,product information, such as serial numbers, systemmanufacturing dates, manufacturing lot numbers andother application-specific information. These wordscan only be written at program time and not at run time;they can be read at run time.

The User ID Words are part of the last page ofexecutive memory, as a result performing a PageErase of the last page of executive memory will alsoerase the User ID Words. The Executive Memory BulkErase command (NVMCON = 0x400F) will also erasethe User ID Words.

4.2 Exiting Enhanced ICSP Mode

Exiting Program/Verify mode is done by removing VIH

from MCLR, as shown in Figure 4-1. The onlyrequirement for exit is that an interval, P16, shouldelapse between the last clock and program signals onPGC and PGD before removing VIH.

FIGURE 4-1: EXITING ENHANCED ICSP™ MODE

TABLE 4-4: dsPIC33EPXXXGM3XX/6XX/7XX DEVICE CONFIGURATION REGISTER MAP

Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

0x0557EC Reserved — — — — — — — —

0x0557EE Reserved — — — — — — — —

0x0557F0 FICD Reserved(2) — JTAGEN Reserved(1) Reserved(2) — ICS<1:0>

0x0557F2 FPOR WDTWIN<1:0> ALTI2C2 ALTI2C1 BOREN — — —

0x0557F4 FWDT FWDTEN WINDIS PLLKEN WDTPRE WDTPOST<3:0>

0x0557F6 FOSC FCKSM<1:0> IOL1WAY — — OSCIOFNC POSCMD<1:0>

0x0557F8 FOSCSEL IESO PWMLOCK — — — FNOSC<2:0>

0x0557FA FGS — — — — — — GCP GWRP

0x0557FC Reserved — — — — — — — —

0x0557FE Reserved — — — — — — — —

Legend: — = unimplemented bit, read as ‘0’Note 1: This bit is reserved and must be programmed as ‘0’.

2: This bit is reserved and must be programmed as ‘1’.

TABLE 4-5: USER ID WORDS REGISTER MAP

Name Address Bit 23-16 Bits 15-0

FUID0 0x800FF8 — UID0

FUID1 0x800FFA — UID1

FUID2 0x800FFC — UID2

FUID3 0x800FFE — UID3

MCLR

P16

PGD

PGD = Input

PGC

VDD

VIH

VIH

P17

DS70685A-page 14 Advance Information 2012 Microchip Technology Inc.

Page 15: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

5.0 THE PROGRAMMING EXECUTIVE

5.1 Programming Executive Communication

The programmer and Programming Executive have amaster-slave relationship, where the programmer isthe master programming device and the ProgrammingExecutive 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 Programming Executive. In turn, the Pro-gramming Executive only sends one response to theprogrammer after receiving and processing acommand. The Programming Executive command setis described in Section 5.2 “Programming ExecutiveCommands”. The response set is described inSection 5.3 “Programming Executive Responses”.

5.1.1 COMMUNICATION INTERFACE AND PROTOCOL

The ICSP/Enhanced ICSP interface is a 2-wire SPIimplemented using the PGC and PGD pins. The PGCpin is used as a clock input pin and the clock sourcemust be provided by the programmer. The PGD pin isused for sending command data to and receivingresponse data from the Programming Executive.

FIGURE 5-1: PROGRAMMING EXECUTIVE SERIAL TIMING

Since a 2-wire SPI is used, and data transmissions arebidirectional, a simple protocol is used to control thedirection of PGD. When the programmer completes acommand transmission, it releases the PGD line andallows the Programming Executive to drive this linehigh. The Programming Executive keeps the PGD linehigh to indicate that it is processing the command.

After the Programming Executive has processed thecommand, it brings PGD low (P9b) to indicate to theprogrammer that the response is available to beclocked out. The programmer can begin to clock outthe response after the maximum wait (P9b) and it mustprovide the necessary amount of clock pulses toreceive the entire response from the ProgrammingExecutive.

After the entire response is clocked out, theprogrammer should terminate the clock on PGC until itis time to send another command to the ProgrammingExecutive. This protocol is shown in Figure 5-2.

5.1.2 SPI RATE

In Enhanced ICSP mode, the dsPIC33EPXXXGM3XX/6XX/7XX family devices operate from the Fast InternalRC oscillator, which has a nominal frequency of7.3728 MHz. This oscillator frequency yields aneffective system clock frequency of 3.6864 MHz. Toensure that the programmer does not clock too fast, itis recommended that a 1.8432 MHz clock be providedby the programmer.

5.1.3 TIME-OUTS

The Programming Executive uses no Watchdog Timeror time-out for transmitting responses to the program-mer. If the programmer does not follow the flow controlmechanism using PGC as described in Section 5.1.1“Communication Interface and Protocol”, it ispossible that the Programming Executive will behaveunexpectedly while trying to send a response to theprogrammer. Since the Programming Executive has notime-out, it is imperative that the programmer correctlyfollow the described communication protocol.

As a safety measure, the programmer should use thecommand time-outs identified in Table 5-1. If thecommand time-out expires, the programmer shouldreset the Programming Executive and startprogramming the device again.

Note: The Programming Executive (PE) can belocated within the following folder withinyour installation of MPLAB® IDE:...\Microchip\MPLAB IDE\REAL ICE,and then selecting the Hex PE file,RIPE_10_xxxxxx.hex (where xxxxxxis the version number).

Note: For Enhanced ICSP, all serial data istransmitted on the falling edge of PGCand latched on the rising edge of PGC. Alldata transmissions are sent to the MostSignificant bit (MSb) first using 16-bitmode (see Figure 5-1).

PGC

PGD

1 2 3 11 13 15 161412

LSb14 13 12 11

4 5 6

MSb 123... 45

P2

P3

P1

P1B

P1A

2012 Microchip Technology Inc. Advance Information DS70685A-page 15

Page 16: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

FIGURE 5-2: PROGRAMMING EXECUTIVE – PROGRAMMER COMMUNICATION PROTOCOL

5.2 Programming Executive Commands

The Programming Executive command set is shown inTable 5-1. This table contains the opcode, mnemonic,length, time-out and description for each command.Functional details on each command are provided inthe command descriptions (Section 5.2.4 “CommandDescriptions”).

5.2.1 COMMAND FORMAT

All Programming Executive commands have a generalformat, consisting of a 16-bit header and any requireddata for the command (see Figure 5-3). The 16-bitheader consists of a 4-bit opcode field, which is used toidentify the command, followed by a 12-bit commandlength field.

FIGURE 5-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 5-1, will return a “NACK”response (see Section 5.3.1.1 “Opcode Field”).

The command length is represented in 16-bit wordssince the SPI operates in 16-bit mode. The Program-ming Executive uses the command length field todetermine the number of words to read from the SPIport. If the value of this field is incorrect, the commandwill not be properly received by the Programming Exec-utive.

5.2.2 PACKED DATA FORMAT

When 24-bit instruction words are transferred acrossthe 16-bit SPI interface, they are packed to conservespace using the format shown in Figure 5-4. Thisformat minimizes traffic over the SPI and provides theProgramming Executive with data that is properlyaligned for performing table write operations.

FIGURE 5-4: PACKED INSTRUCTION WORD FORMAT

5.2.3 PROGRAMMING EXECUTIVE ERROR HANDLING

The Programming Executive will “NACK” allunsupported commands. Additionally, due to thememory constraints of the Programming Executive, nochecking is performed on the data contained in theprogrammer command. It is the responsibility of theprogrammer to command the Programming Executivewith valid command arguments or the programmingoperation may fail. Additional information on errorhandling is provided in Section 5.3.1.3 “QE_CodeField”.

1 2 15 16 1 2 15 16

PGC

PGD

PGC = Input PGC = Input (Idle)

Host TransmitsLast Command Word

PGD = Input PGD = Output

P8

1 2 15 16

MSB X X X LSB MSB X X X LSB MSB X X X LSB1 0

P9b

PGC = InputPGD = Output

P9a

Programming ExecutiveProcesses Command Host Clocks Out Response

15 12 11 0

Opcode Length

Command Data First Word (if required)

Command Data Last Word (if required)

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

15 8 7 0

LSW1

MSB2 MSB1

LSW2

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

DS70685A-page 16 Advance Information 2012 Microchip Technology Inc.

Page 17: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

TABLE 5-1: PROGRAMMING EXECUTIVE COMMAND SET

5.2.4 COMMAND DESCRIPTIONS

All commands supported by the Programming Executiveare described in Section 5.2.5 “SCHECK Command”through Section 5.2.14 “QVER Command”.

5.2.5 SCHECK COMMAND

The SCHECK command instructs the ProgrammingExecutive to do nothing but generate a response. Thiscommand is used as a “Sanity Check” to verify that theProgramming Executive is operational.

Expected Response (2 words):

0x10000x0002

Opcode MnemonicLength

(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 195 5 ms Program one row of primary Flash memory at the specified address, then verify.

0x6 Reserved N/A N/A This command is reserved; it will return a NACK.

0x7 ERASEB 1 125 ms Bulk 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 Programming Executive 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.

Note: One row of code memory consists of (64) 24-bit words. Refer to Table 2-2 for device-specific information.

15 12 11 0

Opcode Length

Field Description

Opcode 0x0

Length 0x1

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

2012 Microchip Technology Inc. Advance Information DS70685A-page 17

Page 18: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

5.2.6 READC COMMAND

The READC command instructs the Programming Exec-utive to read N Configuration registers or Device IDregisters, starting from the 24-bit address specified byAddr_MSB and Addr_LS. This command can only beused to read 8-bit or 16-bit data.

When this command is used to read Configurationregisters, the upper byte in every data word returned bythe Programming Executive is 0x00 and the lower bytecontains the Configuration register value.

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

0x11002 + NConfiguration register or Device ID Register 1... Configuration register or Device ID Register N

5.2.7 READP COMMAND

The READP command instructs the Programming Exec-utive to read N 24-bit words of code memory, startingfrom the 24-bit address specified by Addr_MSB andAddr_LS. This command can only be used to read24-bit data. All data returned in the response to thiscommand uses the packed data format described inSection 5.2.2 “Packed Data Format”.

Expected Response (2 + 3 * N/2 words for N even):0x12002 + 3 * N/2Least Significant Program Memory Word 1... Least Significant Data Word N

Expected Response (4 + 3 * (N – 1)/2 words for N odd):0x12004 + 3 * (N – 1)/2Least Significant Program Memory Word 1... MSB of Program Memory Word N (zero padded)

15 12 11 8 7 0

Opcode Length

N Addr_MSB

Addr_LS

Field Description

Opcode 0x1

Length 0x3

N 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 Programming Executive toreset. Please ensure that only memorylocations present on a particular deviceare accessed.

15 12 11 8 7 0

Opcode Length

N

Reserved Addr_MSB

Addr_LS

Field Description

Opcode 0x2

Length 0x4

N Number of 24-bit instructions to read (maximum of 32768)

Reserved 0x0

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 Programming Executive toreset. Please ensure that only memorylocations present on a particular deviceare accessed.

DS70685A-page 18 Advance Information 2012 Microchip Technology Inc.

Page 19: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

5.2.8 PROG2W COMMAND

The PROG2W command instructs the ProgrammingExecutive to program two instruction words of codememory (6 bytes) to the specified memory address.

After the words have been programmed to codememory, the Programming Executive verifies theprogrammed data against the data in the command.

Expected Response (2 words):0x13000x0002

5.2.9 PROGP COMMAND

The PROGP command instructs the Programming Exec-utive to program one row of code memory(128 instruction words) to the specified memoryaddress. Programming begins with the row addressspecified in the command. The destination addressshould be a multiple of 0x100.

The data to program the memory, located in commandwords, D_1 through D_192, must be arranged usingthe packed instruction word format shown inFigure 5-4.

After all data has been programmed to code memory,the Programming Executive verifies the programmeddata against the data in the command.

Expected Response (2 words):

0x15000x0002

15 12 11 8 7 0

Opcode Length

Reserved Addr_MSB

Addr_LS

DataL_LS

DataH_MSB DataL_MSB

DataH_LS

Field Description

Opcode 0x3

Length 0x6

DataL_MSB MSB of 24-bit data for low instruction word

DataH_MSB MSB of 24-bit data for high instruction word

Addr_MSB MSB of 24-bit destination address

Addr_LS Least Significant 16 bits of 24-bit destination address

DataL_LS Least Significant 16 bits of 24-bit data for low instruction word

DataH_LS Least Significant 16 bits of 24-bit data for high instruction word

15 12 11 8 7 0

Opcode Length

Reserved Addr_MSB

Addr_LS

D_1

D_2

...

D_N

Field Description

Opcode 0x5

Length 0x63

Reserved 0x0

Addr_MSB MSB of 24-bit destination address

Addr_LS Least Significant 16 bits of 24-bit destination address

D_1 16-Bit Data Word 1

D_2 16-Bit Data Word 2

... 16-Bit Data Word 3 through 191

D_192 16-Bit Data Word 192

Note: Refer to Table 2-2 for code memory sizeinformation.

2012 Microchip Technology Inc. Advance Information DS70685A-page 19

Page 20: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

5.2.10 ERASEB COMMAND

The ERASEB command instructs the ProgrammingExecutive to perform a Bulk Erase (i.e., erase all of theprimary Flash memory, executive memory andcode-protect bits).

Expected Response (2 words):

0x1700

0x0002

5.2.11 ERASEP COMMAND

The ERASEP command instructs the ProgrammingExecutive to Page Erase [NUM_PAGES] of codememory. The code memory must be erased at an“even” 1024 instruction word address boundary.

Expected Response (2 words):

0x1900

0x0002

5.2.12 CRCP COMMAND

The CRCP command performs a CRC-16 on the rangeof memory specified. This command can substitute fora full chip verify. Data is shifted in a packed method asdemonstrated in Figure 5-4, byte-wise, LeastSignificant Byte (LSB) first.

Example:

CRC-CCITT-16 with test data of “123456789” becomes0x29B1

Expected Response (3 words):

QE_Code: 0x1C00

Length: 0x0003

CRC Value: 0xXXXX

15 12 11 0

Opcode Length

Field Description

Opcode 0x7

Length 0x1

15 12 11 8 7 0

Opcode Length

NUM_PAGES Addr_MSB

Addr_LS

Field Description

Opcode 0x9

Length 0x3

NUM_PAGES Up to 255

Addr_MSB Most Significant Byte of the 24-bit address

Addr_LS Least Significant 16 bits of the 24-bit address

15 12 11 8 7 0

Opcode Length

Reserved Addr_MSB

Addr_LSW

Reserved Size_MSB

Size_LSW

Field Description

Opcode 0xC

Length 0x5

Addr_MSB Most Significant Byte of 24-bit address

Addr_LSW Least Significant 16 bits of 24-bit address

Size Number of 24-bit locations (address range divided by 2)

DS70685A-page 20 Advance Information 2012 Microchip Technology Inc.

Page 21: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

5.2.13 QBLANK COMMAND

The QBLANK command queries the ProgrammingExecutive to determine if the contents of code memoryare blank (contains all ‘1’s). The size of code memoryto check must be specified in the command.

The Blank Check for code memory begins at <Addr>and advances toward larger addresses for thespecified number of instruction words.

QBLANK returns a QE_Code of 0xF0 if the specifiedcode memory is blank; otherwise, QBLANK returns aQE_Code of 0x0F.

Expected Response (2 words for blank device):

0x1DF00x0002

Expected Response (2 words for non-blank device):

0x1D0F0x0002

5.2.14 QVER COMMAND

The QVER command queries the version of the Pro-gramming Executive software stored in test memory.The “version.revision” information is returned in theresponse’s QE_Code, using a single byte with the fol-lowing format: main version in upper nibble andrevision in the lower nibble (i.e., 0x23 meansversion 2.3 of Programming Executive software).

Expected Response (2 words):

0x1BMN (where “MN” stands for version M.N)0x0002

5.3 Programming Executive Responses

The Programming Executive sends a response to theprogrammer for each command that it receives. Theresponse indicates if the command was processedcorrectly. It includes any required response data orerror data.

The Programming Executive response set is shown inTable 5-2. This table contains the opcode, mnemonicand description for each response. The response formatis described in Section 5.3.1 “Response Format”.

TABLE 5-2: PROGRAMMING EXECUTIVE RESPONSE OPCODES

15 12 11 0

Opcode Length

Reserved Size_MSB

Size_LSW

Reserved Addr_MSB

Addr_LSW

Field Description

Opcode 0xE

Length 0x5

Size Length of program memory to check(in 24-bit words) + Addr_MS

Addr_MSB Most Significant Byte of the 24-bit address

Addr_LSW Least Significant 16 bits of the 24-bit address

Note: The QBLANK command does not checkthe system operation Configuration bitssince these bits are not set to ‘1’ when aChip Erase is performed.

15 12 11 0

Opcode Length

Field Description

Opcode 0xB

Length 0x1

Opcode Mnemonic Description

0x1 PASS Command successfully processed

0x2 FAIL Command unsuccessfully processed

0x3 NACK Command not known

2012 Microchip Technology Inc. Advance Information DS70685A-page 21

Page 22: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

5.3.1 RESPONSE FORMAT

All Programming Executive responses have a generalformat consisting of a two-word header and anyrequired data for the command.

5.3.1.1 Opcode Field

The opcode is a 4-bit field in the first word of theresponse. The opcode indicates how the commandwas processed (see Table 5-2). If the command wasprocessed successfully, the response opcode is PASS.If there was an error in processing the command, theresponse opcode is FAIL and the QE_Code indicatesthe reason for the failure. If the command sent tothe Programming Executive is not identified, theProgramming Executive returns a NACK response.

5.3.1.2 Last_Cmd Field

The Last_Cmd is a 4-bit field in the first word of theresponse and indicates the command that theProgramming Executive processed. Since the Pro-gramming Executive can only process one commandat a time, this field is technically not required. However,it can be used to verify that the Programming Executivecorrectly received the command that the programmertransmitted.

5.3.1.3 QE_Code Field

The QE_Code is a byte in the first word of theresponse. This byte is used to return data for querycommands and error codes for all other commands.

When the Programming Executive processes one ofthe two query commands (QBLANK or QVER), thereturned opcode is always PASS and the QE_Codeholds the query response data. The format of theQE_Code for both queries is shown in Table 5-3.

TABLE 5-3: QE_Code FOR QUERIES

When the Programming Executive processes any com-mand other than a Query, the QE_Code represents anerror code. Supported error codes are shown inTable 5-4. If a command is successfully processed, thereturned QE_Code is set to 0x0, which indicates thatthere is no error in the command processing. If the ver-ify of the programming for the PROGP command fails,the QE_Code is set to 0x1. For all other ProgrammingExecutive errors, the QE_Code is 0x2.

TABLE 5-4: QE_Code FOR NON-QUERY COMMANDS

5.3.1.4 Response Length

The response length indicates the length of theProgramming Executive’s response in 16-bit words.This field includes the 2 words of the response header.

With the exception of the response for the READPcommand, the length of each response is only 2 words.

The response to the READP command uses the packedinstruction word format described in Section 5.2.2“Packed Data Format”. When reading an odd numberof program memory words (N odd), the response to theREADP command is (3 * (N + 1)/2 + 2) words. When readingan even number of program memory words (N even), theresponse to the READP command is (3 * N/2 + 2) words.

Field Description

Opcode Response opcode

Last_Cmd Programmer command that generated the response

QE_Code Query code or error code

Length Response length in 16-bit words (includes 2 header words)

D_1 First 16-bit data word (if applicable)

D_N Last 16-bit data word (if applicable)

15 12 11 8 7 0

Opcode Last_Cmd QE_Code

Length

D_1 (if applicable)

...

D_N (if applicable)

Query QE_Code

QBLANK 0x0F = Code memory is NOT blank0xF0 = Code memory is blank

QVER 0xMN, where Programming Executive software version = M.N(i.e., 0x32 means software version 3.2)

QE_Code Description

0x0 No error

0x1 Verify failed

0x2 Other error

DS70685A-page 22 Advance Information 2012 Microchip Technology Inc.

Page 23: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

6.0 DEVICE PROGRAMMING – ICSP

ICSP mode is a special programming protocol thatallows you to read and write to thedsPIC33EPXXXGM3XX/6XX/7XX device familymemory. The ICSP mode is the most direct methodused to program the device; however, note thatEnhanced ICSP is faster. ICSP mode also has theability to read the contents of executive memory todetermine if the Programming Executive is present.This capability is accomplished by applying controlcodes and instructions serially to the device using pins,PGC and PGD.

In ICSP mode, the system clock is taken from the PGCpin, regardless of the device’s oscillator Configurationbits. All instructions are shifted serially into an internalbuffer, then loaded into the Instruction Register (IR)and executed. No program fetching occurs from inter-nal memory. Instructions are fed in 24 bits at a time.PGD is used to shift data in, and PGC is used as boththe serial shift clock and the CPU execution clock.

6.1 Overview of the Programming Process

Figure 6-1 shows the high-level overview of theprogramming process. After entering ICSP mode, thefirst action is to Bulk Erase the device. Next, the codememory is programmed, followed by the deviceConfiguration registers. Code memory (including theConfiguration registers) is then verified to ensure thatprogramming was successful. Then, program thecode-protect Configuration bits, if required.

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

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

Start

Perform BulkErase

Program Memory

Verify Program

End

Enter ICSP™

Program Configuration Bits

Verify Configuration Bits

Exit ICSP

2012 Microchip Technology Inc. Advance Information DS70685A-page 23

Page 24: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

6.2 Entering ICSP Mode

As shown in Figure 6-5, entering ICSP Program/Verifymode requires three steps:

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

2. A 32-bit key sequence is clocked into PGD.

3. MCLR is then driven high within a specifiedperiod of time and held.

The programming voltage applied to MCLR is VIH,which is essentially VDD in the case ofdsPIC33EPXXXGM3XX/6XX/7XX devices. There is nominimum time requirement for holding at VIH. After VIH

is removed, an interval of at least P18 must elapsebefore presenting the key sequence on PGD.

The key sequence is a specific 32-bit pattern,‘0100 1101 0100 0011 0100 1000 0101 0001’(more easily remembered as 0x4D434851 inhexadecimal). The device will enter Program/Verifymode only if the sequence is valid. The Most Significantbit of the 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 interval ofat least time P19, P7 and P1*5 must elapse beforepresenting data on PGD. Signals appearing on PGDbefore this time has elapsed will not be interpreted asvalid.

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

6.3 ICSP Operation

After 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 using PGCand PGD, and this control code is used to command theCPU (see Table 6-1).

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

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

6.3.1 SIX SERIAL INSTRUCTION EXECUTION

The SIX control code allows execution of thedsPIC33EPXXXGM3XX/6XX/7XX device 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 6-3).

6.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 device,over the PGD pin. After the REGOUT control code isreceived, the CPU is held Idle for eight cycles. After theseeight cycles, an additional 16 cycles are required to clockthe data out (see Figure 6-4).

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

Note 1: The MCLR capacitor value can vary thehigh time required for entering ICSPmode.

4-Bit Control Code

Mnemonic Description

0000b SIX Shift in 24-bit instruction and execute

0001b REGOUT Shift out the VISI register

0010b-1111b 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 NOP instructionis executed by the CPU. Five additionalPGC clocks are needed on start-up,thereby resulting in a 9-bit SIX commandinstead of the normal 4-bit SIX command.After the forced SIX is clocked in, ICSPoperation resumes as normal (the next24 clock cycles load the first instructionword to the CPU). For more information,see Figure 6-2.

2: TBLRDH and TBLRDL instructions mustbe followed by five NOP instructions.TBLWTH and TBLWTL instructions mustbe followed by two NOP instructions.

Note: The device will latch input PGD data onthe rising edge of PGC and will outputdata on the PGD line on the rising edge ofPGC. For all data transmissions, the LeastSignificant bit (LSb) is transmitted first.

DS70685A-page 24 Advance Information 2012 Microchip Technology Inc.

Page 25: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

FIGURE 6-2: PROGRAM ENTRY AFTER RESET

FIGURE 6-3: SIX SERIAL EXECUTION

FIGURE 6-4: REGOUT SERIAL EXECUTION

P4

2 3 1 2 3 23 24 1 2 3 4

P1

PGC

P4a

PGD

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

PGD = Input

P2

P3

P1B

P1A

5 6 7

0 0 0 00 0 0

8 9

0 0

P4

1 2 3 23 24 1 2 3 4

P1

PGC

P4a

PGD

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

PGD = Input

P2

P3

P1B

P1A

1 2

0 0 0 00 0

3 4

0 0

1 2 3 4 1 2 7 8

PGC

P4

PGD

PGD = Input

Execute Previous Instruction, CPU Held in Idle Shift Out VISI Register<15:0>

P5

PGD = 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

PGD = Input

MSb1 2 3 41

4 5 6

LSb 141312... 11100

Fetch REGOUT Control Code

0

2012 Microchip Technology Inc. Advance Information DS70685A-page 25

Page 26: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

6.4 Flash Memory Programming in ICSP Mode

6.4.1 PROGRAMMING OPERATIONS

Flash memory write and erase operations arecontrolled by the NVMCON register. Programming isperformed by setting NVMCON to select the type oferase operation (Table 6-2) or write operation(Table 6-3) and initiating the programming by settingthe 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 clearing ofthe WR control bit when the programming operation iscomplete. For more information about the delaysassociated with various programming operations, seeSection 9.0 “AC/DC Characteristics and TimingRequirements”.

TABLE 6-2: NVMCON ERASE OPERATIONS

TABLE 6-3: NVMCON WRITE OPERATIONS

6.4.2 STARTING AND STOPPING A PROGRAMMING CYCLE

The WR bit (NVMCON<15>) is used to start an eraseor write cycle. Setting the WR bit initiates theprogramming cycle.

All erase and write cycles are self-timed. The WR bitshould be polled to determine if the erase or write cyclehas been completed. Starting a programming cycle isperformed as follows:

BSET NVMCON, #WR

FIGURE 6-5: ENTERING ICSP™ MODE

NVMCONValue

Erase Operation

0x400F Bulk Erase user memory, executive memory, and User ID Words (does not erase Device ID registers)

0x400E Bulk Erase user address space

0x400D Bulk Erase General Segment

0x4003 Erase a page of code memory or executive memory

NVMCONValue

Write Operation

0x4002 Program 1 row (64 instruction words) of primary Flash memory or executive memory

0x4001 Program an even-odd pair of words in primary Flash memory

MCLR

PGEDx

PGECx

VDD

P6P14

b31 b30 b29 b28 b27 b2 b1 b0b3...

Program/Verify Entry Code = 0x4D434851

P1A

P1BP18

P19

0 1 0 0 1 0 0 0 1

P7

VIH VIH

P21 P1 · 5

DS70685A-page 26 Advance Information 2012 Microchip Technology Inc.

Page 27: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

REGISTER 6-1: NVMCON: NON-VOLATILE MEMORY (NVM) CONTROL REGISTER

R/SO-0(1) R/W-0(1) R/W-0(1) R/W-0 U-0 U-0 R/W-0 U-0

WR WREN WRERR NVMSIDL(2) — — RPDF URERR

bit 15 bit 8

U-0 U-0 U-0 U-0 R/W-0(1) R/W-0(1) R/W-0(1) R/W-0(1)

— — — — NVMOP<3:0>(3,5)

bit 7 bit 0

Legend: SO = Satiable Only bit

R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’

-n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown

bit 15 WR: Write Control bit(1)

1 = Initiates a Flash memory program or erase operation; the operation is self-timed and the bit iscleared by hardware once operation is complete

0 = Program or erase operation is complete and inactive

bit 14 WREN: Write Enable bit(1)

1 = Enable Flash program/erase operations0 = Inhibit Flash program/erase operations

bit 13 WRERR: Write Sequence Error Flag bit(1)

1 = An improper program or erase sequence attempt, or termination has occurred (bit is set automatically on any set attempt of the WR bit)

0 = The program or erase operation completed normally

bit 12 NVMSIDL: NVM Stop-in-Idle Control bit(2)

1 = Discontinue primary Flash operation when the device enters Idle mode0 = Continue primary Flash operation when the device enters Idle mode

bit 11-10 Unimplemented: Read as ‘0’

bit 9 RPDF: Bus Mastered Row Programming Data Format Control Bit

1 = Row data to be stored in RAM in compressed format0 = Row data to be stored in RAM in uncompressed format

bit 8 URERR: Row Programming Data Underrun Error Flag Bit

1 = Row Programming operation has been terminated due to a data underrun error0 = No data underrun has occurred

bit 7-4 Unimplemented: Read as ‘0’

Note 1: These bits can only be reset on POR.

2: When exiting Idle mode, there is a delay (TNPD) before Flash memory becomes operational.

3: All other combinations of NVMOP<3:0> are unimplemented.

4: The entire segment is erased with the exception of IVT.

5: Execution of the PWRSAV instruction is ignored while any of the NVM operations are in progress.

2012 Microchip Technology Inc. Advance Information DS70685A-page 27

Page 28: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

bit 3-0 NVMOP<3:0>: NVM Operation Select bits(1,3,5)

1111 = User memory and executive memory Bulk Erase operation(4)

1110 = User memory Bulk Erase operation1101 = Bulk Erase primary program Flash memory1100 = Reserved1011 = Reserved1010 = Reserved0011 = Memory Page Erase operation0010 = Memory Row Program operation0001 = Memory double-word (even-odd pair of words aligned at an address that is a multiple of 0x4)

program operation0000 = Reserved

REGISTER 6-1: NVMCON: NON-VOLATILE MEMORY (NVM) CONTROL REGISTER (CONTINUED)

Note 1: These bits can only be reset on POR.

2: When exiting Idle mode, there is a delay (TNPD) before Flash memory becomes operational.

3: All other combinations of NVMOP<3:0> are unimplemented.

4: The entire segment is erased with the exception of IVT.

5: Execution of the PWRSAV instruction is ignored while any of the NVM operations are in progress.

DS70685A-page 28 Advance Information 2012 Microchip Technology Inc.

Page 29: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

6.5 Erasing Program Memory

The procedure for erasing program memory (all ofprimary Flash memory, executive memory andcode-protect Configuration bits) consists of settingNVMCON to 0x400F and then executing theprogramming cycle. For segment erase operations, theNVMCON value should be modified suitably, accordingto Table 6-2.

Figure 6-6 shows the ICSP programming process forBulk Erasing program memory. This process includesthe ICSP command code, which must be transmitted(for each instruction), Least Significant bit first, usingthe PGC and PGD pins (see Figure 6-2).

FIGURE 6-6: BULK ERASE FLOW

TABLE 6-4: SERIAL INSTRUCTION EXECUTION FOR BULK ERASING CODE MEMORY

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

Start

End

Set the WR bit to Initiate Erase

Write 0x400F to NVMCON SFR

Delay P11 + P10 Time

Command(Binary)

Data(Hex)

Description

Step 1: Exit the Reset vector.

0000000000000000000000000000

000000000000000000040200000000000000000000

NOPNOPNOPGOTO 0x200NOPNOPNOP

Step 2: Set the NVMCON to erase all program memory.

0000000000000000

2400EA88394A000000000000

MOV #0x400F, W10MOV W10, NVMCONNOPNOP

Step 3: Initiate the erase cycle.

00000000000000000000000000000000

200551883971200AA1883971A8E729000000000000000000

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

Step 4: Wait for Bulk Erase operation to complete and make sure WR bit is clear.

— — Externally time, ‘P11’ msec (see Section 9.0 “AC/DC Characteristics and Timing Requirements”), to allow sufficient time for the Bulk Erase operation to complete.

2012 Microchip Technology Inc. Advance Information DS70685A-page 29

Page 30: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

6.6 Writing Code Memory

The procedure for writing code memory (primary Flash)is similar to the procedure for writing the Configurationregisters, except that 64 instruction words areprogrammed at a time. To facilitate this operation,working registers, W0:W5, are used as temporaryholding registers for the data to be programmed.

Table 6-5 shows the ICSP programming details,including the serial pattern with the ICSP commandcode, which must be transmitted, Least Significant bitfirst, using the PGC and PGD pins (see Figure 6-2). InStep 1, the Reset vector is exited.

To minimize the programming time, the same packedinstruction format that the Programming Executiveuses is utilized (Figure 5-4). In Step 2, point to the startof the code in the data memory. In Step 3, set theNVMADRU/NVMADR register pair to point to the cor-rect row. In Step 4, set the NVMCON to program64 instruction words. In Step 5, initiate the write cycle.In Step 6, wait for Row Program operation to completeand make sure the WR bit is clear. In Step 7, repeatSteps 2-6 until all code memory is programmed.

TABLE 6-5: SERIAL INSTRUCTION EXECUTION FOR WRITING CODE MEMORY (PRIMARY FLASH)

Command(Binary)

Data(Hex)

Description

Step 1: Exit the Reset vector.

0000000000000000000000000000

000000000000000000040200000000000000000000

NOPNOPNOPGOTO 0x200NOPNOPNOP

Step 2: Point the NVMSRCADRH and NVMSRCADRL registers to the start of code in RAM.

0000000000000000

2xxxx22xxxx38xxxx28xxxx3

MOV #Destination Address<15:0>,W2MOV #Destination Address<23:16>,W3MOV W2,NVMSRCADRLMOV W3,NVMSRCADRH

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

0000000000000000

2xxxx22xxxx3883963883952

MOV #DestinationAddress<15:0>, W2MOV #DestinationAddress<23:16>, W3MOV W3, NVMADRUMOV W2, NVMADR

Step 4: Set the NVMCON to program 64 instruction words.

0000000000000000

24002A88394A000000000000

MOV #0x4002, W10MOV W10, NVMCONNOPNOP

Step 5: Initiate the write cycle.

0000000000000000000000000000000000000000

200551883971200AA1883971A8E729000000000000000000000000000000

MOV #0x55, W1MOV W1, NVMKEYMOV #0xAA, W1MOV W1, NVMKEYBSET NVMCON, #WRNOP(1)

NOP(1)

NOP(1)

NOP(1)

NOP(1)

Note 1: aaaThese three NOP instructions must be transmitted with a clock frequency greater than 2 MHz.

DS70685A-page 30 Advance Information 2012 Microchip Technology Inc.

Page 31: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

Step 6: Wait for Row Program operation to complete and make sure WR bit is clear.

0000000000000000000000010000000000000000000000000000

000000803940000000887C40000000<VISI>000000000000000000040200000000000000000000

Externally time, ‘P13’ msec (see Section 9.0 “AC/DC Characteristics and Timing Requirements”), to allow sufficient time for the Row Program operation to complete.NOPMOV NVMCON, W0NOPMOV W0, VISINOPClock out contents of VISI register.NOPNOPNOPGOTO 0x200NOPNOPNOPRepeat until the WR bit is clear.

Step 7: Repeat Steps 2-6 until all code memory is programmed.

TABLE 6-5: SERIAL INSTRUCTION EXECUTION FOR WRITING CODE MEMORY (PRIMARY FLASH) (CONTINUED)

Command(Binary)

Data(Hex)

Description

Note 1: aaaThese three NOP instructions must be transmitted with a clock frequency greater than 2 MHz.

2012 Microchip Technology Inc. Advance Information DS70685A-page 31

Page 32: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

FIGURE 6-7: PROGRAM CODE MEMORY FLOW

Start Write Sequence

Alllocations

done?

No

End

Start

Yes

Load 2 Bytesto Write

Buffer at <Addr>

Allbytes

written?

No

Yes

and Poll for WR bitto be Cleared

N = 1LoopCount = 0

ConfigureDevice for

Writes

N = 1LoopCount =

LoopCount + 1

N = N + 1

TABLE 6-6: DEFAULT CONFIGURATION REGISTER VALUES

Address Name Default Value

0x0557F0 FICD 0x67

0x0557F2 FPOR 0xF8

0x0557F4 FWDT 0xFF

0x0557F6 FOSC 0xE7

0x0557F8 FOSCSEL 0xC7

0x0557FA FGS 0x03

DS70685A-page 32 Advance Information 2012 Microchip Technology Inc.

Page 33: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

6.7 Reading Code Memory

Reading from code memory (primary Flash) isperformed by executing a series of TBLRD instructionsand clocking out the data using the REGOUT command.

Table 6-7 shows the ICSP programming details forreading code memory. In Step 1, the Reset vector isexited. In Step 2, the 24-bit starting source address forreading is loaded into the TBLPAG register and W6register. The upper byte of the starting source addressis stored in TBLPAG and the lower 16 bits of the sourceaddress are stored in W6.

To minimize the reading time, the packed instructionword format that was utilized for writing is also used forreading (see Figure 6-8). In Step 3, the Write Pointer,W7, is initialized. In Step 4, two instruction words areread from code memory and clocked out of the device,through the VISI register, using the REGOUT command.Step 4 is repeated until the desired amount of codememory is read.

FIGURE 6-8: PACKED INSTRUCTION WORDS IN W0:W5

15 8 7 0

W0 LSW0

W1 MSB1 MSB0

W2 LSW1

W3 LSW2

W4 MSB3 MSB2

W5 LSW3

TABLE 6-7: SERIAL INSTRUCTION EXECUTION FOR READING CODE MEMORY (PRIMARY)

Command(Binary)

Data(Hex)

Description

Step 1: Exit the Reset vector.

0000000000000000000000000000

000000000000000000040200000000000000000000

NOPNOPNOPGOTO 0x200NOPNOPNOP

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

000000000000

200xx08802A02xxxx6

MOV #<SourceAddress23:16>, W0MOV W0, TBLPAGMOV #<SourceAddress15:0>, W6

2012 Microchip Technology Inc. Advance Information DS70685A-page 33

Page 34: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

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

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

EB0380000000BA1B96000000000000000000000000000000BADBB6000000000000000000000000000000BADBD6000000000000000000000000000000BA1BB6000000000000000000000000000000BA1B96000000000000000000000000000000BADBB6000000000000000000000000000000BADBD6000000000000000000000000000000BA0BB6000000000000000000000000000000

CLR W7 NOPTBLRDL [W6], [W7++] NOPNOPNOPNOPNOPTBLRDH.B [W6++], [W7++] NOPNOPNOPNOPNOPTBLRDH.B [++W6], [W7++] NOPNOPNOPNOPNOPTBLRDL [W6++], [W7++] NOPNOPNOPNOPNOPTBLRDL [W6], [W7++] NOPNOPNOPNOPNOPTBLRDH.B [W6++], [W7++] NOPNOPNOPNOPNOPTBLRDH.B [++W6], [W7++] NOPNOPNOPNOPNOPTBLRDL [W6++], [W7] NOPNOPNOPNOPNOP

TABLE 6-7: SERIAL INSTRUCTION EXECUTION FOR READING CODE MEMORY (PRIMARY) (CONTINUED)

Command(Binary)

Data(Hex)

Description

DS70685A-page 34 Advance Information 2012 Microchip Technology Inc.

Page 35: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

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

000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000

887C40000000<VISI>000000887C41000000<VISI>000000887C42000000<VISI>000000887C43000000<VISI>000000887C44000000<VISI>000000887C45000000<VISI>000000

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

Step 5: Repeat Step 4 until all desired code memory is read.

Step 6: Reset device internal PC.

0000000000000000000000000000

000000000000000000040200000000000000000000

NOPNOPNOPGOTO 0x200 NOPNOPNOP

TABLE 6-7: SERIAL INSTRUCTION EXECUTION FOR READING CODE MEMORY (PRIMARY) (CONTINUED)

Command(Binary)

Data(Hex)

Description

2012 Microchip Technology Inc. Advance Information DS70685A-page 35

Page 36: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

6.8 Reading Configuration Memory

The procedure for reading configuration memory issimilar to the procedure for reading code memory,except that 16-bit data words are read (with the upperbyte read being all ‘0’s) instead of 24-bit words. Sincethere are eight Configuration registers, they are readone register at a time.

Table 6-8 shows the ICSP programming details forreading all of the configuration memory. Note that theTBLPAG register is loaded 0x05 (the upper byteaddress of configuration memory) and the ReadPointer, W6, is initialized to 57EC.

TABLE 6-8: SERIAL INSTRUCTION EXECUTION FOR READING ALL CONFIGURATION MEMORY

Command(Binary)

Data(Hex)

Description

Step 1: Exit the Reset vector.

0000000000000000000000000000

000000000000000000040200000000000000000000

NOPNOPNOPGOTO 0x200NOPNOPNOP

Step 2: Initialize TBLPAG, the Read Pointer (W6) and the Write Pointer (W7) for TBLRD instruction.

00000000000000000000

200F808802A020004620F887000000

MOV #05, W0MOV W0, TBLPAGMOV #0x57EC, W6MOV #VISI, W7NOP

Step 3: Read the Configuration register and write it to the VISI register (located at 0x784) and clock out the VISI register using the REGOUT command.

0000000000000000000000000001

BA0BB6000000000000000000000000000000<VISI>

TBLRDL [W6++], [W7]NOPNOPNOPNOPNOPClock out contents of VISI register.

Step 4: Repeat Step 3 eight times to read all the Configuration registers.

Step 5: Reset device internal PC.

0000000000000000000000000000

000000000000000000040200000000000000000000

NOPNOPNOPGOTO 0x200NOPNOPNOP

DS70685A-page 36 Advance Information 2012 Microchip Technology Inc.

Page 37: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

6.9 Verify Code Memory and Configuration Word

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

The verify process is shown in the flowchart inFigure 6-9. Memory reads occur, a single byte at atime, so two bytes must be read to compare against theword in the programmer’s buffer. Refer to Section 6.7“Reading Code Memory” for implementation detailsof reading code memory.

FIGURE 6-9: VERIFY CODE MEMORY FLOW

6.10 Reading the Application ID Word

The Application ID Word is stored at address,0x800FF0, 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 beused to 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 6-9.

After the programmer has clocked out the Application IDWord, it must be inspected. If the Application ID has thevalue, 0xDD, the Programming Executive is resident inmemory and the device can be programmed using themechanism described in Section 3.0 “Device Program-ming – Enhanced ICSP”. However, if the application IDhas any other value, the Programming Executive is notresident in memory; it must be loaded to memory beforethe device can be programmed. The procedure for load-ing the Programming Executive to memory is describedin Section 7.0 “Programming the ProgrammingExecutive to Memory”.

6.11 Exiting ICSP Mode

Exiting Program/Verify mode is done by removing VIH

from MCLR, as shown in Figure 6-10. The onlyrequirement for exit is that an interval, P16, shouldelapse between the last clock and program signals onPGC and PGD before removing VIH.

FIGURE 6-10: EXITING ICSP™ MODE

Note: Because the Configuration registersinclude the device code protection bit,code memory should be verifiedimmediately after writing, if the codeprotection is enabled. This is because thedevice will not be readable or verifiable ifa device Reset occurs after thecode-protect bit in the FGS Configurationregister has been cleared.

Read Low Byte

Read High Byte

DoesWord = Expect

Data?

Allcode memory

verified?

No

Yes

No

Set TBLPTR = 0

Start

Yes

End

with Post-Increment

with Post-Increment

FailureReport Error

MCLR

P16

PGD

PGD = Input

PGC

VDD

VIH

VIH

P17

2012 Microchip Technology Inc. Advance Information DS70685A-page 37

Page 38: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

TABLE 6-9: SERIAL INSTRUCTION EXECUTION FOR READING THE APPLICATION ID WORD

Command(Binary)

Data(Hex)

Description

Step 1: Exit the Reset vector.

0000000000000000000000000000

000000000000000000040200000000000000000000

NOPNOPNOPGOTO 0x200NOPNOPNOP

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

00000000000000000000000000000000000000000000

2008008802A0207F0020F881000000BA0890000000000000000000000000000000

MOV #0x80, W0 MOV W0, TBLPAGMOV #0x7F0, W0 MOV #VISI, W1 NOP TBLRDL [W0], [W1] NOPNOPNOPNOPNOP

Step 3: Output the VISI register using the REGOUT command.

0001 <VISI> Clock out contents of the VISI register.

DS70685A-page 38 Advance Information 2012 Microchip Technology Inc.

Page 39: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

7.0 PROGRAMMING THE PROGRAMMING EXECUTIVE TO MEMORY

7.1 Overview

If it is determined that the Programming Executive isnot present in executive memory (as described inSection 3.2 “Confirming the Presence of theProgramming Executive”), it must be programmedinto executive memory using ICSP, as described inSection 6.0 “Device Programming – ICSP”.

Storing the Programming Executive to executivememory is similar to normal programming of codememory. Namely, the executive memory must first beerased, and then the Programming Executive must beprogrammed 64 words at a time. This control flow issummarized in Table 7-1.

TABLE 7-1: PROGRAMMING THE PROGRAMMING EXECUTIVE

Command(Binary)

Data(Hex)

Description

Step 1: Exit the Reset vector and erase executive memory.

0000000000000000000000000000

000000000000000000040200000000000000000000

NOPNOPNOPGOTO 0x200NOPNOPNOP

Step 2: Initialize the NVMCON to erase a page of executive memory.

0000000000000000

24003A88394A000000000000

MOV #0x4003, W10MOV W10, NVMCONNOPNOP

Note 1: These three NOP instructions must be transmitted with a clock frequency greater than 2 MHz.

2012 Microchip Technology Inc. Advance Information DS70685A-page 39

Page 40: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

Step 3: Initiate the erase cycle, wait for erase to complete and make sure WR bit is clear.

00000000000000000000000000000000000000000000000000000000

000000000000000000000001

200083883963200002883952000000000000200551883971200AA1883971A8E729000000000000000000

000000803940000000887C40000000<VISI>

MOV #0x80, W3MOV W3, NVMADRUMOV #0x00, W2MOV W2, NVMADRNOPNOPMOV #0x55, W1MOV W1, NVMKEYMOV #0xAA, W1MOV W1, NVMKEYBSET NVMCON, #15NOPNOPNOPExternally time ‘P12’ msec (see Section 9.0 “AC/DC Characteristics and Timing Requirements”) to allow sufficient time for the Page Erase operation to complete.NOPMOV NVMCON, W0NOPMOV W0, VISINOPClock out contents of VISI register. Repeat until the WR bit is clear.

Step 4: Repeat Step 3 to erase the second page of executive memory (modifying NVMADR suitably).

Step 5: Initialize the NVMCON to program 64 instruction words.

00000000

24002A88394A

MOV #0x4002, W10 MOV W10, NVMCON

Step 6: Initialize the NVMSRCADRH and NVMSRCADRL registers to point to the source of data in RAM and also the NVMADRU and NVMADR for each row in Flash.

000000000000000000000000000000000000

2008038802A02xxxx28839522xxxx48xxxx42xxxx58xxxx5000000

MOV #0x80, W3MOV W3, NVMADRUMOV #DestinationAddress<15:0>, W2MOV W2, NVMADRMOV #SourceAddress<15:0>, W4MOV W4, NVMSRCADRLMOV #SourceAddress<23:16>, W5MOV W5, NVMSRCADRH NOP

Step 7: Repeat Step 6 to suitably modify the NVMADR, NVMADRU, NVMSRCADR and NVMSRCADRH registers to point to the next row of data to be written.

TABLE 7-1: PROGRAMMING THE PROGRAMMING EXECUTIVE (CONTINUED)

Command(Binary)

Data(Hex)

Description

Note 1: These three NOP instructions must be transmitted with a clock frequency greater than 2 MHz.

DS70685A-page 40 Advance Information 2012 Microchip Technology Inc.

Page 41: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

Step 8: Initiate the programming cycle.

0000000000000000000000000000000000000000

200551883971200AA1883971A8E729000000000000000000000000000000

MOV #0x55, W1MOV W1, NVMKEYMOV #0xAA, W1MOV W1, NVMKEYBSET NVMCON, #15 NOP(1)

NOP(1)

NOP(1)

NOP(1)

NOP(1)

Step 9: Wait for the Row Program operation to complete.

0000000000000000000000010000000000000000000000000000

000000803940000000887C40000000<VISI>000000000000000000040200000000000000000000

Externally time ‘P13’ msec (see Section 9.0 “AC/DC Characteristics and Timing Requirements”) to allow sufficient time for the Row Program operation to complete.NOPMOV NVMCON, W0NOPMOV W0, VISINOPClock out contents of VISI register.NOPNOPNOPGOTO 0x200 NOPNOPNOPRepeat until the WR bit is clear.

Step 10: Repeat Steps 6-9 until all 32 rows of executive memory have been programmed.

TABLE 7-1: PROGRAMMING THE PROGRAMMING EXECUTIVE (CONTINUED)

Command(Binary)

Data(Hex)

Description

Note 1: These three NOP instructions must be transmitted with a clock frequency greater than 2 MHz.

2012 Microchip Technology Inc. Advance Information DS70685A-page 41

Page 42: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

7.2 Programming Verification

After the Programming Executive has beenprogrammed to executive memory using ICSP, it mustbe verified. Verification is performed by reading out thecontents of executive memory and comparing it withthe image of the Programming Executive stored in theprogrammer.

Reading the contents of executive memory can beperformed using the same technique described inSection 6.7 “Reading Code Memory”. A procedurefor reading executive memory is shown in Table 7-2.Note that in Step 2, the TBLPAG register is set to 0x80,such that executive memory may be read.

TABLE 7-2: READING EXECUTIVE MEMORY

Command(Binary)

Data(Hex)

Description

Step 1: Exit the Reset vector.

0000000000000000000000000000

000000000000000000040200000000000000000000

NOPNOPNOPGOTO 0x200NOPNOPNOP

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

000000000000

2008008802A0EB0300

MOV #0x80, W0 MOV W0, TBLPAGCLR W6

DS70685A-page 42 Advance Information 2012 Microchip Technology Inc.

Page 43: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

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

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

EB0380000000BA1B96000000000000000000000000000000BADBB6000000000000000000000000000000BADBD6000000000000000000000000000000BA1BB6000000000000000000000000000000BA1B96000000000000000000000000000000BADBB6000000000000000000000000000000BADBD6000000000000000000000000000000BA0BB6000000000000000000000000000000

CLR W7 NOPTBLRDL [W6], [W7++] NOPNOPNOPNOPNOPTBLRDH.B [W6++], [W7++] NOPNOPNOPNOPNOPTBLRDH.B [++W6], [W7++] NOPNOPNOPNOPNOPTBLRDL [W6++], [W7++] NOPNOPNOPNOPNOPTBLRDL [W6], [W7++] NOPNOPNOPNOPNOPTBLRDH.B [W6++], [W7++] NOPNOPNOPNOPNOPTBLRDH.B [++W6], [W7++] NOPNOPNOPNOPNOPTBLRDL [W6++], [W7] NOPNOPNOPNOPNOP

TABLE 7-2: READING EXECUTIVE MEMORY (CONTINUED)

Command(Binary)

Data(Hex)

Description

2012 Microchip Technology Inc. Advance Information DS70685A-page 43

Page 44: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

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

000000000001000000000000000100000000000000010000000000000001000000000000000100000000000000010000

887C40000000<VISI>000000887C41000000<VISI>000000887C42000000<VISI>000000887C43000000<VISI>000000887C44000000<VISI>000000887C45000000<VISI>000000

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

Step 5: Reset the device internal PC.

0000000000000000000000000000

000000000000000000040200000000000000000000

NOPNOPNOPGOTO 0x200 NOPNOPNOP

Step 6: Repeat Steps 4-5 until all 2048 instruction words of executive memory are read.

TABLE 7-2: READING EXECUTIVE MEMORY (CONTINUED)

Command(Binary)

Data(Hex)

Description

DS70685A-page 44 Advance Information 2012 Microchip Technology Inc.

Page 45: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

8.0 DEVICE ID

The device ID region of memory can be used todetermine mask, variant and manufacturinginformation about the chip. The device ID region is2 x 16 bits and can be read using the READC command.This region of memory is read-only and can also beread when code protection is enabled.

Table 8-1 lists the identification information for eachdevice. Table 8-2 shows the Device ID registers.Register 8-1 provides the JTAG ID register format.

TABLE 8-2: dsPIC33EPXXXGM3XX/6XX/7XX DEVICE ID REGISTERS

REGISTER 8-1: JTAG ID REGISTER

TABLE 8-1: DEVICE IDS AND REVISION

DeviceDEVID Register

ValueDEVREV Register Value Silicon Revision

dsPIC33EP128GM304 0x1940 0x4000 A0

dsPIC33EP128GM604 0x1948

dsPIC33EP128GM306 0x1943

dsPIC33EP128GM706 0x194B

dsPIC33EP128GM310 0x1947

dsPIC33EP128GM710 0x194F

dsPIC33EP256GM304 0x1A80 0x4000 A0

dsPIC33EP256GM604 0X1A88

dsPIC33EP256GM306 0X1A83

dsPIC33EP256GM706 0X1A8B

dsPIC33EP256GM310 0X1A87

dsPIC33EP256GM710 0X1A8F

dsPIC33EP512GM304 0x1BC0 0x4000 A0

dsPIC33EP512GM604 0x1BC8

dsPIC33EP512GM306 0x1BC3

dsPIC33EP512GM706 0x1BCB

dsPIC33EP512GM310 0x1BC7

dsPIC33EP512GM710 0x1BCF

Address NameBit

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0xFF0000 DEVID DEVID Value

0xFF0002 DEVREV DEVREV Value

31 28 27 12 11 0

DEVREV<3:0> DEVID<15:0> Manufacturer ID (0x053)

4 bits 16 bits 12 bits

2012 Microchip Technology Inc. Advance Information DS70685A-page 45

Page 46: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

9.0 AC/DC CHARACTERISTICS AND TIMING REQUIREMENTS

Table 9-1 lists the AC/DC characteristics and timingrequirements.

TABLE 9-1: AC/DC CHARACTERISTICS AND TIMING REQUIREMENTS

Standard Operating ConditionsOperating Temperature: -40C-85C. Programming at 25C is recommended.

Param. No.

Symbol Characteristic Min. Max. Units Conditions

D111 VDD Supply Voltage During Programming 3.00 3.60 V Normal programming(1)

D112 IPP Programming Current on MCLR — 5 A

D113 IDDP Supply Current During Programming — 10 mA

D114 IPP Instantaneous Peak Current During Start-up

— 200 mA

D031 VIL Input Low Voltage VSS 0.2 VDD V

D041 VIH Input High Voltage 0.8 VDD VDD V

D080 VOL Output Low Voltage — 0.4 V IOL = 8 mA @ 3.3V

D090 VOH Output High Voltage 2.4 — V IOH = 8 mA @ 3.3V

D012 CIO Capacitive Loading on I/O pin (PGD) — 50 pF To meet AC specifications

P1 TPGC Serial Clock (PGC) Period (ICSP™) 200 — ns

P1 TPGC Serial Clock (PGC) Period (Enhanced ICSP)

500 — ns

P1A TPGCL Serial Clock (PGC) Low Time (ICSP) 80 — ns

P1A TPGCL Serial Clock (PGC) Low Time (Enhanced ICSP)

200 — ns

P1B TPGCH Serial Clock (PGC) High Time (ICSP) 80 — ns

P1B TPGCH Serial Clock (PGC) High Time (Enhanced ICSP)

200 — ns

P2 TSET1 Input Data Setup Time to PGC 15 — ns

P3 THLD1 Input Data Hold Time from PGC 15 — ns

P4 TDLY1 Delay between 4-bit Command and Command Operand

40 — ns

P4A TDLY1A Delay between Command Operand and Next 4-bit Command

40 — ns

P5 TDLY2 Delay between Last PGC of Command to First PGC of Read of Data Word

20 — ns

P6 TSET2 VDD Setup Time to MCLR 100 — ns

P7 THLD2 Input Data Hold Time from MCLR 25 — ms

P8 TDLY3 Delay between Last PGC of Command Byte to PGD by Programming Executive

12 — s

P9a TDLY4 Programming Executive Command Processing Time

10 — s

P9b TDLY5 Delay between PGD by Programming Executive to PGD Released by Programming Executive

15 23 s

Note 1: VDD must also be supplied to the AVDD pin during programming. AVDD and AVSS should always be within ±0.3V of VDD and VSS, respectively.

2: Time depends on the FRC accuracy and the value of the FRC Oscillator Tuning register. Refer to the “Electrical Characteristics” chapter in the specific device data sheet.

DS70685A-page 46 Advance Information 2012 Microchip Technology Inc.

Page 47: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

P10 TDLY6 PGC Low Time After Programming 400 — ns

P11a TDLY7a Bulk Erase Time (primary Flash memory) 50 70 ms See Note 2

P12 TDLY8 Page Erase Time 17 23 ms See Note 2

P13 TDLY9 Row Programming Time 1.2 1.6 ms See Note 2

P14 TR MCLR Rise Time to Enter ICSP™ mode — 1.0 s

P15 TVALID Data Out Valid from PGC 10 — ns

P16 TDLY10 Delay between Last PGC and MCLR 0 — s

P17 THLD3 MCLR to VDD 100 — ns

P18 TKEY1 Delay from First MCLR to First PGC for Key Sequence on PGD

1 — ms

P19 TKEY2 Delay from Last PGC for Key Sequence on PGD to Second MCLR

25 — ns

P21 TMCLRH MCLR High Time — 500 s

TABLE 9-1: AC/DC CHARACTERISTICS AND TIMING REQUIREMENTS (CONTINUED)

Standard Operating ConditionsOperating Temperature: -40C-85C. Programming at 25C is recommended.

Param. No.

Symbol Characteristic Min. Max. Units Conditions

Note 1: VDD must also be supplied to the AVDD pin during programming. AVDD and AVSS should always be within ±0.3V of VDD and VSS, respectively.

2: Time depends on the FRC accuracy and the value of the FRC Oscillator Tuning register. Refer to the “Electrical Characteristics” chapter in the specific device data sheet.

2012 Microchip Technology Inc. Advance Information DS70685A-page 47

Page 48: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

NOTES:

DS70685A-page 48 Advance Information 2012 Microchip Technology Inc.

Page 49: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

APPENDIX A: HEX FILE FORMAT

Flash programmers process the standard Hex formatused by the Microchip development tools. The formatsupported is the Intel® HEX32 Format (INHX32). Formore information about Hex file formats, refer toAppendix A in the “MPASM™ Assembler, MPLINK™Object Linker, MPLIB™ Object Librarian Users Guide”(DS33014).

The basic format of the Hex file is:

:BBAAAATTHHHH...HHHHCC

Each data record begins with a 9-character prefix andalways ends with a 2-character checksum. All recordsbegin with ‘:’ regardless of the format. The individualelements are described below.

• BB – is a two-digit hexadecimal byte count representing the number of data bytes that appear on the line. Divide this number by two to get the number of words per line.

• AAAA – is a four-digit hexadecimal address representing the starting address of the data record. Format is high byte first, followed by low byte. The address is doubled because this format only supports 8 bits. Divide the value by two to find the real device address.

• TT – is a two-digit record type that will be ‘00’ for data records, ‘01’ for End-of-File (EOF) records and ‘04’ for extended address records.

• HHHH – is a four-digit hexadecimal data word. Format is low byte followed by high byte. There will be BB/2 data words following TT.

• CC – is a two-digit hexadecimal checksum that is the two’s complement of the sum of all the preceding bytes in the line record.

Because the Intel Hex file format is byte-oriented, andthe 16-bit program counter is not, program memorysections require special treatment. Each 24-bitprogram word is extended to 32 bits by inserting aso-called “phantom byte”. Each program memoryaddress is multiplied by 2 to yield a byte address.

As an example, a section that is located at 0x100 inprogram memory will be represented in the Hex file as0x200.

The Hex file will be produced with the followingcontents:

:020000040000fa

:040200003322110096

:00000001FF

Notice that the data record (line 2) has a load addressof 0200, while the source code specifies address,0x100. Also, note that the data is represented in“little-endian” format, meaning the Least SignificantByte (LSB) appears first. The phantom byte appearslast, just before the checksum.

2012 Microchip Technology Inc. Advance Information DS70685A-page 49

Page 50: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

dsPIC33EPXXXGM3XX/6XX/7XX

APPENDIX B: REVISION HISTORY

Revision A (August 2012)

This is the initial released version of the document.

DS70685A-page 50 Advance Information 2012 Microchip Technology Inc.

Page 51: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

Note the following details of the code protection feature on Microchip devices:

• Microchip products meet the specification contained in their particular Microchip Data Sheet.

• Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the intended manner and under normal conditions.

• There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip’s Data Sheets. Most likely, the person doing so is engaged in theft of intellectual property.

• Microchip is willing to work with the customer who is concerned about the integrity of their code.

• Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not mean that we are guaranteeing the product as “unbreakable.”

Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of ourproducts. Attempts to break Microchip’s code protection feature may be a violation of the Digital Millennium Copyright Act. If such actsallow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act.

Information contained in this publication regarding deviceapplications and the like is provided only for your convenienceand may be superseded by updates. It is your responsibility toensure that your application meets with your specifications.MICROCHIP MAKES NO REPRESENTATIONS ORWARRANTIES OF ANY KIND WHETHER EXPRESS ORIMPLIED, WRITTEN OR ORAL, STATUTORY OROTHERWISE, RELATED TO THE INFORMATION,INCLUDING BUT NOT LIMITED TO ITS CONDITION,QUALITY, PERFORMANCE, MERCHANTABILITY ORFITNESS FOR PURPOSE. Microchip disclaims all liabilityarising from this information and its use. Use of Microchipdevices in life support and/or safety applications is entirely atthe buyer’s risk, and the buyer agrees to defend, indemnify andhold harmless Microchip from any and all damages, claims,suits, or expenses resulting from such use. No licenses areconveyed, implicitly or otherwise, under any Microchipintellectual property rights.

2012 Microchip Technology Inc. Advance Info

QUALITY MANAGEMENT SYSTEM CERTIFIED BY DNV

== ISO/TS 16949 ==

Trademarks

The Microchip name and logo, the Microchip logo, dsPIC, KEELOQ, KEELOQ logo, MPLAB, PIC, PICmicro, PICSTART, PIC32 logo, rfPIC and UNI/O are registered trademarks of Microchip Technology Incorporated in the U.S.A. and other countries.

FilterLab, Hampshire, HI-TECH C, Linear Active Thermistor, MXDEV, MXLAB, SEEVAL and The Embedded Control Solutions Company are registered trademarks of Microchip Technology Incorporated in the U.S.A.

Analog-for-the-Digital Age, Application Maestro, BodyCom, chipKIT, chipKIT logo, CodeGuard, dsPICDEM, dsPICDEM.net, dsPICworks, dsSPEAK, ECAN, ECONOMONITOR, FanSense, HI-TIDE, In-Circuit Serial Programming, ICSP, Mindi, MiWi, MPASM, MPLAB Certified logo, MPLIB, MPLINK, mTouch, Omniscient Code Generation, PICC, PICC-18, PICDEM, PICDEM.net, PICkit, PICtail, REAL ICE, rfLAB, Select Mode, Total Endurance, TSHARC, UniWinDriver, WiperLock and ZENA are trademarks of Microchip Technology Incorporated in the U.S.A. and other countries.

SQTP is a service mark of Microchip Technology Incorporated in the U.S.A.

All other trademarks mentioned herein are property of their respective companies.

© 2012, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved.

Printed on recycled paper.

ISBN:978-1-62076-499-2

rmation DS70685A-page 51

Microchip received ISO/TS-16949:2009 certification for its worldwide headquarters, design and wafer fabrication facilities in Chandler and Tempe, Arizona; Gresham, Oregon and design centers in California and India. The Company’s quality system processes and procedures are for its PIC® MCUs and dsPIC® DSCs, KEELOQ® code hopping devices, Serial EEPROMs, microperipherals, nonvolatile memory and analog products. In addition, Microchip’s quality system for the design and manufacture of development systems is ISO 9001:2000 certified.

Page 52: dsPIC33EPXXXGM3XX/6XX/7XX Flash Programming Specification

DS70685A-page 52 Advance Information 2012 Microchip Technology Inc.

AMERICASCorporate Office2355 West Chandler Blvd.Chandler, AZ 85224-6199Tel: 480-792-7200 Fax: 480-792-7277Technical Support: http://www.microchip.com/supportWeb Address: www.microchip.com

AtlantaDuluth, GA Tel: 678-957-9614 Fax: 678-957-1455

BostonWestborough, MA Tel: 774-760-0087 Fax: 774-760-0088

ChicagoItasca, IL Tel: 630-285-0071 Fax: 630-285-0075

ClevelandIndependence, OH Tel: 216-447-0464 Fax: 216-447-0643

DallasAddison, TX Tel: 972-818-7423 Fax: 972-818-2924

DetroitFarmington Hills, MI Tel: 248-538-2250Fax: 248-538-2260

IndianapolisNoblesville, IN Tel: 317-773-8323Fax: 317-773-5453

Los AngelesMission Viejo, CA Tel: 949-462-9523 Fax: 949-462-9608

Santa ClaraSanta Clara, CA Tel: 408-961-6444Fax: 408-961-6445

TorontoMississauga, Ontario, CanadaTel: 905-673-0699 Fax: 905-673-6509

ASIA/PACIFICAsia Pacific OfficeSuites 3707-14, 37th FloorTower 6, The GatewayHarbour City, KowloonHong KongTel: 852-2401-1200Fax: 852-2401-3431

Australia - SydneyTel: 61-2-9868-6733Fax: 61-2-9868-6755

China - BeijingTel: 86-10-8569-7000 Fax: 86-10-8528-2104

China - ChengduTel: 86-28-8665-5511Fax: 86-28-8665-7889

China - ChongqingTel: 86-23-8980-9588Fax: 86-23-8980-9500

China - HangzhouTel: 86-571-2819-3187 Fax: 86-571-2819-3189

China - Hong Kong SARTel: 852-2401-1200 Fax: 852-2401-3431

China - NanjingTel: 86-25-8473-2460Fax: 86-25-8473-2470

China - QingdaoTel: 86-532-8502-7355Fax: 86-532-8502-7205

China - ShanghaiTel: 86-21-5407-5533 Fax: 86-21-5407-5066

China - ShenyangTel: 86-24-2334-2829Fax: 86-24-2334-2393

China - ShenzhenTel: 86-755-8203-2660 Fax: 86-755-8203-1760

China - WuhanTel: 86-27-5980-5300Fax: 86-27-5980-5118

China - XianTel: 86-29-8833-7252Fax: 86-29-8833-7256

China - XiamenTel: 86-592-2388138 Fax: 86-592-2388130

China - ZhuhaiTel: 86-756-3210040 Fax: 86-756-3210049

ASIA/PACIFICIndia - BangaloreTel: 91-80-3090-4444 Fax: 91-80-3090-4123

India - New DelhiTel: 91-11-4160-8631Fax: 91-11-4160-8632

India - PuneTel: 91-20-2566-1512Fax: 91-20-2566-1513

Japan - OsakaTel: 81-66-152-7160 Fax: 81-66-152-9310

Japan - YokohamaTel: 81-45-471- 6166 Fax: 81-45-471-6122

Korea - DaeguTel: 82-53-744-4301Fax: 82-53-744-4302

Korea - SeoulTel: 82-2-554-7200Fax: 82-2-558-5932 or 82-2-558-5934

Malaysia - Kuala LumpurTel: 60-3-6201-9857Fax: 60-3-6201-9859

Malaysia - PenangTel: 60-4-227-8870Fax: 60-4-227-4068

Philippines - ManilaTel: 63-2-634-9065Fax: 63-2-634-9069

SingaporeTel: 65-6334-8870Fax: 65-6334-8850

Taiwan - Hsin ChuTel: 886-3-5778-366Fax: 886-3-5770-955

Taiwan - KaohsiungTel: 886-7-536-4818Fax: 886-7-330-9305

Taiwan - TaipeiTel: 886-2-2500-6610 Fax: 886-2-2508-0102

Thailand - BangkokTel: 66-2-694-1351Fax: 66-2-694-1350

EUROPEAustria - WelsTel: 43-7242-2244-39Fax: 43-7242-2244-393Denmark - CopenhagenTel: 45-4450-2828 Fax: 45-4485-2829

France - ParisTel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79

Germany - MunichTel: 49-89-627-144-0 Fax: 49-89-627-144-44

Italy - Milan Tel: 39-0331-742611 Fax: 39-0331-466781

Netherlands - DrunenTel: 31-416-690399 Fax: 31-416-690340

Spain - MadridTel: 34-91-708-08-90Fax: 34-91-708-08-91

UK - WokinghamTel: 44-118-921-5869Fax: 44-118-921-5820

Worldwide Sales and Service

11/29/11


Recommended