MCP19111 Flash Programming Memory
MCP19111 Flash Programming Memory
+ISEN
-ISEN
24
23
22
21
20
19
GPA0 1 18 VDD
GPA1 2 17 BOOT
GPA2 3 16 HDRV
MCP19110
GPA3 4 15 PHASE
GPA7/ICSPCLK 5 14 VDR
EXP-25
GPA6/ICSPDAT 6 13 LDRV
10
12
11
9
7
8
GPA5/MCLR
GPA4
GPB0
VIN
PGND
GND
MCLR (1)
Program/Verify mode P Program Mode Select
VIN VIN P Device Power Supply Input
VDD VDD P Power Supply Output
GND VSS P Ground
Legend: I = Input, O = Output, P = Power
Note 1: In the MCP19110, the programming high voltage is internally generated. To activate the Program/Verify
mode, voltage of VIHH and a current of IIHH (see Table 6-1) need to be applied to the MCLR input.
GPB5/ICSPCLK/ICDCLK
QFN
GPB2
GPB1
24 +VSEN
25 -VSEN
23 +ISEN
22 -ISEN
28
27
26
GPA0 1 21 GPB6
GPA1 2 20 VDD
GPA2 3 19 BOOT
GPA3 5 17 PHASE
GPA7 6 16 VDR
EXP-29
GPA6 7 15 LDRV
10
12
13
14
11
8
9
GPA4
GPB0
GPA5/MCLR
GPB7
VIN
PGND
GND
MCLR (1)
Program/Verify mode P Program Mode Select
VIN VIN P Device Power Supply Input
VDD VDD P Power Supply Output
GND VSS P Ground
Legend: I = Input, O = Output, P = Power
Note 1: In the MCP19111, the programming high voltage is internally generated. To activate the Program/Verify
mode, voltage of VIHH and a current of IIHH (see Table 6-1) need to be applied to the MCLR input.
4 kW
Implemented
0FFF
Program Memory
1FFF
2002 User ID Location
2000
Implemented
208F
2003 User ID Location 2090 Unimplemented
2100
2004 ICD Instruction
2008-207F Reserved
ICSPCLK
Note: This method of entry is valid,
regardless of Configuration Word
selected.
TDLY3
1 2 3 4 5 6 1 2 3 4 5 15 16
ICSPCLK
TDLY2
1 2 3 4 5 6 1 2 3 4 5 15 16
ICSPCLK
TDLY3
1 2 3 4 5 6 1 2 3 4 5 15 16
ICSPCLK
TDLY3
10 0 1 0 X X MSb stp_bit
ICSPDAT strt_bit
LSb
TSET1
THLD1 TDLY1
0 1 1 0 X X X 0
ICSPDAT
TSET1
THLD1
TDLY1
VIHH
MCLR TPROG
End Programming Command
1 2 3 4 5 6 1 2
ICSPCLK
ICSPDAT 0 0 0 1 1 X X 0
TSET1
THLD1
VIHH
MCLR
Next Command
1 2 3 4 5 6 1 2
ICSPCLK
ICSPDAT 0 1 0 1 0 X X 0
TDIS
TSET1
THLD1
TERA
Next Command
1 2 3 4 5 6 1 2
ICSPCLK
1 0 0 1 X X X 0
ICSPDAT
TSET1 TSET1
THLD1 THLD1
TERA
Next Command
1 2 3 4 5 6 1 2
ICSPCLK
1 0 0 0 1 x x 0
ICSPDAT
Start
Bulk Erase
Program Program Cycle
Memory (1,2)
Load Data
for
One-word Program Memory
Program Cycle
Begin
Read Data Programming
from Command
Program Memory (Externally timed)
Report
No Programming
Data Correct? Wait TPROG
Failure
Yes
Increment End
No All Locations
Address Programming
Done?
Command
Yes
Program
User ID/Config. bits Wait TDIS
Done
Note 1: This step is optional if the device has already been erased or has not been previously programmed.
2: If the device is code-protected or must be completely erased, then bulk erase the device per Figure 3-15.
Program Cycle
Load Data
for
Program Memory
Increment
Address
Start Command
Bulk Erase
Load Data
Program
for
Memory(1,2) Program Memory
Four-word Increment
Program Cycle Address
Command
Begin
Programming
Command
(Externally timed)
Wait TPROG
End
Programming
Wait TDIS
Note 1: This step is optional if the device is erased or not previously programmed.
2: If the device is code-protected or must be completely erased, then bulk erase the device per Figure 3-15.
Start
PROGRAM CYCLE
Load
Configuration Load Data
for
Program Memory
One-word
Program Cycle
(User ID) Begin
Programming
Command
Read Data (Externally timed)
From Program
Memory Command
Wait TPROG
No Report
Data Correct? Programming
Failure
End
Yes Programming
Increment
Address
Command
Wait TDIS
Increment
No Address = Yes
Address
0x2004? Command
Increment
Address
Command
Increment
Address
Command
One-word
Program Cycle
(Config. bits)
Read Data
From Program
Memory Command
Report
No
Data Correct? Programming
Failure
Yes
Done
Start
Load Configuration
Done
Note 1: See Section 3.1.3.7 “Bulk Erase Program Memory” for more information on the Bulk Erase
procedure.
Legend:
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
Note 1: This value is obtained by taking the total number of program memory locations (0x000h to 0x0FFFh, which
is 0x1000h) and multiplying it by the blank memory value of 0x3FFF to get the sum of 3FF F000h. Then
truncate to 16 bits, thus having a final value of F000h.
2: This value is obtained by making all bits of the Configuration Word a ‘1’, then converting it to hex, thus
having a value of 3FFFh.
3: This value is obtained by making all used bits of the Configuration Word a ‘1’, then converting it to hex,
thus having a value of 2C78h.
4: This value is obtained by ANDing the Configuration Word value with the Configuration Word Mask value
and adding it to the sum of memory addresses (3FFFh and 2C78) + F000h = 11C78h. Then truncate to
16 bits, thus having a final value of 1C78h.
Note 1: This value is obtained by making all bits of the Configuration Word a ‘1’, but the code protection bit is ‘0’
(thus, enabled), then converting it to a hex, thus having a value of 3FBFh.
2: This value is obtained by making all used bits of the Configuration Word a ‘1’, but the code protection bit
is ‘0’ (thus, enabled), then converting to hex, thus having a value of 2C38h.
3: These values are picked at random for this example; they can be any 16-bit value.
4: In order to calculate the sum of user IDs, take the 16-bit value of the first user ID location (0006h), AND
the address to (000Fh), thus masking the MSB. This gives you the value 0006h, then shift left 12 bits, giv-
ing you 6000h. Do the same procedure for the 16-bit value of the second user ID location (0007h), except
shift left eight bits. Also do the same for the third user ID location (0001h), except shift left four bits. For
the fourth user ID location, do not shift. Finally, add up all four user ID values to get the final sum of user
IDs of 6712h.
5: This value is obtained by ANDing the Configuration Word value with the Configuration Mask value and
adding it to the sum of user IDs: (3FBFh and 2C38h) + (6712h) = 934Ah.
• 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 our
products. Attempts to break Microchip’s code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts
allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act.
QUALITY MANAGEMENT SYSTEM Microchip received ISO/TS-16949:2009 certification for its worldwide
headquarters, design and wafer fabrication facilities in Chandler and
CERTIFIED BY DNV Tempe, Arizona; Gresham, Oregon and design centers in California
and India. The Company’s quality system processes and procedures
== ISO/TS 16949 ==
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.