0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
PIC32MK1024GPE100T-I/PT

PIC32MK1024GPE100T-I/PT

  • 厂商:

    ACTEL(微芯科技)

  • 封装:

    TQFP100

  • 描述:

    PIC32MK1024GPE100T-I/PT

  • 数据手册
  • 价格&库存
PIC32MK1024GPE100T-I/PT 数据手册
PIC32MK GENERAL PURPOSE AND MOTOR CONTROL (GP/MC) FAMILY 32-bit General Purpose and Motor Control Application MCUs with FPU and up to 1 MB Live-Update Flash, 256 KB SRAM, 4 KB EEPROM, and Op amps Operating Conditions: 2.2V to 3.6V Security Features • -40ºC to +85ºC, DC to 120 MHz • -40ºC to +125ºC, DC to 80 MHz • Advanced Memory Protection: - Peripheral and memory region access control Core: 120 MHz (up to 198 DMIPS) Advanced Analog Features • MIPS32® microAptiv™ MCU core with Floating Point Unit • microMIPS™ mode for up to 40% smaller code size • DSP-enhanced core: - Four 64-bit accumulators - Single-cycle MAC, saturating and fractional math • Code-efficient (C and Assembly) architecture • Two 32-bit core register files to reduce interrupt latency • 12-bit ADC module: - Sum of all individual ADC's combined, 25.45 Msps 12-bit mode or 33.79 Msps 8-bit mode - 7 individual ADC modules - 3.75 Msps per S&H with dedicated DMA - Up to 42 analog inputs • Flexible and independent ADC trigger sources • Four Op amps and five Comparators • Up to three 12-bit CDACs • Internal temperature sensor ±2ºC accuracy • Capacitive Touch Divider (CVD) Clock Management • 8 MHz ±5% (FRC) internal oscillator 0ºC to +70ºC • Programmable PLLs and oscillator clock sources: - HS and EC clock modes • Secondary USB PLL • 32 kHz Internal Low-power RC oscillator (LPRC) • Independent external low-power 32 kHz crystal oscillator • Fail-Safe Clock Monitor (FSCM) • Independent Watchdog Timers (WDT) and Deadman Timer (DMT) • Fast wake-up and start-up • Four Fractional clock out (REFCLKO) modules Power Management • Low-power management modes (Deep Sleep, Sleep, and Idle) • Integrated: - Power-on Reset (POR) and Brown-out Reset (BOR) • On-board capacitorless regulator Motor Control PWM • • • • • • • Eight PWM pairs Six additional Single-Ended PWM modules Dead Time for rising and falling edges Dead-Time Compensation 8.33 ns PWM Resolution Clock Chopping for High-Frequency Operation PWM Support for: - DC/DC, AC/DC, inverters, PFC, lighting - BLDC, PMSM, ACIM, SRM motors • Choice of six Fault and Current Limit Inputs • Flexible Trigger Configuration for ADC Triggering Motor Encoder Interface • Six Quadrature Encoder Interface (QEI) modules: - Four inputs: Phase A, Phase B, Home, and Index Audio/Graphics/Touch Interfaces • • • • External Graphics interfaces through PMP Up to six I2S audio data communication interfaces Up to six SPI audio control interfaces Programmable audio Host clock: - Generation of fractional clock frequencies - Can be synchronized with USB clock - Can be tuned in run-time Unique Features • Permanent non-volatile 4-word unique device serial number Direct Memory Access (DMA) • Up to eight channels with automatic data size detection • Programmable Cyclic Redundancy Check (CRC) • Up to 64 KB transfers  2016-2021 Microchip Technology Inc. Communication Interfaces • Up to four CAN modules (with dedicated DMA channels): - 2.0B Active with DeviceNet™ addressing support • Up to six UART modules (up to 25 Mbps): - Supports LIN 1.2 and IrDA® protocols • Six SPI/I2S modules (SPI 50 Mbps) • Parallel Host Port (PMP) • Up to two FS USB 2.0-compliant On-The-Go (OTG) controllers • Peripheral Pin Select (PPS) to enable remappable pin functions Timers/Output Compare/Input Capture/RTCC • Up to 14 16-bit or one 16-bit and eight 32-bit timers/counters for GP and MC devices and six additional QEI 32-bit timers for MC devices • 16 Output Compare (OC) modules • 16 Input Capture (IC) modules • PPS to enable function remap • Real-Time Clock and Calendar (RTCC) module Input/Output • • • • 5V-tolerant pins with up to 22 mA source/sink Selectable internal open drain, pull-ups, and pull-downs External interrupts on all I/O pins Five programmable edge/level-triggered interrupt pins Qualification and Class B Support • • • • Class B Safety Library Back-up internal oscillator Clock monitor with back-up internal oscillator Global register locking Debugger Development Support • • • • • In-circuit and in-application programming 2-wire or 4-wire MIPS® Enhanced JTAG interface Unlimited software and 12 complex breakpoints IEEE 1149.2-compatible (JTAG) boundary scan Non-intrusive hardware-based instruction trace Software and Tools Support • • • • • C/C++ compiler with native DSP/fractional support MPLAB® Harmony Integrated Software Framework TCP/IP, USB, Graphics, and mTouch™ middleware MFi, Android™ and Bluetooth® audio frameworks RTOS Kernels: Express Logic ThreadX, FreeRTOS™, OPENRTOS®, Micriµm® µC/OS™, and SEGGER embOS® DS60001402H-page 1 PIC32MK GP/MC Family Packages Type VQFN Pin Count I/O Pins (up to) Contact/Lead Pitch Dimensions TABLE 1: TQFP 64 48 (GP devices) 49 (MC devices) 0.50 mm 9x9x0.9 mm 64 48 (GP devices) 49 (MC devices) 0.50 mm 10x10x1 mm PIC32MK GENERAL PURPOSE (GP) FAMILY FEATURES 1: 2: Legend: CAN 2.0B ADC (Channels) Op amp/Comparator USB 2.0 FS OTG PMP RTCC REFCLK CDAC CTMU I/O Pins JTAG/ICSP Trace Y 64 TQFP, 16 VQFN Y 9/16/16 6 6 5 — 8/13 26 4/5 1 Y 1 4 3 1 48 Y Y 4 Y 100 TQFP 16 Y 9/16/16 6 6 5 — 8/13 42 4/5 2 Y 1 4 3 1 77 Y Y 4 Y TQFP, 16 VQFN Y 9/16/16 6 6 5 4 8/13 26 4/5 1 Y 1 4 3 1 48 Y Y 4 Y 100 TQFP 16 Y 9/16/16 6 6 5 4 8/13 42 4/5 2 Y 1 4 3 1 77 Y Y 64 Boot Flash Memory (KB) 4 Packages DMA Channels (Programmable/Dedicated) PIC32MK1024GPE100 1024 256 External Interrupts(2) PIC32MK0512GPE100 512 128 UART PIC32MK1024GPE064 1024 256 SPI/I2S PIC32MK0512GPE064 512 128 Timers/Capture/Compare(1) PIC32MK1024GPD100 1024 256 Remappable Pins PIC32MK0512GPD100 512 128 Pins PIC32MK1024GPD064 1024 256 Floating Point Unit (FPU) PIC32MK0512GPD064 512 128 EE Memory (KB) Data Memory (KB) Device Program Memory (KB) Remappable Peripherals Note 100 77 (GP devices) 78 (MC devices) 0.40 mm 12x12x1 mm Eight out of nine timers are remappable. Four out of five external interrupts are remappable. An ‘—’ indicates this feature is not available for the listed device. TABLE 2: PIC32MK MOTOR CONTROL (MC) FAMILY FEATURES Note 1: 2: PMP QEI MCPWM RTCC REFCLK CDAC CTMU I/O Pins JTAG/ICSP Trace 5 4 8/13 26 4/5 1 Y 6 12 1 4 3 1 49 Y Y 4 Y 100 TQFP 16 Y 9/16/16 6 6 5 4 8/13 42 4/5 2 Y 6 12 1 4 3 1 78 Y Y Op amp/Comparator 6 ADC (Channels) USB 2.0 FS OTG DMA Channels (Programmable/Dedicated) CAN 2.0B Y 9/16/16 6 UART TQFP, 16 VQFN Timers/Capture/Compare(1) 64 Remappable Pins Y Boot Flash Memory (KB) 4 Packages External Interrupts(2) PIC32MK1024MCF100 1024 256 SPI/I2S PIC32MK0512MCF100 512 128 Pins PIC32MK1024MCF064 1024 256 Floating Point Unit (FPU) PIC32MK0512MCF064 512 128 EE Memory (KB) Data Memory (KB) Device Program Memory (KB) Remappable Peripherals Eight out of nine timers are remappable. Four out of five external interrupts are remappable. DS60001402H-page 2  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family Device Pin Tables TABLE 3: PIN NAMES FOR 64-PIN GENERAL PURPOSE (GPD/GPE) DEVICES 64-PIN VQFN(4) AND TQFP (TOP VIEW) PIC32MK0512GPD064 PIC32MK0512GPE064 PIC32MK1024GPD064 PIC32MK1024GPE064 64 Pin # Full Pin Name VQFN(4) 1 64 TQFP 1 Pin # Full Pin Name 33 OA5IN+/DAC1/AN24/CVD24/C5IN1+/C5IN3-/RPA4/T1CK/ RA4 1 TCK/RPA7/PMD5/RA7 2 RPB14/VBUSON1/PMD6/RB14 34 VBUS 3 RPB15/PMD7/RB15 35 VUSB3V3 4 AN19/CVD19/RPG6/PMA5/RG6 36 D- 5 AN18/CVD18/RPG7/PMA4/RG7(6) 37 D+ 6 AN17/CVD17/RPG8/PMA3/RG8(7) 38 VDD 7 MCLR 39 OSCI/CLKI/AN49/CVD49/RPC12/RC12 8 AN16/CVD16/RPG9/PMA2/RG9 40 OSCO/CLKO/RPC15/RC15 9 VSS 41 VSS 10 VDD 42 VBAT 11 AN10/CVD10/RPA12/RA12 43 PGD2/RPB5/USBID1/RB5(7) 12 AN9/CVD9/RPA11/RA11 44 PGC2/RPB6/SCK2/PMA15/RB6(6) 13 OA2OUT/ANO/C2IN4-/C4IN3-/RPA0/RA0 45 DAC2/AN48/CVD48/RPC10/PMA14/PMCS/RC10 14 OA2IN+/AN1/C2IN1+/RPA1/RA1 46 OA5OUT/AN25/CVD25/C5IN4-/RPB7/SCK1/INT0/RB7 15 PGD3/VREF-/OA2IN-/AN2/C2IN1-/RPB0/CTED2/RB0 47 SOSCI/RPC13(5)/RC13(5) 16 PGC3/OA1OUT/VREF+/AN3/C1IN4-/C4IN2-/RPB1/CTED1/PMA6/ RB1 48 SOSCO/RPB8(5)/RB8(5) 17 PGC1/OA1IN+/AN4/C1IN1+/C1IN3-/C2IN3-/RPB2/RB2 49 TMS/OA5IN-/AN27/CVD27/C5IN1-/RPB9/RB9 TRCLK/RPC6/RC6 18 PGD1/OA1IN-/AN5/CTCMP/C1IN1-/RTCC/RPB3/RB3 50 19 AVDD 51 TRD0/RPC7/RC7 20 AVSS 52 TRD1/RPC8/PMWR/RC8 21 OA3OUT/AN6/CVD6/C3IN4-/C4IN1+/C4IN4-/RPC0/RC0 53 TRD2/RPD5/PMRD/RD5 22 OA3IN-/AN7/CVD7/C3IN1-/C4IN1-/RPC1/PMA7/RC1 54 TRD3/RPD6/RD6 23 OA3IN+/AN8/CVD8/C3IN1+/C3IN3-/RPC2/PMA13/RC2 55 RPC9/RC9 24 AN11/CVD11/C1IN2-/PMA12/RC11 56 VSS 25 VSS 57 VDD 26 VDD 58 RPF0/RF0 27 AN12/CVD12/C2IN2-/C5IN2-/PMA11/RE12(7) 59 RPF1/RF1 28 AN13/CVD13/C3IN2-/PMA10/RE13(6) 60 RPB10/PMD0/RB10 29 AN14/CVD14/RPE14/PMA1/RE14 61 RPB11/PMD1/RB11 30 AN15/CVD15/RPE15/PMA0/RE15 62 RPB12/PMD2/RB12 31 TDI/DAC3/AN26/CVD26/RPA8/PMA9/RA8(7) 63 RPB13/CTPLS/PMD3/RB13 32 RPB4/PMA8/RB4(6) 64 TDO/PMD4/RA10 Note 1: 2: 3: 4: 5: 6: 7: 8: The RPn pins can be used by remappable peripherals. See Table 1 for the available peripherals and 13.3 “Peripheral Pin Select (PPS)” for restrictions. Every I/O port pin (RAx-RGx) can be used as a change notification pin (CNAx-CNGx). See 13.0 “I/O Ports” for more information. Shaded pins are 5V tolerant. The metal plane at the bottom of the device is not connected to any pins and is recommended to be connected to VSS externally. Functions are restricted to input functions only and inputs will be slower than the standard inputs. The I2C library is available in MPLAB Harmony. For future hardware or silicon compatibility, it is recommended to use these pins for the I2C Host/Client clock, that is SCL. The I2C library is available in MPLAB Harmony. For future hardware or silicon compatibility, it is recommended to use these pins for the I2C data I/O, that is, SDA. VBAT functionality is compromised. For additional information, refer to specific errata documents. This pin must be connected to VDD.  2016-2021 Microchip Technology Inc. DS60001402H-page 3 PIC32MK GP/MC Family TABLE 4: PIN NAMES FOR 64-PIN MOTOR CONTROL (MCF) DEVICES 64-PIN VQFN(4) AND TQFP (TOP VIEW) PIC32MK0512MCF064 PIC32MK1024MCF064 64 Pin # Full Pin Name VQFN(4) 64 1 TQFP Pin # 1 Full Pin Name 1 TCK/RPA7/PWM10H/PWM4L/PMD5/RA7 33 OA5IN+/DAC1/AN24/CVD24/C5IN1+/C5IN3-/RPA4/T1CK/RA4 2 RPB14/PWM1H/VBUSON1/PMD6/RB14 34 VBUS 3 RPB15/PWM7H/PWM1L/PMD7/RB15 35 VUSB3V3 4 AN19/CVD19/RPG6/PMA5/RG6 36 D- 5 AN18/CVD18/RPG7/PMA4/RG7(6) 37 D+ 6 AN17/CVD17/RPG8/PMA3/RG8(7) 38 VDD 7 MCLR 39 OSCI/CLKI/AN49/CVD49/RPC12/RC12 8 AN16/CVD16/RPG9/PMA2/RG9 40 OSCO/CLKO/RPC15/RC15 9 VSS 41 VSS 10 VDD 42 RD8 11 AN10/CVD10/RPA12/RA12 43 PGD2/RPB5/USBID1/RB5(7) 12 AN9/CVD9/RPA11/USBOEN1/RA11 44 PGC2/RPB6/SCK2/PMA15/RB6(6) 13 OA2OUT/AN0/C2IN4-/C4IN3-/RPA0/RA0 45 DAC2/AN48/CVD48/RPC10/PMA14/PMCS/RC10 14 OA2IN+/AN1/C2IN1+/RPA1/RA1 46 OA5OUT/AN25/CVD25/C5IN4-/RPB7/SCK1/INT0/RB7 15 PGD3/VREF-/OA2IN-/AN2/C2IN1-/RPB0/CTED2/RB0 47 SOSCI/RPC13(5)/RC13(5) 16 PGC3/OA1OUT/VREF+/AN3/C1IN4-/C4IN2-/RPB1/CTED1/PMA6/RB1 48 SOSCO/RPB8(5)/RB8(5) 17 PGC1/OA1IN+/AN4/C1IN1+/C1IN3-/C2IN3-/RPB2/RB2 49 TMS/OA5IN-/AN27/CVD27/C5IN1-/RPB9/RB9 18 PGD1/OA1IN-/AN5/CTCMP/C1IN1-/RTCC/RPB3/RB3 50 TRCLK/RPC6/PWM6H/RC6 19 AVDD 51 TRD0/RPC7/PWM12H/PWM6L/RC7 20 AVSS 52 TRD1/RPC8/PWM5H/PMWR/RC8 21 OA3OUT/AN6/CVD6/C3IN4-/C4IN1+/C4IN4-/RPC0/RC0 53 TRD2/RPD5/PWM12H/PMRD/RD5 22 OA3IN-/AN7/CVD7/C3IN1-/C4IN1-/RPC1/PMA7/RC1 54 TRD3/RPD6/PWM12L/RD6 23 OA3IN+/AN8/CVD8/C3IN1+/C3IN3-/RPC2/FLT3/PMA13/RC2 55 RPC9/PWM11H/PWM5L/RC9 24 AN11/CVD11/C1IN2-/FLT4/PMA12/RC11 56 VSS 25 VSS 57 VDD 26 VDD 58 RPF0/PWM11H/RF0 27 AN12/CVD12/C2IN2-/C5IN2-/FLT5/PMA11/RE12(7) 59 RPF1/PWM11L/RF1 28 AN13/CVD13/C3IN2-/FLT6/PMA10/RE13(6) 60 RPB10/PWM3H/PMD0/RB10 29 AN14/CVD14/RPE14/FLT7/PMA1/RE14 61 RPB11/PWM9H/PWM3L/PMD1/RB11 30 AN15/CVD15/RPE15/FLT8/PMA0/RE15 62 RPB12/PWM2H/PMD2/RB12 31 TDI/DAC3/AN26/CVD26/RPA8/PMA9/RA8(7) 63 RPB13/PWM8H/PWM2L/CTPLS/PMD3/RB13 32 FLT15/RPB4/PMA8/RB4(6) 64 TDO/PWM4H/PMD4/RA10 Note 1: 2: 3: 4: 5: 6: 7: The RPn pins can be used by remappable peripherals. See Table 1 for the available peripherals and 13.3 “Peripheral Pin Select (PPS)” for restrictions. Every I/O port pin (RAx-RGx) can be used as a change notification pin (CNAx-CNGx). See 13.0 “I/O Ports” for more information. Shaded pins are 5V tolerant. The metal plane at the bottom of the device is not connected to any pins and is recommended to be connected to VSS externally. Functions are restricted to input functions only and inputs will be slower than standard inputs.Change notification interrupt is not available on this pin. The I2C Library is available in MPLAB Harmony. For future hardware or silicon compatibility, it is recommended to use these pins for the I2C Host/Client clock, that is, SCL. The I2C Library is available in MPLAB Harmony. For future hardware or silicon compatibility, it is recommended to use these pins for the I2C data I/O, that is, SDA. DS60001402H-page 4  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family TABLE 5: PIN NAMES FOR 100-PIN GENERAL PURPOSE (GPD/GPE) DEVICES 100-PIN TQFP (TOP VIEW) M PIC32MK0512GPD100 PIC32MK0512GPE100 PIC32MK1024GPD100 PIC32MK1024GPE100 100 1 Pin # Full Pin Name Pin # Full Pin Name 1 AN23/CVD23/PMA23/RG15 36 VSS 2 VDD 37 VDD 3 TCK/RPA7/PMD5/RA7 38 AN35/CVD35/RG11 4 RPB14/VBUSON1/PMD6/RB14 39 AN36/CVD36/RF13 5 RPB15/PMD7/RB15 40 AN37/CVD37/RF12 6 RD1 41 AN12/CVD12/C2IN2-/C5IN2-/SDA4/PMA11/RE12(6) 7 RD2 42 AN13/CVD13/C3IN2-/SCL4/PMA10/RE13(5) 8 RPD3/RD3 43 AN14/CVD14/RPE14/PMA1/RE14 AN15/CVD15/RPE15/PMA0/RE15 9 RPD4/RD4 44 10 AN19/CVD19/RPG6/VBUSON2/PMA5/RG6 45 VSS 11 AN18/CVD18/RPG7/SCL1/PMA4/RG7(5) 46 VDD AN38/CVD38/RD14 12 AN17/CVD17/RPG8/SDA1/PMA3/RG8(6) 47 13 MCLR 48 AN39/CVD39/RD15 14 AN16/CVD16/RPG9/PMA2/RG9 49 TDI/DAC3/AN26/CVD26/RPA8/SDA2/PMA9/RA8(6) 15 VSS 50 RPB4/SCL2/PMA8/RB4(5) 16 VDD 51 OA5IN+/DAC1/AN24/CVD24/C5IN1+/C5IN3-/RPA4/T1CK/RA4 17 AN22/CVD22/RG10 52 AN40/CVD40/RPE0/RE0 18 AN21/CVD21/RE8 53 AN41/CVD41/RPE1/RE1 19 AN20/CVD20/RE9 54 VBUS1 20 AN10/CVD10/RPA12/RA12 55 VUSB3V3 21 AN9/CVD9/RPA11/RA11 56 D1- 22 OA2OUT/AN0/C2IN4-/C4IN3-/RPA0/RA0 57 D1+ 23 OA2IN+/AN1/C2IN1+/RPA1/RA1 58 VBUS2 24 PGD3/OA2IN-/AN2/C2IN1-/RPB0/CTED2/RB0 59 D2- 25 PGC3/OA1OUT/AN3/C1IN4-/C4IN2-/RPB1/CTED1/RB1 60 D2+ 26 PGC1/OA1IN+/AN4/C1IN1+/C1IN3-/C2IN3-/RPB2/RB2 61 AN45/CVD45/RF5 27 PGD1/OA1IN-/AN5/CTCMP/C1IN1-/RTCC/RPB3/RB3 62 VDD 28 VREF-/AN33/CVD33/PMA7/RF9 63 OSCI/CLKI/AN49/CVD49/RPC12/RC12 29 VREF+/AN34/CVD34/PMA6/RF10 64 OSCO/CLKO/RPC15/RC15 30 AVDD 65 VSS 31 AVSS 66 AN46/CVD46/RPA14/RA14 32 OA3OUT/AN6/CVD6/C3IN4-/C4IN1+/C4IN4-/RPC0/RC0 67 AN47/CVD47/RPA15/RA15 33 OA3IN-/AN7/CVD7/C3IN1-/C4IN1-/RPC1/RC1 68 VBAT 34 OA3IN+/AN8/CVD8/C3IN1+/C3IN3-/RPC2/PMA13/RC2 69 PGD2/RPB5/SDA3/USBID1/RB5(6) 35 AN11/CVD11/C1IN2-/PMA12/RC11 70 PGC2/RPB6/SCL3/SCK2/PMA15/RB6(5) Note 1: 2: 3: 4: 5: 6: 7: The RPn pins can be used by remappable peripherals. See Table 1 for the available peripherals and 13.3 “Peripheral Pin Select (PPS)” for restrictions. Every I/O port pin (RAx-RGx) can be used as a change notification pin (CNAx-CNGx). See 13.0 “I/O Ports” for more information. Shaded pins are 5V tolerant. Functions are restricted to input functions only and inputs will be slower than standard inputs. Change notification interrupt is not available on this pin. The I2C library is available in MPLAB Harmony. For future hardware or silicon compatibility, it is recommended to use these pins for the I2C Host/Client clock, that is, SCL. The I2C library is available in MPLAB Harmony. For future hardware or silicon compatibility, it is recommended to use these pins for the I2C data I/O, that is, SDA. VBAT functionality is compromised. For additional information, refer to specific errata documents. This pin must be connected to VDD.  2016-2021 Microchip Technology Inc. DS60001402H-page 5 PIC32MK GP/MC Family TABLE 5: PIN NAMES FOR 100-PIN GENERAL PURPOSE (GPD/GPE) DEVICES (CONTINUED) 100-PIN TQFP (TOP VIEW) M PIC32MK0512GPD100 PIC32MK0512GPE100 PIC32MK1024GPD100 PIC32MK1024GPE100 100 1 Pin # Full Pin Name Pin # Full Pin Name 71 DAC2/AN48/CVD48/RPC10/PMA14/PMCS/RC10 86 72 OA5OUT/AN25/CVD25/C5IN4-/RPB7/SCK1/INT0/RB7 87 RPF0/PMD11/RF0 73 SOSCI/RPC13(4)/RC13(4) 88 RPF1/PMD10/RF1 74 SOSCO/RPB8(4)/RB8(4) 89 RPG1/PMD9/RG1 75 VSS 90 RPG0/PMD8/RG0 76 TMS/OA5IN-/AN27/CVD27/LVDIN/C5IN1-/RPB9/RB9 91 TRCLK/PMA18/RF6 77 RPC6/USBID2/PMA16/RC6 92 TRD3/PMA19/RF7 78 RPC7/PMA17/RC7 93 RPB10/PMD0/RB10 79 PMD12/RD12 94 RPB11/PMD1/RB11 80 PMD13/RD13 95 TRD2/PMA20/RG14 81 RPC8/PMWR/RC8 96 TRD1/RPG12/PMA21/RG12 82 RPD5/PMRD/RD5 97 TRD0/PMA22/RG13 83 RPD6/PMD14/RD6 98 RPB12/PMD2/RB12 84 RPC9/PMD15/RC9 99 RPB13/CTPLS/PMD3/RB13 85 VSS 100 TDO/PMD4/RA10 Note 1: 2: 3: 4: 5: 6: 7: VDD The RPn pins can be used by remappable peripherals. See Table 1 for the available peripherals and 13.3 “Peripheral Pin Select (PPS)” for restrictions. Every I/O port pin (RAx-RGx) can be used as a change notification pin (CNAx-CNGx). See 13.0 “I/O Ports” for more information. Shaded pins are 5V tolerant. Functions are restricted to input functions only and inputs will be slower than standard inputs. Change notification interrupt is not available on this pin. The I2C library is available in MPLAB Harmony. For future hardware or silicon compatibility, it is recommended to use these pins for the I2C Host/Client clock, that is, SCL. The I2C library is available in MPLAB Harmony. For future hardware or silicon compatibility, it is recommended to use these pins for the I2C data I/O, that is, SDA. VBAT functionality is compromised. For additional information, refer to specific errata documents. This pin must be connected to VDD. DS60001402H-page 6  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family TABLE 6: PIN NAMES FOR 100-PIN MOTOR CONTROL (MCF) DEVICES 100-PIN TQFP (TOP VIEW) M PIC32MK0512MCF100 PIC32MK1024MCF100 100 1 Pin # Full Pin Name Pin # Full Pin Name 1 AN23/CVD23/PMA23/RG15 36 VSS 2 VDD 37 VDD 3 TCK/RPA7/PWMH10/PWML4/PMD5/RA7 38 AN35/CVD35/RG11 4 RPB14/PWMH1/VBUSON1/PMD6/RB14 39 AN36/CVD36/RF13 5 RPB15/PWMH7/PWML1/PMD7/RB15 40 AN37/CVD37/RF12 6 PWMH11/PWML5/RD1 41 AN12/CVD12/C2IN2-/C5IN2-/SDA4/FLT5/PMA11/RE12(6) 7 PWMH5/RD2 42 AN13/CVD13/C3IN2-/SCL4/FLT6/PMA10/RE13(5) 8 RPD3/PWMH12/PWML6/RD3 43 AN14/CVD14/RPE14/FLT7/PMA1/RE14 9 RPD4/PWMH6/RD4 44 AN15/CVD15/RPE15/FLT8/PMA0/RE15 10 AN19/CVD19/RPG6/VBUSON2/PMA5/RG6 45 VSS 11 AN18/CVD18/RPG7/SCL1/PMA4/RG7(5) 46 VDD 12 AN17/CVD17/RPG8/SDA1/PMA3/RG8(6) 47 AN38/CVD38/RD14 13 MCLR 48 AN39/CVD39/RD15 14 AN16/CVD16/RPG9/PMA2/RG9 49 TDI/DAC3/AN26/CVD26/RPA8/SDA2/PMA9/RA8(6) 15 VSS 50 FLT15/RPB4/SCL2/PMA8/RB4(5) 16 VDD 51 OA5IN+/DAC1/AN24/CVD24/C5IN1+/C5IN3-/RPA4/T1CK/RA4 17 AN22/CVD22/RG10 52 AN40/CVD40/RPE0/RE0 18 AN21/CVD21/RE8 53 AN41/CVD41/RPE1/RE1 19 AN20/CVD20/RE9 54 VBUS1 20 AN10/CVD10/RPA12/RA12 55 VUSB3V3 21 AN9/CVD9/RPA11/RA11 56 D1- 22 OA2OUT/AN0/C2IN4-/C4IN3-/RPA0/RA0 57 D1+ 23 OA2IN+/AN1/C2IN1+/RPA1/RA1 58 VBUS2 24 PGD3/OA2IN-/AN2/C2IN1-/RPB0/CTED2/RB0 59 D2- 25 PGC3/OA1OUT/AN3/C1IN4-/C4IN2-/RPB1/CTED1/RB1 60 D2+ 26 PGC1/OA1IN+/AN4/C1IN1+/C1IN3-/C2IN3-/RPB2/RB2 61 AN45/CVD45/RF5 27 PGD1/OA1IN-/AN5/CTCMP/C1IN1-/RTCC/RPB3/RB3 62 VDD 28 VREF-/AN33/CVD33/PMA7/RF9 63 OSCI/CLKI/AN49/CVD49/RPC12/RC12 29 VREF+/AN34/CVD34/PMA6/RF10 64 OSCO/CLKO/RPC15/RC15 30 AVDD 65 VSS 31 AVSS 66 AN46/CVD46/RPA14/RA14 32 OA3OUT/AN6/CVD6/C3IN4-/C4IN1+/C4IN4-/RPC0/RC0 67 AN47/CVD47/RPA15/RA15 33 OA3IN-/AN7/CVD7/C3IN1-/C4IN1-/RPC1/RC1 68 RD8 34 OA3IN+/AN8/CVD8/C3IN1+/C3IN3-/RPC2/FLT3/PMA13/RC2 69 PGD2/RPB5/SDA3/USBID1/RB5(6) 35 AN11/CVD11/C1IN2-/FLT4/PMA12/RC11 70 PGC2/RPB6/SCL3/SCK2/PMA15/RB6(5) Note 1: 2: 3: 4: 5: 6: The RPn pins can be used by remappable peripherals. See Table 1 for the available peripherals and 13.3 “Peripheral Pin Select (PPS)” for restrictions. Every I/O port pin (RAx-RGx) can be used as a change notification pin (CNAx-CNGx). See 13.0 “I/O Ports” for more information. Shaded pins are 5V tolerant. Functions are restricted to input functions only and inputs will be slower than standard inputs. Change notification interrupt is not available on this pin. The I2C library is available in MPLAB Harmony. For future hardware or silicon compatibility, it is recommended to use these pins for the I2C Host/Client clock (i.e., SCL). The I2C library is available in MPLAB Harmony. For future hardware or silicon compatibility, it is recommended to use these pins for the I2C data I/O (i.e., SDA).  2016-2021 Microchip Technology Inc. DS60001402H-page 7 PIC32MK GP/MC Family TABLE 6: PIN NAMES FOR 100-PIN MOTOR CONTROL (MCF) DEVICES (CONTINUED) 100-PIN TQFP (TOP VIEW) M PIC32MK0512MCF100 PIC32MK1024MCF100 100 1 Pin # 71 Full Pin Name Pin # Full Pin Name DAC2/AN48/CVD48/RPC10/PMA14/PMCS/RC10 86 VDD 72 OA5OUT/AN25/CVD25/C5IN4-/RPB7/SCK1/INT0/RB7 87 RPF0/PWMH11/PMD11/RF0 73 SOSCI/RPC13(4)/RC13(4) 88 RPF1/PWML11/PMD10/RF1 74 SOSCO/RPB8(4)/RB8(4) 89 RPG1/PMD9/RG1 75 VSS 90 RPG0/PMD8/RG0 76 TMS/OA5IN-/AN27/CVD27/LVDIN/C5IN1-/RPB9/RB9 91 TRCLK/PMA18/RF6 77 RPC6/USBID2/PMA16/RC6 92 TRD3/PMA19/RF7 78 RPC7/PMA17/RC7 93 RPB10/PWMH3/PMD0/RB10 79 PMD12/RD12 94 RPB11/PWMH9/PWML3/PMD1/RB11 80 PMD13/RD13 95 TRD2/PMA20/RG14 81 RPC8/PMWR/RC8 96 TRD1/RPG12/PMA21/RG12 82 RPD5/PWMH12/PMRD/RD5 97 TRD0/PMA22/RG13 83 RPD6/PWML12/PMD14/RD6 98 RPB12/PWMH2/PMD2/RB12 84 RPC9/PMD15/RC9 99 RPB13/PWMH8/PWML2/CTPLS/PMD3/RB13 85 VSS 100 TDO/PWMH4/PMD4/RA10 Note 1: 2: 3: 4: 5: 6: The RPn pins can be used by remappable peripherals. See Table 1 for the available peripherals and 13.3 “Peripheral Pin Select (PPS)” for restrictions. Every I/O port pin (RAx-RGx) can be used as a change notification pin (CNAx-CNGx). See 13.0 “I/O Ports” for more information. Shaded pins are 5V tolerant. Functions are restricted to input functions only and inputs will be slower than standard inputs. Change notification interrupt is not available on this pin. The I2C library is available in MPLAB Harmony. For future hardware or silicon compatibility, it is recommended to use these pins for the I2C Host/Client clock (i.e., SCL). The I2C library is available in MPLAB Harmony. For future hardware or silicon compatibility, it is recommended to use these pins for the I2C data I/O (i.e., SDA). DS60001402H-page 8  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family 1 TO OUR VALUED CUSTOMERS It is our intention to provide our valued customers with the best documentation possible to ensure successful use of your Microchip products. To this end, we will continue to improve our publications to better suit your needs. Our publications will be refined and enhanced as new volumes and updates are introduced. If you have any questions or comments regarding this publication, please contact the Marketing Communications Department via E-mail at docerrors@microchip.com. We welcome your feedback. Most Current Data Sheet To obtain the most up-to-date version of this data sheet, please register at our Worldwide Web site at: http://www.microchip.com You can determine the version of a data sheet by examining its literature number found on the bottom outside corner of any page. The last character of the literature number is the version number, (e.g., DS30000000A is version A of document DS30000000). Errata An errata sheet, describing minor operational differences from the data sheet and recommended workarounds, may exist for current devices. As device/documentation issues become known to us, we will publish an errata sheet. The errata will specify the revision of silicon and revision of document to which it applies. To determine if an errata sheet exists for a particular device, please check with one of the following: • Microchip Worldwide Web site: http://www.microchip.com • Your local Microchip sales office (see last page) When contacting a sales office, please specify which device, revision of silicon and data sheet (include literature number) you are using. Customer Notification System Register on our web site at www.microchip.com to receive the most current information on all of our products.  2016-2021 Microchip Technology Inc. DS60001402H-page 9 PIC32MK GP/MC Family Referenced Sources This device data sheet is based on the following individual sections of the “PIC32 Family Reference Manual”. These documents should be considered as the general reference for the operation of a particular module or device feature. Note: • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • To access the following documents, refer to the Documentation > Reference Manuals section of the Microchip PIC32 web site: http://www.microchip.com/pic32. Section 1. “Introduction” (DS60001127) Section 4. “Prefetch Cache Module” (DS60001119) Section 7. “Resets” (DS60001118) Section 8. “Interrupt Controller” (DS60001108) Section 9. “Watchdog, Deadman, and Power-up Timers” (DS60001114) Section 10. “Power-Saving Features” (DS60001130) Section 12. “I/O Ports” (DS60001120) Section 13. “Parallel Host Port (PMP)” (DS60001128) Section 14. “Timers” (DS60001105) Section 15. “Input Capture” (DS60001122) Section 16. “Output Compare” (DS60001111) Section 21. “Universal Asynchronous Receiver Transmitter (UART)” (DS60001107) Section 22. “12-bit High-Speed Successive Approximation Register (SAR) Analog-to-Digital Converter (ADC)” (DS60001344) Section 23. “Serial Peripheral Interface (SPI)” (DS60001106) Section 27. “USB On-The-Go (OTG)” (DS60001126) Section 29. “Real-Time Clock and Calendar (RTCC)” (DS60001125) Section 31. “Direct Memory Access (DMA) Controller” (DS60001117) Section 32. “Configuration” (DS60001124) Section 33. “Programming and Diagnostics” (DS60001129) Section 34. “Controller Area Network (CAN)” (DS60001154) Section 37. “Charge Time Measurement Unit (CTMU)” (DS60001167) Section 39. “Op amp/Comparator” (DS60001178) Section 42. “Oscillators with Enhanced PLL” (DS60001250) Section 43. “Quadrature Encoder Interface (QEI)” (DS60001346) Section 44. “Motor Control PWM (MCPWM) (DS60001393) Section 45. “Control Digital-to-Analog Converter (CDAC)” (DS60001327) Section 48. “Memory Organization and Permissions” (DS60001214) Section 50. “CPU for Devices with MIPS32® microAptiv™ and M-Class Cores” (DS60001192) Section 52. “Flash Program Memory with Support for Live Update” (DS60001193) Section 58. “Data EEPROM” (DS60001341) DS60001402H-page 10  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family NOTES:  2016-2021 Microchip Technology Inc. DS60001402H-page 11 PIC32MK GP/MC Family 1.0 Note: DEVICE OVERVIEW This data sheet summarizes the features of the PIC32MK GP/MC Family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to the documents listed in the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). This data sheet contains device-specific information for PIC32MK GP/MC devices. Figure 1-1 illustrates a general block diagram of the core and peripheral modules in the PIC32MK GP/MC family of devices. Table 1-21 through Table 1-22 list the pinout I/O descriptions for the pins shown in the device pin tables (see Table 3 and Table 5). DS60001402H-page 12  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family FIGURE 1-1: PIC32MK GP/MC FAMILY BLOCK DIAGRAM VDD OSC2/CLKO OSC1/CLKI VBAT VDD JTAG BSCAN Precision Band Gap Reference PLL Power Switch DIVIDERS LPRC Oscillator PLL USB RTCC CRU DSWDT FSCM Deep Sleep SIB Timing Generation VDD,VSS MCLR Oscillator Start-up Timer Voltage Regulator FRC Oscillators Secondary Oscillator SOSOC Power-up Timer OSC Oscillators USBCLK SYSCLK PBCLK Power-on Reset PORTG Watchdog Timer PORTE PORTF PORTD Brown-out Reset PORTC Dead Man Timer PORTA PORTB ADC0-5, 7 SAR CAN4 CAN3 PB5 DS IS I8 I2 I1 I3 I9 T7 I11 I10 I13 I12 T10 T11 Sonics - Shared Link Sonics Dedicated Link T1 T2 T3 I5 PB4 I7 I4 Tn = Target Interface Number I6 CAN2 DMAC 8-ch. CAN1 INT MIPS32® microAptiv™ MCU Core with FPU FS USB2 EJTAG FS USB1 EVIC T4 In = Initiator Interface Number T8 T5 T14 T9 ICD PB1 CFG PPS WDT Flash Controller Flash Prefetch Cache 128 SRAM1 PB6 PB3 SRAM2 128 12-Channel Motor Control PWM DSCON IC10-IC16 RTCC OC10-OC16 PFM Flash Wrapper OC1-OC9 128-bit Wide Panel Flash Memory 128-bit Wide Panel Flash Memory DMT DFM Flash Wrapper CRU PB2 Timer1TImer9 IC1-IC9 SPI1-SPI2 SPI3-SPI6 UART3UART6 PMP 16K 33-bit Wide Data EE Control Flash Memory CTMU plus Temperature Sensor UART1-2 12-bit CDAC1 12-bit CDAC2 12-bit CDAC3 QEI1-QEI6 Comparator 1-5 Op amp 1-4 Note: Not all features are available on all devices. Refer to the family feature tables (Table 1 and Table 2) for the list of available features by device.  2016-2021 Microchip Technology Inc. DS60001402H-page 13 PIC32MK GP/MC Family TABLE 1-1: ADC ANALOG PINOUT I/O DESCRIPTIONS Pin Number Pin Name AN0 100-pin TQFP 64-pin QFN/ TQFP Pin Type Buffer Type 22 13 I Analog AN1 23 14 I Analog AN2 24 15 I Analog AN3 25 16 I Analog Analog AN4 26 17 I AN5 27 18 I Analog Analog AN6 32 21 I AN7 33 22 I Analog Analog AN8 34 23 I AN9 21 12 I Analog Analog AN10 20 11 I AN11 35 24 I Analog Analog AN12 41 27 I AN13 42 28 I Analog Analog AN14 43 29 I AN15 44 30 I Analog Analog AN16 14 8 I AN17 12 6 I Analog Analog AN18 11 5 I AN19 10 4 I Analog AN20 19 — I Analog AN21 18 — I Analog AN22 17 — I Analog AN23 1 — I Analog AN24 51 33 I Analog AN25 72 46 I Analog I Analog AN26 49 31 AN27 76 49 I Analog AN33 28 — I Analog AN34 29 — I Analog I Analog AN35 38 — AN36 39 — I Analog AN37 40 — I Analog AN38 47 — I Analog Analog AN39 48 — I AN40 52 — I Analog Analog AN41 53 — I AN45 61 — I Analog Analog Analog AN46 66 — I AN47 67 — I AN48 AN49 Legend: I Analog 71 45 I Analog 63 39 CMOS = CMOS-compatible input or output ST = Schmitt Trigger input with CMOS levels TTL = Transistor-transistor Logic input buffer DS60001402H-page 14 Description Analog Input Channels Analog = Analog input O = Output PPS = Peripheral Pin Select P = Power I = Input  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family TABLE 1-2: OSCILLATOR PINOUT I/O DESCRIPTIONS Pin Number Pin Type Buffer Type 100-pin TQFP 64-pin QFN/ TQFP CLKI 63 39 I ST CLKO 64 40 O CMOS OSC1 63 39 I OSC2 64 40 O SOSCI 73 47 I SOSCO 74 48 O CMOS REFCLKI PPS PPS I — One of several alternate REFCLKOx user-selectable input clock sources. REFCLKO1 PPS PPS O — Reference Clock Generator Outputs 1-4 REFCLKO2 PPS PPS O — REFCLKO3 PPS PPS O — REFCLKO4 PPS PPS O — Pin Name Legend: Description External clock source input. Always associated with OSC1 pin function. Oscillator crystal output. Connects to crystal or resonator in Crystal Oscillator mode. Optionally functions as CLKO in RC and EC modes. Always associated with OSC2 pin function. ST/CMOS Oscillator crystal input. ST buffer when configured in RC mode; CMOS otherwise. — Oscillator crystal output. Connects to crystal or resonator in Crystal Oscillator mode. Optionally functions as CLKO in RC and EC modes. ST/CMOS 32.768 kHz low-power oscillator crystal input; CMOS otherwise. 32.768 low-power oscillator crystal output. CMOS = CMOS-compatible input or output ST = Schmitt Trigger input with CMOS levels TTL = Transistor-transistor Logic input buffer  2016-2021 Microchip Technology Inc. Analog = Analog input O = Output PPS = Peripheral Pin Select P = Power I = Input DS60001402H-page 15 PIC32MK GP/MC Family TABLE 1-3: CVD, CAPACITIVE TOUCH ASSIST PINOUT I/O DESCRIPTIONS Pin Number Pin Type Buffer Type 21 Input Analog 33 22 Input Analog CVD8 34 23 Input Analog CVD9 21 12 Input Analog CVD10 20 11 Input Analog CVD11 35 24 Input Analog CVD12 41 27 Input Analog CVD13 42 28 Input Analog CVD14 43 29 Input Analog CVD15 44 30 Input Analog CVD16 14 8 Input Analog CVD17 12 6 Input Analog CVD18 11 5 Input Analog CVD19 10 4 Input Analog CVD20 19 — Input Analog CVD21 18 — Input Analog CVD22 17 — Input Analog CVD23 1 — Input Analog CVD24 51 33 Input Analog CVD25 72 46 Input Analog CVD26 49 31 Input Analog CVD27 76 49 Input Analog CVD33 28 — Input Analog CVD34 29 — Input Analog CVD35 38 — Input Analog CVD36 39 — Input Analog CVD37 40 — Input Analog CVD38 47 — Input Analog CVD39 48 — Input Analog CVD40 52 — Input Analog CVD41 53 — Input Analog CVD45 61 — Input Analog CVD46 66 — Input Analog CVD47 67 — Input Analog CVD48 71 45 Input Analog 63 39 Input Analog Pin Name 100-pin TQFP 64-pin QFN/TQFP CVD6 32 CVD7 CVD49 Legend: CMOS = CMOS-compatible input or output ST = Schmitt Trigger input with CMOS levels TTL = Transistor-transistor Logic input buffer DS60001402H-page 16 Description Capacitive Touch Assist Analog = Analog input O = Output PPS = Peripheral Pin Select P = Power I = Input  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family TABLE 1-4: IC1 THROUGH IC16 PINOUT I/O DESCRIPTIONS Pin Number 100-pin TQFP 64-pin QFN/ TQFP Pin Type Buffer Type IC1 PPS PPS I ST IC2 PPS PPS I ST IC3 PPS PPS I ST IC4 PPS PPS I ST IC5 PPS PPS I ST IC6 PPS PPS I ST IC7 PPS PPS I ST IC8 PPS PPS I ST IC9 PPS PPS I ST IC10 PPS PPS I ST IC11 PPS PPS I ST IC12 PPS PPS I ST IC13 PPS PPS I ST IC14 PPS PPS I ST IC15 PPS PPS I ST IC16 PPS PPS I ST Pin Name Description Input Capture Legend: Input Capture Inputs 1-6 CMOS = CMOS-compatible input or output ST = Schmitt Trigger input with CMOS levels TTL = Transistor-transistor Logic input buffer  2016-2021 Microchip Technology Inc. Analog = Analog input O = Output PPS = Peripheral Pin Select P = Power I = Input DS60001402H-page 17 PIC32MK GP/MC Family TABLE 1-5: OC1 THROUGH OC16 PINOUT I/O DESCRIPTIONS Pin Number 100-pin TQFP 64-pin QFN/ TQFP Pin Type Buffer Type OC1 PPS PPS O — OC2 PPS PPS O — OC3 PPS PPS O — OC4 PPS PPS O — OC5 PPS PPS O — OC6 PPS PPS O — OC7 PPS PPS O — OC8 PPS PPS O — OC9 PPS PPS O — OC10 PPS PPS O — Pin Name Description Output Compare Output Compare Outputs 1-16 OC11 PPS PPS O — OC12 PPS PPS O — OC13 PPS PPS O — OC14 PPS PPS O — OC15 PPS PPS O — OC16 PPS PPS O — OCFA PPS PPS I ST Output Compare Fault A Input OCFB PPS PPS I ST Output Compare Fault B Input Legend: CMOS = CMOS-compatible input or output ST = Schmitt Trigger input with CMOS levels TTL = Transistor-transistor Logic input buffer TABLE 1-6: Analog = Analog input O = Output PPS = Peripheral Pin Select P = Power I = Input EXTERNAL INTERRUPTS PINOUT I/O DESCRIPTIONS Pin Number 100-pin TQFP 64-pin QFN/ TQFP Pin Type Buffer Type INT0 72 46 I ST External Interrupt 0 INT1 PPS PPS I ST External Interrupt 1 INT2 PPS PPS I ST External Interrupt 2 INT3 PPS PPS I ST External Interrupt 3 INT4 PPS PPS I ST External Interrupt 4 Pin Name Description External Interrupts Legend: CMOS = CMOS-compatible input or output ST = Schmitt Trigger input with CMOS levels TTL = Transistor-transistor Logic input buffer DS60001402H-page 18 Analog = Analog input O = Output PPS = Peripheral Pin Select P = Power I = Input  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family TABLE 1-7: PORTA THROUGH PORTG PINOUT I/O DESCRIPTIONS Pin Number Pin Name RA0 RA1 RA4 RA7 RA8 RA10 RA11 RA12 RA14 RA15 100-pin TQFP 64-pin QFN/ TQFP Pin Type Buffer Type 22 23 51 3 49 100 21 20 66 67 13 14 33 1 31 64 12 11 — — I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O ST ST ST ST ST ST ST ST ST ST ST RB0 24 15 I/O RB1 25 16 I/O ST ST RB2 26 17 I/O RB3 27 18 I/O ST RB4 50 32 I/O ST RB5 69 43 I/O ST RB6 70 44 I/O ST RB7 72 46 I/O ST ST RB8 74 48 I RB9 76 49 I/O ST 60 I/O ST 61 I/O ST ST RB10 RB11 93 94 RB12 98 62 I/O RB13 99 63 I/O ST RB14 4 2 I/O ST RB15 5 3 I/O ST RC0 RC1 RC2 RC6 RC7 RC8 RC9 RC10 RC11 RC12 RC13 RC15 Legend: Note 1: 2: 3: Description PORTA PORTA is a bidirectional I/O port PORTB PORTB is a bidirectional I/O port PORTC 32 21 I/O ST PORTC is a bidirectional I/O port 33 22 I/O ST 34 23 I/O ST 77 50 I/O ST 78 51 I/O ST 81 52 I/O ST 84 55 I/O ST 71 45 I/O ST 35 24 I/O ST 63 39 I/O ST 73 47 I ST 64 40 I/O ST CMOS = CMOS-compatible input or output Analog = Analog input ST = Schmitt Trigger input with CMOS levels O = Output TTL = Transistor-transistor Logic input buffer PPS = Peripheral Pin Select This function does not exist on 100-pin general purpose devices. This function does not exist on 64-pin general purpose devices. This function does not exist on any general purpose devices.  2016-2021 Microchip Technology Inc. P = Power I = Input DS60001402H-page 19 PIC32MK GP/MC Family TABLE 1-7: PORTA THROUGH PORTG PINOUT I/O DESCRIPTIONS (CONTINUED) Pin Number 100-pin TQFP 64-pin QFN/ TQFP Pin Type Buffer Type RD1 RD2 RD3 RD4 RD5 RD6 RD8(3) RD12 RD13 RD14 RD15 6 7 8 9 82 83 68 79 80 47 48 — — — — 53 54 42 — — — — I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O ST ST ST ST ST ST ST ST ST ST ST RE0 RE1 RE8 RE9 RE12 RE13 RE14 RE15 52 53 18 19 41 42 43 44 — — — — 27 28 29 30 I/O I/O I/O I/O I/O I/O I/O I/O ST ST ST ST ST ST ST ST Pin Name RF0 RF1 RF5 RF6 RF7 RF9 RF10 RF12 RF13 Legend: Note 1: 2: 3: Description PORTD PORTD is a bidirectional I/O port PORTE PORTE is a bidirectional I/O port PORTF 87 58 I/O ST PORTF is a bidirectional I/O port 88 59 I/O ST 61 — I/O ST 91 — I/O ST 92 — I/O ST 28 — I/O ST 29 — I/O ST 40 — I/O ST 39 — I/O ST CMOS = CMOS-compatible input or output Analog = Analog input ST = Schmitt Trigger input with CMOS levels O = Output TTL = Transistor-transistor Logic input buffer PPS = Peripheral Pin Select This function does not exist on 100-pin general purpose devices. This function does not exist on 64-pin general purpose devices. This function does not exist on any general purpose devices. DS60001402H-page 20 P = Power I = Input  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family TABLE 1-7: PORTA THROUGH PORTG PINOUT I/O DESCRIPTIONS (CONTINUED) Pin Number Pin Name RG0 RG1 RG6 RG7 RG8 RG9 RG10 RG11 RG12 RG13 RG14 RG15 Legend: Note 1: 2: 3: 100-pin TQFP 64-pin QFN/ TQFP Pin Type Buffer Type Description PORTG 90 — I/O ST PORTG is a bidirectional I/O port 89 — I/O ST 10 4 I/O ST 11 5 I/O ST 12 6 I/O ST 14 8 I/O ST 17 — I/O ST 38 — I/O ST 96 — I/O ST 97 — I/O ST 95 — I/O ST 1 — I/O ST CMOS = CMOS-compatible input or output Analog = Analog input ST = Schmitt Trigger input with CMOS levels O = Output TTL = Transistor-transistor Logic input buffer PPS = Peripheral Pin Select This function does not exist on 100-pin general purpose devices. This function does not exist on 64-pin general purpose devices. This function does not exist on any general purpose devices.  2016-2021 Microchip Technology Inc. P = Power I = Input DS60001402H-page 21 PIC32MK GP/MC Family TABLE 1-8: UART1 THROUGH UART6 PINOUT I/O DESCRIPTIONS Pin Number 100-pin TQFP 64-pin QFN/ TQFP Pin Type U1RX PPS PPS I ST U1TX PPS PPS O — UART1 Transmit U1CTS PPS PPS I ST UART1 Clear to Send U1RTS PPS PPS O — UART1 Ready to Send Pin Name Buffer Type Description Universal Asynchronous Receiver Transmitter 1 UART1 Receive Universal Asynchronous Receiver Transmitter 2 U2RX PPS PPS I ST U2TX PPS PPS O — UART2 Receive UART2 Transmit U2CTS PPS PPS I ST UART2 Clear To Send U2RTS PPS PPS O — UART2 Ready To Send Universal Asynchronous Receiver Transmitter 3 U3RX PPS PPS I ST U3TX PPS PPS O — UART3 Receive UART3 Transmit U3CTS PPS PPS I ST UART3 Clear to Send U3RTS PPS PPS O — UART3 Ready to Send Universal Asynchronous Receiver Transmitter 4 U4RX PPS PPS I ST U4TX PPS PPS O — UART4 Receive UART4 Transmit U4CTS PPS PPS I ST UART4 Clear to Send U4RTS PPS PPS O — UART4 Ready to Send Universal Asynchronous Receiver Transmitter 5 U5RX PPS PPS I ST U5TX PPS PPS O — UART5 Receive UART5 Transmit U5CTS PPS PPS I ST UART5 Clear to Send U5RTS PPS PPS O — UART5 Ready to Send Universal Asynchronous Receiver Transmitter 6 U6RX PPS PPS I ST U6TX PPS PPS O — UART6 Transmit U6CTS PPS PPS I ST UART6 Clear to Send PPS PPS O — UART6 Ready to Send U6RTS Legend: UART6 Receive CMOS = CMOS-compatible input or output ST = Schmitt Trigger input with CMOS levels TTL = Transistor-transistor Logic input buffer DS60001402H-page 22 Analog = Analog input O = Output PPS = Peripheral Pin Select P = Power I = Input  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family TABLE 1-9: SPI1 THROUGH SPI 6 PINOUT I/O DESCRIPTIONS Pin Number Pin Name 100-pin TQFP 64-pin QFN/ TQFP Pin Type 72 46 I/O Buffer Type Description Serial Peripheral Interface 1 SCK1 ST/CMOS SPI1 Synchronous Serial Clock Input/Output SDI1 PPS PPS I ST SDO1 PPS PPS O CMOS SPI1 Data In SS1 PPS PPS I/O ST/CMOS SPI1 Client Synchronization Or Frame Pulse I/O 70 44 I/O ST/CMOS SPI2 Synchronous Serial Clock Input/output SPI1 Data Out Serial Peripheral Interface 2 SCK2 SDI2 PPS PPS I ST SDO2 PPS PPS O CMOS SPI2 Data In SS2 PPS PPS I/O ST/CMOS SPI2 Client Synchronization Or Frame Pulse I/O SCK3 PPS PPS I/O ST/CMOS SPI3 Synchronous Serial Clock Input/Output SPI2 Data Out Serial Peripheral Interface 3 SDI3 PPS PPS I ST SDO3 PPS PPS O CMOS SPI3 Data In SS3 PPS PPS I/O ST/CMOS SPI3 Client Synchronization Or Frame Pulse I/O SCK4 PPS PPS I/O ST/CMOS SPI4 Synchronous Serial Clock Input/Output SPI3 Data Out Serial Peripheral Interface 4 SDI4 PPS PPS I ST SDO4 PPS PPS O CMOS SPI4 Data In SS4 PPS PPS I/O ST/CMOS SPI4 Client Synchronization Or Frame Pulse I/O SCK5 PPS PPS I/O ST/CMOS SPI5 Synchronous Serial Clock Input/Output SPI4 Data Out Serial Peripheral Interface 5 SDI5 PPS PPS I ST SDO5 PPS PPS O CMOS SPI5 Data In SS5 PPS PPS I/O ST/CMOS SPI5 Client Synchronization Or Frame Pulse I/O SCK6 PPS PPS I/O ST/CMOS SPI6 Synchronous Serial Clock Input/Output SPI5 Data Out Serial Peripheral Interface 6 SDI6 PPS PPS I ST SDO6 PPS PPS O CMOS PPS PPS I/O SS6 Legend: SPI6 Data In SPI6 Data Out ST/CMOS SPI6 Client Synchronization Or Frame Pulse I/O CMOS = CMOS-compatible input or output ST = Schmitt Trigger input with CMOS levels TTL = Transistor-transistor Logic input buffer  2016-2021 Microchip Technology Inc. Analog = Analog input O = Output PPS = Peripheral Pin Select P = Power I = Input DS60001402H-page 23 PIC32MK GP/MC Family TABLE 1-10: TIMER1 THROUGH TIMER9 AND RTCC PINOUT I/O DESCRIPTIONS Pin Number 100-pin TQFP 64-pin QFN/ TQFP Pin Type Buffer Type T1CK 51 33 I ST Timer1 External Clock Input T2CK PPS PPS I ST Timer2 External Clock Input T3CK PPS PPS I ST Timer3 External Clock Input T4CK PPS PPS I ST Timer4 External Clock Input T5CK PPS PPS I ST Timer5 External Clock Input T6CK PPS PPS I ST Timer6 External Clock Input T7CK PPS PPS I ST Timer7 External Clock Input T8CK PPS PPS I ST Timer8 External Clock Input T9CK PPS PPS I ST Timer9 External Clock Input Pin Name Description Timer1 through Timer9 Real-Time Clock and Calendar RTCC Legend: 27 18 O — Real-Time Clock Alarm/Seconds Output (not in VBAT power domain, requires VDD CMOS = CMOS-compatible input or output ST = Schmitt Trigger input with CMOS levels TTL = Transistor-transistor Logic input buffer DS60001402H-page 24 Analog = Analog input O = Output PPS = Peripheral Pin Select P = Power I = Input  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family TABLE 1-11: Pin Name PMP PINOUT I/O DESCRIPTIONS Pin Number Pin Type Buffer Type Description 100-pin TQFP 64-pin QFN/ TQFP PMA0 44 30 O PMA1 43 29 O TTL/CMOS Parallel Host Port Address (Demultiplexed Host mode) or Address/Data (Multiplexed Host modes) TTL/CMOS PMA2 14 8 O TTL/CMOS PMA3 12 6 O TTL/CMOS PMA4 11 5 O TTL/CMOS PMA5 10 4 O TTL/CMOS PMA6 29 16 O TTL/CMOS PMA7 28 22 O TTL/CMOS PMA8 50 32 O TTL/CMOS PMA9 49 31 O TTL/CMOS PMA10 42 28 O TTL/CMOS PMA11 41 27 O TTL/CMOS PMA12 35 24 O TTL/CMOS PMA13 34 23 O TTL/CMOS PMA14 71 45 O TTL/CMOS PMA15 70 44 O TTL/CMOS PMA16 77 — O TTL/CMOS PMA17 78 — O TTL/CMOS PMA18 91 — O TTL/CMOS PMA19 92 — O TTL/CMOS PMA20 95 — O TTL/CMOS PMA21 96 — O TTL/CMOS PMA22 97 — O TTL/CMOS PMA23 1 — O TTL/CMOS PMCS1 71 45 O TTL/CMOS Parallel Host Port Chip Select 1 for PMA(13:0) PMCS2 70 44 O TTL/CMOS Parallel Host Port Chip Select 2 for PMA(14:0) PMPRD 82 53 O TTL/CMOS Parallel Host Port Read Strobe PMWR 81 52 O TTL/CMOS Parallel Host Port Write Strobe PMCS1A 97 — O TTL/CMOS Parallel Host Port Chip Select 1 for PMA(21:0) PMCS2A Legend: 1 — O TTL/CMOS Parallel Host Port Chip Select 2 for PMA(22:0) CMOS = CMOS-compatible input or output Analog = Analog input P = Power ST = Schmitt Trigger input with CMOS levels O = Output I = Input TTL = Transistor-transistor Logic input buffer PPS = Peripheral Pin Select  2016-2021 Microchip Technology Inc. DS60001402H-page 25 PIC32MK GP/MC Family TABLE 1-11: Pin Name PMD0 PMP PINOUT I/O DESCRIPTIONS (CONTINUED) Pin Number Pin Type Buffer Type Description Parallel Host Port Data (Demultiplexed Host mode) or Address/Data (Multiplexed Host modes) 100-pin TQFP 64-pin QFN/ TQFP 93 60 I/O TTL/ST TTL/ST PMD1 94 61 I/O PMD2 98 62 I/O TTL/ST PMD3 99 63 I/O TTL/ST PMD4 100 64 I/O TTL/ST 1 I/O TTL/ST 2 I/O TTL/ST PMD5 PMD6 3 4 PMD7 5 3 I/O TTL/ST PMD8 90 — I/O TTL/ST — I/O TTL/ST TTL/ST PMD9 89 PMD10 88 — I/O PMD11 87 — I/O TTL/ST PMD12 79 — I/O TTL/ST — I/O TTL/ST TTL/ST PMD13 80 PMD14 83 — I/O PMD15 84 43 — 29 I/O PMALH PMALL 44 30 O Legend: O TTL/ST TTL/CMOS Parallel Host Port Address Latch Enable High Byte (Multiplexed Host modes) — CMOS = CMOS-compatible input or output ST = Schmitt Trigger input with CMOS levels TTL = Transistor-transistor Logic input buffer DS60001402H-page 26 Parallel Host Port Address Latch Enable Low Byte (Multiplexed Host modes) Analog = Analog input O = Output PPS = Peripheral Pin Select P = Power I = Input  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family TABLE 1-12: COMPARATOR 1 THROUGH COMPARATOR 5 PINOUT I/O DESCRIPTIONS Pin Number 100-pin TQFP 64-pin QFN/ TQFP Pin Type Buffer Type C1IN1+ 26 17 I Analog Comparator 1 Positive Input C1IN1- 27 18 I Analog Comparator 1 Negative Input 1-4 C1IN2- 35 24 I Analog C1IN3- 26 17 I Analog C1IN4- 25 16 I Analog C1OUT PPS PPS O — C2IN1+ 23 14 I Analog Comparator 2 Positive Input C2IN1- 24 15 I Analog Comparator 2 Negative Input 1-4 C2IN2- 41 27 I Analog C2IN3- 26 17 I Analog C2IN4- 22 13 I Analog C2OUT PPS PPS O — C3IN1+ 34 23 I Analog Comparator 3 Positive Input C3IN1- 33 22 I Analog Comparator 3 Negative Input 1-4 C3IN2- 42 28 I Analog C3IN3- 34 23 I Analog C3IN4- 32 21 I Analog C3OUT PPS PPS O — C4IN1+ 32 21 I Analog Comparator 4 Positive Input C4IN1- 33 22 I Analog Comparator 4 Negative Input 1-4 C4IN2- 25 16 I Analog C4IN3- 22 13 I Analog C4IN4- 32 21 I Analog C4OUT PPS PPS O — C5IN1+ 51 33 I Analog Comparator 5 Positive Input C5IN1- 76 49 I Analog Comparator 5 Negative Input 1-4 C5IN2- 41 27 I Analog C5IN3- 51 33 I Analog C5IN4- 72 46 I Analog C1OUT PPS PPS O — Pin Name Description Comparator 1 Comparator 1 Output Comparator 2 Comparator 2 Output Comparator 3 Comparator 3 Output Comparator 4 Comparator 4 Output Comparator 5 Legend: Comparator 5 Output CMOS = CMOS-compatible input or output ST = Schmitt Trigger input with CMOS levels TTL = Transistor-transistor Logic input buffer  2016-2021 Microchip Technology Inc. Analog = Analog input O = Output PPS = Peripheral Pin Select P = Power I = Input DS60001402H-page 27 PIC32MK GP/MC Family TABLE 1-13: OP AMP 1 THROUGH OP AMP 3, AND OP AMP 5 PINOUT I/O DESCRIPTIONS Pin Number Pin Name 100-pin TQFP 64-pin QFN/ TQFP Pin Type Buffer Type Description Op amp 1 OA1OUT 25 16 O Analog Op amp 1 Output OA1IN+ 26 17 I Analog Op amp 1 Positive Input OA1IN- 27 18 I Analog Op amp 1 Negative Input OA2OUT 22 13 O Analog Op amp 2 Output OA2IN+ 23 14 I Analog Op amp 2 Positive Input OA2IN- 24 15 I Analog Op amp 2 Negative Input OA3OUT 32 21 O Analog Op amp 3 Output OA3IN+ 34 23 I Analog Op amp 3 Positive Input OA3IN- 33 22 I Analog Op amp 3 Negative Input OA5OUT 72 46 O Analog Op amp 5 Output OA5IN+ 51 33 I Analog Op amp 5 Positive Input Op amp 2 Op amp 3 Op amp 5 OA5INLegend: 76 49 I Analog Op amp 5 Negative Input CMOS = CMOS-compatible input or output Analog = Analog input ST = Schmitt Trigger input with CMOS levels O = Output TTL = Transistor-transistor Logic input buffer PPS = Peripheral Pin Select TABLE 1-14: P = Power I = Input CAN1 THROUGH CAN4 PINOUT I/O DESCRIPTIONS Pin Number Pin Name (see Note 1) 100-pin TQFP 64-pin QFN/ TQFP Pin Type Buffer Type Description C1TX PPS PPS O — CAN1 Bus Transmit Pin C1RX PPS PPS I ST CAN1 Bus Receive Pin C2TX PPS PPS O — CAN2 Bus Transmit Pin C2RX PPS PPS I ST CAN2 Bus Receive Pin C3TX PPS PPS O — CAN3 Bus Transmit Pin C3RX PPS PPS I ST CAN3 Bus Receive Pin C4TX PPS PPS O — CAN4 Bus Transmit Pin C4RX PPS PPS I ST CAN4 Bus Receive Pin Legend: CMOS = CMOS-compatible input or output ST = Schmitt Trigger input with CMOS levels TTL = Transistor-transistor Logic input buffer Note 1: This function does not exist on PIC32MKXXXGPDXXX devices. DS60001402H-page 28 Analog = Analog input O = Output PPS = Peripheral Pin Select P = Power I = Input  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family TABLE 1-15: USB1 AND USB2 PINOUT I/O DESCRIPTIONS Pin Number 100-pin TQFP 64-pin QFN/ TQFP Pin Type VUSB3V3 55 35 P — VBUS1 54 34 I Analog USB1 Bus Power Monitor (Tied to VSS if USB1 not used.) VBUSON1 4 2 O CMOS USB1 VBUS Power Control Output VBUSON2 10 — O CMOS USB2 VBUS Power Control Output D1+ 57 37 I/O Analog USB1 D+ (Connect through 10K to VSS if USB1 not used.) USB1 D-(Connect through 10K to VSS if USB1 not used.) Pin Name Buffer Type Description USB internal transceiver supply. This pin should be connected to VDD. D1- 56 36 I/O Analog USBID1 69 43 I ST VBUS2 58 — I Analog USB2 Bus Power Monitor (Tied to VSS if USB2 not used.) D2+ 60 — I/O Analog USB2 D+ (Connect through 10K to VSS if USB2 not used.) D2- 59 — I/O Analog USB2 D- (Connect through 10K to VSS if USB2 not used.) USBID2 77 — I ST Legend: USB1 OTG ID Detect USB2 OTG ID detect CMOS = CMOS-compatible input or output ST = Schmitt Trigger input with CMOS levels TTL = Transistor-transistor Logic input buffer TABLE 1-16: Analog = Analog input O = Output PPS = Peripheral Pin Select P = Power I = Input CTMU PINOUT I/O DESCRIPTIONS Pin Number 100-pin TQFP 64-pin QFN/ TQFP Pin Type Buffer Type CTED1 25 16 I ST CTMU External Edge Input 1 CTED2 24 15 I ST CTMU External Edge Input 2 CTCMP 27 18 I Analog CTMU external capacitor input for pulse generation CTPLS PPS PPS O CMOS CTMU Pulse Generator Output Pin Name Legend: Description CMOS = CMOS-compatible input or output ST = Schmitt Trigger input with CMOS levels TTL = Transistor-transistor Logic input buffer TABLE 1-17: Analog = Analog input O = Output PPS = Peripheral Pin Select P = Power I = Input CDAC1 THROUGH CDAC3 PINOUT I/O DESCRIPTIONS Pin Number 100-pin TQFP 64-pin QFN/ TQFP Pin Type Buffer Type CDAC1 51 33 O Analog 12-bit CDAC1 output CDAC2 71 45 O Analog 12-bit CDAC2 output CDAC3 49 31 O Analog 12-bit CDAC3 output Pin Name Legend: Description CMOS = CMOS-compatible input or output ST = Schmitt Trigger input with CMOS levels TTL = Transistor-transistor Logic input buffer  2016-2021 Microchip Technology Inc. Analog = Analog input O = Output PPS = Peripheral Pin Select P = Power I = Input DS60001402H-page 29 PIC32MK GP/MC Family TABLE 1-18: MCPWM1 THROUGH MCPWM12 PINOUT I/O DESCRIPTIONS (MOTOR CONTROL DEVICES ONLY) Pin Number Pin Name PWM1H 100- 64-Pin Pin Buffer QFN/ Type Type Pin TQFP TQFP 4 2 O Description CMOS MCPWM1 High Side Output PWM1L 5 3 O CMOS MCPWM1 Low Side Output (Only if PWMAPIN1 (CFGCON) = 0, default) PWM2H 98 62 O CMOS MCPWM2 High Side Output PWM2L 99 63 O CMOS MCPWM2 Low Side Output (Only if PWMAPIN2 (CFGCON) = 0, default) PWM3H 93 60 O CMOS MCPWM3 High Side Output PWM3L 94 61 O CMOS MCPWM3 Low Side Output (Only if PWMAPIN3 (CFGCON) = 0, default) PWM4H 100 64 O CMOS MCPWM4 High Side Output PWM4L 3 1 O CMOS MCPWM4 Low Side Output (Only if PWMAPIN4 (CFGCON) = 0, default) PWM5H 7 52 O CMOS MCPWM5 High Side Output PWM5L 6 55 O CMOS MCPWM5 Low Side Output (Only if PWMAPIN5 (CFGCON) = 0, default) PWM6H 9 50 O CMOS MCPWM6 High Side Output PWM6L 8 51 O CMOS MCPWM6 Low Side Output (Only if PWMAPIN6 (CFGCON) = 0, default) PWM7H 5 3 O CMOS If PWMAPIN1 (CFGCON) = 1), PWM1L is replaced by PWM7H. PWM8H 99 63 O CMOS If PWMAPIN2 (CFGCON) = 1), PWM2L is replaced by PWM8H. PWM9H 94 61 O CMOS If PWMAPIN3 (CFGCON) = 1), PWM3L is replaced by PWM9H. PWM10H 3 1 O CMOS If PWMAPIN4 (CFGCON) = 1), PWM4L is replaced by PWM10H. PWM11H 87 55 O CMOS MCPWM11 High Side Output 6 58 O CMOS If PWMAPIN5 (CFGCON) = 1), PWM5L is replaced by PWM11H. PWM11L 88 59 O CMOS MCPWM11 Low Side Output PWM12H 82 51 O CMOS MCPWM12 High Side Output 8 55 O CMOS If PWMAPIN6 (CFGCON) = 1), PWM6L is replaced by PWM12H. 83 54 O CMOS MCPWM12 Low Side Output PWM12L Legend: CMOS = CMOS compatible input or output ST = Schmitt Trigger input with CMOS levels TTL = Transistor-Transistor Logic input buffer DS60001402H-page 30 Analog = Analog input O = Output PPS = Peripheral Pin Select P = Power I = Input  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family TABLE 1-19: MCPWM FAULT, CURRENT-LIMIT, AND DEAD TIME COMPENSATION PINOUT I/O DESCRIPTIONS (MOTOR CONTROL DEVICES ONLY) Pin Number Pin Name 100-Pin TQFP 64-Pin QFN/ TQFP Pin Type Buffer Type FLT1 PPS PPS I ST FLT2 PPS PPS I ST FLT3 34 23 I ST FLT4 35 24 I ST FLT5 41 27 I ST FLT6 42 28 I ST FLT7 43 29 I ST FLT8 44 30 I ST FLT15 50 32 I ST Legend: CMOS = CMOS compatible input or output ST = Schmitt Trigger input with CMOS levels TTL = Transistor-Transistor Logic input buffer  2016-2021 Microchip Technology Inc. Description PWM Fault Input Control Analog = Analog input O = Output PPS = Peripheral Pin Select P = Power I = Input DS60001402H-page 31 PIC32MK GP/MC Family TABLE 1-20: QEI1 THROUGH QEI6 PINOUT I/O DESCRIPTIONS (MOTOR CONTROL DEVICES ONLY) Pin Number Pin Name QEA1 QEB1 INDX1 HOME1 QEICMP1 QEA2 QEB2 INDX2 HOME2 QEICMP2 QEA3 QEB3 INDX3 HOME3 QEICMP3 QEA4 QEB4 INDX4 HOME4 QEICMP4 QEA5 QEB5 INDX5 HOME5 QEICMP5 QEA6 QEB6 INDX6 HOME6 QEICMP6 Legend: 100-Pin TQFP 64-Pin QFN/ TQFP Pin Type Buffer Type Description Quadrature Encoder Interface 1 QEI1 Phase A Input in QEI mode QEI1 Phase B Input in QEI Mode. Auxiliary timer external clock/gate input in Timer mode. PPS PPS I ST QEI1 Index Pulse Input PPS PPS I ST QEI1 Position Counter Input Capture Trigger Control PPS PPS O CMOS QEI1 Capture Compare Match Output Quadrature Encoder Interface 2 PPS PPS I ST QEI2 Phase A Input in QEI mode PPS PPS I ST QEI2 Phase B Input in QEI Mode. Auxiliary timer external clock/gate input in Timer mode. PPS PPS I ST QEI2 Index Pulse Input PPS PPS I ST QEI2 Position Counter Input Capture Trigger Control PPS PPS O CMOS QEI2 Capture Compare Match Output Quadrature Encoder Interface 3 PPS PPS I ST QEI3 Phase A Input in QEI mode PPS PPS I ST QEI3 Phase B Input in QEI Mode. Auxiliary timer external clock/gate input in Timer mode. PPS PPS I ST QEI3 Index Pulse Input PPS PPS I ST QEI3 Position Counter Input Capture Trigger Control PPS PPS O CMOS QEI3 Capture Compare Match Output Quadrature Encoder Interface 4 PPS PPS I ST QEI4 Phase A Input in QEI mode PPS PPS I ST QEI4 Phase B Input in QEI Mode. Auxiliary timer external clock/gate input in Timer mode. PPS PPS I ST QEI4 Index Pulse Input PPS PPS I ST QEI4 Position Counter Input Capture Trigger Control PPS PPS O CMOS QEI4 Capture Compare Match Output Quadrature Encoder Interface 5 PPS PPS I ST QAI5 Phase A Input in QEI mode PPS PPS I ST QAI5 Phase B Input in QEI Mode. Auxiliary timer external clock/gate input in Timer mode. PPS PPS I ST QAI5 Index Pulse Input PPS PPS I ST QAI5 Position Counter Input Capture Trigger Control PPS PPS O CMOS QAI5 Capture Compare Match Output Quadrature Encoder Interface 6 PPS PPS I ST QEI6 Phase A Input in QEI mode PPS PPS I ST QEI6 Phase B Input in QEI Mode. Auxiliary timer external clock/gate input in Timer mode. PPS PPS I ST QEI6 Index Pulse Input PPS PPS I ST QEI6 Position Counter Input Capture Trigger Control PPS PPS O CMOS QEI6 Capture Compare Match Output CMOS = CMOS compatible input or output Analog = Analog input P = Power ST = Schmitt Trigger input with CMOS levels O = Output I = Input TTL = Transistor-Transistor Logic input buffer PPS = Peripheral Pin Select PPS PPS DS60001402H-page 32 PPS PPS I I ST ST  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family TABLE 1-21: POWER, GROUND, AND VOLTAGE REFERENCE PINOUT I/O DESCRIPTIONS Pin Number 100-pin TQFP 64-pin QFN/ TQFP Pin Type Buffer Type AVDD 30 19 P P AVSS 31 20 P P P — P — P P Pin Name VDD VSS VBAT(1) 2, 16, 37, 10, 26, 46, 62, 86 38, 57 15, 36, 9, 25, 41, 56 45, 65, 75, 85 68 42 Description Power and Ground Positive supply for analog modules. This pin must be connected at all times. Ground reference for analog modules. This pin must be connected at all times. Positive supply for peripheral logic and I/O pins. This pin must be connected at all times. Ground reference for logic, I/O pins, and USB. This pin must be connected at all times. VREF+ VREFLegend: Battery backup for selected peripherals; otherwise connect to VDD. Voltage Reference 29 16 I Analog Analog Voltage Reference (High) Input 28 15 I Analog Analog Voltage Reference (Low) Input CMOS = CMOS-compatible input or output Analog = Analog input P = Power ST = Schmitt Trigger input with CMOS levels O = Output I = Input TTL = Transistor-transistor Logic input buffer PPS = Peripheral Pin Select Note VBAT functionality is compromised, see errata for additional information. This pin should be connected to VDD. 1:  2016-2021 Microchip Technology Inc. DS60001402H-page 33 PIC32MK GP/MC Family TABLE 1-22: JTAG, TRACE, AND PROGRAMMING/DEBUGGING PINOUT I/O DESCRIPTIONS Pin Number Pin Name 100-pin TQFP 64-pin QFN/ TQFP Pin Type Buffer Type 3 1 I ST Description JTAG TCK JTAG Test Clock Input Pin TDI 49 31 I ST JTAG Test Data Input Pin TDO 100 64 O — JTAG Test Data Output Pin TMS 76 49 I ST JTAG Test Mode Select Pin CMOS Trace Clock Trace Data bits 0-3 Trace support is available through the MPLAB® REAL ICE™ In-circuit Emulator. Trace TRCLK 91 50 O TRD0 97 54 O CMOS TRD1 96 53 O CMOS TRD2 95 52 O CMOS TRD3 92 51 O CMOS 18 I/O ST Data I/O pin for Programming/Debugging Communication Channel 1 ST Clock input pin for Programming/Debugging Communication Channel 1 Programming/Debugging PGED1 27 PGEC1 26 17 I PGED2 69 43 I/O ST Data I/O pin for Programming/Debugging Communication Channel 2 PGEC2 70 44 I ST Clock input pin for Programming/Debugging Communication Channel 2 PGED3 24 15 I/O ST Data I/O pin for Programming/Debugging Communication Channel 3 16 7 I ST Clock input pin for Programming/Debugging Communication Channel 3 I ST Host Clear (Reset) input. This pin is an active-low Reset to the device. PGEC3 MCLR Legend: 25 13 CMOS = CMOS-compatible input or output ST = Schmitt Trigger input with CMOS levels TTL = Transistor-transistor Logic input buffer DS60001402H-page 34 Analog = Analog input O = Output PPS = Peripheral Pin Select P = Power I = Input  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family NOTES:  2016-2021 Microchip Technology Inc. DS60001402H-page 35 PIC32MK GP/MC Family 2.0 Note: 2.1 GUIDELINES FOR GETTING STARTED WITH 32-BIT MCUS This data sheet summarizes the features of the PIC32MK GP/MC family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to the documents listed in the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/ pic32). Basic Connection Requirements Getting started with the PIC32MK GP/MC family of 32bit Microcontrollers (MCUs) requires attention to a minimal set of device pin connections before proceeding with development. The following is a list of pin names, which must always be connected: • All VDD and VSS pins (see 2.2 “Decoupling Capacitors”) • All AVDD and AVSS pins, even if the ADC module is not used (see 2.2 “Decoupling Capacitors”) • MCLR pin (see 2.3 “Host Clear (MCLR) Pin”) • PGECx/PGEDx pins, used for In-Circuit Serial Programming™ (ICSP™) and debugging purposes (see 2.4 “ICSP Pins”) • OSC1 and OSC2 pins, when external oscillator source is used (see 2.7 “External Oscillator Pins”) The following pins may be required: VREF+/VREF- pins, used when external voltage reference for the ADC module is implemented. Note: The AVDD and AVSS pins must be connected, regardless of ADC use and the ADC voltage reference source. DS60001402H-page 36 2.2 Decoupling Capacitors The use of decoupling capacitors on power supply pins, such as VDD, VSS, AVDD and AVSS is required. See Figure 2-1. Consider the following criteria when using decoupling capacitors: • Value and type of capacitor: A value of 0.1 µF (100 nF), 10-20V is recommended. The capacitor should be a low Equivalent Series Resistance (low-ESR) capacitor and have resonance frequency in the range of 20 MHz and higher. It is further recommended that ceramic capacitors be used. • Placement on the printed circuit board: The decoupling capacitors should be placed as close to the pins as possible. It is recommended that the capacitors be placed on the same side of the board as the device. If space is constricted, the capacitor can be placed on another layer on the PCB using a via; however, ensure that the trace length from the pin to the capacitor is within onequarter inch (6 mm) in length. • Handling high frequency noise: If the board is experiencing high frequency noise, upward of tens of MHz, add a second ceramic-type capacitor in parallel to the above described decoupling capacitor. The value of the second capacitor can be in the range of 0.01 µF to 0.001 µF. Place this second capacitor next to the primary decoupling capacitor. In high-speed circuit designs, consider implementing a decade pair of capacitances as close to the power and ground pins as possible. For example, 0.1 µF in parallel with 0.001 µF. • Maximizing performance: On the board layout from the power supply circuit, run the power and return traces to the decoupling capacitors first, and then to the device pins. This ensures that the decoupling capacitors are first in the power chain. Equally important is to keep the trace length between the capacitor and the power pins to a minimum thereby reducing PCB track inductance.  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family FIGURE 2-1: RECOMMENDED MINIMUM CONNECTION 0.1 µF Ceramic VDD 10K R1 MCLR C 0.1 µF VUSB3V3(1) PIC32MK VDD VSS Connect(2) Note VDD AVSS AVDD VDD VSS 0.1 µF Ceramic 0.1 µF Ceramic VSS 1K 0.1 µF Ceramic VSS VDD 0.1 µF Ceramic 2.3 Host Clear (MCLR) Pin The MCLR functions: pin provides specific device • Device Reset • Device programming and debugging Pulling The MCLR pin low generates a device Reset. Figure 2-2 illustrates a typical MCLR circuit. During device programming and debugging, the resistance and capacitance that can be added to the pin must be considered. Device programmers and debuggers drive the MCLR pin. Consequently, specific voltage levels (VIH and VIL) and fast signal transitions must not be adversely affected. Therefore, specific values of R and C will need to be adjusted based on the application and PCB requirements. For example, as illustrated in Figure 2-2, it is recommended that the capacitor C, be isolated from the MCLR pin during programming and debugging operations. L1(2) Place the components illustrated in Figure 2-2 within one-quarter inch (6 mm) from the MCLR pin. 1: This pin must be connected to VDD, regardless of whether the USB module is or is not used. FIGURE 2-2: 2: As an option, instead of a hard-wired connection, an inductor (L1) can be substituted between VDD and AVDD to improve ADC noise rejection. The inductor impedance should be less than 3 and the inductor capacity greater than 10 mA. EXAMPLE OF MCLR PIN CONNECTIONS VDD R 10k R1(1) Where: (i.e., ADC conversion rate/2) 2 1 L =  ----------------------   2f C  3: Aluminum or electrolytic capacitors should not be used. ESR  3 from -40ºC to 125ºC @ SYSCLK frequency (i.e., MIPS). 0.1 µF(2) ICSP™ F CNV f = -------------2 1 f = ---------------------- 2 LC  2.2.1 two Note 1 5 4 2 3 6  2016-2021 Microchip Technology Inc. 1 k MCLR PIC32 PGECx(3) PGEDx(3) 1: 470 R1  1 K will limit any current flowing into MCLR from the external capacitor C, in the event of MCLR pin breakdown, due to Electrostatic Discharge (ESD) or Electrical Overstress (EOS). Ensure that the MCLR pin VIH and VIL specifications are met without interfering with the Debug/Programmer tools. 2: The capacitor can be sized to prevent unintentional Resets from brief glitches or to extend the device Reset period during POR. 3: No pull-ups or bypass capacitors are allowed on active debug/program PGECx/PGEDx pins. BULK CAPACITORS The use of a bulk capacitor is recommended to improve power supply stability. Typical values range from 4.7 µF to 47 µF. This capacitor should be located as close to the device as possible. VDD VSS NC C DS60001402H-page 37 PIC32MK GP/MC Family 2.4 ICSP Pins The PGECx and PGEDx pins are used for ICSP and debugging purposes. It is recommended to keep the trace length between the ICSP connector and the ICSP pins on the device as short as possible. If the ICSP connector is expected to experience an ESD event, a series resistor is recommended, with the value in the range of a few tens of Ohms, not to exceed 100 Ohms. Pull-up resistors, series diodes and capacitors on the PGECx and PGEDx pins are not recommended as they will interfere with the programmer/debugger communications to the device. If such discrete components are an application requirement, they should be removed from the circuit during programming and debugging. Alternatively, refer to the AC/DC characteristics and timing requirements information in the respective device Flash programming specification for information on capacitive loading limits and pin input voltage high (VIH) and input low (VIL) requirements. Ensure that the “Communication Channel Select” (i.e., PGECx/PGEDx pins) programmed into the device matches the physical connections for the ICSP to MPLAB® ICD 3 or MPLAB REAL ICE™. For additional information on ICD 3 and REAL ICE connection requirements, refer to the following documents that are available on the Microchip web site. • “Using MPLAB® ICD 3” (poster) DS50001765 • “MPLAB® ICD 3 Design Advisory” DS50001764 • “MPLAB® REAL ICE™ In-Circuit Debugger User’s Guide” DS50001616 • “Using MPLAB® REAL ICE™ Emulator” (poster) DS50001749 2.5 2.6 Trace When present on select pin counts, the trace pins can be connected to a hardware trace-enabled programmer to provide a compressed real-time instruction trace. When used for trace, the TRD3, TRD2, TRD1, TRD0 and TRCLK pins should be dedicated for this use. The trace hardware requires a 22 Ohm series resistor between the trace pins and the trace connector. 2.7 External Oscillator Pins Many MCUs have options for at least two oscillators: a high-frequency primary oscillator and a low-frequency secondary oscillator (refer to Section 9.0 “Oscillator Configuration” for details). The oscillator circuit should be placed on the same side of the board as the device. Also, place the oscillator circuit close to the respective oscillator pins, not exceeding one-half inch (12 mm) distance between them. The load capacitors should be placed next to the oscillator itself, on the same side of the board. Use a grounded copper pour around the oscillator circuit to isolate them from surrounding circuits. The grounded copper pour should be routed directly to the MCU ground. Do not run any signal traces or power traces inside the ground pour. Also, if using a two-sided board, avoid any traces on the other side of the board where the crystal is placed. A suggested layout is illustrated in Figure 2-3. FIGURE 2-3: SUGGESTED OSCILLATOR CIRCUIT PLACEMENT JTAG The TMS, TDO, TDI and TCK pins are used for testing and debugging according to the Joint Test Action Group (JTAG) standard. It is recommended to keep the trace length between the JTAG connector and the JTAG pins on the device as short as possible. If the JTAG connector is expected to experience an ESD event, a series resistor is recommended, with the value in the range of a few tens of Ohms, not to exceed 100 Ohms. Oscillator Secondary Guard Trace Guard Ring Main Oscillator Pull-up resistors, series diodes and capacitors on the TMS, TDO, TDI and TCK pins are not recommended as they will interfere with the programmer/debugger communications to the device. If such discrete components are an application requirement, they should be removed from the circuit during programming and debugging. Alternatively, refer to the AC/DC characteristics and timing requirements information in the respective device Flash programming specification for information on capacitive loading limits and pin input voltage high (VIH) and input low (VIL) requirements. DS60001402H-page 38  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family CRYSTAL OSCILLATOR DESIGN CONSIDERATION The following example assumptions are used to calculate the Primary Oscillator loading capacitor values: • • • • CIN = PIC32_OSC2_Pin Capacitance = 4 pF COUT = PIC32_OSC1_Pin Capacitance = 4 pF PCB stray capacitance (i.e., 12 mm length) = 2.5 pF C1 and C2 = the loading capacitors to use on 2.7.1.1 Additional Microchip References • AN588 “PICmicro® Microcontroller Oscillator Design Guide” • AN826 “Crystal Oscillator Basics and Crystal Selection for rfPIC™ and PICmicro® Devices” • AN849 “Basic PICmicro® Oscillator Design” FIGURE 2-4: your crystal circuit design to guarantee that the effective capacitance as seen by the crystal in circuit meets the crystal manufacturer specification PRIMARY CRYSTAL OSCILLATOR CIRCUIT RECOMMENDATIONS Circuit A C1 MFG Crystal Data Sheet CLOAD spec: CLOAD = {( [Cin + C1] * [COUT + C2] ) / [Cin + C1 + C2 + COUT] } + oscillator PCB stray capacitance EXAMPLE 2-1: CRYSTAL LOAD CAPACITOR CALCULATION Rs OSC2 Crystal manufacturer data sheet spec example: CLOAD = 15 pF C2 2.7.1 OSC1 Circuit B Not Recommended Therefore: MFG CLOAD = {( [CIN + C1] * [COUT + C2] ) / [CIN + C1 + C2 + COUT] } + estimated oscillator PCB stray capacitance Assuming C1 = C2 and PIC32 Cin = Cout, the formula can be further simplified and restated to solve for C1 and C2 by: C1 = C2 = ((2 * MFG Cload spec) - Cin - (2 * PCB capacitance)) = ((2 * 15) - 4 - (2 * 2.5 pF)) RSHUNT Rs = (30 - 4 - 5) = 21 pF Therefore: C1 = C2 = 21 pF is the correct loading capacitors to use on your crystal circuit design to guarantee that the effective capacitance as seen by the crystal in circuit in this example is 15 pF to meet the crystal manufacturer specification. OSC2 Circuit C Not Recommended Tips to increase oscillator gain, (i.e., to increase peakto-peak oscillator signal): • Select an crystal oscillator with a lower XTAL manufacturing “ESR” rating. • Add a parallel resistor across the crystal. The greater the resistor value the greater the gain. • C1 and C2 values also affect the gain of the oscillator. The lower the values, the higher the gain. • Likewise, C2/C1 ratio also affects gain. To increase the gain, make C1 slightly smaller than C2, which will also help start-up performance. Note: Do not add excessive gain such that the oscillator signal is clipped, flat on top of the sine wave. If so, you need to reduce the gain or add a series resistor, RS, as shown in circuit “A” in Figure 2-4. Failure to do so will stress and age the crystal, which can result in an early failure. When measuring the oscillator signal you must use an active-powered scope probe with  1 pF or the scope probe itself will unduly change the gain and peak-to-peak levels.  2016-2021 Microchip Technology Inc. OSC1 Rs RSHUNT OSC2 Note: OSC1 Refer to the “PIC32MK GP/MC Family Silicon Errata and Data Sheet Clarification” (DS80000737B), which is available for download from the Microchip web site (www.microchip.com) for the recommended Rs values versus crystal/ frequency. DS60001402H-page 39 PIC32MK GP/MC Family 2.8 Unused I/Os 2.9 Unused I/O pins should not be allowed to float as inputs. They can be configured as outputs and driven to a logic-low state. 2.9.1 Note: NON-5V TOLERANT INPUT PINS A quick review of the absolute maximum rating section in 36.0 “Electrical Characteristics” will indicate that the voltage on any non-5v tolerant pin may not exceed VDD + 0.3V unless the input current is limited to meet the respective injection current specifications defined by parameters DI60a, DI60b, and DI60c in Table 3610: “DC Characteristics: I/O Pin Input Injection current Specifications”. Figure 2-5 shows an example of a remote circuit using an independent power source, which is powered while connected to a PIC32 non-5V tolerant circuit that is not powered. Alternatively, inputs can be reserved by connecting the pin to VSS through a 1k resistor and configuring the pin as an input. FIGURE 2-5: Considerations When Interfacing to Remotely Powered Circuits PIC32 NON-5V TOLERANT CIRCUIT EXAMPLE When VDD power is OFF. PIC32 Non-5V Tolerant Pin Architecture On/Off VDD ANSEL I/O IN AN2/RB0 I/O OUT Remote GND TRIS CPU LOGIC Remote 0.3V dVIH d 3.6V PIC32 POWER SUPPLY Current Flow VSS DS60001402H-page 40  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family FIGURE 2-6: Opto Coupling Analog/Digital Switch EXAMPLES OF DIGITAL/ ANALOG ISOLATORS WITH OPTIONAL LEVEL TRANSLATION Capacitive Coupling TABLE 2-1: Inductive Coupling Without proper signal isolation, on non-5V tolerant pins, the remote signal can actually power the PIC32 device through the high side ESD protection diodes. Besides violating the absolute maximum rating specification when VDD of the PIC32 device is restored and ramping up or ramping down, it can also negatively affect the internal Power-on Reset (POR) and Brown-out Reset (BOR) circuits, which can lead to improper initialization of internal PIC32 logic circuits. In these cases, it is recommended to implement digital or analog signal isolation as depicted in Figure 2-6, as appropriate. This is indicative of all industry microcontrollers and not just Microchip products. ADuM7241 / 40 ARZ (1 Mbps) X — — — ADuM7241 / 40 CRZ (25 Mbps) X — — — ISO721 — X — — LTV-829S (2 Channel) — — X — LTV-849S (4 Channel) — — X — FSA266 / NC7WB66 — — — X Example Digital/Analog Signal Isolation Circuits EXAMPLE DIGITAL/ANALOG SIGNAL ISOLATION CIRCUITS Conn PIC32 VDD Digital Isolator External VDD IN REMOTE_IN PIC32 PIC32 VDD Digital Isolator External VDD REMOTE_IN IN1 REMOTE_OUT OUT1 PIC32 VSS VSS PIC32 VDD Opto Digital ISOLATOR External VDD PIC32 VDD Analog / Digital Isolator Conn IN1 ENB Analog_OUT2 PIC32 External_VDD1 ENB PIC32 S Analog_IN1 REMOTE_IN Analog_IN2 Analog Switch VSS VSS  2016-2021 Microchip Technology Inc. DS60001402H-page 41 PIC32MK GP/MC Family 2.9.2 5V TOLERANT INPUT PINS The internal high side diode on 5v tolerant pins are bussed to an internal floating node, rather than being connected to VDD, as shown in Figure 2-7. Voltages on these pins, if VDD < 2.3V, should not exceed roughly 3.2V relative to VSS of the PIC32 device. Voltage of 3.6V or higher will violate the absolute maximum specification, and will stress the oxide layer separating the high side floating node, which impacts device reliability. If a remotely powered “digital-only” signal can be guaranteed to always be £ 3.2V relative to Vss on the PIC32 device side, a 5V tolerant pin could be used without the need for a digital isolator. This is assuming there is not a ground loop issue, logic ground of the two circuits not at the same absolute level, and a remote logic low input is not less than VSS - 0.3V. FIGURE 2-7: PIC32 5V TOLERANT PIN ARCHITECTURE EXAMPLE PIC32 5V Tolerant Pin Architecture Floating Bus Oxide BV = 3.6V if VDD < 2.3V OXIDE On/Off VDD ANSEL I/O IN RG10 I/O OUT Remote GND TRIS CPU LOGIC Remote VIH = 2.5V PIC32 POWER SUPPLY VSS DS60001402H-page 42  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family 2.10 Designing for High-Speed Peripherals The PIC32MK GP/MC family devices have peripherals that operate at frequencies much higher than typical for an embedded environment. Table 2-2 lists the peripherals that produce high-speed signals on their external pins: TABLE 2-2: PERIPHERALS THAT PRODUCE HS SIGNALS ON EXTERNAL PINS Peripheral High-Speed Signal Pins Maximum Speed on Signal Pin SPI/I2S SCKx, SDOx, SDIx 50 MHz REFCLKx REFCLKx 50 MHz Due to these high-speed signals, it is important to consider several factors when designing a product that uses these peripherals, as well as the PCB on which these components will be placed. Adhering to these recommendations will help achieve the following goals: • Minimize the effects of electromagnetic interference to the proper operation of the product • Ensure signals arrive at their intended destination at the same time • Minimize crosstalk • Maintain signal integrity • Reduce system noise • Minimize ground bounce and power sag 2.10.1 2.10.1.1 SYSTEM DESIGN Impedance Matching When selecting parts to place on high-speed buses, particularly the SPI bus and/or REFCLKx output(s), if the impedance of the peripheral device does not match the impedance of the pins on the PIC32MK GP/MC device to which it is connected, signal reflections could result, thereby degrading the quality of the signal. If it is not possible to select a product that matches impedance, place a series resistor at the load to create the matching impedance. See Figure 2-8 for an example. FIGURE 2-8: SERIES RESISTOR PIC32MK 50 2.10.1.2 • Component Placement - Place bypass capacitors as close to their component power and ground pins as possible, and place them on the same side of the PCB - Devices on the same bus that have larger setup times should be placed closer to the PIC32MK GP/MC device • Power and Ground - Multi-layer PCBs will allow separate power and ground planes - Each ground pin should be connected to the ground plane individually - Place bypass capacitor vias as close to the pad as possible (preferably inside the pad) - If power and ground planes are not used, maximize width for power and ground traces - Use low-ESR, surface-mount bypass capacitors • Clocks and Oscillators - Place crystals as close as possible to the PIC32MK GP/MC device OSC/SOSC pins - Do not route high-speed signals near the clock or oscillator - Avoid via usage and branches in clock lines (SCK) - Place termination resistors at the end of clock lines • Traces - Higher-priority signals should have the shortest traces - Avoid long run lengths on parallel traces to reduce coupling - Make the clock traces as straight as possible - Use rounded turns rather than right-angle turns - Have traces on different layers intersect on right angles to minimize crosstalk - Maximize the distance between traces, preferably no less than three times the trace width - Power traces should be as short and as wide as possible - High-speed traces should be placed close to the ground plane SPI Flash Device PCB Layout Recommendations The following list contains recommendations that will help ensure the PCB layout will promote the goals previously listed.  2016-2021 Microchip Technology Inc. DS60001402H-page 43 PIC32MK GP/MC Family 2.10.1.3 EMI/EMC/EFT (IEC 61000-4-4 and IEC 61000-4-2) Suppression Considerations The use of LDO regulators is preferred to reduce overall system noise and provide a cleaner power source. However, when utilizing switching Buck/Boost regulators as the local power source for PIC32MK GP devices, as well as in electrically noisy environments or test conditions required for IEC 61000-4-4 and IEC 61000-4-2, users should evaluate the use of T-Filters (i.e., L-C-L) on the power pins, as shown in Figure 2-9. In addition to a more stable power source, use of this type of T-Filter can greatly reduce susceptibility to EMI sources and events. FIGURE 2-9: EMI/EMC/EFT SUPPRESSION CIRCUIT Ferrite Chip SMD DCR = 0.15ȍ(max) 600 ma ISAT 300ȍ@ 100 MHz PN#:  VDD 0.01 µF Ferrite Chips 0.1 µF VSS VDD VDD VSS 0.1 µF VSS VDD VSS 0.1 µF PIC32M. VSS 0.1 µF 0.1 µF VDD VSS VDD VSS VUSB3V3 VDD AVDD AVSS 0.1 µF VSS VDD 0.1 µF 0.1 µF 0.1 µF Ferrite Chips VDD 0.01 µF DS60001402H-page 44  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family 2.11 Typical Application Connection Examples Examples of typical application connections are shown in Figure 2-10, Figure 2-11, and Figure 2-12. FIGURE 2-10: CAPACITIVE TOUCH SENSING WITH GRAPHICS APPLICATION PIC32 Current Source To AN6 To AN7 To AN8 To AN9 To AN11 To AN0 CTMU AN0 AN1 ADC R1 R1 R1 R1 C1 C2 C3 C4 C5 To AN1 Read the Touch Sensors Microchip mTouch™ Library R1 R2 R2 R2 R2 R2 C1 C2 C3 C4 C5 R3 R3 R3 R3 R3 C1 C2 C3 C4 C5 AN9 To AN5 Process Samples AN11 User Application Display Data Microchip Graphics Library FIGURE 2-11: USB Host Parallel Host Port LCD Controller PMD Display Controller Frame Buffer PMWR LCD Panel AUDIO PLAYBACK APPLICATION PMD PMP USB Display PMWR PIC32 I2S SPI Stereo Headphones 3 REFCLKO 3 Audio Codec Speaker 3 MMC SD SDI  2016-2021 Microchip Technology Inc. DS60001402H-page 45 PIC32MK GP/MC Family FIGURE 2-12: LOW-COST CONTROLLERLESS (LCC) GRAPHICS APPLICATION WITH PROJECTED CAPACITIVE TOUCH PIC32 CTMU ADC ANx Microchip mTouch™ GFX Libraries DMA LCD Display Projected Capacitive Touch Overlay PMP SRAM DS60001402H-page 46 External Frame Buffer  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family NOTES:  2016-2021 Microchip Technology Inc. DS60001402H-page 47 PIC32MK GP/MC Family 3.0 CPU Note 1: This data sheet summarizes the features of the PIC32MK GP/MC family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 50. “CPU for Devices with MIPS32® microAptiv™ and M-Class Cores” (DS60001192) of the “PIC32 Family Reference Manual”, which is available from the Microchip web site (www.microchip.com/PIC32). 2: The microAptiv™ CPU core resources are available at: www.imgtec.com. The MIPS32® microAptiv™ MCU Core is the heart of the PIC32MK GP/MC family device processor. The CPU fetches instructions, decodes each instruction, fetches source operands, executes each instruction and writes the results of instruction execution to the proper destinations. Key features include: • 5-stage pipeline • 32-bit address and data paths • MIPS32 Enhanced Architecture (Release 5): - Multiply-accumulate and multiply-subtract instructions - Targeted multiply instruction - Zero/One detect instructions - WAIT instruction - Conditional move instructions (MOVN, MOVZ) - Vectored interrupts - Programmable exception vector base - Atomic interrupt enable/disable - GPR shadow register to minimize latency for interrupt handlers - Bit field manipulation instructions - Virtual memory support • microMIPS™ compatible instruction set: - Improves code size density over MIPS32, while maintaining MIPS32 performance. - Supports all MIPS32 instructions (except branchlikely instructions) - Fifteen additional 32-bit instructions and 39 16-bit instructions corresponding to commonly-used MIPS32 instructions - Stack pointer implicit in instruction - MIPS32 assembly and ABI compatible DS60001402H-page 48 • Autonomous Multiply/Divide Unit (MDU): - Maximum issue rate of one 32x32 multiply per clock - Early-in iterative divide. Minimum 12 and maximum 38 clock latency (dividend (rs) sign extension-dependent) • Power Control: - Minimum frequency: 0 MHz - Low-Power mode (triggered by WAIT instruction) - Extensive use of local gated clocks • EJTAG Debug and Instruction Trace: - Support for single stepping - Virtual instruction and data address/value breakpoints - Hardware breakpoint supports both address match and address range triggering. - Eight instruction and four data complex breakpoints • iFlowtrace® version 2.0 support: - Real-time instruction program counter - Special events trace capability - Two performance counters with 34 userselectable countable events - Disabled if the processor enters Debug mode - Program Counter sampling • DSP ASE Extension: - Native fractional format data type operations - Register Single Instruction Multiple Data (SIMD) operations (add, subtract, multiply, shift) - GPR-based shift - Bit manipulation - Compare-Pick - DSP Control Access - Indexed-Load - Branch - Multiplication of complex operands - Variable bit insertion and extraction - Virtual circular buffers - Arithmetic saturation and overflow handling - Zero-cycle overhead saturation and rounding operations • Floating Point Unit (FPU): - 1985 IEEE-754 compliant Floating Point Unit - Supports single and double precision datatypes - 2008 IEEE-754 compatibility control of NaN handling and Abs/Neg instructions - Runs at 1:1 core/FPU clock ratio  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family A block diagram of the PIC32MK GP/MC family processor core is shown in Figure 3-1. FIGURE 3-1: PIC32MK GP/MC FAMILY MICROPROCESSOR CORE BLOCK DIAGRAM microAptiv™ MCU Core PBCLK7 Decode (MIPS32® microAptiv™ MCU Core) microMIPS™ GPR (Two Sets) Execution Unit ALU/Shift Atomic/LdSt DSP ASE System Interface Enhanced MDU (with DSP ASE) FMT (Fixed Map Table) BIU System Bus FPU (Single & Double) Debug/Profiling System Coprocessor Interrupt Interface 2-wire Debug  2016-2021 Microchip Technology Inc. Break Points iFlowtrace® Fast Debug Channel Performance Counters Sampling Secure Debug Power Management EJTAG DS60001402H-page 49 PIC32MK GP/MC Family 3.1 Architecture Overview The MIPS32 microAptiv MCU core in the PIC32MK GP/ MC family devices contains several logic blocks working together in parallel, providing an efficient high-performance computing engine. The following blocks are included with the core: • • • • • • • • Execution unit General Purpose Register (GPR) Multiply/Divide Unit (MDU) System control coprocessor (CP0) Floating Point Unit (FPU) Power Management microMIPS support Enhanced JTAG (EJTAG) controller 3.1.1 3.1.2 MULTIPLY/DIVIDE UNIT (MDU) The processor core includes a Multiply/Divide Unit (MDU) that contains a separate pipeline for multiply and divide operations, and DSP ASE multiply instructions. This pipeline operates in parallel with the Integer Unit (IU) pipeline and does not stall when the IU pipeline stalls. This allows MDU operations to be partially masked by system stalls and/or other integer unit instructions. EXECUTION UNIT The processor core execution unit implements a load/ store architecture with single-cycle ALU operations (logical, shift, add, subtract) and an autonomous multiply/divide unit. The core contains thirty-two 32-bit General Purpose Registers (GPRs) used for integer operations and address calculation. One additional register file shadow sets (containing thirty-two registers) are added to minimize context switching overhead during interrupt/exception processing. The register file consists of two read ports and one write port and is fully bypassed to minimize operation latency in the pipeline. The execution unit includes: • 32-bit adder used for calculating the data address • Address unit for calculating the next instruction address • Logic for branch determination and branch target address calculation • Load aligner • Trap condition comparator • Bypass multiplexers used to avoid stalls when executing instruction streams where data producing instructions are followed closely by consumers of their results TABLE 3-1: • Leading Zero/One detect unit for implementing the CLZ and CLO instructions • Arithmetic Logic Unit (ALU) for performing arithmetic and bitwise logical operations • Shifter and store aligner • DSP ALU and logic block for performing DSP instructions, such as arithmetic/shift/compare operations The high-performance MDU consists of a 32x16 Booth recoded multiplier, a pair of result/accumulation registers (HI and LO), a divide state machine, and the necessary multiplexers and control logic. The first number shown (‘32’ of 32x16) represents the rs operand. The second number ‘16’ of 32x16) represents the rt operand. The MDU supports execution of one multiply or multiply-accumulate operation every clock cycle. Divide operations are implemented with a simple 1-bitper-clock iterative algorithm. An early-in detection checks the sign extension of the dividend (rs) operand. If rs is 8 bits wide, 23 iterations are skipped. For a 16-bit wide rs, 15 iterations are skipped and for a 24-bit wide rs, 7 iterations are skipped. Any attempt to issue a subsequent MDU instruction while a divide is still active causes an IU pipeline stall until the divide operation has completed. Table 3-1 lists the repeat rate (peak issue rate of cycles until the operation can be reissued) and latency (number of cycles until a result is available) for the processor core multiply and divide instructions. The approximate latency and repeat rates are listed in terms of pipeline clocks. MIPS32® microAptiv™ MCU CORE HIGH-PERFORMANCE INTEGER MULTIPLY/ DIVIDE UNIT LATENCIES AND REPEAT RATES Opcode MULT/MULTU, MADD/MADDU, MSUB/MSUBU (HI/LO destination) MUL (GPR destination) DIV/DIVU DS60001402H-page 50 Operand Size (mul rt) (div rs) Latency Repeat Rate 16 bits 32 bits 16 bits 32 bits 8 bits 16 bits 24 bits 32 bits 5 5 5 5 12/14 20/22 28/30 36/38 1 1 1 1 12/14 20/22 28/30 36/38  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family The MIPS architecture defines that the result of a multiply or divide operation be placed in one of four pairs of HI and LO registers. Using the Move-From-HI (MFHI) and Move-From-LO (MFLO) instructions, these values can be transferred to the General Purpose Register file. In addition to the HI/LO targeted operations, the MIPS32 architecture also defines a multiply instruction, MUL, which places the least significant results in the primary register file instead of the HI/LO register pair. By avoiding the explicit MFLO instruction required when using the LO register, and by supporting multiple destination registers, the throughput of multiply-intensive operations is increased. Two other instructions, Multiply-Add (MADD) and Multiply-Subtract (MSUB), are used to perform the multiply-accumulate and multiply-subtract operations. The MADD instruction multiplies two numbers and then adds the product to the current contents of the HI and LO registers. Similarly, the MSUB instruction multiplies two operands and then subtracts the product from the HI and LO registers. The MADD and MSUB operations are commonly used in DSP algorithms. The MDU also implements various shift instructions operating on the HI/LO register and multiply instructions as defined in the DSP ASE. The MDU supports all of the data types required for this purpose and includes three extra HI/LO registers as defined by the ASE. TABLE 3-3: Register Number Register Name Reserved HWREna 8 BadVAddr BadInstr BadInstrP Count Reserved Compare Status IntCtl SRSCtl SRSMap View_IPL SRSMAP2 13 14 TABLE 3-2: DSP-RELATED LATENCIES AND REPEAT RATES Op code Latency Repeat Rate Multiply and dot-product without saturation after accumulation 5 1 Multiply and dot-product with saturation after accumulation 5 1 Multiply without accumulation 5 1 3.1.3 SYSTEM CONTROL  COPROCESSOR (CP0) In the MIPS architecture, CP0 is responsible for the virtual-to-physical address translation, the exception control system, the processor’s diagnostics capability, the operating modes (Kernel, User and Debug) and whether interrupts are enabled or disabled. Configuration information, such as the presence of options like microMIPS is also available by accessing the CP0 registers, listed in Table 3-3. COPROCESSOR 0 REGISTERS 0-6 7 9 10 11 12 Table 3-2 lists the latencies and repeat rates for the DSP multiply and dot-product operations. The approximate latencies and repeat rates are listed in terms of pipeline clocks. Cause NestedExc View_RIPL EPC NestedEPC Function Reserved in the PIC32MK GP Family core. Enables access via the RDHWR instruction to selected hardware registers in  Non-privileged mode. Reports the address for the most recent address-related exception. Reports the instruction that caused the most recent exception. Reports the branch instruction if a delay slot caused the most recent exception. Processor cycle count. Reserved in the PIC32MK GP Family core. Core timer interrupt control. Processor status and control. Interrupt control of vector spacing. Shadow register set control. Shadow register mapping control. Allows the Priority Level to be read/written without extracting or inserting that bit from/to the Status register. Contains two 4-bit fields that provide the mapping from a vector number to the shadow set number to use when servicing such an interrupt. Describes the cause of the last exception. Contains the error and exception level status bit values that existed prior to the current exception. Enables read access to the RIPL bit that is available in the Cause register. Program counter at last exception. Contains the exception program counter that existed prior to the current exception.  2016-2021 Microchip Technology Inc. DS60001402H-page 51 PIC32MK GP/MC Family TABLE 3-3: COPROCESSOR 0 REGISTERS (CONTINUED) Register Number Register Name 15 PRID Ebase CDMMBase Config Config1 Config2 Config3 Config4 Config5 Config7 Reserved Reserved Reserved Reserved Debug TraceControl TraceControl2 UserTraceData1 TraceBPC Debug2 DEPC UserTraceData2 PerfCtl0 PerfCnt0 PerfCtl1 PerfCnt1 Reserved Reserved Reserved Reserved ErrorEPC DeSave 16 17 18 19 20-22 23 24 25 26 27 28 29 30 31 DS60001402H-page 52 Function Processor identification and revision Exception base address of exception vectors. Common device memory map base. Configuration register. Configuration register 1. Configuration register 2. Configuration register 3. Configuration register 4. Configuration register 5. Configuration register 7. Reserved in the PIC32MK GP Family core. Reserved in the PIC32MK GP Family core. Reserved in the PIC32MK GP Family core. Reserved in the PIC32MK GP Family core. EJTAG debug register. EJTAG trace control. EJTAG trace control 2. EJTAG user trace data 1 register. EJTAG trace breakpoint register. Debug control/exception status 1. Program counter at last debug exception. EJTAG user trace data 2 register. Performance counter 0 control. Performance counter 0. Performance counter 1 control. Performance counter 1. Reserved in the PIC32MK GP Family core. Reserved in the PIC32MK GP Family core. Reserved in the PIC32MK GP Family core. Reserved in the PIC32MK GP Family core. Program counter at last error exception. Debug exception save.  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family 3.1.4 FLOATING POINT UNIT (FPU) The Floating Point Unit (FPU), Coprocessor (CP1), implements the MIPS Instruction Set Architecture for floating point computation. The implementation supports the ANSI/IEEE Standard 754 (IEEE for Binary Floating Point Arithmetic) for single- and double-precision data formats. The FPU can be programmed to have thirty-two 32-bit or 64-bit floating point registers used for floating point operations. The performance is optimized for single precision formats. Most instructions have one FPU cycle throughput and four FPU cycle latency. The FPU implements the multiply-add (MADD) and multiply-sub (MSUB) instructions with intermediate rounding after the multiply function. The result is guaranteed to be the same as executing a MUL and an ADD instruction separately, but the instruction latency, instruction fetch, dispatch bandwidth, and the total number of register accesses are improved. IEEE denormalized input operands and results are supported by hardware for some instructions. IEEE denormalized results are not supported by hardware in general, but a fast flush-to-zero mode is provided to optimize performance. The fast flush-to-zero mode is enabled through the FCCR register, and use of this mode is recommended for best performance when denormalized results are generated. The FPU has a separate pipeline for floating point instruction execution. This pipeline operates in parallel with the integer core pipeline and does not stall when the integer pipeline stalls. This allows long-running FPU operations, such as divide or square root, to be partially masked by system stalls and/or other integer unit instructions. Arithmetic instructions are always dispatched and completed in order, but loads and stores can complete out of order. The exception model is “precise” at all times. Table 3-4 contains the floating point instruction latencies and repeat rates for the processor core. In this table, 'Latency' refers to the number of FPU cycles necessary for the first instruction to produce the result needed by the second instruction. The “Repeat Rate” refers to the maximum rate at which an instruction can be executed per FPU cycle.  2016-2021 Microchip Technology Inc. TABLE 3-4: FPU INSTRUCTION LATENCIES AND REPEAT RATES Latency (FPU Cycles) Repeat Rate (FPU Cycles) ABS.[S,D], NEG.[S,D], ADD.[S,D], SUB.[S,D], C.cond.[S,D], MUL.S 4 1 MADD.S, MSUB.S, NMADD.S, NMSUB.S, CABS.cond.[S,D] 4 1 CVT.D.S, CVT.PS.PW, CVT.[S,D].[W,L] 4 1 CVT.S.D, CVT.[W,L].[S,D], CEIL.[W,L].[S,D], FLOOR.[W,L].[S,D], ROUND.[W,L].[S,D], TRUNC.[W,L].[S,D] 4 1 MOV.[S,D], MOVF.[S,D], MOVN.[S,D], MOVT.[S,D], MOVZ.[S,D] 4 1 MUL.D 5 2 MADD.D, MSUB.D, NMADD.D, NMSUB.D 5 2 RECIP.S 13 10 RECIP.D 26 21 RSQRT.S 17 14 RSQRT.D 36 31 DIV.S, SQRT.S 17 14 DIV.D, SQRT.D 32 29 MTC1, DMTC1, LWC1, LDC1, LDXC1, LUXC1, LWXC1 4 1 MFC1, DMFC1, SWC1, SDC1, SDXC1, SUXC1, SWXC1 1 1 Op code Legend: S = Single D = Double W = Word L = Long word  DS60001402H-page 53 PIC32MK GP/MC Family The FPU implements a high-performance 7-stage pipeline: • Decode, register read and unpack (FR stage) • Multiply tree - double pumped for double (M1 stage) • Multiply complete (M2 stage) • Addition first step (A1 stage) • Addition second and final step (A2 stage) • Packing to IEEE format (FP stage) • Register writeback (FW stage) The FPU implements a bypass mechanism that allows the result of an operation to be forwarded directly to the instruction that needs it without having to write the result to the FPU register and then read it back. Table 3-5 lists the Coprocessor 1 Registers for the FPU. TABLE 3-5: FPU (CP1) REGISTERS Register Register Number Name Function 0 FIR Floating Point implementation register. Contains information that identifies the FPU. 25 FCCR Floating Point condition codes register. 26 FEXR Floating Point exceptions register. 28 FENR Floating Point enables register. 31 FCSR Floating Point Control and Status register. DS60001402H-page 54 3.2 Power Management The processor core offers a number of power management features, including low-power design, active power management and power-down modes of operation. The core is a static design that supports slowing or halting the clocks, which reduces system power consumption during Idle periods. 3.2.1 INSTRUCTION-CONTROLLED POWER MANAGEMENT The mechanism for invoking Power-Down mode is through execution of the WAIT instruction. For more information on power management, see 32.0 “PowerSaving Features”. 3.2.2 LOCAL CLOCK GATING The majority of the power consumed by the processor core is in the clock tree and clocking registers. The PIC32MK family makes extensive use of local gatedclocks to reduce this dynamic power consumption. 3.3 EJTAG Debug Support The processor core provides for an Enhanced JTAG (EJTAG) interface for use in the software debug of application and kernel code. In addition to standard User mode and Kernel modes of operation, the processor core provides a Debug mode that is entered after a debug exception (derived from a hardware breakpoint, single-step exception, etc.) is taken and continues until a Debug Exception Return (DERET) instruction is executed. During this time, the processor executes the debug exception handler routine. The EJTAG interface operates through the Test Access Port (TAP), a serial communication port used for transferring test data in and out of the core. In addition to the standard JTAG instructions, special instructions defined in the EJTAG specification specify which registers are selected and how they are used.  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family 3.4 MIPS DSP ASE Extension The MIPS DSP Application-Specific Extension Revision 2 is an extension to the MIPS32 architecture. This extension comprises new integer instructions and states that include new HI/LO accumulator register pairs and a DSP control register. This extension is crucial in a wide range of DSP, multimedia, and DSPlike algorithms covering Audio and Video processing applications. The extension supports native fractional format data type operations, register Single Instruction Multiple Data (SIMD) operations, such as add, subtract, multiply, and shift. In addition, the extension includes the following features that are essential in making DSP algorithms computationally efficient: • • • • Support for multiplication of complex operands Variable bit insertion and extraction Implementation and use of virtual circular buffers Arithmetic saturation and overflow handling support • Zero cycle overhead saturation and rounding operations  2016-2021 Microchip Technology Inc. 3.5 microMIPS ISA The processor core supports the microMIPS ISA, which contains all MIPS32 ISA instructions (except for branch-likely instructions) in a new 32-bit encoding scheme, with some of the commonly used instructions also available in 16-bit encoded format. This ISA improves code density through the additional 16-bit instructions while maintaining a performance similar to MIPS32 mode. In microMIPS mode, 16-bit or 32-bit instructions will be fetched and recoded to legacy MIPS32 instruction opcodes in the pipeline’s I stage, so that the processor core can have the same microAptiv MPU microarchitecture. Because the microMIPS instruction stream can be intermixed with 16-bit halfword or 32-bit word size instructions on halfword or word boundaries, additional logic is in place to address the word misalignment issues, thus minimizing performance loss. DS60001402H-page 55 PIC32MK GP/MC Family 3.6 MIPS32® microAptiv™ MCU Core Configuration Register 3-1 through Register 3-5 show the default configuration of the MIPS32 microAptiv MCU core, which is included on the PIC32MK GP/MC family of devices. REGISTER 3-1: Bit Range 31:24 23:16 15:8 7:0 CONFIG: CONFIGURATION REGISTER; CP0 REGISTER 16, SELECT 0 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 r-1 U-0 U-0 U-0 U-0 U-0 U-0 R-0 — — — — — — — ISP R-1 R-0 R-0 R-1 R-0 U-0 DSP UDI SB MDU — R-0 R-0 R-0 R-0 BE AT R-0 R-1 U-0 U-0 U-0 U-0 — — — — — r = Reserved bit W = Writable bit ‘1’ = Bit is set R/W-0 R-0 BM R-0 R-1 U-0 U-0 — K0 — AR U-0 Legend: R = Readable bit -n = Value at POR R-0 MM Bit 24/16/8/0 U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31 Reserved: This bit is hardwired to ‘1’ to indicate the presence of the Config1 register. bit 30-25 Unimplemented: Read as ‘0’ bit 24 ISP: Instruction Scratch Pad RAM bit 0 = Instruction Scratch Pad RAM is not implemented bit 23 DSP: Data Scratch Pad RAM bit 0 = Data Scratch Pad RAM is not implemented bit 22 UDI: User-defined bit 0 = CorExtend User-Defined Instructions are not implemented bit 21 SB: SimpleBE bit 1 = Only Simple Byte Enables are allowed on the internal bus interface bit 20 MDU: Multiply/Divide Unit bit 0 = Fast, high-performance MDU bit 19 Unimplemented: Read as ‘0’ bit 18-17 MM: Merge Mode bits 10 = Merging is allowed bit 16 BM: Burst Mode bit 0 = Burst order is sequential bit 15 BE: Endian Mode bit 0 = Little-endian bit 14-13 AT: Architecture Type bits 00 = MIPS32 bit 12-10 AR: Architecture Revision Level bits 001 = MIPS32 Release 2 bit 9-3 Unimplemented: Read as ‘0’ DS60001402H-page 56  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 3-1: bit 2-0 CONFIG: CONFIGURATION REGISTER; CP0 REGISTER 16, SELECT 0 K0: Kseg0 Coherency Algorithm bits 000 = Reserved 001 = Reserved 010 = Instruction Prefetch uncached (Default) 011 = Instruction Prefetch cached (Recommended) 100 = Reserved • • • 111 = Reserved  2016-2021 Microchip Technology Inc. DS60001402H-page 57 PIC32MK GP/MC Family REGISTER 3-2: Bit Range 31:24 23:16 15:8 7:0 CONFIG1: CONFIGURATION REGISTER 1; CP0 REGISTER 16, SELECT 1 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 r-1 R-0 R-0 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R-0 R-0 R-0 R-0 U-0 U-0 U-0 U-0 — U-0 MMUSIZE U-0 U-0 U-0 U-0 — — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 R-1 R-1 R-0 R-1 R-1 — — — PC WR CA EP FP Legend: R = Readable bit -n = Value at POR r = Reserved bit W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31 Reserved: This bit is hardwired to a ‘1’ to indicate the presence of the Config2 register. bit 30-25 MMUSIZE: MMU Size bits bit 24-5 bit 4 bit 3 bit 2 bit 1 bit 0 Note: This bit field is read as ‘0’ decimal in the fixed table-based MMU core, as no TLB is present. Unimplemented: Read as ‘0’ PC: Performance Counter bit 1 = The processor core contains Performance Counters WR: Watch Register Presence bit 1 = No Watch registers are present CA: Code Compression Implemented bit 0 = No MIPS16e® present EP: EJTAG Present bit 1 = Core implements EJTAG FP: Floating Point Unit bit 1 = Floating Point Unit is present DS60001402H-page 58  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 3-3: Bit Range 31:24 23:16 15:8 7:0 CONFIG3: CONFIGURATION REGISTER 3; CP0 REGISTER 16, SELECT 3 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 r-1 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 R-0 R-1 R-0 R-0 R-0 R-1 R/W-y MCU ISAONEXC(1) — R-y IPLW R-y ISA(1) MMAR R-1 R-1 R-1 R-1 U-0 R-1 ULRI RXI DSP2P DSPP — ITL U-0 R-1 R-1 R-0 R-1 U-0 U-0 R-0 — VEIC VINT SP CDMM — — TL Legend: R = Readable bit -n = Value at POR r = Reserved bit W = Writable bit ‘1’ = Bit is set y = Value set from Configuration bits on POR U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31 Reserved: This bit is hardwired as ‘1’ to indicate the presence of the Config4 register bit 30-23 Unimplemented: Read as ‘0’ bit 22-21 IPLW: Width of the Status IPL and Cause RIPL bits 01 = IPL and RIPL bits are 8-bits in width bit 20-18 MMAR: microMIPS Architecture Revision Level bits 000 = Release 1 bit 17 MCU: MIPS® MCU™ ASE Implemented bit 1 = MCU ASE is implemented bit 16 ISAONEXC: ISA on Exception bit(1) 1 = microMIPS is used on entrance to an exception vector 0 = MIPS32 ISA is used on entrance to an exception vector bit 15-14 ISA: Instruction Set Availability bits(1) 11 = Both MIPS32 and microMIPS are implemented; microMIPS is used when coming out of reset 10 = Both MIPS32 and microMIPS are implemented; MIPS32 ISA used when coming out of reset bit 13 ULRI: UserLocal Register Implemented bit 1 = UserLocal Coprocessor 0 register is implemented bit 12 RXI: RIE and XIE Implemented in PageGrain bit 1 = RIE and XIE bits are implemented bit 11 DSP2P: MIPS DSP ASE Revision 2 Presence bit 1 = DSP Revision 2 is present bit 10 DSPP: MIPS DSP ASE Presence bit 1 = DSP is present bit 9 Unimplemented: Read as ‘0’ bit 8 ITL: Indicates that iFlowtrace® hardware is present 1 = The iFlowtrace® 2.0 hardware is implemented in the core bit 7 Unimplemented: Read as ‘0’ bit 6 VEIC: External Vector Interrupt Controller bit 1 = Support for an external interrupt controller is implemented. bit 5 VINT: Vector Interrupt bit 1 = Vector interrupts are implemented bit 4 SP: Small Page bit 0 = 4 KB page size bit 3 CDMM: Common Device Memory Map bit 1 = CDMM is implemented bit 2-1 Unimplemented: Read as ‘0’ bit 0 TL: Trace Logic bit 0 = Trace logic is not implemented Note 1: These bits are set based on the value of the BOOTISA Configuration bit (DEVCFG0).  2016-2021 Microchip Technology Inc. DS60001402H-page 59 PIC32MK GP/MC Family REGISTER 3-4: Bit Range 31:24 23:16 15:8 7:0 CONFIG4: CONFIGURATION REGISTER 4; CP0 REGISTER 16, SELECT 4 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R-1 U-0 U-0 U-0 U-0 U-0 U-0 U-0 M — — — — — — — R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 KScr Exist R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 — — — — — — — — Legend: r = Reserved R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’ -n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared bit 31 x = Bit is unknown M: Config5 Register Present bit 1 = Config5 register is present 0 = Config5 register is not present bit 30-24 Unimplemented: Read as ‘0’ bit 23-16 KScr Exist: Number of Scratch Registers Available to Kernel Mode bits Indicates how many scratch registers are available to Kernel mode software within CP0 Register 31. Each bit represents a select for Coprocessor0 Register 31. Bit 16 represents Select 0. Bit 23 represents Select 7. If the bit is set, the associated scratch register is implemented and is available for Kernel mode software. Note: bit 15-0 These bits are read-only, and this field is all zeros on these products, as is read as ‘0’. Reserved: Read/write as ‘0’ DS60001402H-page 60  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 3-5: Bit Range 31:24 23:16 15:8 7:0 CONFIG5: CONFIGURATION REGISTER 5; CP0 REGISTER 16, SELECT 5 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 R-1 — — — — — — — NF Legend: r = Reserved R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’ -n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared bit 31-1 Unimplemented: Read as ‘0’ bit 0 NF: Nested Fault bit 1 = Nested Fault feature is implemented REGISTER 3-6: Bit Range 31:24 23:16 15:8 7:0 x = Bit is unknown CONFIG7: CONFIGURATION REGISTER 7; CP0 REGISTER 16, SELECT 7 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R-1 U-0 U-0 U-0 U-0 U-0 U-0 U-0 WII — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — 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 bit 31 WII: Wait IE Ignore bit 1 = Indicates that this processor will allow an interrupt to unblock a WAIT instruction bit 30-0 Unimplemented: Read as ‘0’  2016-2021 Microchip Technology Inc. DS60001402H-page 61 PIC32MK GP/MC Family REGISTER 3-7: Bit Range 31:24 23:16 15:8 7:0 FIR: FLOATING POINT IMPLEMENTATION REGISTER; CP1 REGISTER 0 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 U-0 U-0 — — Bit 24/16/8/0 U-0 R-1 U-0 U-0 U-0 R-1 — UFRP — — — FC R-1 R-1 R-1 R-1 R-1 R-0 R-0 R-1 HAS2008 F64 L W MIPS3D PS D S R-1 R-0 R-1 R-0 R-0 R-1 R-1 R-1 R-x R-x R-x R-x R-x R-x R-x R-x PRID Legend: R = Readable bit -n = Value at POR REVISION W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31-29 Unimplemented: Read as ‘0’ bit 28 UFRP: User Mode FR Switching Instruction bit 1 = User mode FR switching instructions are supported 0 = User mode FR switching instructions are not supported bit 27-25 Unimplemented: Read as ‘0’ bit 24 FC: Full Convert Ranges bit 1 = Full convert ranges are implemented (all numbers can be converted to another type by the FPU) 0 = Full convert ranges are not implemented bit 23 HAS008: IEEE-754-2008 bit 1 = MAC2008, ABS2008, NAN2008 bits exist within the FCSR register 0 = MAC2009, ABS2008, and NAN2008 bits do not exist within the FCSR register bit 22 F64: 64-bit FPU bit 1 = This is a 64-bit FPU 0 = This is not a 64-bit FPU bit 21 L: Long Fixed Point Data Type bit 1 = Long fixed point data types are implemented 0 = Long fixed point data types are not implemented bit 20 W: Word Fixed Point data type bit 1 = Word fixed point data types are implemented 0 = Word fixed point data types are not implemented bit 19 MIPS3D: MIPS-3D ASE bit 1 = MIPS-3D is implemented 0 = MIPS-3D is not implemented bit 18 PS: Paired Single Floating Point data bit 1 = PS floating point is implemented 0 = PS floating point is not implemented bit 17 D: Double-precision floating point data bit 1 = Double-precision floating point data types are implemented 0 = Double-precision floating point data types are not implemented bit 16 S: Single-precision Floating Point Data bit 1 = Single-precision floating point data types are implemented 0 = Single-precision floating point data types are not implemented bit 15-8 PRID: Processor Identification bits These bits allow software to distinguish between the various types of MIPS processors. For PIC32 devices with the MIPS32 microAptiv MCU core, this value is 0x9D. bit 7-0 REVISION: Processor Revision Identification bits These bits allow software to distinguish between one revision and another of the same processor type. This number is increased on major revisions of the processor core DS60001402H-page 62  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 3-8: Bit Range 31:24 23:16 15:8 7:0 FCCR: FLOATING POINT CONDITION CODES REGISTER; CP1 REGISTER 25 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x FCC 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 bit 31-8 Unimplemented: Read as ‘0’ bit 7-0 FCC: Floating Point Condition Code bits These bits record the results of floating point compares and are tested for floating point conditional branches and conditional moves.  2016-2021 Microchip Technology Inc. DS60001402H-page 63 PIC32MK GP/MC Family REGISTER 3-9: FEXR: FLOATING POINT EXCEPTIONS STATUS REGISTER; CP1 REGISTER 26 Bit Range 31:24 23:16 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 R/W-x R/W-x — — — — — — E V R/W-x R/W-x R/W-x U-0 U-0 U-0 U-0 U-0 — — — — R/W-x R/W-x U-0 U-0 U I — — CAUSE 15:8 7:0 CAUSE Z O U I U-0 R/W-x R/W-x R/W-x — FLAGS V Z O 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 bit 31-18 Unimplemented: Read as ‘0’ bit 17-12 CAUSE: FPU Exception Cause bits These bits indicated the exception conditions that arise during execution of an FPU arithmetic instruction. bit 17 E: Unimplemented Operation bit bit 16 V: Invalid Operation bit bit 15 Z: Divide-by-Zero bit bit 14 O: Overflow bit bit 13 U: Underflow bit bit 12 I: Inexact bit bit 11-7 Unimplemented: Read as ‘0’ bit 6-2 FLAGS: FPU Flags bits These bits show any exception conditions that have occurred for completed instructions since the flag was last reset by software. bit 6 V: Invalid Operation bit bit 4 Z: Divide-by-Zero bit bit 4 O: Overflow bit bit 3 U: Underflow bit bit 2 I: Inexact bit bit 1-0 Unimplemented: Read as ‘0’ DS60001402H-page 64  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 3-10: FENR: FLOATING POINT EXCEPTIONS AND MODES ENABLE REGISTER;  CP1 REGISTER 28 Bit Range 31:24 23:16 15:8 7:0 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 R/W-x R/W-x R/W-x R/W-x ENABLES — — — — V Z O U R/W-x U-0 U-0 U-0 U-0 R-x R/W-x R/W-x — — — — FS ENABLES I RM 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 bit 31-12 Unimplemented: Read as ‘0’ bit 11-7 ENABLES: FPU Exception Enable bits These bits control whether or not a trap is taken when an IEEE exception condition occurs for any of the five conditions. The trap occurs when both an enable bit and its corresponding cause bit are set either during an FPU arithmetic operation or by moving a value to the FCSR or one of its alternative representations. bit 11 V: Invalid Operation bit bit 10 Z: Divide-by-Zero bit bit 9 O: Overflow bit bit 8 U: Underflow bit bit 7 I: Inexact bit bit 6-3 Unimplemented: Read as ‘0’ bit 2 FS: Flush to Zero control bit 1 = Denormal input operands are flushed to zero. Tiny results are flushed to either zero or the applied format's smallest normalized number (MinNorm) depending on the rounding mode settings. 0 = Denormal input operands result in an Unimplemented Operation exception. bit 1-0 RM: Rounding Mode control bits 11 = Round towards Minus Infinity (– ) 10 = Round towards Plus Infinity (+ ) 01 = Round toward Zero (0) 00 = Round to Nearest  2016-2021 Microchip Technology Inc. DS60001402H-page 65 PIC32MK GP/MC Family REGISTER 3-11: FCSR: FLOATING POINT CONTROL AND STATUS REGISTER; CP1 REGISTER 31 Bit Range 31:24 23:16 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 R/W-x R/W-x R/W-x Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-x R/W-x R/W-x R/W-x R/W-x FCC FS R/W-x R/W-x R/W-x R-0 R-1 R-1 FCC FO FN MAC2008 ABS2008 NAN2008 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x 15:8 R/W-x R/W-x ENABLES I R/W-x R/W-x CAUSE R/W-x R/W-x V Z O U R/W-x R/W-x R/W-x R/W-x U I FLAGS V R/W-x ENABLES CAUSE R/W-x 7:0 Bit 28/20/12/4 Z O RM 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 bit 31-25 FCC: Floating Point Condition Code bits These bits record the results of floating point compares and are tested for floating point conditional branches and conditional moves. bit 24 FS: Flush to Zero control bit 1 = Denormal input operands are flushed to zero. Tiny results are flushed to either zero or the applied format's smallest normalized number (MinNorm) depending on the rounding mode settings. 0 = Denormal input operands result in an Unimplemented Operation exception. bit 23 FCC: Floating Point Condition Code bits These bits record the results of floating point compares and are tested for floating point conditional branches and conditional moves. bit 22 FO: Flush Override Control bit 1 = The intermediate result is kept in an internal format, which can be perceived as having the usual mantissa precision but with unlimited exponent precision and without forcing to a specific value or taking an exception. 0 = Handling of Tiny Result values depends on setting of the FS bit. bit 21 FN: Flush to Nearest Control bit 1 = Final result is rounded to either zero or 2E_min (MinNorm), whichever is closest when in Round to Nearest (RN) rounding mode. For other rounding modes, a final result is given as if FS was set to 1. 0 = Handling of Tiny Result values depends on setting of the FS bit. bit 20 MAC2008: Fused Multiply Add mode control bit 0 = Unfused multiply-add. Intermediary multiplication results are rounded to the destination format. bit 19 ABS2008: Absolute value format control bit 1 = ABS.fmt and NEG.fmt instructions compliant with IEEE Standard 754-2008. The ABS and NEG functions accept QNAN inputs without trapping. bit 18 NAN2008: NaN Encoding control bit 1 = Quiet and signaling NaN encodings recommended by the IEEE Standard 754-2008. A quiet NaN is encoded with the first bit of the fraction being 1 and a signaling NaN is encoded with the first bit of the fraction being 0. bit 17-12 CAUSE: FPU Exception Cause bits These bits indicated the exception conditions that arise during execution of an FPU arithmetic instruction. DS60001402H-page 66  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 3-11: FCSR: FLOATING POINT CONTROL AND STATUS REGISTER; CP1 REGISTER 31 bit 17 E: Unimplemented Operation bit bit 16 V: Invalid Operation bit bit 15 Z: Divide-by-Zero bit bit 14 O: Overflow bit bit 13 U: Underflow bit bit 12 I: Inexact bit bit 11-7 ENABLES: FPU Exception Enable bits These bits control whether or not a trap is taken when an IEEE exception condition occurs for any of the five conditions. The trap occurs when both an enable bit and its corresponding cause bit are set either during an FPU arithmetic operation or by moving a value to the FCSR or one of its alternative representations. bit 11 V: Invalid Operation bit bit 10 Z: Divide-by-Zero bit bit 9 O: Overflow bit bit 8 U: Underflow bit bit 7 I: Inexact bit bit 6-2 FLAGS: FPU Flags bits These bits show any exception conditions that have occurred for completed instructions since the flag was last reset by software. bit 6 V: Invalid Operation bit bit 5 Z: Divide-by-Zero bit bit 4 O: Overflow bit bit 3 U: Underflow bit bit 2 I: Inexact bit bit 1-0 RM: Rounding Mode control bits 11 = Round towards Minus Infinity (– ) 10 = Round towards Plus Infinity (+ ) 01 = Round toward Zero (0) 00 = Round to Nearest  2016-2021 Microchip Technology Inc. DS60001402H-page 67 PIC32MK GP/MC Family 4.0 Note: MEMORY ORGANIZATION This data sheet summarizes the features of the PIC32MK GP/MC Family of devices. It is not intended to be a comprehensive reference source. For detailed information, refer to Section 48. “Memory Organization and Permissions” (DS60001214), which is available from the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). PIC32MK GP/MC microcontrollers provide 4 GB of unified virtual memory address space. All memory regions, including program, data memory, Special Function Registers (SFRs) and Configuration registers, reside in this address space at their respective unique addresses. The program and data memories can be optionally partitioned into user and kernel memories. In addition, PIC32MK GP/MC devices allow execution from data memory. 4.1 Memory Layout PIC32MK GP/MC microcontrollers implement two address schemes: virtual and physical. All hardware resources, such as program memory, data memory and peripherals, are located at their respective physical addresses. Virtual addresses are exclusively used by the CPU to fetch and execute instructions as well as access peripherals. Physical addresses are used by bus Host peripherals, such as DMA and the Flash controller, that access memory independently of the CPU. The main memory maps for the PIC32MK GP/MC devices are illustrated in Figure 4-1 through Figure 4-2. Figure 4-3 provides memory map information for boot Flash and boot alias. Table 4-3 provides memory map information for SFRs. Key features of this module include: • 32-bit native data width • Separate User (KUSEG) and Kernel (KSEG0/ KSEG1) mode address space • Separate boot Flash memory for protected code • Robust bus exception handling to intercept  runaway code • Read/write permission access to predefined memory regions DS60001402H-page 68  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family MEMORY MAP FOR DEVICES WITH 512 KB PROGRAM MEMORY AND 128 KB RAM 0xFFFFFFFF 0xBFC65000 0xBFC64FFF 0xBFC60000 0xBFC5FFFF 0xBFC45000 0xBFC44FFF 0xBFC40000 0xBF900000 0xBF8FFFFF 0xBF800000 0xBD080000 0xBD07FFFF Virtual Memory Map Physical Memory Map Reserved Reserved Boot Flash 2 (see Figure 4-3) Boot Flash 2 (see Figure 4-3) Reserved Reserved Boot Flash 1 (see Figure 4-3) Boot Flash 1 (see Figure 4-3) Reserved Reserved SFRs (see Table 4-3) SFRs (see Table 4-3) Reserved KSEG1 FIGURE 4-1: Program Flash 0xA0020000 0xA001FFFF Program Flash Panel 1 Reserved Reserved RAM(2) 0xA0000000 0x9FC60000 0x9FC45000 0x9FC44FFF 0x9FC40000 0x9D080000 0x9D07FFFF RAM(2) Reserved 0x1FC45000 0x1FC44FFF 0x1FC40000 0x1F900000 0x1F8FFFFF 0x1F800000 0x1D080000 0x1D07FFFF 0x1D040000 0x1D03FFFF 0x1D000000 0x00020000 0x0001FFFF 0x00000000 Boot Flash 2 (see Figure 4-3) Reserved Boot Flash 1 (see Figure 4-3) Reserved KSEG0 0x9FC65000 0x9FC64FFF 0x1FC60000 Reserved Program Flash Panel 2 0xBD000000 0xFFFFFFFF 0x1FC65000 0x1FC64FFF Program Flash 0x9D000000 0x80020000 0x8001FFFF Reserved RAM(2) 0x80000000 0x00000000 Note 1: 2: Reserved Memory areas are not shown to scale. RAM memory is divided into two equal banks: RAM Bank 1 and RAM Bank 2 on a half boundary.  2016-2021 Microchip Technology Inc. DS60001402H-page 69 PIC32MK GP/MC Family 0xFFFFFFFF 0xBFC65000 0xBFC64FFF 0xBFC60000 0xBFC45000 0xBFC44FFF 0xBFC40000 0xBF900000 0xBF8FFFFF 0xBF800000 MEMORY MAP FOR DEVICES WITH 1024 KB PROGRAM MEMORY AND 256 KB RAM Virtual Memory Map Physical Memory Map Reserved Reserved Boot Flash 2 (see Figure 4-3) Boot Flash 2 (see Figure 4-3) Reserved Reserved Boot Flash 1 (see Figure 4-3) Reserved SFRs (see Table 4-3) Boot Flash 1 (see Figure 4-3) KSEG1 FIGURE 4-2: Reserved SFRs (see Table 4-3) Reserved 0xBD100000 0xBD0FFFFF 0xBD000000 Program Flash Panel 2 Reserved 0xA0040000 0xA003FFFF Program Flash Panel 1 RAM(2) Reserved 0xA0000000 0x9FC45000 0x9FC44FFF 0x9FC40000 0x1FC45000 0x1FC44FFF 0x1FC40000 0x1F900000 0x1F8FFFFF 0x1F800000 Reserved (2) RAM 0x1D100000 0x1D0FFFFF 0x1D080000 0x1D07FFFF 0x1D000000 0x00040000 0x0003FFFF 0x00000000 Boot Flash 2 (see Figure 4-3) Reserved Boot Flash 1 (see Figure 4-3) Reserved 0x9D100000 0x9D0FFFFF KSEG0 0x9FC60000 0x1FC60000 Reserved Program Flash 0x9FC65000 0x9FC64FFF 0xFFFFFFFF 0x1FC65000 0x1FC64FFF Program Flash 0x9D000000 0x80040000 0x8003FFFF Reserved RAM(2) 0x80000000 0x00000000 Note 1: 2: Reserved Memory areas are not shown to scale. RAM memory is divided into two equal banks: RAM Bank 1 and RAM Bank 2 on a half boundary. DS60001402H-page 70  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family FIGURE 4-3: BOOT AND ALIAS MEMORY MAP TABLE 4-1: Virtual Address Peripheral (1) Physical Memory Map 0x1FC64FFF 0x1FC64000 Seq/Configuration Word Space Boot Flash 2 0x1FC63FFF 0x0800 0x0A00 0x1FC60000 WDT 0x1FC5FFFF DMT 0x1FC45800 CRU 0x1200 0x1FC457FF PPS 0x1400 PLVD 0x1800 0x1FC4503C 0x1FC45030 EVIC 0x1FC4502F DMA 0x1FC4501C 0x0000 IC1-IC9 0x2000 0x4000 0x6000 DEVADC5 0x1FC45014 Reserved DEVADC4 0x1FC45010 DEVADC3 0x1FC4500C SPI1-SPI2 0x7000 DEVADC2 0x1FC45008 UART1-UART2 0x8000 DEVADC1 0x1FC45004 DATAEE DEVADC0 0x1FC45000 PWM1-PWM12 0xA000 QEI1-QEI6 0xB200 0x1FC43FFF CMP 0xC000 0x1FC43FB0 CDAC1 0xC200 0x1FC43FAC CTMU 0xD000 PMP 0xE000 Seq/Configuration Word Space Reserved 0x1FC3FFFF IC10-IC16 0x3200 OC10-OC16 0x5200 Reserved 0xBF840000 0x6400 0x1FC20000 SPI3-SPI6 0x1FC1FFFF UART3-UART6 0x8400 0x1FC05000 CDAC2-CDAC3 0xC400 PORTA-PORTG 0xBF860000 0x7400 0x0000 0x1FC03FFF CAN1-CAN4 0x1FC03FB0 ADC 0x1FC03FAC USB1-USB2 0x9000 RTCC 0x0000 0x1FC00000 Memory areas are not shown to scale. Memory locations 0x1FC03FB0 through 0x1FC03FFC are used to initialize Configuration registers (see 33.0 “Special Features”). Refer to 4.1.1 “Boot Flash Sequence and Configuration Spaces” for more information. Memory locations 0x1FC5020 and 0x1FC502C contain a unique device serial number (see 33.0 “Special Features”). This configuration space cannot be used for executing code in the upper Boot Alias.  2016-2021 Microchip Technology Inc. 0x9000 0x1FC24FFF 0x1FC04000 Seq/Configuration Word Space 0xBF820000 0x1FC25000 0x1FC04FFF 5: Timer1-Timer9 0x1FC45018 Upper Boot Alias 4: 0x0000 0x1000 DEVADC7 Reserved 3: 0xBF810000 OC1-OC9 0x1FC40000 1: 2: 0x0E00 0x1000 0x1FC44000 Note 0x0C00 0xBF800000 ICD 0x1FC44FFF Lower Boot Alias 0x0000 FC-NVM Device Serial Number(4) 0x1FC4502C DEVSNx, x=0-3 0x1FC45020 Boot Flash 1 CFG-PMD Offset Start CACHE 0x1FC45040 Public Test Flash Base 0x1FC63FAC 0x1FC63FB0 Reserved DATA EE CAL (DEVEE0-DEVEE3) SFR MEMORY MAP 0xBF880000 Deep Sleep SSX CTL Note 1: 0x0000 0xBF8C0000 0xBF8F0000 0x7000 0x0200 0x0000 Refer to 4.2 “System Bus Arbitration” for important legal information. DS60001402H-page 71 PIC32MK GP/MC Family 4.1.1 BOOT FLASH SEQUENCE AND CONFIGURATION SPACES Sequence space is used to identify which boot Flash is aliased by aliased regions. If the value programmed into the TSEQ bits of the BF1SEQ word is equal to or greater than the value programmed into the TSEQ bits of the BF2SEQ word, Boot Flash 1 is aliased by the lower boot alias region, and Boot Flash 2 is aliased by the upper boot alias region. If the TSEQ bits of the BF2SEQ word is greater than the TSEQ bits of the BF1SEQ word, the opposite is true (see Table 4-2 and Table 4-3 for BFxSEQ word memory locations). Once boot Flash memories are aliased, configuration space located in the lower boot alias region is used as the basis for the Configuration words, DEVSIGN0, DEVCP0, and DEVCFGx. This means that the boot Flash region to be aliased by lower boot alias region memory must contain configuration values in the appropriate memory locations. Note: Use only Quad Word program operation (NVMOP = 0010) when programming data into the sequence and configuration spaces. DS60001402H-page 72  2016-2021 Microchip Technology Inc. 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 31:0 31:0 31:0 Note: See Table 33-1 for the bit descriptions. 31:0 31:0 31:0 CSEQ 31:16 3FF0 BF1SEQ 15:0 TSEQ Legend: x = unknown value on Reset; — = Reserved, read as ‘1’. Reset values are shown in hexadecimal. BF1DEVCFG3 BF1DEVCFG2 BF1DEVCFG1 BF1DEVCFG0 BF1DEVCP BF1DEVSIGN BOOT FLASH 2 SEQUENCE AND CONFIGURATION WORDS SUMMARY 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 BF2DEVCFG3 BF2DEVCFG2 BF2DEVCFG1 BF2DEVCFG0 BF2DEVCP BF2DEVSIGN 20/4 19/3 18/2 17/1 16/0 All Resets 31/15 31:0 31:0 31:0 Note: See Table 33-1 for the bit descriptions. 31:0 31:0 31:0 CSEQ 31:16 3FF0 BF2SEQ 15:0 TSEQ Legend: x = unknown value on Reset; — = Reserved, read as ‘1’. Reset values are shown in hexadecimal. 3FC0 3FC4 3FC8 3FCC 3FDC 3FEC xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx Bits Register Name Virtual Address (BFC6_#) TABLE 4-3: Bit Range 3FC0 3FC4 3FC8 3FCC 3FDC 3FEC All Reset Bit Range Bits Register Name Virtual Address (BFC4_#) BOOT FLASH 1 SEQUENCE AND CONFIGURATION WORDS SUMMARY xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx PIC32MK GP/MC Family DS60001402H-page 73 TABLE 4-2:  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 4-1: Bit Range 31:24 23:16 15:8 7:0 BFxSEQ: BOOT FLASH ‘x’ SEQUENCE REGISTER (‘x’ = 1 AND 2) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/P R/P R/P R/P R/P R/P R/P R/P R/P R/P R/P R/P R/P R/P R/P R/P R/P R/P R/P CSEQ R/P R/P R/P R/P R/P R/P R/P R/P CSEQ TSEQ R/P R/P R/P R/P R/P TSEQ Legend: P = Programmable 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 31-16 CSEQ: Boot Flash Complement Sequence Number bits bit 15-0 TSEQ: Boot Flash True Sequence Number bits DS60001402H-page 74  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family 4.2 System Bus Arbitration Note: The System Bus interconnect implements one or more instantiations of the SonicsSX® interconnect from Sonics, Inc. This document contains materials that are (c) 2003-2015 Sonics, Inc., and that constitute proprietary information of Sonics, Inc. SonicsSX is a registered trademark of Sonics, Inc. All such materials and trademarks are used under license from Sonics, Inc. TABLE 4-4: Target # As shown in the PIC32MK GP/MC Family Block Diagram (see Figure 1-1), there are multiple initiator modules (I1 through I13) in the system that can access various target modules (T1 through T14). Table 4-4 illustrates which initiator can access which target. The System Bus supports simultaneous access to targets by initiators, so long as the initiators are accessing different targets. The System Bus will perform arbitration, if multiple initiators attempt to access the same target. INITIATORS TO TARGETS ACCESS ASSOCIATION Initiator ID: 1 2 3 4 5 6 7 8 9 10 11 12 13 Name: CPU IS CPU ID DMA Read DMA Write Flash ICD JTAG ADC Mem. USB1 USB2 CAN1 CAN2 CAN3 CAN4 1 Program Flash 2 Data X X 3 Peripheral Module X X X X X X 4 RAM Bank 1 X X X X X X X X X X X X X 5 RAM Bank 2 X X X X X X X X X X X X X 7 Peripheral Bus 1:  DMT, CVR, PPS Input, PPS Output, WDT X X X X Peripheral Bus 2:  Timer1-Timer9, I2C1-I2C2, SPI1-SPI2, UART1-UART2, CDAC1, OC1-OC9, IC1-IC9, PMP, Comparator 1- Comparator 5, Op amp 1-Op amp 4 PWM1-PWM12 QEI1-QEI6 X X X X Peripheral Bus 3:  IC10-IC16, OC10-OC16, SPI3-SPI6, I2C3-I2C4, UART3-UART6, CDAC2-CDAC3 X X X X 10 Peripheral Bus 4: PORTA-PORTG X X X X 11 Peripheral Bus 5: USB1-USB2, CAN1-CAN4 ADC X X Peripheral Bus 6: DSCON, RTCC X X 8 9 14  2016-2021 Microchip Technology Inc. DS60001402H-page 75 PIC32MK GP/MC Family The System Bus arbitration scheme implements a nonprogrammable, Least Recently Serviced (LRS) priority, which provides Quality Of Service (QOS) for most initiators. However, some initiators can use Fixed High Priority (HIGH) arbitration to guarantee their access to data. 4.3 The arbitration scheme for the available initiators is shown in Table 4-5. The System Bus divides the entire memory space into fourteen target regions and permits access to each target by initiators through permission groups. Four Permission Groups (0 through 3) can be assigned to each initiator. Each permission group is independent of the others and can have exclusive or shared access to a region. TABLE 4-5: INITIATOR ID AND QOS Name ID QOS CPU-IS 1 LRS CPU-DS 2 LRS DMA Read 3 LRS DMA Write 4 LRS Flash Controller 5 HIGH ICD-JTAG 6 LRS ADC 7 LRS USB1 8 LRS USB2 9 LRS CAN1 10 LRS CAN2 11 LRS CAN3 12 LRS CAN4 13 LRS Permission Access and System Bus Registers The System Bus on PIC32MK GP/MC family of microcontrollers provides access control capabilities for the transaction initiators on the System Bus. Using the CFGPG register (see Register 33-8 in 33.0 “Special Features”), Boot firmware can assign a permission group to each initiator, which can make requests on the System Bus. The available targets and their regions, as well as the associated control registers to assign protection, are described and listed in Table 4-6. Register 4-2 through Register 4-10 are used for setting and controlling access permission groups and regions. To change these registers, they must be unlocked in hardware. The register lock is controlled by the PGLOCK Configuration bit (CFGCON). Setting the PGLOCK bit prevents writes to the control registers and clearing the PGLOCK bit allows writes. To set or clear the PGLOCK bit, an unlock sequence must be executed. Refer to Section 42. “Oscillators with Enhanced PLL” (DS60001250) in the “PIC32 Family Reference Manual” for details. DS60001402H-page 76  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family TABLE 4-6: SYSTEM BUS TARGETS AND ASSOCIATED PROTECTION REGISTERS SBTxREGy Register Target Number Target Description Name Region Physical Start Address Region Priority Size Level SBT0REG0 Region 0 1F8F0000 1,1,1,1 SBT0WR0 1,1,1,1 0,0,0,1 SBT0WR1 0,0,0,1 0 SBT1RD0 1,1,1,1 SBT1WR0 0,0,0,0 2 SBT1RD2 0,0,0,1 SBT1WR2 0,0,0,0 4 KB 2 SBT1RD3 0,0,0,1 SBT1WR3 0,0,0,0 4 KB 2 SBT1RD4 0,0,0,1 SBT1WR4 0,0,0,0 4 KB 2 SBT1RD5 0,0,0,1 SBT1WR5 0,0,0,0 0 SBT2RD0 1,1,1,1 SBT2WR0 0,0,0,0 4 KB 1 SBT1REG5 Region 5 1FC64000 SBT2REG0 Region 0 1D000000 SBT2REG2 Region 2 1FC04000 4 KB 2 SBT2RD2 0,0,0,1 SBT2WR2 0,0,0,0 SBT2REG3 Region 3 1FC24000 4 KB 2 SBT2RD3 0,0,0,1 SBT2WR3 0,0,0,0 SBT2REG4 Region 4 1FC44000 4 KB 2 SBT2RD4 0,0,0,1 SBT2WR4 0,0,0,0 SBT2REG5 Region 5 1FC64000 4 KB 2 SBT2RD5 0,0,0,1 SBT2WR5 0,0,0,0 0 SBT3RD0 1,1,1,1 SBT3WR0 0,0,0,0 SBT3REG0 Region 0 1D000000 Legend: Flash Memory (peripheral) Program Flash R = Read; Name SBT0RD0 32 KB SBT1REG0 Region 0 1D000000 3 Name Write Permission (Group3, Group2, Group1, Group0) SBT0RD1 Flash Memory (CPU Instruction) SBT1REG2 Region 2 1FC04000 Program Flash SBT1REG3 Region 3 1FC24000 Boot Flash Prefetch SBT1REG4 Region 4 1FC44000 Flash Memory (CPU data) Program Flash Read Permission (Group3, Group2, Group1, Group0) 0 System Bus 2 SBTxWRy Register 3 0 SBT0REG1 Region 1 1F8F8000 SBTxRDy Register SBT3REG2 Region 2 1FC04000 4 KB 2 SBT3RD2 0,0,0,1 SBT3WR2 0,0,0,0 SBT3REG3 Region 3 1FC24000 4 KB 2 SBT3RD3 0,0,0,1 SBT3WR3 0,0,0,0 SBT3REG4 Region 4 1FC44000 4 KB 2 SBT3RD4 0,0,0,1 SBT3WR4 0,0,0,0 SBT3REG5 Region 5 1FC64000 4 KB 2 SBT3RD5 0,0,0,1 SBT3WR5 0,0,0,0 R/W = Read/Write;  2016-2021 Microchip Technology Inc. ‘x’ in a register name = 0-13; ‘y’ in a register name = 0-8. DS60001402H-page 77 Virtual Address (BF8F_#) Register Name 0510 SBFLAG Register Name 8020 SBT0ELOG1 All Resets Bit Range 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 31:16 — — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — T3PGV T2PGV T1PGV 22/6 21/5 20/4 19/3 18/2 17/1 16/0 — — — — — — — 0000 T0PGV 0000 SYSTEM BUS TARGET 0 REGISTER MAP SBT0ELOG2 SBT0ECON SBT0ECLRS SBT0REG0 8050 SBT0RD0 8058 SBT0WR0 8060 SBT0REG1 DS60001402H-page 78 8070 SBT0RD1 8078 SBT0WR1 Legend: Note: Bit Range Bits 8038 SBT0ECLRM 8040 17/1 0000 29/13 31/15 31:16 MULTI 30/14 29/13 28/12 — — — 15:0 27/11 26/10 25/9 24/8 CODE 23/7 — INITID REGION — CMD — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — — — 31:16 — — — — — — — ERRP — — — — — — — — 0000 15:0 — — — — — — — — — — — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — — — — — — — — 31:16 — — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — — — — PRI — — — — xxxx — — xxxx 31:16 — 0000 31:16 — GROUP BASE — — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 PRI — GROUP1 GROUP0 xxxx — — BASE xxxx SIZE — — — xxxx — — xxxx 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. For reset values listed as ‘xxxx’, please refer to Table 4-6 for the actual reset values. xxxx GROUP1 GROUP0 xxxx BASE 15:0 0000 CLEAR 0000 xxxx SIZE 31:16 31:16 0000 CLEAR 0000 BASE 15:0 0000 GROUP1 GROUP0 xxxx — — xxxx GROUP1 GROUP0 xxxx PIC32MK GP/MC Family 8030 18/2 — 30/14 x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. TABLE 4-8: 8028 19/3 16/0 31/15 All Resets Legend: 8024 SYSTEM BUS REGISTER MAP Bits Virtual Address (BF8F_#)  2016-2021 Microchip Technology Inc. TABLE 4-7: Virtual Address (BF8F_#) Register Name 8420 SBT1ELOG1 8424 SBT1ELOG2 8428 SBT1ECON 8430 SBT1ECLRS SBT1REG0 8450 SBT1RD0 8458 SBT1WR0 8480 SBT1REG2 8490 SBT1RD2 8498 SBT1WR2 84A0 SBT1REG3  2016-2021 Microchip Technology Inc. 84B0 SBT1RD3 84B8 SBT1WR3 84C0 SBT1REG4 84D0 SBT1RD4 84D8 SBT1WR4 Legend: Note: 31/15 31:16 MULTI 30/14 29/13 28/12 — — — 15:0 27/11 26/10 25/9 24/8 CODE 23/7 — INITID 22/6 21/5 20/4 19/3 18/2 — — — — — REGION — 17/1 16/0 — — CMD 0000 0000 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — — — 31:16 — — — — — — — ERRP — — — — — — — — 0000 15:0 — — — — — — — — — — — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — — — — — — — — 31:16 — — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — — — — PRI — — — — xxxx — — xxxx 31:16 — All Resets Bit Range Bits 8438 SBT1ECLRM 8440 SYSTEM BUS TARGET 1 REGISTER MAP — GROUP CLEAR 0000 — BASE xxxx SIZE 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 PRI — 31:16 GROUP1 GROUP0 xxxx — — BASE xxxx SIZE — — — xxxx — — xxxx 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 PRI — 31:16 GROUP1 GROUP0 xxxx — — BASE xxxx SIZE — — — xxxx — — xxxx 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 PRI — 31:16 GROUP1 GROUP0 xxxx — — BASE xxxx SIZE — — — xxxx — — xxxx 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. For reset values listed as ‘xxxx’, please refer to Table 4-6 for the actual reset values. xxxx GROUP1 GROUP0 xxxx BASE 15:0 xxxx GROUP1 GROUP0 xxxx BASE 15:0 xxxx GROUP1 GROUP0 xxxx BASE 15:0 0000 CLEAR 0000 BASE 15:0 0000 0000 GROUP1 GROUP0 xxxx — — xxxx GROUP1 GROUP0 xxxx PIC32MK GP/MC Family DS60001402H-page 79 TABLE 4-9: Virtual Address (BF8F_#) Register Name 84E0 SBT1REG5 SYSTEM BUS TARGET 1 REGISTER MAP (CONTINUED) 84F0 SBT1RD5 84F8 SBT1WR5 Legend: Note: 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 PRI — 31:16 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 — — — xxxx — — xxxx BASE 15:0 BASE All Resets Bits Bit Range  2016-2021 Microchip Technology Inc. TABLE 4-9: xxxx SIZE 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 GROUP1 GROUP0 xxxx — — xxxx GROUP1 GROUP0 xxxx x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. For reset values listed as ‘xxxx’, please refer to Table 4-6 for the actual reset values. PIC32MK GP/MC Family DS60001402H-page 80 8824 SBT2ELOG2 8828 SBT2ECON 8830 SBT2ECLRS 8838 SBT2ECLRM 8840 SBT2REG0 8850 SBT2RD0 8858 SBT2WR0 8860 SBT2REG1  2016-2021 Microchip Technology Inc. 8870 SBT2RD1 8878 SBT2WR1 8880 SBT2REG2 8890 SBT2RD2 8898 SBT2WR2 Legend: Note: Bits 31/15 31:16 MULTI 30/14 29/13 28/12 — — — 15:0 27/11 26/10 25/9 24/8 CODE 23/7 — INITID 22/6 21/5 20/4 19/3 18/2 — — — — — REGION — 17/1 16/0 — — CMD All Resets Register Name SBT2ELOG1 Bit Range Virtual Address (BF8F_#) 8820 SYSTEM BUS TARGET 2 REGISTER MAP 0000 0000 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — — — 31:16 — — — — — — — ERRP — — — — — — — — 0000 15:0 — — — — — — — — — — — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — — — — — — — — 31:16 — — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — — — — PRI — — — — xxxx — — xxxx 31:16 — — GROUP CLEAR 0000 — BASE xxxx SIZE 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 PRI — 31:16 GROUP1 GROUP0 xxxx — — BASE xxxx SIZE — — — xxxx — — xxxx 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 PRI — 31:16 GROUP1 GROUP0 xxxx — — BASE xxxx SIZE — — — xxxx — — xxxx 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. For reset values listed as ‘xxxx’, please refer to Table 4-6 for the actual reset values. xxxx GROUP1 GROUP0 xxxx BASE 15:0 xxxx GROUP1 GROUP0 xxxx BASE 15:0 0000 CLEAR 0000 BASE 15:0 0000 0000 GROUP1 GROUP0 xxxx — — xxxx GROUP1 GROUP0 xxxx PIC32MK GP/MC Family DS60001402H-page 81 TABLE 4-10: 8C20 SBT3ELOG1 8C24 SBT3ELOG2 8C28 SBT3ECON 8C30 SBT3ECLRS 8C38 SBT3ECLRM 8C40 SBT3REG0 SBT3RD0 8C58 SBT3WR0 8C60 SBT3REG1 8C70 SBT3RD1 8C78 SBT3WR1 8C80 SBT3REG2 DS60001402H-page 82 8C90 SBT3RD2 8C98 SBT3WR2 Legend: Note: 31/15 31:16 MULTI 30/14 29/13 28/12 — — — 15:0 27/11 26/10 25/9 24/8 CODE 23/7 — INITID 22/6 21/5 20/4 19/3 18/2 — — — — — REGION — 17/1 16/0 — — CMD All Resets Bits 0000 0000 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — — — 31:16 — — — — — — — ERRP — — — — — — — — 0000 15:0 — — — — — — — — — — — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — — — — — — — — 31:16 — — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — — — — PRI — — — — xxxx — — xxxx 31:16 — — GROUP CLEAR 0000 — BASE xxxx SIZE 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 PRI — 31:16 GROUP1 GROUP0 xxxx — — BASE xxxx SIZE — — — xxxx — — xxxx 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 PRI — 31:16 GROUP1 GROUP0 xxxx — — BASE xxxx SIZE — — — xxxx — — xxxx 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — GROUP3 GROUP2 x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. For reset values listed as ‘xxxx’, please refer to Table 4-6 for the actual reset values. xxxx GROUP1 GROUP0 xxxx BASE 15:0 xxxx GROUP1 GROUP0 xxxx BASE 15:0 0000 CLEAR 0000 BASE 15:0 0000 0000 GROUP1 GROUP0 xxxx — — xxxx GROUP1 GROUP0 xxxx PIC32MK GP/MC Family 8C50 SYSTEM BUS TARGET 3 REGISTER MAP Bit Range Register Name Virtual Address (BF8F_#)  2016-2021 Microchip Technology Inc. TABLE 4-11: PIC32MK GP/MC Family REGISTER 4-2: Bit Range 31:24 23:16 15:8 7:0 SBFLAG: SYSTEM BUS STATUS FLAG REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 R-0 R-0 R-0 R-0 — — — — T3PGV T2PGV T1PGV T0PGV Legend: R = Readable bit -n = Value at POR bit 31-4 bit 3-0 W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared Unimplemented: Read as ‘0’ T3PGV:T0PGV: Target Permission Group Violation Status bits Refer to Table 4-6 for the list of available targets and their descriptions. 1 = Target is reporting a Permission Group (PG) violation 0 = Target is not reporting a PG violation Note: All errors are cleared at the source, that is, SBTxELOG1, SBTxELOG2, SBTxECLRS, or SBTxECLRM registers.  2016-2021 Microchip Technology Inc. DS60001402H-page 83 PIC32MK GP/MC Family REGISTER 4-3: Bit Range SBTxELOG1: SYSTEM BUS TARGET ‘x’ ERROR LOG REGISTER 1  (‘x’ = 0-3) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0, C U-0 U-0 U-0 R/W-0, C R/W-0, C R/W-0, C R/W-0, C U-0 U-0 31:24 23:16 15:8 MULTI — — — U-0 U-0 U-0 U-0 CODE U-0 U-0 — — — — — — — — R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 INITID 7:0 REGION Legend: R = Readable bit -n = Value at POR C = Clearable bit W = Writable bit ‘1’ = Bit is set U-0 — CMD U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared bit 31 MULTI: Multiple Permission Violations Status bit This bit is cleared by writing a ‘1’. 1 = Multiple errors have been detected 0 = No multiple errors have been detected bit 30-28 Unimplemented: Read as ‘0’ bit 27-24 CODE: Error Code bits Indicates the type of error that was detected. These bits are cleared by writing a ‘1’. 1111 = Reserved 1101 = Reserved • • • 0011 = Permission violation 0010 = Reserved 0001 = Reserved 0000 = No error bit 23-16 Unimplemented: Read as ‘0’ bit 15-8 INITID: Initiator ID of Requester bits 11111111 = Reserved • • • 00001111 = Reserved 00001110 = Reserved 00001101 = CAN4 00001100 = CAN3 00001011 = CAN2 00001010 = CAN1 00001001 = USB2 00001000 = USB1 00000111 = ADC0-ADC5, ADC7 00000110 = Reserved 00000101 = Flash Controller 00000100 = DMA Read 00000011 = DMA Read 00000010 = CPU (CPUPRI (CFGCON) = 1) 00000001 = CPU (CPUPRI (CFGCON) = 0) 00000000 = Reserved Note: Refer to Table 4-6 for the list of available targets and their descriptions. DS60001402H-page 84  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 4-3: bit 7-4 bit 3 bit 2-0 Note: SBTxELOG1: SYSTEM BUS TARGET ‘x’ ERROR LOG REGISTER 1  (‘x’ = 0-3) (CONTINUED) REGION: Requested Region Number bits 1111 - 0000 = Target’s region that reported a permission group violation Unimplemented: Read as ‘0’ CMD: Transaction Command of the Requester bits 111 = Reserved 110 = Reserved 101 = Write (a non-posted write) 100 = Reserved 011 = Read (a locked read caused by a Read-Modify-Write transaction) 010 = Read 001 = Write 000 = Idle Refer to Table 4-6 for the list of available targets and their descriptions.  2016-2021 Microchip Technology Inc. DS60001402H-page 85 PIC32MK GP/MC Family REGISTER 4-4: Bit Range 31:24 23:16 15:8 7:0 SBTxELOG2: SYSTEM BUS TARGET ‘x’ ERROR LOG REGISTER 2 (‘x’ = 0-3) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 R-0 R-0 — — — — — — GROUP 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 bit 31-3 Unimplemented: Read as ‘0’ bit 1-0 GROUP: Requested Permissions Group bits 11 = Reserved 10 = Reserved 01 = Group 1 00 = Group 0 (default group of CPU at Reset) Note: Refer to Table 4-6 for the list of available targets and their descriptions. REGISTER 4-5: Bit Range 31:24 23:16 15:8 7:0 SBTxECON: SYSTEM BUS TARGET ‘x’ ERROR CONTROL REGISTER  (‘x’ = 0-3) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 — — — — — — — ERRP U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — 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 bit 31-25 Unimplemented: Read as ‘0’ bit 24 ERRP: Error Control bit 1 = Report protection group violation errors 0 = Do not report protection group violation errors bit 23-0 Unimplemented: Read as ‘0’ Note: Refer to Table 4-6 for the list of available targets and their descriptions. DS60001402H-page 86  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 4-6: Bit Range 31:24 23:16 15:8 7:0 SBTxECLRS: SYSTEM BUS TARGET ‘x’ SINGLE ERROR CLEAR REGISTER  (‘x’ = 0-3) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 R-0 — — — — — — — CLEAR 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 bit 31-1 Unimplemented: Read as ‘0’ bit 0 CLEAR: Clear Single Error on Read bit A single error as reported through SBTxELOG1 and SBTxELOG2 is cleared by a read of this register. Note: Refer to Table 4-6 for the list of available targets and their descriptions. REGISTER 4-7: Bit Range 31:24 23:16 15:8 7:0 SBTxECLRM: SYSTEM BUS TARGET ‘x’ MULTIPLE ERROR CLEAR REGISTER (‘x’ = 0-3) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 R-0 — — — — — — — CLEAR 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 bit 31-1 Unimplemented: Read as ‘0’ bit 0 CLEAR: Clear Multiple Errors on Read bit Multiple errors as reported through SBTxELOG1 and SBTxELOG2 is cleared by a read of this register. Note: Refer to Table 4-6 for the list of available targets and their descriptions.  2016-2021 Microchip Technology Inc. DS60001402H-page 87 PIC32MK GP/MC Family REGISTER 4-8: Bit Range 31:24 23:16 15:8 7:0 SBTxREGy: SYSTEM BUS TARGET ‘x’ REGION ‘y’ REGISTER  (‘x’ = 0-3; ‘y’ = 0-2) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W0 R/W-0 R/W0 R/W-0 R/W0 R/W-0 R/W0 R/W-0 R/W-0 R/W-0 R/W-0 R-0 U-0 BASE R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 BASE R/W-0 R/W-0 BASE R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 SIZE PRI — U-0 U-0 U-0 — — — 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 bit 31-10 BASE: Region Base Address bits bit 9 PRI: Region Priority Level bit 1 = Level 2 0 = Level 1 bit 8 Unimplemented: Read as ‘0’ bit 7-3 SIZE: Region Size bits Permissions for a region are only active is the SIZE is non-zero. 11111 = Region size = 2(SIZE – 1) x 1024 (bytes) • • • 00001 = Region size = 2(SIZE – 1) x 1024 (bytes) 00000 = Region is not present bit 2-0 Unimplemented: Read as ‘0’ Note 1: 2: Refer to Table 4-6 for the list of available targets and their descriptions. For some target regions, certain bits in this register are read-only with preset values. See Table 4-6 for more information. DS60001402H-page 88  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 4-9: Bit Range 31:24 23:16 15:8 7:0 SBTxRDy: SYSTEM BUS TARGET ‘x’ REGION ‘y’ READ PERMISSIONS REGISTER (‘x’ = 0-3; ‘y’ = 0-2) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 R-1 R-1 R-1 R-1 — — — — GROUP3 GROUP2 GROUP1 GROUP0 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 bit 31-4 Unimplemented: Read as ‘0’ bit 3 GROUP3: Group 3 Read Permissions bits 1 = Privilege Group 3 has read permission 0 = Privilege Group 3 does not have read permission bit 2 GROUP2: Group 2 Read Permissions bits 1 = Privilege Group 2 has read permission 0 = Privilege Group 2 does not have read permission bit 1 GROUP1: Group 1 Read Permissions bits 1 = Privilege Group 1 has read permission 0 = Privilege Group 1 does not have read permission bit 0 GROUP0: Group 0 Read Permissions bits 1 = Privilege Group 0 has read permission 0 = Privilege Group 0 does not have read permission Note 1: 2: Refer to Table 4-6 for the list of available targets and their descriptions. For some target regions, certain bits in this register are read-only with preset values. See Table 4-6 for more information.  2016-2021 Microchip Technology Inc. DS60001402H-page 89 PIC32MK GP/MC Family REGISTER 4-10: Bit Range 31:24 23:16 15:8 7:0 SBTxWRy: SYSTEM BUS TARGET ‘x’ REGION ‘y’ WRITE PERMISSIONS REGISTER (‘x’ = 0-3; ‘y’ = 0-2) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 R/W-1 R/W-1 R/W-1 R/W-1 — — — — GROUP3 GROUP2 GROUP1 GROUP0 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 bit 31-4 Unimplemented: Read as ‘0’ bit 3 GROUP3: Group 3 Write Permissions bits 1 = Privilege Group 3 has write permission 0 = Privilege Group 3 does not have write permission bit 2 GROUP2: Group 2 Write Permissions bits 1 = Privilege Group 2 has write permission 0 = Privilege Group 2 does not have write permission bit 1 GROUP1: Group 1 Write Permissions bits 1 = Privilege Group 1 has write permission 0 = Privilege Group 1 does not have write permission bit 0 GROUP0: Group 0 Write Permissions bits 1 = Privilege Group 0 has write permission 0 = Privilege Group 0 does not have write permission Note 1: 2: Refer to Table 4-6 for the list of available targets and their descriptions. For some target regions, certain bits in this register are read-only with preset values. See Table 4-6 for more information. DS60001402H-page 90  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family NOTES:  2016-2021 Microchip Technology Inc. DS60001402H-page 91 PIC32MK GP/MC Family 5.0 Note: FLASH PROGRAM MEMORY This data sheet summarizes the features of the PIC32MK GP/MC family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 52. “Flash Program Memory with Support for Live Update” (DS60001193), which is available from the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). PIC32MK GP/MC devices contain an internal Flash program memory for executing user code, which includes the following features: • Two Flash banks for live update support • Dual boot support • Write protection for program and boot Flash RTSP is performed by software executing from either Flash or RAM memory. For information about RTSP techniques, refer to Section 52. “Flash Program Memory with Support for Live Update” (DS60001193) in the “PIC32 Family Reference Manual”. EJTAG is performed using the EJTAG port of the device and an EJTAG capable programmer. ICSP is performed using a serial data connection to the device and allows much faster programming times than RTSP. The EJTAG and ICSP methods are described in the “PIC32 Flash Programming Specification” (DS60001145), which is available for download from the Microchip web site (www.microchip.com). Note: In PIC32MK GP/MC devices, the Flash page size is 1024 Instruction Words and the row size is 128 Instruction Words. There are three methods by which the user can program this memory: • Run-Time Self-Programming (RTSP) • EJTAG Programming • In-Circuit Serial Programming (ICSP) DS60001402H-page 92  2016-2021 Microchip Technology Inc. Flash Control Registers Virtual Address (BF80_#) Register Name TABLE 5-1: 0A00 NVMCON(1) 0A10 NVMKEY 0A20 NVMADDR(1) FLASH CONTROLLER REGISTER MAP 0A30 NVMDATA0 0A40 NVMDATA1 0A50 NVMDATA2 0A60 NVMDATA3 0A70 NVMSRC ADDR 0A80 NVMPWP(1) 0A90 NVMBWP(1) 0AA0 NVMCON2(1) 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 — — — — 31:16 — — — — — — — — — — — — 15:0 WR WREN WRERR LVDERR — — — — PFSWAP BFSWAP — — 31:16 31:16 0000 0000 0000 NVMADDR 15:0 31:16 0000 0000 NVMDATA0 15:0 31:16 0000 0000 NVMDATA1 15:0 31:16 0000 0000 NVMDATA2 15:0 31:16 0000 0000 NVMDATA3 15:0 31:16 0000 0000 NVMSRCADDR 15:0 PWPULOCK — — — — — — 0000 — 15:0 PWP 8000 PWP 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 LBWPULOCK — — LBWP4 LBWP3 LBWP2 LBWP1 LBWP0 UBWPULOCK — — UBWP4 UBWP3 UBWP2 UBWP1 UBWP0 9FDF — — — — — — — — — ERETRY SWAPLOCK — — — 31:16 15:0 ERSCNT LPRD — CREAD1 VREAD1 LPRDWS — — — 001F Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note This register has corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. 1: 0000 0000 NVMKEY 15:0 31:16 NVMOP All Resets Bit Range Bits 0000 PIC32MK GP/MC Family DS60001402H-page 93 5.1  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 5-1: NVMCON: PROGRAMMING CONTROL REGISTER Bit Range Bit 31/23/15/7 Bit 30/22/14/6 31:24 U-0 U-0 U-0 — — — U-0 U-0 — — 23:16 15:8 7:0 Bit Bit 29/21/13/5 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 — — — — — U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — U-0 R/W-0, HC R/W-0 R-0, HS, HC R-0, HS, HC U-0 U-0 U-0 WR(1) WREN(1) WRERR(1) LVDERR(1) — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PFSWAP(2) BFSWAP(2,3) Legend: U-0 U-0 — — NVMOP HS = Hardware Set HC = Hardware Cleared 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 31-16 Unimplemented: Read as ‘0’ bit 15 WR: Write Control bit(1) This bit cannot be cleared and can be set only when WREN = 1 and the unlock sequence has been performed. 1 = Initiate a Flash operation 0 = Flash operation is complete or inactive bit 14 WREN: Write Enable bit(1) 1 = Enable writes to the WR bit and disables writes to the NVMOP bits 0 = Disable writes to WR bit and enables writes to the NVMOP bits bit 13 WRERR: Write Error bit(1) This bit can be cleared only by setting the NVMOP bits = 0000 and initiating a Flash operation. 1 = Program or erase sequence did not complete successfully 0 = Program or erase sequence completed normally bit 12 LVDERR: Low-Voltage Detect Error bit(1) This bit can be cleared only by setting the NVMOP bits = 0000 and initiating a Flash operation. 1 = Low-voltage detected (possible data corruption, if WRERR is set) 0 = Voltage level is acceptable for programming bit 11-8 Unimplemented: Read as ‘0’ bit 7 PFSWAP: Program Flash Bank Swap Control bit(2) 1 = Program Flash Bank 2 is mapped to the lower mapped region and Program Flash Bank 1 is mapped to the upper mapped region 0 = Program Flash Bank 1 is mapped to the lower mapped region and Program Flash Bank 2 is mapped to the upper mapped region bit 6 BFSWAP: Boot Flash Bank Swap Control bit(2,3) 1 = Boot Flash Bank 2 is mapped to the lower boot region and program Boot Flash Bank 1 is mapped to the upper boot region 0 = Boot Flash Bank 1 is mapped to the lower boot region and program Boot Flash Bank 2 is mapped to the upper boot region bit 5-4 Unimplemented: Read as ‘0’ Note 1: 2: These bits are only reset by a Power-on Reset (POR) and are not affected by other reset sources. This bit can only be modified when the WREN bit = 0, the NVMKEY unlock sequence is satisfied, and the SWAPLOCK bits (NVMCON2) are cleared to ‘0’. The BFSWAP value is determined by the values of the user-programmed Sequence Numbers in each boot panel. 3: DS60001402H-page 94  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 5-1: bit 3-0 NVMCON: PROGRAMMING CONTROL REGISTER (CONTINUED) NVMOP: NVM Operation bits These bits are only writable when WREN = 0. 1111 = Reserved • • • 1000 = Reserved 0111 = Program erase operation: erase all of program Flash memory (all pages must be unprotected, PWP = 0x000000) 0110 = Upper program Flash memory erase operation: erases only the upper mapped region of program Flash (all pages in that region must be unprotected) 0101 = Lower program Flash memory erase operation: erases only the lower mapped region of program Flash (all pages in that region must be unprotected) 0100 = Page erase operation: erases page selected by NVMADDR, if it is not write-protected 0011 = Row program operation: programs row selected by NVMADDR, if it is not write-protected 0010 = Quad Word (128-bit) program operation: programs the 128-bit Flash word selected by NVMADDR,  if it is not write-protected 0001 = Word program operation: programs word selected by NVMADDR, if it is not write-protected 0000 = No operation Note 1: 2: 3: These bits are only reset by a Power-on Reset (POR) and are not affected by other reset sources. This bit can only be modified when the WREN bit = 0, the NVMKEY unlock sequence is satisfied, and the SWAPLOCK bits (NVMCON2) are cleared to ‘0’. The BFSWAP value is determined by the values of the user-programmed Sequence Numbers in each boot panel.  2016-2021 Microchip Technology Inc. DS60001402H-page 95 PIC32MK GP/MC Family REGISTER 5-2: NVMKEY: PROGRAMMING UNLOCK REGISTER Bit Range Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 31:24 W-0 W-0 W-0 Bit Bit 28/20/12/4 27/19/11/3 W-0 W-0 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 W-0 W-0 W-0 W-0 W-0 W-0 W-0 W-0 W-0 W-0 W-0 W-0 NVMKEY 23:16 W-0 W-0 W-0 W-0 W-0 NVMKEY 15:8 W-0 W-0 W-0 W-0 W-0 NVMKEY 7:0 W-0 W-0 W-0 W-0 W-0 NVMKEY Legend: R = Readable bit -n = Value at POR bit 31-0 Note: W = Writable bit ‘1’ = Bit is set NVMKEY: Unlock Register bits These bits are write-only, and read as ‘0’ on any read This register is used as part of the unlock sequence to prevent inadvertent writes to the PFM. REGISTER 5-3: NVMADDR: FLASH ADDRESS REGISTER Bit Range Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 31:24 R/W-0 R/W-0 R/W-0 23:16 R/W-0 15:8 R/W-0 7:0 R/W-0 Bit Bit 28/20/12/4 27/19/11/3 R/W-0 R/W-0 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 NVMADDR(1) R/W-0 R/W-0 R/W-0 R/W-0 NVMADDR(1) R/W-0 R/W-0 R/W-0 R/W-0 NVMADDR(1) R/W-0 R/W-0 R/W-0 R/W-0 NVMADDR(1) Legend: R = Readable bit -n = Value at POR bit 31-0 U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown NVMADDR: Flash Address bits(1) NVMOP Selection Flash Address Bits (NVMADDR) Page Erase Row Program Word Program Quad Word Program Note 1: Note: Address identifies the page to erase (NVMADDR are ignored). Address identifies the row to program (NVMADDR are ignored). Address identifies the word to program (NVMADDR are ignored). Address identifies the quad word (128-bit) to program (NVMADDR bits are ignored). For all other NVMOP bit settings, the Flash address is ignored. See the NVMCON register (Register 5-1) for additional information on these bits. The bits in this register are only reset by a POR and are not affected by other reset sources. DS60001402H-page 96  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 5-4: NVMDATAx: FLASH DATA REGISTER (x = 0-3) Bit Range Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 31:24 R/W-0 R/W-0 R/W-0 Bit Bit 28/20/12/4 27/19/11/3 R/W-0 R/W-0 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 NVMDATA 23:16 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 NVMDATA 15:8 R/W-0 R/W-0 R/W-0 R/W-0 7:0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 NVMDATA R/W-0 NVMDATA 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 bit 31-0 Note: x = Bit is unknown NVMDATA: Flash Data bits Word Program: Writes NVMDATA0 to the target Flash address defined in NVMADDR Quad Word Program: Writes NVMDATA3:NVMDATA2:NVMDATA1:NVMDATA0 to the target Flash address defined in NVMADDR. NVMDATA0 contains the Least Significant Instruction Word. The bits in this register are only reset by a POR and are not affected by other reset sources. REGISTER 5-5: NVMSRCADDR: SOURCE DATA ADDRESS REGISTER Bit Range Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 31:24 R/W-0 R/W-0 R/W-0 Bit Bit 28/20/12/4 27/19/11/3 R/W-0 R/W-0 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 NVMSRCADDR 23:16 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 NVMSRCADDR 15:8 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 NVMSRCADDR 7:0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 NVMSRCADDR 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 bit 31-0 Note: x = Bit is unknown NVMSRCADDR: Source Data Address bits The system physical address of the data to be programmed into the Flash when the NVMOP bits (NVMCON) are set to perform row programming. The bits in this register are only reset by a POR and are not affected by other reset sources.  2016-2021 Microchip Technology Inc. DS60001402H-page 97 PIC32MK GP/MC Family REGISTER 5-6: Bit Range 31:24 23:16 NVMPWP: PROGRAM FLASH WRITE-PROTECT REGISTER Bit 31/23/15/7 Bit Bit Bit Bit 30/22/14/6 29/21/13/5 28/20/12/4 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-1 U-0 U-0 U-0 U-0 U-0 U-0 U-0 PWPULOCK — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R-0 R-0 R-0 R-0 R-0 R-0 PWP 15:8 R/W-0 R/W-0 R-0 R-0 7:0 R-0 R-0 R-0 R-0 R-0 PWP R-0 PWP 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 bit 31 x = Bit is unknown PWPULOCK: Program Flash Memory Page Write-protect Unlock bit 1 = Register is not locked and can be modified 0 = Register is locked and cannot be modified This bit is only clearable and cannot be set except by any reset. bit 30-24 Unimplemented: Read as ‘0’ bit 23-0 Note: PWP: Flash Program Write-protect (Page) Address bits Physical memory below address 0x1Dxxxxxx is write protected, where ‘xxxxxx’ is specified by PWP. When PWP has a value of ‘0’, write protection is disabled for the entire program Flash. If the specified address falls within the page, the entire page and all pages below the current page will be protected. The bits in this register are only writable when the NVMKEY unlock sequence is followed. DS60001402H-page 98  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 5-7: NVMBWP: FLASH BOOT (PAGE) WRITE-PROTECT REGISTER Bit Range Bit 31/23/15/7 31:24 U-0 U-0 U-0 U-0 — — — — U-0 U-0 U-0 — — — R/W-1 U-0 LBWPULOCK 23:16 15:8 7:0 Bit Bit Bit Bit 30/22/14/6 29/21/13/5 28/20/12/4 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 — — — — U-0 U-0 U-0 U-0 U-0 — — — — — U-0 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 — — LBWP4(1) LBWP3(1) LBWP2(1) LBWP1(1) LBWP0(1) R/W-1 r-1 U-0 R/W-1 R/W-1 UBWPULOCK — — UBWP4(1) UBWP3(1) Legend: R/W-1 R/W-1 R/W-1 UBWP2(1) UBWP1(1) UBWP0(1) r = Reserved 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 31-16 Unimplemented: Read as ‘0’ bit 15 LBWPULOCK: Lower Boot Alias Write-protect Unlock bit 1 = LBWPx bits are not locked and can be modified 0 = LBWPx bits are locked and cannot be modified This bit is only clearable and cannot be set except by any reset. bit 14-13 Unimplemented: Read as ‘0’ bit 12 LBWP4: Lower Boot Alias Page 4 Write-protect bit(1) 1 = Write protection for physical address 0x01FC10000 through 0x1FC13FFF enabled 0 = Write protection for physical address 0x01FC10000 through 0x1FC13FFF disabled bit 11 LBWP3: Lower Boot Alias Page 3 Write-protect bit(1) 1 = Write protection for physical address 0x01FC0C000 through 0x1FC0FFFF enabled 0 = Write protection for physical address 0x01FC0C000 through 0x1FC0FFFF disabled bit 10 LBWP2: Lower Boot Alias Page 2 Write-protect bit(1) 1 = Write protection for physical address 0x01FC08000 through 0x1FC0BFFF enabled 0 = Write protection for physical address 0x01FC08000 through 0x1FC0BFFF disabled bit 9 LBWP1: Lower Boot Alias Page 1 Write-protect bit(1) 1 = Write protection for physical address 0x01FC04000 through 0x1FC07FFF enabled 0 = Write protection for physical address 0x01FC04000 through 0x1FC07FFF disabled bit 8 LBWP0: Lower Boot Alias Page 0 Write-protect bit(1) 1 = Write protection for physical address 0x01FC00000 through 0x1FC03FFF enabled 0 = Write protection for physical address 0x01FC00000 through 0x1FC03FFF disabled bit 7 UBWPULOCK: Upper Boot Alias Write-protect Unlock bit 1 = UBWPx bits are not locked and can be modified 0 = UBWPx bits are locked and cannot be modified This bit is only user-clearable and cannot be set except by any reset. bit 6 Reserved: This bit is reserved for use by development tools bit 5 Unimplemented: Read as ‘0’ Note 1: These bits are only available when the NVMKEY unlock sequence is performed and the associated Lock bit (LBWPULOCK or UBWPULOCK) is set. Note: The bits in this register are only writable when the NVMKEY unlock sequence is followed.  2016-2021 Microchip Technology Inc. DS60001402H-page 99 PIC32MK GP/MC Family REGISTER 5-7: NVMBWP: FLASH BOOT (PAGE) WRITE-PROTECT REGISTER bit 4 UBWP4: Upper Boot Alias Page 4 Write-protect bit(1) 1 = Write protection for physical address 0x01FC30000 through 0x1FC33FFF enabled 0 = Write protection for physical address 0x01FC30000 through 0x1FC33FFF disabled bit 3 UBWP3: Upper Boot Alias Page 3 Write-protect bit(1) 1 = Write protection for physical address 0x01FC2C000 through 0x1FC2FFFF enabled 0 = Write protection for physical address 0x01FC2C000 through 0x1FC2FFFF disabled bit 2 UBWP2: Upper Boot Alias Page 2 Write-protect bit(1) 1 = Write protection for physical address 0x01FC28000 through 0x1FC2BFFF enabled 0 = Write protection for physical address 0x01FC28000 through 0x1FC2BFFF disabled bit 1 UBWP1: Upper Boot Alias Page 1 Write-protect bit(1) 1 = Write protection for physical address 0x01FC24000 through 0x1FC27FFF enabled 0 = Write protection for physical address 0x01FC24000 through 0x1FC27FFF disabled bit 0 UBWP0: Upper Boot Alias Page 0 Write-protect bit(1) 1 = Write protection for physical address 0x01FC20000 through 0x1FC23FFF enabled 0 = Write protection for physical address 0x01FC20000 through 0x1FC23FFF disabled Note 1: These bits are only available when the NVMKEY unlock sequence is performed and the associated Lock bit (LBWPULOCK or UBWPULOCK) is set. Note: The bits in this register are only writable when the NVMKEY unlock sequence is followed. DS60001402H-page 100  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 5-8: NVMCON2: FLASH PROGRAMMING CONTROL REGISTER 2 Bit Range Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 31:24 R/W-0 R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 U-0 — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 ERSCNT 23:16 15:8 U-0 U-0 U-0 — — — U-0 R/W-0 R/W-0 (1) LPRD 7:0 R/W-0 LPRDWS(1) R/W-0 (1) CREAD1 VREAD1 U-0 (1) U-0 — — ERETRY R/W-0 U-0 U-0 U-0 U-0 U-0 U-0 SWAPLOCK — — — — — — R/W-0 — R/W-0 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 bit 28 31- ERSCNT: Erase Retry State Count bits bit 21 27- Unimplemented: Read as ‘0’ x = Bit is unknown These bits can be used by software to track the erase retry state count in the event of a Host Clear or BOR. These bits are purely for software tracking purpose and are not used by hardware in any way. bit 2016 LPRDWS: Wait State bits(1) 11111 = 31 Wait States (32 total System Clocks) 11110 = 30 Wait States (31 total System Clocks) • • • 00010 = 2 Wait States (3 total System Clocks) 00001 = 1 Wait State (2 total System Clocks) 00000 = 0 Wait State (1 total System Clock) Note: When VREAD1 = 1, NVMWS only affects the panel containing NVMADDR. When LPRD = 1, LPRDWS affects all reads to all panels. Required Flash Wait States LPRDWS Note 1: 2: bit 15 SYSCLK (MHz) 3 - Wait State 0 < SYSCLK < 60 MHz 4 - Wait State 60 MHz < SYSCLK < 80 MHz 5 - Wait State 80 MHz < SYSCLK  120 MHz When the LPRD bit = 0, Flash read access wait states are governed by the PFMWS bits (CHECON). When the LPRD bit = 1, Flash read access wait states are governed by the LPRDWS bits. LPRD: Low-Power Read Control bit(1) 1 = Configures Flash for Low Power reads (increases access time). 0 = Configures Flash for Low Latency reads When LPRD = 1, the LPRDWS bits control the Flash wait states; otherwise, the PFMWS bits control the Flash wait states. Note 1: This bit can only be modified when the WREN bit = 0, and the NVMKEY unlock sequence is satisfied.  2016-2021 Microchip Technology Inc. DS60001402H-page 101 PIC32MK GP/MC Family REGISTER 5-8: NVMCON2: FLASH PROGRAMMING CONTROL REGISTER 2 (CONTINUED) bit 14 Unimplemented: Read as ‘0’ bit 13 CREAD1: Compare Read of Logic 1 bit(1) 1 = Compare Read is enabled (only if VERIFYREAD1 = 1) 0 = Compare Read is disabled Compare Read 1 causes all bits in a Flash Word to be evaluated during the read. If all bits are ‘1’, the lowest Word in the Flash Word evaluates to 0x00000001, all other words are 0x00010000. If any bit is ‘0’, the read evaluates to 0x00000000 for all Words in the Flash Word. bit 12 VREAD1: Verify Read of Logic 1 Control bit(1) 1 = Selects Erase Retry Procedure with Verify Read 0 = Selects Single Erase w/o Verify Read When VREAD1 = 1, Flash wait state control is from the LPRDWS bits for the panel containing NVMADDR. bit 11-10 Unimplemented: Read as ‘0’ bit 9-8 ERETRY: Erase Retry Control bits 11 = Erase strength for last retry cycle 10 = Erase strength for third retry cycle 01 = Erase strength for second retry cycle 00 = Erase strength for first retry cycle The user application should start with '00' (first retry cycle) and move on to higher strength if the programming does not complete. This bit is used only when VREAD1 = 1 and when VREAD1 = 1. bit 7-6 SWAPLOCK: Flash Memory Swap Lock Control bits 11 = PFSWAP and BFSWAP are not writable and SWAPLOCK is not writable 10 = PFSWAP and BFSWAP are not writable and SWAPLOCK is writable 01 = PFSWAP and BFSWAP are not writable and SWAPLOCK is writable 00 = PFSWAP and BFSWAP are writable and SWAPLOCK is writable bit 5-0 Unimplemented: Read as ‘0’ Note 1: This bit can only be modified when the WREN bit = 0, and the NVMKEY unlock sequence is satisfied. DS60001402H-page 102  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family NOTES:  2016-2021 Microchip Technology Inc. DS60001402H-page 103 PIC32MK GP/MC Family 6.0 Note: DATA EEPROM This data sheet summarizes the features of the PIC32MK GP/MC family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 58. “Data EEPROM” (DS60001341), which is available from the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). 6.1 Data EEPROM Flash Table 6-1 provides the status of the Data EEPROM Flash. TABLE 6-1: Data EE Wait Status EEWS bits (CFGCON2) = The Data EEPROM module provides the following features: • 1K x 32-bit Emulated Data EEPROM using the 1K x 16 x 33-bit (66 KB) • Register-based indirect access • Register-based, non-memory mapped, SFR Program/Erase/Read interface • Read: - Word read - Read start Control bit and read complete status flag - Read complete interrupt • Program/Erase: - No user erase required prior to program - Hardware Word program verify - Automatic page erase as part of wear-leveling scheme - Hardware page erase verify - Bulk and page erase - Write complete and error interrupts • Brown-out protection for all commands • Concurrent Data EEPROM read with Program Flash read/write • Endurance: - 160K program cycles per address location - Transparent wear-leveling scheme - No software overhead - Automatic page erase (once every 17 program write operations) - “Worn out” page detection and error flag - “Imminent Page Erase” prediction status flag to allow user to schedule wear leveling page erasure • Low-power features: - Always in stand-by unless accessed - Power down in Sleep and/or Idle mode - Independent Data EEPROM Flash power down in Idle Control bit DS60001402H-page 104 DATA EEPROM FLASH Note 1: 2: PBCLK (FSYSCLK / PBDIV bits (PB2DIV)) 0 0-39 MHz 1 40-59 MHz 2 60-79 MHz 3 80-97 MHz 4 98-117 MHz 5 118-120 MHz The Data EEPROM Flash must have its calibration trim bits reinitialized after each cold power-up before any attempted accesses. Refer to Section 58. “Data EEPROM” (DS60001341) of the “PIC32 Family Reference Manual” for additional information. Before any attempts to access the Data EEPROM module, the user application must configure the appropriate number of Wait states by configuring the EEWS bits (CFGCON2< 7:0>) according to the details provided in Table 6-1.  2016-2021 Microchip Technology Inc. Control Registers DATA EEPROM SFR SUMMARY 9000 EECON(1) 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 — — 19/3 18/2 — — 17/1 16/0 — — 0000 0000 31:16 — — — — — — — — — — 15:0 ON RDY SIDL ABORT — — — — RW WREN 9010 EEKEY(2) 31:16 — — — — — — — — — — — — — — — — 9020 EEADDR(3) 31:16 — — — — — — — — — — — — — — — 15:0 — — — — 15:0 9030 EEDATA Legend: Note 1: 2: 3: ERR ILW CMD 0000 EEKEY — All Resets Bit Range Bits Register Name Virtual Address (BF82_#) TABLE 6-2: 0000 EEADDR 0000 0000 31:16 EEDATA 0000 15:0 EEDATA 0000 — = unimplemented, read as ‘0’. This register has corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. This register is a write-only register. Reads always result in ‘0’. Because the EEPROM word size is 32 bits, for reads and writes the last two bits (EEADDR) must always be ‘0’. PIC32MK GP/MC Family DS60001402H-page 105 6.2  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 6-1: Bit Range 31:24 23:16 15:8 7:0 EECON(2): EEPROM CONTROL REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0, HC R-0 R/W-0 R/W-0, HC U-0 U-0 U-0 U-0 SIDL ABORT ON R/W-0, HC RW RDY R/W-0 (1) WREN Legend: R = Readable bit -n = Value at POR — — — — R/W-0, HS, HC R/W-0, HS, HC R/W-0, HS R/W-0 R/W-0 R/W-0 ERR ILW HS = Hardware settable W = Writable bit ‘1’ = Bit is set CMD(1) HC = Hardware clearable U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared bit 31-16 Unimplemented: Read as ‘0’ bit 15 ON: Data EEPROM Power Control bit 1 = Data EEPROM is enabled 0 = Data EEPROM is disabled bit 14 bit 13 bit 12 bit 11-8 bit 7 Attempting to clear this bit will have no effect if the RW bit is set. In addition, this bit is not cleared during Sleep if the FSLEEP bit in the DEVCFG register is set. RDY: Data EEPROM Ready bit 1 = Data EEPROM is ready for access 0 = Data EEPROM is not ready for access RDY is cleared by hardware whenever a POR or BOR event occurs. It is set by hardware when the ON bit = 1 and the power-up timer has expired. SIDL: Stop in Idle Mode bit 1 = Discontinue operation when CPU enters in Idle mode 0 = Continue operation in Idle mode ABORT: Data EEPROM Abort Operation Control bit 1 = Set by software to abort the on-going write command as soon as possible 0 = Data EEPROM panel is ready/Normal operation Unimplemented: Read as ‘0’ RW: Start Command Execution Control bit When WREN = 1: 1 = Start memory word program or erase command 0 = Cleared by hardware to indicate program or erase operation has completed When WREN = 0: 1 = Start memory word read command 0 = Cleared by hardware to indicate read operation has completed bit 6 Note 1: 2: This bit cannot be set if the ON bit = 0, or if the ON bit = 1 and the power-up timer has not yet expired (i.e., The RDY bit = 0). A BOR reset will indirectly clear this bit by forcing any executing command to terminate and to clear the RW bit afterwards. WREN: Data EEPROM Write Enable Control bit(1) 1 = Enables program or erase operations 0 = Disables program or erase of memory elements, and enables read operations This bit cannot be modified when the RW bit = 1. The Configuration Write command (CMD = 100) must be executed after any power-up before the Data EEPROM is ready for use. For additional information, refer to Example 58-1 “Data EEPROM Initialization Code” in Section 58. “Data EEPROM” (DS60001341). DS60001402H-page 106  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 6-1: bit 5-4 bit 3 bit 2-0 EECON(2): EEPROM CONTROL REGISTER (CONTINUED) ERR: Data EEPROM Sequence Error Status bits 11 = A BOR event has occurred 10 = An attempted execution of a read or write operation with an invalid write OR command with a  misaligned address (EEADDR  00) 01 = A Bulk or Page Erase or a Word Program verify error has occurred 00 = No error condition These bits can be cleared by software, or as the result of the successful execution of the next operation, or when the ON bit = 0. These bits may also be set by software (when the RW bit = 0) without affecting the operation of the module. ILW: Data EEPROM Imminent Long Write Status bit 1 = The next write to the EEPROM address (held in the EEADDR register) will require more time (~ 20 ms) than usual 0 = The next write to the EEPROM address (held in the EEADDR register) will be a normal write cycle This bit can be cleared by software, or as the result of a write to the EEADDR register. This bit is set by hardware after a write command. CMD: Data EEPROM Command Selection bits(1) These bits are cleared only on a POR event. 111 = Reserved • • • 100 = Configuration register Write command (WREN bit must be set)(2) 011 = Data EEPROM memory Bulk Erase command (WREN bit must be set) 010 = Data EEPROM memory Page Erase command (WREN bit must be set) 001 = Word Write command (WREN bit must be set) 000 = Word Read command (WREN bit must be clear) Note 1: 2: This bit cannot be modified when the RW bit = 1. The Configuration Write command (CMD = 100) must be executed after any power-up before the Data EEPROM is ready for use. For additional information, refer to Example 58-1 “Data EEPROM Initialization Code” in Section 58. “Data EEPROM” (DS60001341).  2016-2021 Microchip Technology Inc. DS60001402H-page 107 PIC32MK GP/MC Family REGISTER 6-2: Bit Range 31:24 23:16 15:8 7:0 EEKEY: EEPROM KEY REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — W-0 W-0 W-0 W-0 W-0 W-0 W-0 W-0 W-0 W-0 W-0 W-0 W-0 W-0 W-0 EEKEY W-0 EEKEY 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 bit 31-16 Unimplemented: Read as ‘0’ bit 15-0 EEKEY: Data EEPROM Key bits Writing the value 0xEDB7 followed by writing the value 0x1248 to this register will unlock the EECON register for write/erase operations. Reads have no effect on this register and return ‘0’. Writing any other value will lock the EECON register. REGISTER 6-3: Bit Range 31:24 23:16 15:8 7:0 EEADDR(3): EEPROM ADDRESS REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 (1,2) R/W-0 R/W-0 R/W-0 — — — — R/W-0 R/W-0 R/W-0 R/W-0 EEADDR R/W-0 (1) R/W-0 EEADDR 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 bit 31-12 Unimplemented: Read as ‘0’ bit 11-0 Note 1: 2: 3: EEADR: Data EEPROM Address bits(1) This register holds the address in the EEPROM memory upon which to operate. EEADDR must always be ‘00’ when the RW bit (EECON) is set or an error will occur. The bits in this register cannot be modified when the RW bit (EECON) = 1. EEDATA is organized in 32-bit words, not by byte, therefore the EEADDR bit must always be 32-bit word address aligned. Check that the EEADDR bits are = 0’b00 at the beginning of any command when the user sets EEGO to ‘1’. If the EEADDR bits are not 0’b00, it will forcefully clear the EEGO bit to ‘0’ and will also set the ERR bits (EECON) to 0’b10. This register cannot be "watched" in debug mode. In order to read the most recent contents of this register, we recommend storing contents of the SFR in a 32-bit variable just before halting the CPU in debug mode. DS60001402H-page 108  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 6-4: Bit Range 31:24 23:16 15:8 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 R/W-0 R/W-0 R/W-0 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 EEDATA(1) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 EEDATA(1) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 EEDATA(1) R/W-0 7:0 EEDATA(2): EEPROM DATA REGISTER R/W-0 R/W-0 R/W-0 R/W-0 EEDATA(1) 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 bit 31-0 EEDATA: Data EEPROM Data bits(1) This register holds the data in the EEPROM memory to store during write operations, or the data from memory after a read operation. Note 1: 2: These bits cannot be modified when the RW bit (EECON) = 1. In addition, reading this register, when the RW bit = 1 may not return valid data, as the read operation may not have completed. This register cannot be "watched" in debug mode. In order to read the most recent contents of this register, we recommend storing contents of the SFR in a 32-bit variable just before halting the CPU in debug mode.  2016-2021 Microchip Technology Inc. DS60001402H-page 109 PIC32MK GP/MC Family 7.0 RESETS Note: This data sheet summarizes the features of the PIC32MK GP/MC family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 7. “Resets” (DS60001118), which is available from the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). FIGURE 7-1: The Reset module combines all Reset sources and controls the device Host Reset signal, SYSRST. The device Reset sources are as follows: • • • • • • • Power-on Reset (POR) Host Clear Reset pin (MCLR) Software Reset (SWR) Watchdog Timer Reset (WDTR) Brown-out Reset (BOR) Configuration Mismatch Reset (CMR) Deadman Timer Reset (DMTR) A simplified block diagram of the Reset module is illustrated in Figure 7-1. SYSTEM RESET BLOCK DIAGRAM MCLR Glitch Filter Sleep or Idle MCLR DMTR/WDTR NMI Time-out WDT Time-out DMT Time-out Voltage Regulator Enabled POR SYSRST VDD Rise Detect VDD Configuration Mismatch Reset Brown-out Reset BOR CMR SWR Software Reset VBAT Monitor VBAT POR VBAT VBATRST (RTCC, SOSC, LPRC) VBAT BOR DS60001402H-page 110  2016-2021 Microchip Technology Inc. Reset Control Registers Virtual Address (BF80_#) Register Name TABLE 7-1: 1240 RCON 1250 1260 1270 RESETS REGISTER MAP RSWRST RNMICON PWRCON Legend: 31:16 31/15 30/14 PORIO PORCORE 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 All Resets Bit Range Bits — — — — — — — — — — — — VBPOR VBAT 0003 15:0 — — — — — DPSLP CMR — EXTR SWR DMTO WDTO SLEEP IDLE BOR POR 0003 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — — — — — — — — SWRST 0000 31:16 — — — — — — DMTO WDTO SWNMI — — — GNMI --- CF WDTS 0000 — — — — — — — 0000 — — — VREGS 0000 15:0 NMICNT 31:16 — — — — — — — — 15:0 — — — — — — — — x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. — 0000 VREGRUN VREGSLP PIC32MK GP/MC Family DS60001402H-page 111 7.1  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 7-1: Bit Range 31:24 23:16 15:8 7:0 RCON: RESET CONTROL REGISTER Bit Bit 31/23/15/7 30/22/14/6 Bit Bit 29/21/13/5 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0, HS R/W-0, HS U-0 U-0 U-0 U-0 U-0 U-0 PORIO PORCORE — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 R/W-1, HS R/W-1, HS — — — — — — VBPOR VBAT U-0 U-0 U-0 U-0 U-0 R/W-0, HS R/W-0, HS U-0 — — — — — DPSLP(1) CMR — R/W-0, HS R/W-0, HS R/W-0, HS R/W-0, HS R/W-0, HS R/W-0, HS EXTR SWR DMTO WDTO SLEEP IDLE R/W-1, HS (2) R/W-1, HS (2) Legend: HS = Hardware Set BOR HC = Hardware Cleared R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’ -n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared bit 31 x = Bit is unknown PORIO: I/O Voltage POR Flag bit 1 = A Power-up Reset has occurred due to I/O Voltage 0 = A Power-up Reset has not occurred due to I/O Voltage Note: bit 30 POR Set by hardware at detection of an I/O POR event. User software must clear this bit to view the next detection; however, writing a ‘1’ to this bit does not cause a PORIO. PORCORE: Core Voltage POR Flag bit 1 = A Power-up Reset has occurred due to Core Voltage 0 = A Power-up Reset has not occurred due to Core Voltage Note: Set by hardware at detection of a Core POR event. User software must clear this bit to view the next detection; however, writing a ‘1’ to this bit does not cause a PORCORE. bit 29-18 Unimplemented: Read as ‘0’ bit 17 VBPOR: VBPOR Mode Flag bit 1 = A VBAT domain POR has occurred 0 = A VBAT domain POR has not occurred bit 16 VBAT: VBAT Mode Flag bit 1 = A POR exit from VBAT has occurred (a true POR must be established with the valid VBAT voltage on the VBAT pin) 0 = A POR exit from VBAT has not occurred bit 15-11 Unimplemented: Read as ‘0’ bit 10 DPSLP: Deep Sleep Mode Flag bit(1) 1 = Deep Sleep mode has occurred 0 = Deep Sleep mode has not occurred bit 9 CMR: Configuration Mismatch Reset Flag bit 1 = A Configuration Mismatch Reset has occurred 0 = A Configuration Mismatch Reset has not occurred bit 8 Unimplemented: Read as ‘0’ bit 7 EXTR: External Reset (MCLR) Pin Flag bit 1 = Host Clear (pin) Reset has occurred 0 = Host Clear (pin) Reset has not occurred bit 6 SWR: Software Reset Flag bit 1 = Software Reset was executed 0 = Software Reset was not executed Note 1: User software must clear this bit to view the next detection. DS60001402H-page 112  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 7-1: RCON: RESET CONTROL REGISTER bit 5 DMTO: Deadman Timer Time-out Flag bit 1 = A DMT time-out has occurred 0 = A DMT time-out has not occurred bit 4 WDTO: Watchdog Timer Time-out Flag bit 1 = WDT Time-out has occurred 0 = WDT Time-out has not occurred bit 3 SLEEP: Wake From Sleep Flag bit 1 = Device was in Sleep mode 0 = Device was not in Sleep mode bit 2 IDLE: Wake From Idle Flag bit 1 = Device was in Idle mode 0 = Device was not in Idle mode bit 1 BOR: Brown-out Reset Flag bit(1) 1 = Brown-out Reset has occurred 0 = Brown-out Reset has not occurred bit 0 POR: Power-on Reset Flag bit(1) 1 = Power-on Reset has occurred 0 = Power-on Reset has not occurred Note 1: User software must clear this bit to view the next detection.  2016-2021 Microchip Technology Inc. DS60001402H-page 113 PIC32MK GP/MC Family REGISTER 7-2: Bit Range 31:24 23:16 15:8 7:0 RSWRST: SOFTWARE RESET REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit Bit 28/20/12/4 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 — — — — U-0 U-0 U-0 U-0 — — — — U-0 U-0 U-0 — — — U-0 U-0 U-0 U-0 U-0 — — — — — U-0 U-0 — — U-0 U-0 U-0 U-0 U-0 U-0 — — — — — U-0 — U-0 U-0 U-0 U-0 U-0 U-0 W-0, HC — — — — — — — SWRST(1,2) Legend: HC = Hardware Cleared 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 31-1 Unimplemented: Read as ‘0’ bit 0 SWRST: Software Reset Trigger bit(1,2) 1 = Enable software Reset event 0 = No effect Note 1: The system unlock sequence must be performed before the SWRST bit can be written. Refer to Section 42. “Oscillators with Enhanced PLL” (DS60001250) in the “PIC32 Family Reference Manual” for details. Once this bit is set, any read of the RSWRST register will cause a Reset to occur. 2: DS60001402H-page 114  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 7-3: Bit Range 31:24 23:16 15:8 7:0 RNMICON: NON-MASKABLE INTERRUPT (NMI) CONTROL REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit Bit 28/20/12/4 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0 — — — — — — DMTO WDTO R/W-0 U-0 U-0 U-0 R/W-0 U-0 R/W-0, HS, HC R/W-0 SWNMI — — — GNMI — CF WDTS R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 NMICNT R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 NMICNT Legend: R = Readable bit -n = Value at POR HC = Hardware Clear W = Writable bit ‘1’ = Bit is set HS = Hardware Set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31-26 Unimplemented: Read as ‘0’ bit 25 DMTO: Deadman Timer Time-out Flag bit 1 = DMT time-out has occurred and caused a NMI 0 = DMT time-out has not occurred Setting this bit will cause a DMT NMI event, and NMICNT will begin counting. bit 24 WDTO: Watchdog Timer Time-Out Flag bit 1 = WDT time-out has occurred and caused a NMI 0 = WDT time-out has not occurred Setting this bit will cause a WDT NMI event, and MNICNT will begin counting. bit 23 SWNMI: Software NMI Trigger. 1 = An NMI will be generated 0 = An NMI will not be generated bit 22-20 Unimplemented: Read as ‘0’ bit 19 GNMI: General NMI bit 1 = A general NMI event has been detected or a user-initiated NMI event has occurred 0 = A general NMI event has not been detected bit 18 bit 17 Setting GNMI to a ‘1’ causes a user-initiated NMI event. This bit is also set by writing 0x4E to the NMIKEY (INTCON) bits. Unimplemented: Read as ‘0’ CF: Clock Fail Detect bit 1 = FSCM has detected clock failure and caused an NMI 0 = FSCM has not detected clock failure Note: On a clock fail event if enabled by the FCKSM bits (DEVCFG1) = ‘0b11, this bit and the OSCCON bit will be set. The user software must clear both the bits inside the CF NMI before attempting to exit the ISR. Software or hardware settings of the CF bit (OSCCON) will cause a CF NMI event and an automatic clock switch to the FRC provided the FCKSM = ‘0b11. Unlike the CF bit (OSCCON), software or hardware settings of the CF bit (RNMICON) will cause a CF NMI event but will not cause a clock switch to the FRC. After a Clock Fail event, a successful user software clock switch if implemented, hardware will automatically clear the CF bit (RNMICON), but not the CF bit (OSCCON). The CF bit (OSCCON) must be cleared by software using the OSCCON register unlock procedure. Note 1: When a Watchdog Timer NMI event (when not in Sleep mode) or a Deadman Timer NMI event is triggered the NMICNT will start decrementing. When NMICNT reaches zero, the device is Reset. This NMI reset counter is only applicable to these two specific NMI events. Note: The system unlock sequence must be performed before the SWRST bit is written. Refer to the Section 42. “Oscillators with Enhanced PLL” (DS60001250) in the “PIC32 Family Reference Manual” for details.  2016-2021 Microchip Technology Inc. DS60001402H-page 115 PIC32MK GP/MC Family REGISTER 7-3: bit 16 bit 15-0 RNMICON: NON-MASKABLE INTERRUPT (NMI) CONTROL REGISTER WDTS: Watchdog Timer Time-out in Sleep Mode Flag bit 1 = WDT time-out has occurred during Sleep mode and caused a wake-up from sleep 0 = WDT time-out has not occurred during Sleep mode Setting this bit will cause a WDT NMI. NMICNT: NMI Reset Counter Value bits These bits specify the reload value used by the NMI reset counter. 11111111-00000001 = Number of SYSCLK cycles before a device Reset occurs(1) 00000000 = No delay between NMI assertion and device Reset event Note 1: When a Watchdog Timer NMI event (when not in Sleep mode) or a Deadman Timer NMI event is triggered the NMICNT will start decrementing. When NMICNT reaches zero, the device is Reset. This NMI reset counter is only applicable to these two specific NMI events. Note: The system unlock sequence must be performed before the SWRST bit is written. Refer to the Section 42. “Oscillators with Enhanced PLL” (DS60001250) in the “PIC32 Family Reference Manual” for details. DS60001402H-page 116  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 7-4: Bit Range 31:24 23:16 15:8 7:0 PWRCON: POWER CONTROL REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit Bit 28/20/12/4 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 — — — — U-0 U-0 U-0 U-0 — — — — U-0 U-0 U-0 — — — U-0 U-0 U-0 U-0 U-0 — — — — — U-0 U-0 — — U-0 U-0 U-0 U-0 U-0 U-0 — — — — — U-0 — U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 — — — — — — — VREGS 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 bit 31-1 Unimplemented: Read as ‘0’ bit 0 VREGS: Internal Voltage Regulator Stand-by Enable bit 1 = Voltage regulator will remain active during Sleep 0 = Voltage regulator will go to Stand-by mode during Sleep  2016-2021 Microchip Technology Inc. x = Bit is unknown DS60001402H-page 117 PIC32MK GP/MC Family 8.0 Note: CPU EXCEPTIONS AND INTERRUPT CONTROLLER This data sheet summarizes the features of the PIC32MK GP/MC family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 8. “Interrupt Controller” (DS60001108) and Section 50. “CPU for Devices with MIPS32® microAptiv™ and M-Class Cores” (DS60001192), which is available from the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). PIC32MK GP/MC devices generate interrupt requests in response to interrupt events from peripheral modules. The Interrupt Controller module exists outside of the CPU and prioritizes the interrupt events before presenting them to the CPU. The CPU handles interrupt events as part of the exception handling mechanism, which is described in 8.1 “CPU Exceptions”. The Interrupt Controller module includes the following features: • Up to 216 interrupt sources and vectors with dedicated programmable offsets, eliminating the need for redirection. • Single and multi-vector mode operations. • Five external interrupts with edge polarity control. • Interrupt proximity timer. • Seven user-selectable priority levels for each vector. • Four user-selectable subpriority levels within each priority. • One shadow register set that can be used for any priority level, eliminating software context switch and reducing interrupt latency. • Software can generate any interrupt. Table 8-1 provides Interrupt Service routine (ISR) latency information. DS60001402H-page 118  2016-2021 Microchip Technology Inc. ISR LATENCY INFORMATION User/MPLAB® Harmony Responsibility Compiler Automatic Run-time CP0 REGISTER 16, PERCHEEN bit DCHEEN bit SELECT 0 (CHECON) (CHECON) Condition 0’b010 0’b1 0’b1 0’b1 0’b00 0’b111 void __ISR(, ipl7auto)ISR(void) { // “n” = Vector Number, see data sheet // User ISR code } 257 0’b011 0’b1 0’b1 0’b1 0’b01 0’b011 void __attribute__((interrupt(iplXauto), at_vector(n), aligned(16))) isr () { // “n”=Vector Number, see data sheet // “X”=IPL 1-7 // User ISR code } 43 + (7 – IPL) (Latency per interrupt) Reset Values Recommended user optimized CPU and ISR Latency Settings (2) Note 1: 2: Comment Interrupt Latency ICHEEN bit PREFEN bits PFMWS bits User source file ISR declaration/invocation. (SYSCLK Cycles) (CHECON) (CHECON) CHECON) Note: The user is responsible for the ISR declara- (Time from intertion for the fastest ISR latency response. rupt event to first user source code instruction execution inside ISR). The CPU ISR latency can cause unexpected behavior in high data rate peripherals when a high repetitive rate of CPU interrupts. For example, it is possible that if multiple interrupt sources occur simultaneously, or if a high-speed peripheral like ADC occurs faster than the CPU can read the results from the first original interrupt, then that data may be overwritten by the second interrupt. If the possibility exists in user application that the CPU servicing requirements are less than the combined sum of all possible overlapping interrupt rate specified above, to avoid buffer overflows or data overwrites, it is recommended to use the DMA to service the data and buffer instead of the CPU. For the best optimized CPU and ISR performance, to complete the optimization, the user application should define ISRs that use the “at vector” attribute as shown in Table 8-1. In addition, if the ADC combined sum throughput rate of all the ADC modules in use is greater than (SYSCLK/43) = 2.8 Msps, it is recommended to use the ADC CPU early interrupt generation defined in the ADCxTIME and ADCEIENx registers. This will reduce the probability of the ADC results being overwritten by the next conversion before the CPU can read the previous ADC result if not using the DMA for ADC. Do not use the early interrupts if using the ADC in DMA mode. PIC32MK GP/MC Family DS60001402H-page 119 TABLE 8-1:  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family Figure 8-1 illustrates the block diagram of the Interrupt Controller and CPU exceptions. FIGURE 8-1: CPU EXCEPTIONS AND INTERRUPT CONTROLLER MODULE BLOCK DIAGRAM Vector Number and Offset Interrupt Requests Interrupt Controller Priority Level CPU Core (Exception Handling) Shadow Set Number SYSCLK 8.1 CPU Exceptions CPU co-processor 0 contains the logic for identifying and managing exceptions. Exceptions can be caused by a variety of sources, including boundary cases in data, external events or program errors. Table 8-2 lists the exception types in order of priority. DS60001402H-page 120  2016-2021 Microchip Technology Inc. Exception Type (In Order of Priority) MIPS32® microAptiv™ MCU CORE EXCEPTION TYPES Description Branches to Status Bits Set Debug Bits EXCCODE Set XC32 Function Name Highest Priority Reset Soft Reset Assertion MCLR or a Power-on Reset (POR). Assertion of a software Reset. 0xBFC0_0000 0xBFC0_0000 DSS DINT EJTAG debug single step. EJTAG debug interrupt. Caused by the assertion of the external EJ_DINT input or by setting the EjtagBrk bit in the ECR register. Assertion of NMI signal. 0xBFC0_0480 0xBFC0_0480 NMI Interrupt Deferred Watch DIB WATCH AdEL IBE Instruction Validity Exceptions  2016-2021 Microchip Technology Inc. Execute Exception Tr DDBL/DDBS WATCH 0xBFC0_0000 Assertion of unmasked hardware or software inter- See Table 8-3. rupt signal. Deferred watch (unmasked by K|DM=>!(K|DM) EBASE+0x180 transition). EJTAG debug hardware instruction break matched. 0xBFC0_0480 A reference to an address that is in one of the EBASE+0x180 Watch registers (fetch). Fetch address alignment error. Fetch reference to EBASE+0x180 protected address. Instruction fetch bus error. EBASE+0x180 EBASE+0x180 An instruction could not be completed because it was not allowed to access the required resources (Coprocessor Unusable) or was illegal (Reserved Instruction). If both exceptions occur on the same instruction, the Coprocessor Unusable Exception takes priority over the Reserved Instruction Exception. EBASE+0x180 An instruction-based exception occurred: Integer overflow, trap, system call, breakpoint, floating point, or DSP ASE state disabled exception. Execution of a trap (when trap condition is true). EBASE+0x180 0xBFC0_0480 EJTAG Data Address Break (address only) or EJTAG data value break on store (address + value). A reference to an address that is in one of the EBASE+0x180 Watch registers (data). BEV, ERL BEV, SR, ERL — — — — — — DSS DINT — — BEV, NMI, ERL IPL — — — 0x00 See Table 8-3. WP, EXL — 0x17 _general_exception_handler — EXL DIB — — 0x17 — _general_exception_handler EXL — 0x04 _general_exception_handler EXL EXL — — 0x06 0x0A or 0x0B _general_exception_handler _general_exception_handler EXL — EXL — — DDBL or DDBS 0x0D — _general_exception_handler — EXL — 0x17 _general_exception_handler _on_reset _on_reset — — _nmi_handler 0x08-0x0C _general_exception_handler PIC32MK GP/MC Family DS60001402H-page 121 TABLE 8-2:  2016-2021 Microchip Technology Inc. TABLE 8-2: Exception Type (In Order of Priority) AdEL AdES DBE DDBL CBrk MIPS32® microAptiv™ MCU CORE EXCEPTION TYPES (CONTINUED) Description Branches to Status Bits Set Debug Bits EXCCODE Set Load address alignment error. User mode load reference to kernel address. Store address alignment error. User mode store to kernel address. Load or store bus error. EJTAG data hardware breakpoint matched in load data compare. EJTAG complex breakpoint. EBASE+0x180 EXL — 0x04 _general_exception_handler EBASE+0x180 EXL — 0x05 _general_exception_handler EBASE+0x180 0xBFC0_0480 EXL — — DDBL 0x07 — _general_exception_handler — 0xBFC0_0480 — DIBIMPR, DDBLIMPR, and/or DDBSIMPR — — XC32 Function Name Lowest Priority PIC32MK GP/MC Family DS60001402H-page 122 PIC32MK GP/MC Family 8.2 Interrupts The PIC32MK GP/MC family uses variable offsets for vector spacing. This allows the interrupt vector spacing to be configured according to application needs. A unique interrupt vector offset can be set for each vector using its associated OFFx register. For details on the Variable Offset feature, refer to 8.5.2 “Variable Offset” in Section 8. “Interrupt Controller” (DS60001108) of the “PIC32 Family Reference Manual”. Table 8-3 provides the Interrupt IRQ, vector and bit location information.  2016-2021 Microchip Technology Inc. DS60001402H-page 123  2016-2021 Microchip Technology Inc. TABLE 8-3: INTERRUPT IRQ, VECTOR AND BIT LOCATION Interrupt Source(1) XC32 Vector Name IRQ # Vector # Interrupt Bit Location Flag Enable Priority Sub-priority Persistent Interrupt PIC32MK GP/MC Family DS60001402H-page 124 Highest Natural Order Priority Core Timer Interrupt _CORE_TIMER_VECTOR 0 OFF000 IFS0 IEC0 IPC0 IPC0 No Core Software Interrupt 0 _CORE_SOFTWARE_0_VECTOR 1 OFF001 IFS0 IEC0 IPC0 IPC0 No Core Software Interrupt 1 _CORE_SOFTWARE_1_VECTOR 2 OFF002 IFS0 IEC0 IPC0 IPC0 No External Interrupt 0 _EXTERNAL_0_VECTOR 3 OFF003 IFS0 IEC0 IPC0 IPC0 No Timer1 _TIMER_1_VECTOR 4 OFF004 IFS0 IEC0 IPC1 IPC1 No Input Capture 1 Error _INPUT_CAPTURE_1_ERROR_VECTOR 5 OFF005 IFS0 IEC0 IPC1 IPC1 Yes Input Capture 1 _INPUT_CAPTURE_1_VECTOR 6 OFF006 IFS0 IEC0 IPC1 IPC1 Yes Output Compare 1 _OUTPUT_COMPARE_1_VECTOR 7 OFF007 IFS0 IEC0 IPC1 IPC1 No External Interrupt 1 _EXTERNAL_1_VECTOR 8 OFF008 IFS0 IEC0 IPC2 IPC2 No Timer2 _TIMER_2_VECTOR 9 OFF009 IFS0 IEC0 IPC2 IPC2 No Input Capture 2 Error _INPUT_CAPTURE_2_ERROR_VECTOR 10 OFF010 IFS0 IEC0 IPC2 IPC2 Yes Input Capture 2 _INPUT_CAPTURE_2_VECTOR 11 OFF011 IFS0 IEC0 IPC2 IPC2 Yes Output Compare 2 _OUTPUT_COMPARE_2_VECTOR 12 OFF012 IFS0 IEC0 IPC3 IPC3 No External Interrupt 2 _EXTERNAL_2_VECTOR 13 OFF013 IFS0 IEC0 IPC3 IPC3 No Timer3 _TIMER_3_VECTOR 14 OFF014 IFS0 IEC0 IPC3 IPC3 No Input Capture 3 Error _INPUT_CAPTURE_3_ERROR_VECTOR 15 OFF015 IFS0 IEC0 IPC3 IPC3 Yes Input Capture 3 _INPUT_CAPTURE_3_VECTOR 16 OFF016 IFS0 IEC0 IPC4 IPC4 Yes Output Compare 3 _OUTPUT_COMPARE_3_VECTOR 17 OFF017 IFS0 IEC0 IPC4 IPC4 No External Interrupt 3 _EXTERNAL_3_VECTOR 18 OFF018 IFS0 IEC0 IPC4 IPC4 No Timer4 _TIMER_4_VECTOR 19 OFF019 IFS0 IEC0 IPC4 IPC4 No Input Capture 4 Error _INPUT_CAPTURE_4_ERROR_VECTOR 20 OFF020 IFS0 IEC0 IPC5 IPC5 Yes Input Capture 4 _INPUT_CAPTURE_4_VECTOR 21 OFF021 IFS0 IEC0 IPC5 IPC5 Yes Output Compare 4 _OUTPUT_COMPARE_4_VECTOR 22 OFF022 IFS0 IEC0 IPC5 IPC5 No External Interrupt 4 _EXTERNAL_4_VECTOR 23 OFF023 IFS0 IEC0 IPC5 IPC5 No Timer5 _TIMER_5_VECTOR 24 OFF024 IFS0 IEC0 IPC6 IPC6 No Input Capture 5 Error _INPUT_CAPTURE_5_ERROR_VECTOR 25 OFF025 IFS0 IEC0 IPC6 IPC6 Yes Input Capture 5 _INPUT_CAPTURE_5_VECTOR 26 OFF026 IFS0 IEC0 IPC6 IPC6 Yes Output Compare 5 _OUTPUT_COMPARE_5_VECTOR 27 OFF027 IFS0 IEC0 IPC6 IPC6 No Reserved — 28 — — — — — — Note 1: Not all interrupt sources are available on all devices. See TABLE 1: “PIC32MK General Purpose (GP) Family Features” for the list of available peripherals. 2: This interrupt source is not available on 64-pin devices. 3: This interrupt source is not available on 100-pin devices. INTERRUPT IRQ, VECTOR AND BIT LOCATION (CONTINUED) Interrupt Source(1) XC32 Vector Name IRQ # Vector # Interrupt Bit Location Flag Enable Priority Sub-priority Persistent Interrupt  2016-2021 Microchip Technology Inc. Reserved — 29 — — — — — — Real Time Clock _RTCC_VECTOR 30 OFF030 IFS0 IEC0 IPC7 IPC7 Yes Flash Control Event _FLASH_CONTROL_VECTOR 31 OFF031 IFS0 IEC0 IPC7 IPC7 No Comparator 1 Interrupt _COMPARATOR_1_VECTOR 32 OFF032 IFS1 IEC1 IPC8 IPC8 No Comparator 2 Interrupt _COMPARATOR_2_VECTOR 33 OFF033 IFS1 IEC1 IPC8 IPC8 Yes USB1 Interrupts _USB_1_VECTOR 34 OFF034 IFS1 IEC1 IPC8 IPC8 Yes SPI1 Fault _SPI1_FAULT_VECTOR 35 OFF035 IFS1 IEC1 IPC8 IPC8 No SPI1 Receive Done _SPI1_RX_VECTOR 36 OFF036 IFS1 IEC1 IPC9 IPC9 No SPI1 Transfer Done _SPI1_TX_VECTOR 37 OFF037 IFS1 IEC1 IPC9 IPC9 Yes UART1 Fault _UART1_FAULT_VECTOR 38 OFF038 IFS1 IEC1 IPC9 IPC9 Yes UART1 Receive Done _UART1_RX_VECTOR 39 OFF039 IFS1 IEC1 IPC9 IPC9 No UART1 Transfer Done _UART1_TX_VECTOR 40 OFF040 IFS1 IEC1 IPC10 IPC10 No Reserved — 41 — — — — — — Reserved — 42 — — — — — — Reserved — 43 — — — — — — PORTA Input Change Interrupt _CHANGE_NOTICE_A_VECTOR 44 OFF044 IFS1 IEC1 IPC11 IPC11 Yes PORTB Input Change Interrupt _CHANGE_NOTICE_B_VECTOR 45 OFF045 IFS1 IEC1 IPC11 IPC11 Yes PORTC Input Change Interrupt _CHANGE_NOTICE_C_VECTOR 46 OFF046 IFS1 IEC1 IPC11 IPC11 Yes PORTD Input Change Interrupt _CHANGE_NOTICE_D_VECTOR 47 OFF047 IFS1 IEC1 IPC11 IPC11 Yes PORTE Input Change Interrupt _CHANGE_NOTICE_E_VECTOR 48 OFF048 IFS1 IEC1 IPC12 IPC12 Yes PORTF Input Change Interrupt _CHANGE_NOTICE_F_VECTOR 49 OFF049 IFS1 IEC1 IPC12 IPC12 Yes PORTG Input Change Interrupt _CHANGE_NOTICE_G_VECTOR 50 OFF050 IFS1 IEC1 IPC12 IPC12 Yes Parallel Host Port _PMP_VECTOR 51 OFF051 IFS1 IEC1 IPC12 IPC12 Yes Parallel Host Port Error _PMP_ERROR_VECTOR 52 OFF052 IFS1 IEC1 IPC13 IPC13 Yes Note 1: Not all interrupt sources are available on all devices. See TABLE 1: “PIC32MK General Purpose (GP) Family Features” for the list of available peripherals. 2: This interrupt source is not available on 64-pin devices. 3: This interrupt source is not available on 100-pin devices. PIC32MK GP/MC Family DS60001402H-page 125 TABLE 8-3:  2016-2021 Microchip Technology Inc. TABLE 8-3: INTERRUPT IRQ, VECTOR AND BIT LOCATION (CONTINUED) Interrupt Source(1) XC32 Vector Name IRQ # Vector # Interrupt Bit Location Flag Enable Priority Sub-priority Persistent Interrupt PIC32MK GP/MC Family DS60001402H-page 126 SPI2 Fault _SPI2_FAULT_VECTOR 53 OFF053 IFS1 IEC1 IPC13 IPC13 Yes SPI2 Receive Done _SPI2_RX_VECTOR 54 OFF054 IFS1 IEC1 IPC13 IPC13 Yes SPI2 Transfer Done _SPI2_TX_VECTOR 55 OFF055 IFS1 IEC1 IPC13 IPC13 Yes UART2 Fault _UART2_FAULT_VECTOR 56 OFF056 IFS1 IEC1 IPC14 IPC14 Yes UART2 Receive Done _UART2_RX_VECTOR 57 OFF057 IFS1 IEC1 IPC14 IPC14 Yes UART2 Transfer Done _UART2_TX_VECTOR 58 OFF058 IFS1 IEC1 IPC14 IPC14 Yes Reserved — 59 — — — — — — Reserved — 60 — — — — — — Reserved — 61 — — — — — — UART3 Fault _UART3_FAULT_VECTOR 62 OFF062 IFS1 IEC1 IPC15 IPC15 Yes UART3 Receive Done _UART3_RX_VECTOR 63 OFF063 IFS1 IEC1 IPC15 IPC15 Yes UART3 Transfer Done _UART3_TX_VECTOR 64 OFF064 IFS2 IEC2 IPC16 IPC16 Yes UART4 Fault _UART4_FAULT_VECTOR 65 OFF065 IFS2 IEC2 IPC16 IPC16 Yes UART4 Receive Done _UART4_RX_VECTOR 66 OFF066 IFS2 IEC2 IPC16 IPC16 Yes UART4 Transfer Done _UART4_TX_VECTOR 67 OFF067 IFS2 IEC2 IPC16 IPC16 Yes UART5 Fault _UART5_FAULT_VECTOR 68 OFF068 IFS2 IEC2 IPC17 IPC17 Yes UART5 Receive Done _UART5_RX_VECTOR 69 OFF069 IFS2 IEC2 IPC17 IPC17 Yes UART5 Transfer Done _UART5_TX_VECTOR 70 OFF070 IFS2 IEC2 IPC17 IPC17 Yes CTMU Interrupt _CTMU_VECTOR 71 OFF071 IFS2 IEC2 IPC17 IPC17 Yes DMA Channel 0 _DMA0_VECTOR 72 OFF072 IFS2 IEC2 IPC18 IPC18 Yes DMA Channel 1 _DMA1_VECTOR 73 OFF073 IFS2 IEC2 IPC18 IPC18 Yes DMA Channel 2 _DMA2_VECTOR 74 OFF074 IFS2 IEC2 IPC18 IPC18 Yes DMA Channel 3 _DMA3_VECTOR 75 OFF075 IFS2 IEC2 IPC18 IPC18 Yes Timer6 _TIMER_6_VECTOR 76 OFF076 IFS2 IEC2 IPC19 IPC19 Yes Input Capture 6 Error _INPUT_CAPTURE_6_ERROR_VECTOR 77 OFF077 IFS2 IEC2 IPC19 IPC19 Yes Input Capture 6 _INPUT_CAPTURE_6_VECTOR 78 OFF078 IFS2 IEC2 IPC19 IPC19 Yes Output Compare 6 _OUTPUT_COMPARE_6_VECTOR 79 OFF079 IFS2 IEC2 IPC19 IPC19 Yes Timer7 _TIMER_7_VECTOR 80 OFF080 IFS2 IEC2 IPC20 IPC20 Yes Input Capture 7 Error _INPUT_CAPTURE_7_ERROR_VECTOR 81 OFF081 IFS2 IEC2 IPC20 IPC20 Yes Input Capture 7 _INPUT_CAPTURE_7_VECTOR 82 OFF082 IFS2 IEC2 IPC20 IPC20 Yes Output Compare 7 _OUTPUT_COMPARE_7_VECTOR 83 OFF083 IFS2 IEC2 IPC20 IPC20 Yes Note 1: Not all interrupt sources are available on all devices. See TABLE 1: “PIC32MK General Purpose (GP) Family Features” for the list of available peripherals. 2: This interrupt source is not available on 64-pin devices. 3: This interrupt source is not available on 100-pin devices. INTERRUPT IRQ, VECTOR AND BIT LOCATION (CONTINUED) Interrupt Source(1) XC32 Vector Name IRQ # Vector # Interrupt Bit Location Flag Enable Priority Sub-priority Persistent Interrupt  2016-2021 Microchip Technology Inc. Timer8 _TIMER_8_VECTOR 84 OFF084 IFS2 IEC2 IPC21 IPC21 Yes Input Capture 8 Error _INPUT_CAPTURE_8_ERROR_VECTOR 85 OFF085 IFS2 IEC2 IPC21 IPC21 Yes Input Capture 8 _INPUT_CAPTURE_8_VECTOR 86 OFF086 IFS2 IEC2 IPC21 IPC21 Yes Output Compare 8 _OUTPUT_COMPARE_8_VECTOR 87 OFF087 IFS2 IEC2 IPC21 IPC21 Yes Timer9 _TIMER_9_VECTOR 88 OFF088 IFS2 IEC2 IPC22 IPC22 Yes Input Capture 9 Error _INPUT_CAPTURE_9_ERROR_VECTOR 89 OFF089 IFS2 IEC2 IPC22 IPC22 Yes Input Capture 9 _INPUT_CAPTURE_9_VECTOR 90 OFF090 IFS2 IEC2 IPC22 IPC22 Yes Output Compare 9 _OUTPUT_COMPARE_9_VECTOR 91 OFF091 IFS2 IEC2 IPC22 IPC22 Yes ADC Global Interrupt _ADC_VECTOR 92 OFF092 IFS2 IEC2 IPC23 IPC23 Yes Reserved — 93 — — — — — — ADC Digital Comparator 1 _ADC_DC1_VECTOR 94 OFF094 IFS2 IEC2 IPC23 IPC23 Yes ADC Digital Comparator 2 _ADC_DC2_VECTOR 95 OFF095 IFS2 IEC2 IPC23 IPC23 Yes ADC Digital Filter 1 _ADC_DF1_VECTOR 96 OFF096 IFS3 IEC3 IPC24 IPC24 Yes ADC Digital Filter 2 _ADC_DF2_VECTOR 97 OFF097 IFS3 IEC3 IPC24 IPC24 Yes ADC Digital Filter 3 _ADC_DF3_VECTOR 98 OFF098 IFS3 IEC3 IPC24 IPC24 Yes ADC Digital Filter 4 _ADC_DF4_VECTOR 99 OFF099 IFS3 IEC3 IPC24 IPC24 Yes ADC Fault _ADC_FAULT_VECTOR 100 OFF100 IFS3 IEC3 IPC25 IPC25 Yes ADC End of Scan _ADC_EOS_VECTOR 101 OFF101 IFS3 IEC3 IPC25 IPC25 Yes ADC Ready _ADC_ARDY_VECTOR 102 OFF102 IFS3 IEC3 IPC25 IPC25 Yes ADC Update Ready After Suspend _ADC_URDY_VECTOR 103 OFF103 IFS3 IEC3 IPC25 IPC25 Yes ADC First Class Channels DMA _ADC_DMA_VECTOR 104 OFF104 IFS3 IEC3 IPC26 IPC26 No ADC Early Group Interrupt _ADC_EARLY_VECTOR 105 OFF105 IFS3 IEC3 IPC26 IPC26 Yes ADC Data 0 _ADC_DATA0_VECTOR 106 OFF106 IFS3 IEC3 IPC26 IPC26 Yes ADC Data 1 _ADC_DATA1_VECTOR 107 OFF107 IFS3 IEC3 IPC26 IPC26 Yes ADC Data 2 _ADC_DATA2_VECTOR 108 OFF108 IFS3 IEC3 IPC26 IPC27 Yes ADC Data 3 _ADC_DATA3_VECTOR 109 OFF109 IFS3 IEC3 IPC27 IPC27 Yes ADC Data 4 _ADC_DATA4_VECTOR 110 OFF110 IFS3 IEC3 IPC27 IPC27 Yes ADC Data 5 _ADC_DATA5_VECTOR 111 OFF111 IFS3 IEC3 IPC27 IPC27 Yes ADC Data 6 _ADC_DATA6_VECTOR 112 OFF112 IFS3 IEC3 IPC28 IPC28 Yes ADC Data 7 _ADC_DATA7_VECTOR 113 OFF113 IFS3 IEC3 IPC28 IPC28 Yes ADC Data 8 _ADC_DATA8_VECTOR 114 OFF114 IFS3 IEC3 IPC28 IPC28 Yes Note 1: Not all interrupt sources are available on all devices. See TABLE 1: “PIC32MK General Purpose (GP) Family Features” for the list of available peripherals. 2: This interrupt source is not available on 64-pin devices. 3: This interrupt source is not available on 100-pin devices. PIC32MK GP/MC Family DS60001402H-page 127 TABLE 8-3:  2016-2021 Microchip Technology Inc. TABLE 8-3: INTERRUPT IRQ, VECTOR AND BIT LOCATION (CONTINUED) Interrupt Source(1) XC32 Vector Name IRQ # Vector # Interrupt Bit Location Flag Enable Priority Sub-priority Persistent Interrupt PIC32MK GP/MC Family DS60001402H-page 128 ADC Data 9 _ADC_DATA9_VECTOR 115 OFF115 IFS3 IEC3 IPC28 IPC28 Yes ADC Data 10 _ADC_DATA10_VECTOR 116 OFF116 IFS3 IEC3 IPC29 IPC29 Yes ADC Data 11 _ADC_DATA11_VECTOR 117 OFF117 IFS3 IEC3 IPC29 IPC29 Yes ADC Data 12 _ADC_DATA12_VECTOR 118 OFF118 IFS3 IEC3 IPC29 IPC29 Yes ADC Data 13 _ADC_DATA13_VECTOR 119 OFF119 IFS3 IEC3 IPC29 IPC29 Yes ADC Data 14 _ADC_DATA14_VECTOR 120 OFF120 IFS3 IEC3 IPC30 IPC30 Yes ADC Data 15 _ADC_DATA15_VECTOR 121 OFF121 IFS3 IEC3 IPC30 IPC30 Yes ADC Data 16 _ADC_DATA16_VECTOR 122 OFF122 IFS3 IEC3 IPC30 IPC30 Yes ADC Data 17 _ADC_DATA17_VECTOR 123 OFF123 IFS3 IEC3 IPC30 IPC30 Yes ADC Data 18 _ADC_DATA18_VECTOR 124 OFF124 IFS3 IEC3 IPC31 IPC31 Yes ADC Data 19 _ADC_DATA19_VECTOR 125 OFF125 IFS3 IEC3 IPC31 IPC31 Yes ADC Data 20 _ADC_DATA20_VECTOR 126 OFF126 IFS3 IEC3 IPC31 IPC31 Yes ADC Data 21 _ADC_DATA21_VECTOR 127 OFF127 IFS3 IEC3 IPC31 IPC31 Yes ADC Data 22 _ADC_DATA22_VECTOR 128 OFF128 IFS4 IEC4 IPC32 IPC32 Yes ADC Data 23 _ADC_DATA23_VECTOR 129 OFF129 IFS4 IEC4 IPC32 IPC32 Yes ADC Data 24 _ADC_DATA24_VECTOR 130 OFF130 IFS4 IEC4 IPC32 IPC32 Yes ADC Data 25 _ADC_DATA25_VECTOR 131 OFF131 IFS4 IEC4 IPC32 IPC32 Yes ADC Data 26 _ADC_DATA26_VECTOR 132 OFF132 IFS4 IEC4 IPC33 IPC33 Yes ADC Data 27 _ADC_DATA27_VECTOR 133 OFF133 IFS4 IEC4 IPC33 IPC33 Yes Reserved — 134 — — — — — — Reserved — 135 — — — — — — Reserved — 136 — — — — — — Reserved — 137 — — — — — — Reserved — 138 — — — — — — ADC Data 33 _ADC_DATA33_VECTOR 139 OFF139 IFS4 IEC4 IPC34 IPC34 Yes ADC Data 34 _ADC_DATA34_VECTOR 140 OFF140 IFS4 IEC4 IPC35 IPC35 Yes ADC Data 35 _ADC_DATA35_VECTOR 141 OFF141 IFS4 IEC4 IPC35 IPC35 Yes ADC Data 36 _ADC_DATA36_VECTOR 142 OFF142 IFS4 IEC4 IPC35 IPC35 Yes ADC Data 37 _ADC_DATA37_VECTOR 143 OFF143 IFS4 IEC4 IPC35 IPC35 Yes ADC Data 38 _ADC_DATA38_VECTOR 144 OFF144 IFS4 IEC4 IPC36 IPC36 Yes ADC Data 39 _ADC_DATA39_VECTOR 145 OFF145 IFS4 IEC4 IPC36 IPC36 Yes Note 1: Not all interrupt sources are available on all devices. See TABLE 1: “PIC32MK General Purpose (GP) Family Features” for the list of available peripherals. 2: This interrupt source is not available on 64-pin devices. 3: This interrupt source is not available on 100-pin devices. INTERRUPT IRQ, VECTOR AND BIT LOCATION (CONTINUED) Interrupt Source(1) XC32 Vector Name IRQ # Vector # Interrupt Bit Location Flag Enable Priority Sub-priority Persistent Interrupt  2016-2021 Microchip Technology Inc. ADC Data 40 _ADC_DATA40_VECTOR 146 OFF146 IFS4 IEC4 IPC36 IPC36 Yes ADC Data 41 _ADC_DATA41_VECTOR 147 OFF147 IFS4 IEC4 IPC36 IPC36 Yes Reserved — 148 — — — — — — Reserved — 149 — — — — — — Reserved — 150 — — — — — — ADC Data 45 _ADC_DATA45_VECTOR 151 OFF151 IFS4 IEC4 IPC37 IPC37 Yes ADC Data 46 _ADC_DATA46_VECTOR 152 OFF152 IFS4 IEC4 IPC38 IPC38 Yes ADC Data 47 _ADC_DATA47_VECTOR 153 OFF153 IFS4 IEC4 IPC38 IPC38 Yes ADC Data 48 _ADC_DATA48_VECTOR 154 OFF154 IFS4 IEC4 IPC38 IPC38 Yes ADC Data 49 _ADC_DATA49_VECTOR 155 OFF155 IFS4 IEC4 IPC38 IPC38 Yes ADC Data 50 _ADC_DATA50_VECTOR 156 OFF156 IFS4 IEC4 IPC39 IPC39 Yes ADC Data 51 _ADC_DATA51_VECTOR 157 OFF157 IFS4 IEC4 IPC39 IPC39 Yes ADC Data 52 _ADC_DATA52_VECTOR 158 OFF158 IFS4 IEC4 IPC39 IPC39 Yes ADC Data 53 _ADC_DATA53_VECTOR 159 OFF159 IFS4 IEC4 IPC39 IPC39 Yes Comparator 3 Interrupt _COMPARATOR_3_VECTOR 160 OFF160 IFS5 IEC5 IPC40 IPC40 Yes Comparator 4 Interrupt _COMPARATOR_4_VECTOR 161 OFF161 IFS5 IEC5 IPC40 IPC40 Yes Comparator 5 Interrupt _COMPARATOR_5_VECTOR 162 OFF162 IFS5 IEC5 IPC40 IPC40 Yes Reserved — 163 — — — — — — UART6 Fault _UART6_FAULT_VECTOR 164 OFF164 IFS5 IEC5 IPC41 IPC41 Yes UART6 Receive Done _UART6_RX_VECTOR 165 OFF165 IFS5 IEC5 IPC41 IPC41 Yes UART6 Transfer Done _UART6_TX_VECTOR 166 OFF166 IFS5 IEC5 IPC41 IPC41 Yes CAN1 Global Interrupt _CAN1_VECTOR 167 OFF167 IFS5 IEC5 IPC41 IPC41 Yes CAN2 Global Interrupt _CAN2_VECTOR 168 OFF168 IFS5 IEC5 IPC42 IPC42 Yes QEI1 Interrupt _QEI1_VECTOR 169 OFF169 IFS5 IEC5 IPC42 IPC42 Yes QEI2 Interrupt _QEI2_VECTOR 170 OFF170 IFS5 IEC5 IPC42 IPC42 Yes PWM Primary Event _PWM_PRI_VECTOR 171 OFF171 IFS5 IEC5 IPC42 IPC42 Yes PWM Sec Event _PWM_SEC_VECTOR 172 OFF172 IFS5 IEC5 IPC43 IPC43 Yes PWM1 Combined Interrupt (Period, _PWM1_VECTOR 173 OFF173 IFS5 IEC5 IPC43 IPC43 Yes Fault, Trigger, Current-Limit) PWM2 Combined Interrupt (Period, _PWM2_VECTOR 174 OFF174 IFS5 IEC5 IPC43 IPC43 Yes Fault, Trigger, Current-Limit) Note 1: Not all interrupt sources are available on all devices. See TABLE 1: “PIC32MK General Purpose (GP) Family Features” for the list of available peripherals. 2: This interrupt source is not available on 64-pin devices. 3: This interrupt source is not available on 100-pin devices. PIC32MK GP/MC Family DS60001402H-page 129 TABLE 8-3:  2016-2021 Microchip Technology Inc. TABLE 8-3: INTERRUPT IRQ, VECTOR AND BIT LOCATION (CONTINUED) Interrupt Source(1) XC32 Vector Name IRQ # Vector # Interrupt Bit Location Flag Enable Priority Sub-priority Persistent Interrupt PIC32MK GP/MC Family DS60001402H-page 130 PWM3 Combined Interrupt (Period, _PWM3_VECTOR 175 OFF175 IFS5 IEC5 IPC43 IPC43 Yes Fault, Trigger, Current-Limit) PWM4 Combined Interrupt (Period, _PWM4_VECTOR 176 OFF176 IFS5 IEC5 IPC44 IPC44 Yes Fault, Trigger, Current-Limit) PWM5 Interrupt (Period, Fault, _PWM5_VECTOR 177 OFF177 IFS5 IEC5 IPC44 IPC44 Yes Trigger, Current-Limit) PWM6 Interrupt (Period, Fault, _PWM6_VECTOR 178 OFF178 IFS5 IEC5 IPC44 IPC44 Yes Trigger, Current-Limit) Reserved — 179 — — — — — — Reserved — 180 — — — — — — Reserved — 181 — — — — — — DMA Channel 4 _DMA4_VECTOR 182 OFF182 IFS5 IEC5 IPC45 IPC45 Yes DMA Channel 5 _DMA5_VECTOR 183 OFF183 IFS5 IEC5 IPC45 IPC45 Yes DMA Channel 6 _DMA6_VECTOR 184 OFF184 IFS5 IEC5 IPC46 IPC46 Yes DMA Channel 7 _DMA7_VECTOR 185 OFF185 IFS5 IEC5 IPC46 IPC46 Yes Data EEPROM Global Interrupt _DATA_EE_VECTOR 186 OFF186 IFS5 IEC5 IPC46 IPC46 Yes CAN3 Global Interrupt _CAN3_VECTOR 187 OFF187 IFS5 IEC5 IPC46 IPC46 Yes CAN4 Global Interrupt _CAN4_VECTOR 188 OFF188 IFS5 IEC5 IPC47 IPC47 Yes QEI3 Interrupt _QEI2_VECTOR 189 OFF189 IFS5 IEC5 IPC47 IPC47 Yes QEI4 Interrupt _QEI3_VECTOR 190 OFF190 IFS5 IEC5 IPC47 IPC47 Yes QEI5 Interrupt _QEI5_VECTOR 191 OFF191 IFS5 IEC5 IPC47 IPC47 Yes QEI6 Interrupt _QEI6_VECTOR 192 OFF192 IFS6 IEC6 IPC48 IPC48 Yes Reserved — 193 — — — — — — Reserved — 194 — — — — — — Reserved — 195 — — — — — — Reserved — 196 — — — — — — Input Capture 10 Error _INPUT_CAPTURE_10_ERROR_VECTOR 197 OFF197 IFS6 IEC6 IPC49 IPC49 Yes Input Capture 10 _INPUT_CAPTURE_10_VECTOR 198 OFF198 IFS6 IE6 IPC49 IPC49 Yes Output Compare 10 _OUTPUT_COMPARE_10_VECTOR 199 OFF199 IFS6 IEC6 IPC49 IPC49 Yes Input Capture 11 Error _INPUT_CAPTURE_11_ERROR_VECTOR 200 OFF200 IFS6 IEC6 IPC50 IPC50 Yes Input Capture 11 _INPUT_CAPTURE_11_VECTOR 201 OFF201 IFS6 IEC6 IPC50 IPC50 Yes Note 1: Not all interrupt sources are available on all devices. See TABLE 1: “PIC32MK General Purpose (GP) Family Features” for the list of available peripherals. 2: This interrupt source is not available on 64-pin devices. 3: This interrupt source is not available on 100-pin devices. INTERRUPT IRQ, VECTOR AND BIT LOCATION (CONTINUED) Interrupt Source(1) XC32 Vector Name IRQ # Vector # Interrupt Bit Location Flag Enable Priority Sub-priority Persistent Interrupt  2016-2021 Microchip Technology Inc. Output Compare 11 _OUTPUT_COMPARE_11_VECTOR 202 OFF202 IFS6 IEC6 IPC50 IPC50 Yes Input Capture 12 Error _INPUT_CAPTURE_12_ERROR_VECTOR 203 OFF203 IFS6 IEC6 IPC50 IPC50 Yes Input Capture 12 _INPUT_CAPTURE_12_VECTOR 204 OFF204 IFS6 IEC6 IPC51 IPC51 Yes Output Compare 12 _OUTPUT_COMPARE_12_VECTOR 205 OFF205 IFS6 IEC6 IPC51 IPC51 Yes Input Capture 13 Error _INPUT_CAPTURE_13_ERROR_VECTOR 206 OFF206 IFS6 IEC6 IPC51 IPC51 Yes Input Capture 13 _INPUT_CAPTURE_13_VECTOR 207 OFF207 IFS6 IEC6 IPC51 IPC51 Yes Output Compare 13 _OUTPUT_COMPARE_13_VECTOR 208 OFF208 IFS6 IEC6 IPC52 IPC52 Yes Input Capture 14 Error _INPUT_CAPTURE_14_ERROR_VECTOR 209 OFF209 IFS6 IEC6 IPC52 IPC52 Yes Input Capture 14 _INPUT_CAPTURE_14_VECTOR 210 OFF210 IFS6 IEC6 IPC52 IPC52 Yes Output Compare 14 _OUTPUT_COMPARE_14_VECTOR 211 OFF211 IFS6 IEC6 IPC52 IPC52 Yes Input Capture 15 Error _INPUT_CAPTURE_15_ERROR_VECTOR 212 OFF212 IFS6 IEC6 IPC53 IPC53 Yes Input Capture 15 _INPUT_CAPTURE_15_VECTOR 213 OFF213 IFS6 IEC6 IPC53 IPC53 Yes Output Compare 15 _OUTPUT_COMPARE_15_VECTOR 214 OFF214 IFS6 IEC6 IPC53 IPC53 Yes Input Capture 16 Error _INPUT_CAPTURE_16_ERROR_VECTOR 215 OFF215 IFS6 IEC6 IPC53 IPC53 Yes Input Capture 16 _INPUT_CAPTURE_16_VECTOR 216 OFF216 IFS6 IEC6 IPC54 IPC54 Yes Output Compare 16 _OUTPUT_COMPARE_16_VECTOR 217 OFF217 IFS6 IEC6 IPC54 IPC54 Yes SPI3 Fault _SPI3_FAULT_VECTOR 218 OFF218 IFS6 IEC6 IPC54 IPC54 Yes SPI3 Receive Done _SPI3_RX_VECTOR 219 OFF219 IFS6 IEC6 IPC54 IPC54 Yes SPI3 Transfer Done _SPI3_TX_VECTOR 220 OFF220 IFS6 IEC6 IPC55 IPC55 Yes SPI4 Fault _SPI4_FAULT_VECTOR 221 OFF221 IFS6 IEC6 IPC55 IPC55 Yes SPI4 Receive Done _SPI4_RX_VECTOR 222 OFF222 IFS6 IEC6 IPC55 IPC55 Yes SPI4 Transfer Done _SPI4_TX_VECTOR 223 OFF223 IFS6 IEC6 IPC55 IPC55 Yes SPI5 Fault _SPI5_FAULT_VECTOR 224 OFF224 IFS7 IEC7 IPC56 IPC56 Yes SPI5 Receive Done _SPI5_RX_VECTOR 225 OFF225 IFS7 IEC7 IPC56 IPC56 Yes SPI5 Transfer Done _SPI5_TX_VECTOR 226 OFF226 IFS7 IEC7 IPC56 IPC56 Yes SPI6 Fault _SPI6_FAULT_VECTOR 227 OFF227 IFS7 IEC7 IPC56 IPC56 Yes SPI6 Receive Done _SPI6_RX_VECTOR 228 OFF228 IFS7 IEC7 IPC57 IPC57 Yes SPI6 Transfer Done _SPI6_TX_VECTOR 229 OFF229 IFS7 IEC7 IPC57 IPC57 Yes System Bus Protection Violation _SYSTEM_BUS_PROTECTION_VECTOR 230 OFF230 IFS7 IEC7 IPC57 IPC57 Yes Reserved — 231 — — — — — — Reserved — 232 — — — — — — Note 1: Not all interrupt sources are available on all devices. See TABLE 1: “PIC32MK General Purpose (GP) Family Features” for the list of available peripherals. 2: This interrupt source is not available on 64-pin devices. 3: This interrupt source is not available on 100-pin devices. PIC32MK GP/MC Family DS60001402H-page 131 TABLE 8-3:  2016-2021 Microchip Technology Inc. TABLE 8-3: INTERRUPT IRQ, VECTOR AND BIT LOCATION (CONTINUED) XC32 Vector Name IRQ # Vector # Reserved Reserved Reserved Reserved Reserved PWM7 Interrupt (Period, Fault, Trigger, Current-Limit) PWM8 Interrupt (Period, Fault, Trigger, Current-Limit) PWM9 Interrupt (Period, Fault, Trigger, Current-Limit) PWM10 Interrupt (Period, Fault, Trigger, Current-Limit) PWM11 Interrupt (Period, Fault, Trigger, Current-Limit) PWM12 Interrupt (Period, Fault, Trigger, Current-Limit) USB2 Combined Interrupt(2) ADC Digital Comparator 3 ADC Digital Comparator 4 Reserved Reserved Reserved Reserved Reserved Reserved Reserved Core Performance Counter Interrupt Fast Debug Channel Interrupt — — — — — 233 234 235 236 237 — — — — — Note 1: 2: 3: Interrupt Bit Location Flag Enable Priority Sub-priority Persistent Interrupt — — — — — — — — — — — — — — — — — — — — — — — — — _PWM7_VECTOR 238 OFF238 IFS7 IEC7 IPC59 IPC59 Yes _PWM8_VECTOR 239 OFF239 IFS7 IEC7 IPC59 IPC59 Yes _PWM9_VECTOR 240 OFF240 IFS7 IEC7 IPC60 IPC60 Yes _PWM10_VECTOR 241 OFF241 IFS7 IEC7 IPC60 IPC60 Yes _PWM11_VECTOR 242 OFF242 IFS7 IEC7 IPC60 IPC60 Yes _PWM12_VECTOR 243 OFF243 IFS7 IEC7 IPC60 IPC60 Yes _USB_2_VECTOR 244 OFF244 IFS7 IEC7 IPC61 IPC61 Yes _ADC_DC3_VECTOR 245 OFF245 IFS7 IEC7 IPC61 IPC61 Yes _ADC_DC4_VECTOR 246 OFF246 IFS7 IEC7 IPC61 IPC61 Yes — 247 — — — — — — — 248 — — — — — — — 249 — — — — — — — 250 — — — — — — — 251 — — — — — — — 252 — — — — — — — 253 — — — — — — _CORE_PERF_COUNT_VECTOR 254 OFF254 IFS7 IEC7 IPC63 IPC63 — _CORE_FAST_DEBUG_CHAN_VECTOR 255 OFF255 IFS7 IEC7 IPC63 IPC63 — Lowest Natural Order Priority Not all interrupt sources are available on all devices. See TABLE 1: “PIC32MK General Purpose (GP) Family Features” for the list of available peripherals. This interrupt source is not available on 64-pin devices. This interrupt source is not available on 100-pin devices. PIC32MK GP/MC Family DS60001402H-page 132 Interrupt Source(1) Interrupt Control Registers 0000 INTCON 0010 PRISS 0020 INTSTAT Bits 31/15 30/14 29/13 28/12 — — — MVEC 31:16 15:0 27/11 26/10 25/9 24/8 SWNMIKEY — TPC 23/7 22/6 21/5 — — — — — — — — — — INT4EP INT3EP INT2EP INT1EP — — — SS0 0000 — — — — 0000 31:16 PRI7SS PRI6SS PRI5SS 15:0 PRI3SS PRI2SS PRI1SS 31:16 — — — — — 15:0 — — — — — — — — — — — SRIPL 31:16 20/4 19/3 18/2 17/1 16/0 All Resets INTERRUPT REGISTER MAP Bit Range Register Name(1) Virtual Address (BF81_#) TABLE 8-4: — PRI4SS — 0000 INT0EP 0000 0000 SIRQ 0000 0000 0030 IPTMR 0040 IFS0(7) 31:16 FCEIF RTCCIF — — OC5IF IC5IF IC5EIF T5IF INT4IF OC4IF IC4IF IC4EIF T4IF INT3IF OC3IF IC3IF 0000 15:0 IC3EIF T3IF INT2IF OC2IF IC2IF IC2EIF T2IF INT1IF OC1IF IC1IF IC1EIF T1IF INT0IF CS1IF CS0IF CTIF 0000 U3EIF — — — U2TXIF U2RXIF U2EIF SPI2TXIF SPI2RXIF SPI2EIF PMPEIF PMPIF CNGIF CNFIF CNEIF 0000 CNCIF CNBIF CNAIF — — — U1TXIF U1RXIF U1EIF SPI1TXIF SPI1RXIF SPI1EIF USB1IF CMP2IF - AD1IF OC9IF IC9IF IC9EIF T9IF OC8IF IC8IF IC8EIF T8IF OC7IF IC7IF IC7EIF T7IF 0000 IC6EIF T6IF DMA3IF DMA2IF DMA1IF DMA0IF CTMUIF U5TXIF U5RXIF U5EIF U4TXIF U4RXIF U4EIF U3TXIF 0000 AD1D16IF AD1D15IF AD1D14IF AD1D13IF AD1D12IF AD1D11IF AD1D8IF AD1D7IF 0050 IFS1(7) 31:16 U3RXIF 15:0 0060 IPTMR 15:0 CNDIF IFS2(7) 31:16 AD1DC2IF AD1DC1IF 15:0 OC6IF IC6IF 0000 CMP1IF 0000 0070 IFS3(7) 31:16 AD1D21IF AD1D20IF AD1D19IF AD1D18IF AD1D17IF AD1D1IF AD1D0IF AD1G1IF AD1FCBTIF AD1RSIF AD1ARIF AD1EOSIF AD1F1IF AD1DF4IF AD1DF3IF AD1DF2IF AD1DF1IF 0000 0080 IFS4(7) 31:16 AD1D53IF AD1D52IF AD1D51IF AD1D50IF AD1D49IF AD1D48IF AD1D47IF AD1D46IF AD1D45IF — — — AD1D41IF AD1D40IF AD1D39IF AD1D38IF 0000 — — — — — AD1D27IF DATAEEIF DMA7IF DMA6IF DMA4IF — 15:0 AD1D5IF AD1D4IF AD1D3IF AD1D2IF 15:0 AD1D37IF AD1D36IF AD1D35IF AD1D34IF AD1D33IF 0090 IFS5(7) 31:16 QEI3IF CAN4IF(3) CAN3IF(3) DMA5IF — — PWM6IF PWM5IF PWM4IF 0000 PWM2IF PWM1IF QEI2IF QEI1IF CAN2IF U6TXIF U6RXIF U6EIF — CMP5IF CMP4IF CMP3IF 0000 SPI4EIF SPI3TXIF SPI3RXIF SPI3EIF OC16IF IC16IF IC16EIF OC15IF IC15IF IC15EIF OC14IF C14IF IC14EIF OC13IF 0000 — — — —  2016-2021 Microchip Technology Inc. IFS7(7) 31:16 00C0 IEC0 PWM3IF PWM PEVTIF AD1D26IF AD1D25IF AD1D24IF AD1D23IF AD1D22IF 0000 IFS6(7) 31:16 SPI4TXIF SPI4RXIF 15:0 00B0 QEI4IF AD1D6IF 0000 PWM SEVTIF 15:0 00A0 QEI5IF AD1D10IF AD1D9IF (3) CAN1IF (3) IC13IF IC13EIF OC12IF IC12IF IC12EIF OC11IF IC11IF IC11EIF OC10IF IC10IF IC10EIF — CPCIF — — — — — — — AD1DC4IF AD1DC3IF USB2IF(2) PWM12IF PWM11IF PWM10IF PWM9IF 0000 QEI6IF SPI5EIF 0000 0000 15:0 PWM8IF PWM7IF — — — — — — — SBIF SPI6TXIF SPI6RXIF SPI6EIF SPI5TXIF SPI5RXIF 31:16 FCEIE RTCCIE - - OC5IE IC5IE IC5EIE T5IE INT4IE OC4IE IC4IE IC4EIE T4IE INT3IE OC3IE IC3IE 0000 15:0 IC3EIE T3IE INT2IE OC2IE IC2IE IC2EIE T2IE INT1IE OC1IE IC1IE IC1EIE T1IE INT0IE CS1IE CS0IE CTIE 0000 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note All registers in this table with the exception of the OFFx registers, have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. This bit is not available on 64-pin devices. This bit is not available on devices without a CAN module. This bit is not available on 100-pin devices. Bits 31 and 30 are not available on 64-pin and 100-pin devices; bits 29 through 14 are not available on 64-pin devices. Bits 31, 30, 29, and bits 5 through 0 are not available on 64-pin and 100-pin devices; bit 22 is not available on 64-pin devices. The IFSx bits, as with all interrupt flag status register bits, are set as long as the peripheral is enabled and an interrupt condition event occurs. Interrupts do not have to be enabled for the IFSx bits to be set. If the user application does not want to use an interrupt, it can poll the corresponding peripheral IFSx bit to see whether an interrupt condition has occurred. The IFSx bits are persistent, they must be cleared if they are set by user software after an IFSx user bit interrogation. 1: 2: 3: 4: 5: 6: 7: PIC32MK GP/MC Family DS60001402H-page 133 8.3 IEC1 00E0 IEC2 IEC3 0100 IEC4 0110 IEC5 31/15 IEC6 0130 IEC7 0140 IPC0 IPC1 0160 IPC2 0170 IPC3 0180 IPC4 0190 IPC5 01A0 IPC6 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 U3EIE — — — U2TXIE U2RXIE U2EIE SPI2TXIE SPI2RXIE SPI2EIE PMPEIE PMPIE CNGIE CNFIE CNCIE CNBIE CNAIE — — — U1TXIE U1RXIE U1EIE SPI1TXIE SPI1RXIE SPI1EIE USB1IE CMP2IE - AD1IE OC9IE IC9IE IC9EIE T9IE OC8IE IC8IE IC8EIE T8IE OC7IE IC7IE IC7EIE IC6EIE T6IE DMA3IE DMA2IE DMA1IE DMA0IE CTMUIE U5TXIE U5RXIE U5EIE U4TXIE U4RXIE U4EIE 31:16 AD1D21IE AD1D20IE AD1D19IE AD1D18IE AD1D17IE AD1D16IE AD1D15IE AD1D14IE 15:0 AD1D05IE AD1D04IE AD1D03IE AD1D02IE AD1D01IE AD1D00IE AD1G1IE AD1FCBTIE AD1RSIE 31:16 AD1D53IE AD1D52IE AD1D51IE AD1D50IE AD1D49IE AD1D48IE AD1D47IE AD1D46IE 15:0 AD1D37IE AD1D36IE AD1D35IE AD1D34IE AD1D33IE — — — DATAEEIE DMA7IE DMA6IE CNDIE 31:16 AD1DC2IE AD1DC1IE 31:16 OC6IE QEI5IE IC6IE QEI4IE QEI3IE CAN4IE(3) CAN3IE(3) PWM PEVTIE AD1D13IE AD1D12IE 16/0 CNEIE 0000 CMP1IE 0000 T7IE 0000 U3TXIE 0000 AD1D11IE AD1D10IE AD1D09IE AD1D08IE AD1D07IE AD1D06IE 0000 AD1ARIE AD1EOSIE AD1F1IE AD1DF4IE AD1DF3IE AD1DF2IE AD1DF1IE 0000 AD1D45IE — — — — AD1D27IE DMA4IE — DMA5IE — AD1D41IE AD1D40IE AD1D39IE AD1D38IE 0000 AD1D26IE AD1D25IE AD1D24IE AD1D23IE AD1D22IE 0000 — — PWM6IE PWM5IE PWM4IE 0000 PWM2IE PWM1IE PWM SEVTIE QEI2IE QEI1IE CAN2IE U6TXIE U6RXIE U6EIE — CMP5IE CMP4IE CMP3IE 0000 31:16 SPI4TXIE SPI4RXIE SPI4EIE SPI3TXIE SPI3RXIE SPI3EIE OC16IE IC16IE IC16EIE OC15IE IC15IE IC15EIE OC14IE C14IE IC14EIE OC13IE 0000 15:0 IC13IE IC13EIE OC12IE IC12IE IC12EIE OC11IE IC11IE IC11EIE OC10IE IC10IE IC10EIE — — — — 31:16 — CPCIE — — — — — — — — — — — — (3) CAN1IE (3) AD1DC4IE AD1DC3IE QEI6IE 0000 USB2IE(2) PWM12IE PWM11IE PWM10IE PWM9IE 0000 SPI6RXIE SPI5RXIE SPI5EIE 0000 15:0 — — — — SBIE SPI6TXIE 31:16 — — — INT0IP INT0IS — — — CS1IP SPI6EIE SPI5TXIE CS1IS 0000 15:0 — — — CS0IP CS0IS — — — CTIP CTIS 0000 31:16 — — — OC1IP OC1IS — — — IC1IP IC1IS 0000 15:0 — — — IC1EIP IC1EIS — — — T1IP T1IS 0000 31:16 — — — IC2IP IC2IS — — — IC2EIP IC2EIS 0000 15:0 — — — T2IP T2IS — — — INT1IP INT1IS 0000 31:16 — — — IC3EIP IC3EIS — — — T3IP T3IS 0000 15:0 — — — INT2IP INT2IS — — — OC2IP OC2IS 0000 31:16 — — — T4IP T4IS — — — INT3IP INT3IS 0000 15:0 — — — OC3IP OC3IS — — — IC3IP IC3IS 0000 31:16 — — — INT4IP INT4IS — — — OC4IP OC4IS 0000 15:0 — — — IC4IP IC4IS — — — IC4EIP IC4EIS 0000 31:16 — — — OC5IP OC5IS — — — IC5IP IC5IS 0000 15:0 — — — IC5EIP IC5EIS — — — T5IP T5IS 0000 DS60001402H-page 134 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note All registers in this table with the exception of the OFFx registers, have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. This bit is not available on 64-pin devices. This bit is not available on devices without a CAN module. This bit is not available on 100-pin devices. Bits 31 and 30 are not available on 64-pin and 100-pin devices; bits 29 through 14 are not available on 64-pin devices. Bits 31, 30, 29, and bits 5 through 0 are not available on 64-pin and 100-pin devices; bit 22 is not available on 64-pin devices. The IFSx bits, as with all interrupt flag status register bits, are set as long as the peripheral is enabled and an interrupt condition event occurs. Interrupts do not have to be enabled for the IFSx bits to be set. If the user application does not want to use an interrupt, it can poll the corresponding peripheral IFSx bit to see whether an interrupt condition has occurred. The IFSx bits are persistent, they must be cleared if they are set by user software after an IFSx user bit interrogation. 1: 2: 3: 4: 5: 6: 7: PIC32MK GP/MC Family 0150 29/13 15:0 15:0 PWM3IE 0120 30/14 31:16 U3RXIE 15:0 00F0 Bits All Resets Register Name(1) 00D0 INTERRUPT REGISTER MAP (CONTINUED) Bit Range Virtual Address (BF81_#)  2016-2021 Microchip Technology Inc. TABLE 8-4: 01C0 IPC8 01D0 IPC9 01E0 IPC10 01F0 IPC11 0200 IPC12 0210 IPC13 0220 IPC14 0230 IPC15 0240 IPC16 0250 IPC17 0260 IPC18  2016-2021 Microchip Technology Inc. 0270 IPC19 0280 IPC20 Bits 31/15 30/14 29/13 31:16 — — — 15:0 — — — 31:16 — — — 15:0 — — 31:16 — 15:0 28/12 27/11 26/10 25/9 — — FCEIP 24/8 22/6 21/5 — — — — — — — SPI1EIP SPI1EIS — — — — CMP2IP CMP2IS — — — — U1RXIP U1RXIS — — — — SPI1TXIP SPI1TXIS 31:16 — — — — — — — 15:0 — — — — — — — 31:16 — — — CNDIP 15:0 — — — 31:16 — — 15:0 — 31:16 20/4 19/3 18/2 16/0 0000 — — 0000 USB1IP USB1IS 0000 — CMP1IP CMP1IS 0000 — — U1EIP U1EIS 0000 — — — SPI1RXIP SPI1RXIS 0000 — — — — — — — — U1TXIP U1TXIS 0000 CNDIS — — — CNCIP CNCIS 0000 CNBIP CNBIS — — — CNAIP CNAIS 0000 — PMPIP PMPIS — — — CNGIP CNGIS 0000 — — CNFIP CNFIS — — — CNEIP CNEIS 0000 — — — SPI2TXIP SPI2TXIS — — — SPI2RXIP SPI2RXIS 0000 15:0 — — — SPI2EIP SPI2EIS — — — PMPEIP PMPEIS 0000 31:16 — — — — — — — U2TXIP U2TXIS 0000 15:0 — — — U2RXIP U2RXIS — — — U2EIP U2EIS 0000 31:16 — — — U3RXIP U3RXIS — — — U3EIP U3EIS 0000 15:0 — — — — — — — 31:16 — — — U4TXIP U4TXIS — — — 15:0 — — — U4EIP U4EIS — — 31:16 — — — CTMUIP CTMUIS — 15:0 — — — U5RXIP U5RXIS 31:16 — — — DMA3IP 15:0 — — — 31:16 — — 15:0 — 31:16 15:0 — — — — — — — — — RTCCIP 17/1 RTCCIS — FCEIS 23/7 All Resets Register Name(1) IPC7 Bit Range Virtual Address (BF81_#) 01B0 INTERRUPT REGISTER MAP (CONTINUED) — — — — — — — — — — — — 0000 — 0000 U4RXIP U4RXIS 0000 — U3TXIP U3TXIS 0000 — — U5TXIP U5TXIS 0000 — — — U5EIP U5EIS 0000 DMA3IS — — — DMA2IP DMA2IS 0000 DMA1IP DMA1IS — — — DMA0IP DMA0IS 0000 — OC6IP OC6IS — — — IC6IP IC6IS 0000 — — IC6EIP IC6EIS — — — T6IP T6IS 0000 — — — OC7IP OC7IS — — — IC7IP IC7IS 0000 — — — IC7EIP IC7EIS — — — T7IP T7IS 0000 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note All registers in this table with the exception of the OFFx registers, have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. This bit is not available on 64-pin devices. This bit is not available on devices without a CAN module. This bit is not available on 100-pin devices. Bits 31 and 30 are not available on 64-pin and 100-pin devices; bits 29 through 14 are not available on 64-pin devices. Bits 31, 30, 29, and bits 5 through 0 are not available on 64-pin and 100-pin devices; bit 22 is not available on 64-pin devices. The IFSx bits, as with all interrupt flag status register bits, are set as long as the peripheral is enabled and an interrupt condition event occurs. Interrupts do not have to be enabled for the IFSx bits to be set. If the user application does not want to use an interrupt, it can poll the corresponding peripheral IFSx bit to see whether an interrupt condition has occurred. The IFSx bits are persistent, they must be cleared if they are set by user software after an IFSx user bit interrogation. 1: 2: 3: 4: 5: 6: 7: PIC32MK GP/MC Family DS60001402H-page 135 TABLE 8-4: IPC21 02A0 IPC22 02B0 IPC23 02C0 IPC24 02D0 IPC25 02E0 IPC26 02F0 IPC27 0300 IPC28 IPC29 0320 IPC30 0330 IPC31 0340 IPC32 0350 IPC33 0360 IPC34 31/15 30/14 29/13 28/12 23/7 22/6 21/5 31:16 — — — OC8IP 15:0 — — — IC8EIP OC8IS — — — IC8IP IC8IS 0000 IC8EIS — — — T8IP T8IS 31:16 — — — OC9IP 0000 OC9IS — — — IC9IP IC9IS 15:0 — — — 0000 IC9EIP IC9EIS — — — T9IP T9IS 31:16 — — — 0000 AD1DC2IP AD1DC2IS — — — AD1DC1IP AD1DC1IS 15:0 — — — 0000 — — — — AD1IP AD1IS 31:16 — — — 0000 AD1DF4IP AD1DF4IS — — — AD1DF3IP AD1DF3IS 15:0 — — 0000 — AD1DF2IP AD1DF2IS — — — AD1DF1IP AD1DF1IS 31:16 — 0000 — — AD1RSIP AD1RSIS — — — AD1ARIP AD1ARIS 15:0 0000 — — — AD1EOSIP AD1EOSIS — — — AD1F1IP AD1F1IS 0000 31:16 — — — AD1D01IP AD1D01IS — — — AD1D00IP AD1D00IS 0000 15:0 — — — AD1G1IP AD1G1IS — — — AD1FCBTIP AD1FCBTIS 0000 31:16 — — — AD1D05IP AD1D05IS — — — AD1D04IP AD1D04IS 0000 15:0 — — — AD1D03IP AD1D03IS — — — AD1D02IP AD1D02IS 0000 31:16 — — — AD1D09IP AD1D09IS — — — AD1D08IP AD1D08IS 0000 15:0 — — — AD1D07IP AD1D07IS — — — AD1D06IP AD1D06IS 0000 31:16 — — — AD1D13IP AD1D13IS — — — AD1D12IP AD1D12IS 0000 15:0 — — — AD1D11IP AD1D11IS — — — AD1D10IP AD1D10IS 0000 31:16 — — — AD1D17IP AD1D17IS — — — AD1D16IP AD1D16IS 0000 15:0 — — — AD1D15IP AD1D15IS — — — AD1D14IP AD1D14IS 0000 31:16 — — — AD1D21IP AD1D21IS — — — AD1D20IP AD1D20IS 0000 15:0 — — — AD1D19IP AD1D19IS — — — AD1D18IP AD1D18IS 0000 31:16 — — — AD1D25IP AD1D25IS — — — AD1D24IP AD1D24IS 0000 15:0 — — — AD1D23IP AD1D23IS — — — AD1D22IP AD1D22IS 0000 31:16 — — — — — — — — 15:0 — — — AD1D27IP AD1D27IS — — — 31:16 — — — AD1D33IP AD1D33IS — — — — — — — — 0000 15:0 — — — — — — — — — — — — 0000 — — — 27/11 — — — 26/10 — — — 25/9 — 24/8 — 20/4 — 19/3 — 18/2 — AD1D26IP 17/1 — 16/0 — 0000 AD1D26IS 0000 DS60001402H-page 136 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note All registers in this table with the exception of the OFFx registers, have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. This bit is not available on 64-pin devices. This bit is not available on devices without a CAN module. This bit is not available on 100-pin devices. Bits 31 and 30 are not available on 64-pin and 100-pin devices; bits 29 through 14 are not available on 64-pin devices. Bits 31, 30, 29, and bits 5 through 0 are not available on 64-pin and 100-pin devices; bit 22 is not available on 64-pin devices. The IFSx bits, as with all interrupt flag status register bits, are set as long as the peripheral is enabled and an interrupt condition event occurs. Interrupts do not have to be enabled for the IFSx bits to be set. If the user application does not want to use an interrupt, it can poll the corresponding peripheral IFSx bit to see whether an interrupt condition has occurred. The IFSx bits are persistent, they must be cleared if they are set by user software after an IFSx user bit interrogation. 1: 2: 3: 4: 5: 6: 7: PIC32MK GP/MC Family 0310 Bits All Resets Register Name(1) 0290 INTERRUPT REGISTER MAP (CONTINUED) Bit Range Virtual Address (BF81_#)  2016-2021 Microchip Technology Inc. TABLE 8-4: 0380 IPC36 0390 IPC37 03A0 IPC38 03B0 IPC39 03C0 IPC40 03D0 IPC41 03E0 IPC42 03F0 IPC43 0400 IPC44 0410 IPC45 0420 IPC46  2016-2021 Microchip Technology Inc. 0430 IPC47 0440 IPC48 Bits 31/15 30/14 29/13 28/12 23/7 22/6 21/5 31:16 — — — AD1D37IP 15:0 — — — AD1D35IP AD1D37IS — — — AD1D36IP AD1D36IS 0000 AD1D35IS — — — AD1D34IP AD1D34IS 31:16 — — — 0000 AD1D41IP AD1D41IS — — — AD1D40IP AD1D40IS 15:0 — — 0000 — AD1D39IP AD1D39IS — — — AD1D38IP AD1D38IS 31:16 — 0000 — — AD1D45IP AD1D45IS — — — — — — — — 15:0 0000 — — — — — — — — — — — — — 0000 31:16 — — — AD1D49IP AD1D49IS — — — AD1D48IP AD1D48IS 0000 15:0 — — — AD1D47IP AD1D47IS — — — AD1D46IP AD1D46IS 0000 31:16 — — — AD1D53IP AD1D53IS — — — AD1D52IP AD1D52IS 0000 15:0 — — — AD1D51IP AD1D51IS — — — AD1D50IP AD1D50IS 0000 31:16 — — — — — — — CMP5IP CMP5IS 0000 15:0 — — — CMP4IP CMP4IS — — — CMP3IP CMP3IS 0000 31:16 — — — CAN1IP(3) CAN1IS(3) — — — U6TXIP U6TXIS 0000 15:0 — — — U6RXIP U6RXIS — — — U6EIP U6EIS 0000 31:16 — — — PWMPEVTIP PWMSEVTIP — — — QEI2IP QEI2SIP 0000 15:0 — — — QEI1IP QEI1SIP — — — CAN2IP(3) CAN2IS(3) 0000 31:16 — — — PWM3IP PWM3SIP — — — PWM2IP PWM2SIP 0000 15:0 — — — PWM1IP PWM1SIP — — — PWMSEVTIP 31:16 — — — — — — — — PWM6IP PWM6SIP 0000 15:0 — — — PWM5IP PWM5SIP — — — PWM4IP PWM4SIP 0000 31:16 — — — DMA5IP DMA5IS — — — DMA4IP DMA4IS 0000 15:0 — — — — — — — — — 0000 31:16 — — — CAN3IP(3) CAN3IS(3) — — — DATAEEIP DATAEEIS 0000 15:0 — — — DMA7IP DMA7IS — — — DMA6IP DMA6IS 0000 31:16 — — — QEI5IP QEI5SIP — — — QEI4IP QEI4SIP 0000 15:0 — — — QEI3IP QEI3SIP — — — CAN4IP(3) CAN4IS(3) 0000 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — — — — — 27/11 — — — — 26/10 — — — — 25/9 24/8 — 20/4 — — 19/3 — — QEI6IP 18/2 17/1 16/0 All Resets Register Name(1) IPC35 Bit Range Virtual Address (BF81_#) 0370 INTERRUPT REGISTER MAP (CONTINUED) PWMSEVTSIP 0000 — — — — — 0000 QEI6SIP 0000 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note All registers in this table with the exception of the OFFx registers, have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. This bit is not available on 64-pin devices. This bit is not available on devices without a CAN module. This bit is not available on 100-pin devices. Bits 31 and 30 are not available on 64-pin and 100-pin devices; bits 29 through 14 are not available on 64-pin devices. Bits 31, 30, 29, and bits 5 through 0 are not available on 64-pin and 100-pin devices; bit 22 is not available on 64-pin devices. The IFSx bits, as with all interrupt flag status register bits, are set as long as the peripheral is enabled and an interrupt condition event occurs. Interrupts do not have to be enabled for the IFSx bits to be set. If the user application does not want to use an interrupt, it can poll the corresponding peripheral IFSx bit to see whether an interrupt condition has occurred. The IFSx bits are persistent, they must be cleared if they are set by user software after an IFSx user bit interrogation. 1: 2: 3: 4: 5: 6: 7: PIC32MK GP/MC Family DS60001402H-page 137 TABLE 8-4: IPC49 0460 IPC50 0470 IPC51 0480 IPC52 0490 IPC53 04A0 IPC54 04B0 IPC55 04C0 IPC56 IPC57 04F0 IPC59 0500 IPC60 0510 IPC61 0530 IPC63 0540 OFF000 31/15 30/14 29/13 23/7 22/6 21/5 31:16 — — — OC10IP 15:0 — — — IC10EIP OC10IS — — — IC10EIS — — — 31:16 — — — IC12EIP IC12EIS — — — OC11IP OC11IS 15:0 — — — 0000 IC11IP IC11IS — — — IC11EIP IC11EIS 31:16 — — 0000 — IC13IP IC13IS — — — IC13EIP IC13EIS 15:0 — 0000 — — OC12IP OC12IS — — — IC12IP IC12IS 31:16 0000 — — — OC14IP OC14IS — — — C14IP C14IS 0000 15:0 — — — IC14EIP IC14EIS — — — OC13IP OC13IS 0000 31:16 — — — IC16EIP IC16EIS — — — OC15IP OC15IS 0000 15:0 — — — IC15IP IC15IS — — — IC15EIP IC15EIS 0000 31:16 — — — SPI3RXIP SPI3RXIS — — — SPI3EIP SPI3EIS 0000 15:0 — — — OC16IP OC16IS — — — IC16IP SPI / UART REFCLK3 > ADC > and Comparator TIMER1 RTCC SOSCBOOST  2016-2021 Microchip Technology Inc. SOSCGAIN LPRC Oscillator 32.768 kHz Typical USB Clock (48 MHz) TIMER1 RTCC WDT VBAT DOMAIN(3,4) Note 1: 2: 3: 4: 5: 6: Refer to 2.0 “Guidelines for Getting Started with 32-bit MCUs” for recommended external crystal component values and restrictions. The internal POSC feedback resistor, RF, is typically in the range of 2 to 10 M. The maximum PBCLK6 clock rate to the peripherals in the VBAT power domain is 30 MHz. This is not the power-up default and must be configured by the user before attempting any access to those peripherals. The shaded region indicates peripherals contained and powered from VBAT on devices that support battery operation from the VBAT pin. Refer to Table 36-16 in 36.0 “Electrical Characteristics” for PBCLK6 frequency limitations. CLKO on OSC2 pin, if enabled in configuration word, available in EC & FRC mode is PBCLK1 / 2. PIC32MK GP/MC Family DS60001402H-page 165 FIGURE 9-1: PIC32MK GP/MC Family TABLE 9-1: SYSTEM AND PERIPHERAL CLOCK DISTRIBUTION Peripheral ADC1-ADC7 X CAN1-CAN4 X CFG PMD X CLKO(6) X Comparator 1-5 CPU REFCLKO4 REFCLKO3 REFCLKO2 REFCLKO1 PBCLK7 X X X X X X X X CRU X X CTMU X CDAC1 X CDAC2-CDAC3 DATAEE X X X DMA X DMT X DSCTRL(5) X X EVIC X Flash X X X Input Capture 10-16 X Input Capture 1-9 X ICD X Output Compare 10-16 X Output Compare 1-9 X Op amp 1-3, 5 X PMP X PORTA-PORTG X PPS X RTCC X X X X SPI3-SPI6 SSX Control X X X Timer1 X X X Timer2-Timer9 X UART1-UART2 X X UART3-UART6 X X USB1-USB2 X X X 1: 2: 3: 4: 5: 6: X X X WDT X X SPI1-SPI2 Note PBCLK6 PBCLK5 PBCLK4 PBCLK3 PBCLK2 PBCLK1(1) UPLL SPLL SYSCLK POSC SOSC LPRC FRC Clock Source X X X X X X X PBCLK1 is used by system modules and cannot be turned off. SYSCLK/PBCLK5 is used to fetch data from/to the Flash Controller, while the FRC clock is used for programming. Special Function Register (SFR) access only. Timer1 only. DSCTRL is the Deep Sleep Control Block. PBCLK1 divided by 2 is available on CLKO function pin on oscillator in EC or FRC mode. DS60001402H-page 166  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family 9.1 Fail-Safe Clock Monitor (FSCM) The PIC32MK GP/MC oscillator system includes a Failsafe Clock Monitor (FSCM). The FSCM monitors the SYSCLK for continuous operation. If it detects that the SYSCLK has failed, it switches the SYSCLK over to the FRC oscillator and triggers a NMI. When the NMI is executed, software can attempt to restart the main oscillator or shut down the system. In Sleep mode, both the SYSCLK and the FSCM halt, which prevents FSCM detection.  2016-2021 Microchip Technology Inc. DS60001402H-page 167 Oscillator Control Registers 1200 OSCCON 1210 OSCTUN 1220 1230 OSCILLATOR CONFIGURATION REGISTER MAP SPLLCON UPLLCON 1280 REFO1CON 1290 REFO1TRIM 12A0 REFO2CON 12C0 REFO3CON 12D0 REFO3TRIM 12E0 REFO4CON 12F0 REFO4TRIM 1300 PB1DIV 1310 PB2DIV DS60001402H-page 168 1320 PB3DIV 1330 PB4DIV 31/15 30/14 29/13 28/12 27/11 31:16 — — 15:0 — — — — — 31:16 — — — — — — — 15:0 — — — — — — — 31:16 — — — — — COSC 26/10 25/9 24/8 23/7 22/6 21/5 FRCDIV DRMEN — SLP2SPD — — — — NOSC CLKLOCK — — SLPEN CF UFRCEN SOSCEN — — — — — — — — — — — PLLODIV — 15:0 — — — — — PLLIDIV PLLICLK 31:16 — — UPOSCEN — — PLLODIV — 15:0 — — — — — PLLIDIV — 31:16 — 15:0 ON — SIDL OE RSLP — DIVSWEN ACTIVE 31:16 — 15:0 ON — — — — — — — — SIDL OE 31:16 — RSLP — DIVSWEN ACTIVE — ROTRIM 15:0 — 31:16 — 15:0 ON — — — — — — — — — SIDL OE RSLP — DIVSWEN ACTIVE — ROTRIM — 31:16 — 15:0 ON 17/1 16/0 — — TUN — — — — — — — — — — 0xxx — PLLRANGE 0xxx PLLMULT 0xxx — — — — PLLRANGE — — — — — — — — — — 0000 — — — — — — — 0000 — — — — — — — — — — 0000 — — — — — — — 0000 — — — — — — — — — — 0000 — — — — — — — 0000 — — — — — — — — — — 0000 0x0x 0000 ROSEL 0000 0000 ROSEL 0000 0000 ROSEL 0000 RODIV — SIDL OE 31:16 RSLP — DIVSWEN ACTIVE — ROTRIM 0000 0020 PLLMULT — 0xx0 OSWEN xxxx RODIV 31:16 15:0 18/2 RODIV 0000 ROSEL 0000 15:0 — — — — — — — — — — — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — PBDIVRDY — — — — 31:16 — — — — — — — — — — — — 15:0 ON — — — PBDIVRDY — — — — 31:16 — — — — — — — — — — — — 15:0 ON — — — PBDIVRDY — — — — 31:16 — — — — — — — — — — — — 15:0 ON — — — PBDIVRDY — — — — Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note Reset values are dependent on the DEVCFGx Configuration bits and the type of reset. Refer to Table 36-16 in 36.0 “Electrical Characteristics” for PBCLK6 frequency limitations. The PB7DIV register is read-only. 1: 2: 3: — ROTRIM — 19/3 RODIV 31:16 15:0 20/4 PBDIV — — — — 8801 PBDIV — — — — 8801 PBDIV — — — — PBDIV 0000 0000 8801 0000 8801 PIC32MK GP/MC Family 12B0 REFO2TRIM Bit Range Bits All Resets(1) Register Name TABLE 9-2: Virtual Address (BF80_#)  2016-2021 Microchip Technology Inc. 9.2 Register Name PB5DIV Bit Range Bits 1350 PB6DIV(2) 1360 (3) 1380 1390 PB7DIV SLEWCON CLKSTAT 31/15 30/14 29/13 28/12 31:16 — — — 15:0 ON — — 31:16 — — 15:0 ON 31:16 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 — — — — — — — — — — PBDIVRDY — — — — — — — — — — — — — — PBDIVRDY — — — — — — — — — — — — — 15:0 ON — — — PBDIVRDY — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — UPEN DNEN BUSY 0000 31:16 — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — POSCRDY — SLWDIV — UPLLRDY SPLLRDY Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note Reset values are dependent on the DEVCFGx Configuration bits and the type of reset. Refer to Table 36-16 in 36.0 “Electrical Characteristics” for PBCLK6 frequency limitations. The PB7DIV register is read-only. 1: 2: 3: 19/3 18/2 17/1 16/0 — — — — — — — — — — All Resets(1) Virtual Address (BF80_#) 1340 OSCILLATOR CONFIGURATION REGISTER MAP (CONTINUED) PBDIV — — — — 8801 PBDIV — — — — LPRCRDY SOSCRDY 0000 8801 PBDIV — 0000 0000 8800 SYSDIV 0000 FRCRDY 0000 PIC32MK GP/MC Family DS60001402H-page 169 TABLE 9-2:  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 9-1: Bit Range 31:24 23:16 15:8 7:0 OSCCON: OSCILLATOR CONTROL REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit Bit 28/20/12/4 27/19/11/3 U-0 U-0 U-0 U-0 U-0 — — — — — Bit 26/18/10/2 R/W-0 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 FRCDIV R/W-0 U-0 R/W-y U-0 U-0 U-0 U-0 DRMEN — SLP2SPD — — — — — U-0 R-0 R-0 R-0 U-0 R/W-y R/W-y R/W-y — COSC — U-0 NOSC R/W-0 U-0 U-0 R/W-0 R/W-0, HS R/W-0 R/W-y R/W-y CLKLOCK — — SLPEN CF UFRCEN SOSCEN OSWEN(1) Legend: R = Readable bit -n = Value at POR y = Value set from Configuration bits on POR HS = Hardware Set W = Writable bit U = Unimplemented bit, read as ‘0’ ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown bit 31-27 Unimplemented: Read as ‘0’ bit 26-24 FRCDIV: Internal Fast RC (FRC) Oscillator Clock Divider bits 111 = FRC divided by 256 110 = FRC divided by 64 101 = FRC divided by 32 100 = FRC divided by 16 011 = FRC divided by 8 010 = FRC divided by 4 001 = FRC divided by 2 000 = FRC divided by 1 (default setting) bit 23 DRMEN: Dream Mode Enable bit 1 = Dream mode is enabled 0 = Dream mode is disabled bit 22 Unimplemented: Read as ‘0’ bit 21 SLP2SPD: Sleep Two-speed Start-up Control bit 1 = Use FRC as SYSCLK until the selected clock is ready 0 = Use the selected clock directly bit 20-15 Unimplemented: Read as ‘0’ bit 14-12 COSC: Current Oscillator Selection bits 111 = Reserved 110 = Reserved 101 = Internal Low-Power RC (LPRC) Oscillator 100 = Secondary Oscillator (SOSC) 011 = USB PLL (UPLL) input clock and divider are set by UPLLCON 010 = Primary Oscillator (POSC) (HS or EC) 001 = System PLL (SPLL) input clock and divider set by SPLLCON 000 = Internal Fast RC (FRC) Oscillator divided by FRCDIV bits (FRCDIV) supports FRN divided by N, where ‘N’ is 1, 2, 4, 8, 16, 32, 64, and 256 bit 11 Unimplemented: Read as ‘0’ Note 1: Note: The reset value for this bit depends on the setting of the IESO bit (DEVCFG1). When IESO = 1, the reset value is ‘1’. When IESO = 0, the reset value is ‘0’. Writes to this register require an unlock sequence. Refer to Section 42. “Oscillators with Enhanced PLL” (DS60001250) in the “PIC32 Family Reference Manual” for details. DS60001402H-page 170  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 9-1: bit 10-8 bit 7 bit 6-5 bit 4 bit 3 OSCCON: OSCILLATOR CONTROL REGISTER NOSC: New Oscillator Selection bits 111 = Reserved 110 = Reserved 101 = Internal Low-Power RC (LPRC) Oscillator 100 = Secondary Oscillator (SOSC) 011 = USB PLL (UPLL) input clock and divider are set by UPLLCON 010 = Primary Oscillator (POSC) (HS or EC) 001 = System PLL (SPLL) input clock and divider set by SPLLCON 000 = Internal Fast RC (FRC) Oscillator divided by FRCDIV bits (FRCDIV) supports FRN divided by N, where ‘N’ is 1, 2, 4, 8, 16, 32, 64, and 256 On Reset, these bits are set to the value of the FNOSC Configuration bits (DEVCFG1). CLKLOCK: Clock Selection Lock Enable bit 1 = Clock and PLL selections are locked 0 = Clock and PLL selections are not locked and may be modified Unimplemented: Read as ‘0’ SLPEN: Sleep Mode Enable bit 1 = Device will enter Sleep mode when a WAIT instruction is executed 0 = Device will enter Idle mode when a WAIT instruction is executed CF: Clock Fail Detect bit 1 = FSCM has detected a clock failure 0 = No clock failure has been detected Note: bit 2 bit 1 bit 0 Note 1: Note: On a clock fail event if enabled by the FCKSM bits (DEVCFG1) = ‘0b11, this bit and the RNMICON bit will be set. The user software must clear both the bits inside the CF NMI before attempting to exit the ISR. Software or hardware settings of the CF bit (OSCCON) will cause a CF NMI event and an automatic clock switch to the FRC provided the FCKSM = ‘0b11. Unlike the CF bit (OSCCON), software or hardware settings of the CF bit (RNMICON) will cause a CF NMI event but will not cause a clock switch to the FRC. After a Clock Fail event, a successful user software clock switch if implemented, hardware will automatically clear the CF bit (RNMICON), but not the CF bit (OSCCON). The CF bit (OSCCON) must be cleared by software using the OSCCON register unlock procedure. UFRCEN: USB FRC Sleep Clock Enable bit 1 = FRC is the USB input clock for wake from Sleep mode 0 = USB input clock is determined by the UPOSCEN bit (UPLLCON) SOSCEN: Secondary Oscillator (SOSC) Enable bit 1 = Enable Secondary Oscillator 0 = Disable Secondary Oscillator OSWEN: Oscillator Switch Enable bit(1) 1 = Initiate an oscillator switch to selection specified by NOSC bits 0 = Oscillator switch is complete The reset value for this bit depends on the setting of the IESO bit (DEVCFG1). When IESO = 1, the reset value is ‘1’. When IESO = 0, the reset value is ‘0’. Writes to this register require an unlock sequence. Refer to Section 42. “Oscillators with Enhanced PLL” (DS60001250) in the “PIC32 Family Reference Manual” for details.  2016-2021 Microchip Technology Inc. DS60001402H-page 171 PIC32MK GP/MC Family REGISTER 9-2: Bit Range 31:24 23:16 15:8 7:0 OSCTUN: FRC TUNING REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 R-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 R-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 — — TUN(1) 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 bit 31-6 Unimplemented: Read as ‘0’ bit 5-0 TUN: FRC Oscillator Tuning bits(1) 111111 = +1.453% • • • 100000 = 0.000% (Nominal Center Frequency, default) • • • 000000 =-1.500% x = Bit is unknown Note 1: OSCTUN functionality has been provided to help customers compensate for temperature effects on the FRC frequency over a wide range of temperatures. The tuning step size is an approximation, and is neither characterized nor tested. Note: Writes to this register require an unlock sequence. Refer to the Section 42. “Oscillators with Enhanced PLL” (DS60001250) in the “PIC32 Family Reference Manual” for details. DS60001402H-page 172  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 9-3: Bit Range 31:24 23:16 15:8 7:0 SPLLCON: SYSTEM PLL CONTROL REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 U-0 U-0 U-0 U-0 U-0 R/W-y — — — — — U-0 R/W-y R/W-y R/W-y — U-0 R/W-y Bit 25/17/9/1 Bit 24/16/8/0 R/W-y R/W-y PLLODIV R/W-y R/W-y R/W-y R/W-y R/W-y PLLMULT U-0 U-0 U-0 U-0 R/W-y — PLLIDIV R/W-y U-0 U-0 U-0 U-0 PLLICLK — — — — Legend: R = Readable bit -n = Value at POR R/W-y R/W-y R/W-y PLLRANGE y = Value set from Configuration bits on POR W = Writable bit U = Unimplemented bit, read as ‘0’ ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown bit 31-27 Unimplemented: Read as ‘0’ bit 26-24 PLLODIV: System PLL Output Clock Divider bits 111 = Reserved 110 = Reserved 101 = PLL Divide by 32 100 = PLL Divide by 16 011 = PLL Divide by 8 010 = PLL Divide by 4 001 = PLL Divide by 2 000 = Reserved The default setting is specified by the FPLLODIV Configuration bits in the DEVCFG2 register. Refer to Register 33-5 in 33.0 “Special Features” for information. bit 23 Unimplemented: Read as ‘0’ bit 22-16 PLLMULT: System PLL Multiplier bits 1111111 = Multiply by 128 1111110 = Multiply by 127 1111101 = Multiply by 126 1111100 = Multiply by 125 • • • 0000000 = Multiply by 1 The default setting is specified by the FPLLMULT Configuration bits in the DEVCFG2 register. Refer to Register 33-5 in 33.0 “Special Features” for information. bit 15-11 Unimplemented: Read as ‘0’ Note 1: 2: 3: Writes to this register require an unlock sequence. Refer to Section 42. “Oscillators with Enhanced PLL” (DS60001250) in the “PIC32 Family Reference Manual” for details. Writes to this register are not allowed if the SPLL is selected as a clock source (COSC = 001). While the PLL is active, and if updating the PLL bits in the OSCCON register at run-time, the user application must remain within the following limits at all times for all nodes in the PLL clock tree. Therefore, the order in which the PLL values may be modified, (i.e., PLLODIV, PLLMULT, PLLODIV) becomes important. Failure to maintain PLL nodes within min/max ranges may result in unstable PLL and system behavior. • Output and input to PLLIDIV block (i.e., FPLLI) 5 MHz to 64 MHz (min/max at all times) • VCO output, (i.e., FVCO) 350 MHz to 700 MHz (min/max at all times) • Output of PLLODIV, (i.e., FPLL) 10 MHz to 120 MHz (min/max at all times)  2016-2021 Microchip Technology Inc. DS60001402H-page 173 PIC32MK GP/MC Family REGISTER 9-3: bit 10-8 SPLLCON: SYSTEM PLL CONTROL REGISTER PLLIDIV: System PLL Input Clock Divider bits 111 = Divide by 8 110 = Divide by 7 101 = Divide by 6 100 = Divide by 5 011 = Divide by 4 010 = Divide by 3 001 = Divide by 2 000 = Divide by 1 The default setting is specified by the FPLLIDIV Configuration bits in the DEVCFG2 register. Refer to Register 33-5 in 33.0 “Special Features” for information. If the PLLICLK is set for FRC, this setting is ignored by the PLL and the divider is set to Divide-by-1. PLLICLK: System PLL Input Clock Source bit 1 = FRC is selected as the input to the System PLL 0 = POSC is selected as the input to the System PLL The POR default is specified by the FPLLICLK Configuration bit in the DEVCFG2 register. Refer to Register 33-5 in 33.0 “Special Features” for information. Unimplemented: Read as ‘0’ PLLRANGE: System PLL Frequency Range Selection bits 111 = Reserved 110 = 54-64 MHz 101 = 34-64 MHz 100 = 21-42 MHz 011 = 13-26 MHz 010 = 8-16 MHz 001 = 5-10 MHz 000 = Bypass Use the highest filter range that covers the input freq to the VCO multiplier block that corresponds to the PLLIDIV output freq to minimize PLL system jitter (see Figure 9-1). For example, Crystal = 20 MHz, PLLIDIV = 0b1; therefore, the filter input frequency is equal to 10 MHz and UPLLRANGE = ‘0b010. The default setting is specified by the FPLLRNG Configuration bits in the DEVCFG2 register. Refer to Register 33-5 in 33.0 “Special Features” for information. bit 7 bit 6-3 bit 2-0 Note 1: 2: 3: Writes to this register require an unlock sequence. Refer to Section 42. “Oscillators with Enhanced PLL” (DS60001250) in the “PIC32 Family Reference Manual” for details. Writes to this register are not allowed if the SPLL is selected as a clock source (COSC = 001). While the PLL is active, and if updating the PLL bits in the OSCCON register at run-time, the user application must remain within the following limits at all times for all nodes in the PLL clock tree. Therefore, the order in which the PLL values may be modified, (i.e., PLLODIV, PLLMULT, PLLODIV) becomes important. Failure to maintain PLL nodes within min/max ranges may result in unstable PLL and system behavior. • Output and input to PLLIDIV block (i.e., FPLLI) 5 MHz to 64 MHz (min/max at all times) • VCO output, (i.e., FVCO) 350 MHz to 700 MHz (min/max at all times) • Output of PLLODIV, (i.e., FPLL) 10 MHz to 120 MHz (min/max at all times) DS60001402H-page 174  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 9-4: Bit Range 31:24 23:16 15:8 7:0 UPLLCON: USB PLL CONTROL REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 U-0 — U-0 R/W-0 U-0 U-0 R/W-0 — UPOSCEN — — U-0 R/W-0 R/W-0 R/W-0 — U-0 R/W-0 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 PLLODIV R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PLLMULT U-0 U-0 U-0 U-0 R/W-0 — PLLIDIV U-0 U-0 U-0 U-0 U-0 — — — — — Legend: R = Readable bit -n = Value at POR W = Writable bit ‘1’ = Bit is set R/W-0 R/W-0 R/W-0 PLLRANGE U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31-30 Unimplemented: Read as ‘0’ bit 29 UPOSCEN: Output Enable bit 1 = USB input clock is POSC 0 = USB input clock is UPLL bit 28-27 Unimplemented: Read as ‘0’ bit 26-24 PLLODIV: System PLL Output Clock Divider bits 111 = Reserved 110 = Reserved 101 = PLL Divide by 32 100 = PLL Divide by 16 011 = PLL Divide by 8 010 = PLL Divide by 4 001 = PLL Divide by 2 000 = Reserved The default setting is specified by the FPLLODIV Configuration bits in the DEVCFG2 register. Refer to Register 33-5 in 33.0 “Special Features” for information. Unimplemented: Read as ‘0’ bit 23 Note 1: 2: 3: Writes to this register require an unlock sequence. Refer to Section 42. “Oscillators with Enhanced PLL” (DS60001250) in the “PIC32 Family Reference Manual” for details. Writes to this register are not allowed if the UPLL is selected as a clock source (COSC = 011). While the PLL is active, and if updating the PLL bits in the OSCCON register at run-time, the user application must remain within the following limits at all times for all nodes in the PLL clock tree. Therefore, the order in which the PLL values may be modified, (i.e., PLLODIV, PLLMULT, PLLODIV) becomes important. Failure to maintain PLL nodes within min/max ranges may result in unstable PLL and system behavior. • Output and input to PLLIDIV block (i.e., FPLLI) 5 MHz to 64 MHz (minimum/maximum at all times) • VCO output, (i.e., FVCO) 350 MHz to 700 MHz (minimum/maximum at all times) • Output of PLLODIV, (i.e., FPLL) 10 MHz to 120 MHz (minimum/maximum at all times)  2016-2021 Microchip Technology Inc. DS60001402H-page 175 PIC32MK GP/MC Family REGISTER 9-4: UPLLCON: USB PLL CONTROL REGISTER bit 22-16 PLLMULT: System PLL Multiplier Output Clock Divider bits 1111111 = Multiply by 128 1111110 = Multiply by 127 1111101 = Multiply by 126 • • • 0000010 = Multiply by 3 0000001 = Multiply by 2 0000000 = Multiply by 1 The default setting is specified by the FPLLMULT Configuration bits in the DEVCFG2 register. Refer to Register 33-5 in 33.0 “Special Features” for information. bit 15-11 Unimplemented: Read as ‘0’ bit 10-8 PLLIDIV: System PLL Input Clock Divider bits 111 = Divide by 8 110 = Divide by 7 101 = Divide by 6 100 = Divide by 5 011 = Divide by 4 010 = Divide by 3 001 = Divide by 2 000 = Divide by 1 The default setting is specified by the FPLLIDIV Configuration bits in the DEVCFG2 register. Refer to Register 33-5 in 33.0 “Special Features” for information. If the PLLICLK is set for FRC, this setting is ignored by the PLL and the divider is set to Divide-by-1. Unimplemented: Read as ‘0’ PLLRANGE: System PLL Frequency Range Selection bits 111 = Reserved 110 = 54-90 MHz 101 = 34-68 MHz 100 = 21-42 MHz 011 = 13-26 MHz 010 = 8-16 MHz 001 = 5-10 MHz 000 = Bypass Use the highest filter range that covers the input freq to the VCO multiplier block that corresponds to the PLLIDIV output freq to minimize PLL system jitter (see Figure 9-1). For example, Crystal = 20 MHz, PLLIDIV = 0b1; therefore, the filter input frequency is equal to 10 MHz and UPLLRANGE = 0b010. The default setting is specified by the FPLLRNG Configuration bits in the DEVCFG2 register. Refer to Register 33-5 in 33.0 “Special Features” for information. bit 7-3 bit 2-0 Note 1: 2: 3: Writes to this register require an unlock sequence. Refer to Section 42. “Oscillators with Enhanced PLL” (DS60001250) in the “PIC32 Family Reference Manual” for details. Writes to this register are not allowed if the UPLL is selected as a clock source (COSC = 011). While the PLL is active, and if updating the PLL bits in the OSCCON register at run-time, the user application must remain within the following limits at all times for all nodes in the PLL clock tree. Therefore, the order in which the PLL values may be modified, (i.e., PLLODIV, PLLMULT, PLLODIV) becomes important. Failure to maintain PLL nodes within min/max ranges may result in unstable PLL and system behavior. • Output and input to PLLIDIV block (i.e., FPLLI) 5 MHz to 64 MHz (minimum/maximum at all times) • VCO output, (i.e., FVCO) 350 MHz to 700 MHz (minimum/maximum at all times) • Output of PLLODIV, (i.e., FPLL) 10 MHz to 120 MHz (minimum/maximum at all times) DS60001402H-page 176  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 9-5: Bit Range 31:24 23:16 15:8 7:0 REFOxCON: REFERENCE OSCILLATOR CONTROL REGISTER (‘x’ = 1-4) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 U-0 R/W-0 R/W-0 R/W-0 — R/W-0 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 RODIV R/W-0 R/W-0 R/W-0 R/W-0 RODIV R/W-0 U-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0, HC R-0, HS, HC — DIVSWEN ACTIVE(1) R/W-0 R/W-0 R/W-0 — SIDL OE RSLP(2) U-0 U-0 U-0 U-0 R/W-0 — — — — ON (1) ROSEL (3) Legend: HC = Hardware Cleared HS = Hardware Set R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’ -n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared bit 31 x = Bit is unknown Unimplemented: Read as ‘0’ bit 30-16 RODIV Reference Clock Divider bits The value selects the reference clock divider bits (see Figure 9-1 for details). A value of ‘0’ selects no divider. bit 15 ON: Output Enable bit(1) 1 = Reference Oscillator Module enabled 0 = Reference Oscillator Module disabled bit 14 Unimplemented: Read as ‘0’ bit 13 SIDL: Peripheral Stop in Idle Mode bit 1 = Discontinue module operation when the device enters Idle mode 0 = Continue module operation in Idle mode bit 12 OE: Reference Clock Output Enable bit 1 = Reference clock is driven out on REFCLKOx pin 0 = Reference clock is not driven out on REFCLKOx pin bit 11 RSLP: Reference Oscillator Module Run in Sleep bit(2) 1 = Reference Oscillator Module output continues to run in Sleep 0 = Reference Oscillator Module output is disabled in Sleep bit 10 Unimplemented: Read as ‘0’ bit 9 DIVSWEN: Divider Switch Enable bit 1 = Divider switch is in progress 0 = Divider switch is complete bit 8 ACTIVE: Reference Clock Request Status bit(1) 1 = Reference clock request is active 0 = Reference clock request is not active bit 7-4 Unimplemented: Read as ‘0’ Note 1: 2: 3: Do not write to this register when the ON bit is not equal to the ACTIVE bit. This bit is ignored when the ROSEL bits = 0000 or 0001. The ROSEL bits should not be written while the ACTIVE bit is ‘1’, as undefined behavior may result.  2016-2021 Microchip Technology Inc. DS60001402H-page 177 PIC32MK GP/MC Family REGISTER 9-5: REFOxCON: REFERENCE OSCILLATOR CONTROL REGISTER (‘x’ = 1-4) bit 3-0 ROSEL: Reference Clock Source Select bits(3) 1111 = Reserved • • • 1001 = Reserved 1000 = REFCLKI 0111 = SPLL 0110 = UPLL 0101 = SOSC 0100 = LPRC 0011 = FRC 0010 = POSC 0001 = PBCLK1 0000 = SYSCLK Note 1: 2: 3: Do not write to this register when the ON bit is not equal to the ACTIVE bit. This bit is ignored when the ROSEL bits = 0000 or 0001. The ROSEL bits should not be written while the ACTIVE bit is ‘1’, as undefined behavior may result. DS60001402H-page 178  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 9-6: Bit Range 31:24 23:16 15:8 7:0 REFOxTRIM: REFERENCE OSCILLATOR TRIM REGISTER (‘x’ = 1-4) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 ROTRIM R/W-0 R-0 U-0 U-0 U-0 ROTRIM — — — — — — — U-0 R-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — 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 bit 31-23 ROTRIM: Reference Oscillator Trim bits 111111111 = 511/512 divisor added to RODIV value 111111110 = 510/512 divisor added to RODIV value • • • 100000000 = 256/512 divisor added to RODIV value • • • 000000010 = 2/512 divisor added to RODIV value 000000001 = 1/512 divisor added to RODIV value 000000000 = 0 divisor added to RODIV value bit 22-0 Note 1: 2: 3: 4: Unimplemented: Read as ‘0’ While the ON bit (REFOxCON) is ‘1’, writes to this register do not take effect until the DIVSWEN bit is also set to ‘1’. Do not write to this register when the ON bit (REFOxCON) is not equal to the ACTIVE bit (REFOxCON). Specified values in this register do not take effect if RODIV (REFOxCON) = 0. REFCLKOx Frequency = ((Selected Source Clock / 2) * (N + (M / 512))) where, Selected source clock = ROSEL, N = RODIV, and M = ROTRIM. If the value of REFCLKOx Frequency is not a whole integer value, the output clock will have jitter as it will cause the REFCLKOx circuit to clock cycle steal to produce an average frequency equivalent to the user application’s desired frequency. The amount of jitter, (i.e., clock cycle steals), become less as the fractional remainder value becomes closer to a whole number and is greatest at any value plus 0.5.  2016-2021 Microchip Technology Inc. DS60001402H-page 179 PIC32MK GP/MC Family REGISTER 9-7: Bit Range 31:24 23:16 15:8 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-1 (1) U-0 U-0 U-0 R-1 U-0 U-0 U-0 — — — PBDIVRDY — — — U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-1(2) ON 7:0 PBxDIV: PERIPHERAL BUS ‘x’ CLOCK DIVISOR CONTROL REGISTER (‘x’ = 1-7) — PBDIV 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 bit 31-16 Unimplemented: Read as ‘0’ bit 15 ON: Peripheral Bus ‘x’ Output Clock Enable bit(1) 1 = Output clock is enabled 0 = Output clock is disabled bit 14-12 Unimplemented: Read as ‘0’ bit 11 PBDIVRDY: Peripheral Bus ‘x’ Clock Divisor Ready bit 1 = Clock divisor logic is not switching divisors and the PBxDIV bits may be written 0 = Clock divisor logic is currently switching values and the PBxDIV bits cannot be written bit 10-7 Unimplemented: Read as ‘0’ bit 6-0 PBDIV: Peripheral Bus ‘x’ Clock Divisor Control bits 1111111 = PBCLKx is SYSCLK divided by 128 1111110 = PBCLKx is SYSCLK divided by 127 • • • 0000011 = PBCLKx is SYSCLK divided by 4 (default value for x = 6) 0000010 = PBCLKx is SYSCLK divided by 3 0000001 = PBCLKx is SYSCLK divided by 2 (default value for x < 6) 0000000 = PBCLKx is SYSCLK divided by 1 (default value for x = 7) Note 1: The clock for Peripheral Bus 1 and Peripheral Bus 7 cannot be turned off. Therefore, the ON bit in the PB1DIV register and the PB7DIV register cannot be written as a ‘0’. 2: The default value for CPU clock PB7DIV Lsb = 0, where PB7CLK = SYSCLK (PB7DIV is read-only). Note: Writes to this register require an unlock sequence. Refer to Section 42. “Oscillators with Enhanced PLL” (DS60001250) in the “PIC32 Family Reference Manual” for details. DS60001402H-page 180  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 9-8: Bit Range 31:24 23:16 15:8 7:0 SLEWCON: OSCILLATOR SLEW CONTROL REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 (1) R/W-0 R/W-0 R/W-0 R/W-0 — — — — U-0 U-0 U-0 U-0 U-0 SYSDIV — — — — — U-0 U-0 U-0 U-0 U-0 R/W-1 R/W-0 R-0, HS, HC — — — — — UPEN DNEN BUSY SLWDIV Legend: HC = Hardware Cleared HS = Hardware Set 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 31-20 Unimplemented: Read as ‘0’ bit 19-16 SYSDIV: System Clock Divide Control bits(1) 1111 = SYSCLK is divided by 16 1110 = SYSCLK is divided by 15 • • • 0010 = SYSCLK is divided by 3 0001 = SYSCLK is divided by 2 0000 = SYSCLK is not divided bit 15-11 Unimplemented: Read as ‘0’ bit 10-8 SLWDIV: Slew Divisor Steps Control bits These bits control the maximum division steps used when slewing during a frequency change. 111 = Steps are divide by 128, 64, 32, 16, 8, 4, 2, and then no divisor 110 = Steps are divide by 64, 32, 16, 8, 4, 2, and then no divisor 101 = Steps are divide by 32, 16, 8, 4, 2, and then no divisor 100 = Steps are divide by 16, 8, 4, 2, and then no divisor 011 = Steps are divide by 8, 4, 2, and then no divisor 010 = Steps are divide by 4, 2, and then no divisor 001 = Steps are divide by 2, and then no divisor 000 = No divisor is used during slewing The steps apply in reverse order (i.e., 2, 4, 8, etc.) during a downward frequency change. bit 7-3 Unimplemented: Read as ‘0’ bit 2 UPEN: Upward Slew Enable bit 1 = Slewing enabled for switching to a higher frequency 0 = Slewing disabled for switching to a higher frequency bit 1 DNEN: Downward Slew Enable bit 1 = Slewing enabled for switching to a lower frequency 0 = Slewing disabled for switching to a lower frequency bit 0 BUSY: Clock Switching Slewing Active Status bit 1 = Clock frequency is being actively slewed to the new frequency 0 = Clock switch has reached its final value Note 1: The SYSDIV bit settings are ignored if both UPEN and DNEN = 0, and SYSCLK will be divided by 1.  2016-2021 Microchip Technology Inc. DS60001402H-page 181 PIC32MK GP/MC Family REGISTER 9-9: Bit Range 31:24 23:16 15:8 7:0 CLKSTAT: OSCILLATOR CLOCK STATUS REGISTER Bit 31/23/15/7 Bit Bit 30/22/14/6 29/21/13/5 Bit Bit Bit 28/20/12/4 27/19/11/3 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 R-0 — — — — — — — UPLLRDY R-0 U-0 R-0 R-0 U-0 R-0 U-0 R-0 SPLLRDY — — POSCRDY — FRCRDY LPRCRDY SOSCRDY 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 bit 31-9 Unimplemented: Read as ‘0’ bit 8 UPLLRDY: USB PLL (UPLL) Ready Status bit 1 = UPLL is ready 0 = UPLL is not ready bit 7 SPLLRDY: System PLL (SPLL) Ready Status bit 1 = SPLL is ready 0 = SPLL is not ready bit 5 LPRCRDY: Low-Power RC (LPRC) Oscillator Ready Status bit 1 = LPRC is stable and ready 0 = LPRC is disabled or not operating bit 4 SOSCRDY: Secondary Oscillator (SOSC) Ready Status bit 1 = SOSC is stable and ready 0 = SOSC is disabled or not operating bit 3 Unimplemented: Read as ‘0’ bit 2 POSCRDY: Primary Oscillator (POSC) Ready Status bit 1 = POSC is stable and ready 0 = POSC is disabled or not operating bit 1 Unimplemented: Read as ‘0’ bit 0 FRCRDY: Fast RC (FRC) Oscillator Ready Status bit 1 = FRC is stable and ready 0 = FRC is disabled for not operating DS60001402H-page 182 x = Bit is unknown  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family NOTES:  2016-2021 Microchip Technology Inc. DS60001402H-page 183 PIC32MK GP/MC Family 10.0 PREFETCH MODULE Note: This data sheet summarizes the features of the PIC32MK GP/MC family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 4. “Prefetch Cache Module” (DS60001119), which is available from the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). The Prefetch module is a performance enhancing module that is included in the PIC32MK GP/MC family of devices. When running at high-clock rates, Wait states must be inserted into Program Flash Memory (PFM) read transactions to meet the access time of the PFM. Wait states can be hidden to the core by prefetching and storing instructions in a temporary holding area that the CPU can access quickly. Although the data path to the CPU is 32 bits wide, the data path to the PFM is 128 bits wide. This wide data path provides the same bandwidth to the CPU as a 32-bit path running at four times the frequency. FIGURE 10-1: The Prefetch module holds a subset of PFM in temporary holding spaces known as lines. Each line contains a tag and data field. Normally, the lines hold a copy of what is currently in memory to make instructions or data available to the CPU without Flash Wait states. 10.1 • • • • • • Prefetch Cache Features 36x16 byte fully-associative lines 16 lines for CPU instructions Four lines for CPU data Four lines for peripheral data 16-byte parallel memory fetch Configurable predictive prefetch A simplified block diagram of the Prefetch module is shown in Figure 10-1. PREFETCH MODULE BLOCK DIAGRAM SYSCLK CPU Prefetch Buffer Data CPU Tag Bus Control Line Control Program Flash Memory (PFM) DS60001402H-page 184  2016-2021 Microchip Technology Inc. Prefetch Control Registers PREFETCH REGISTER MAP 0800 CHECON 0820 CHEHIT 0830 CHEMIS 31/15 30/14 29/13 28/12 27/11 31:16 — — 15:0 — — — — — — CHEPERFEN — 26/10 25/9 PERCHEEN DCHEEN — — 24/8 23/7 ICHEEN — PFMAWSEN — 22/6 21/5 20/4 PERCHEINV DCHEINV ICHEINV — PREFEN 19/3 — — 18/2 17/1 16/0 All Resets Bit Range Bits Register Name(1) Virtual Address (BF80_#) TABLE 10-1: PERCHECOH DCHECOH ICHECOH 0700 PFMWS 0107 31:16 CHEHIT 0000 15:0 CHEHIT 0000 31:16 CHEMIS 0000 15:0 CHEMIS 0000 Legend: x = unknown value on Reset, — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See Section13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family DS60001402H-page 185 10.2  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 10-1: Bit Range 31:24 23:16 15:8 7:0 CHECON: CACHE MODULE CONTROL REGISTER Bit Bit 31/23/15/7 30/22/14/6 U-0 U-0 Bit 29/21/13/5 Bit Bit 28/20/12/4 27/19/11/3 U-0 U-0 Bit 26/18/10/2 R/W-1 R/W-1 R/W-1 DCHEEN ICHEEN R/W-0 R/W-0 — — — — — U-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 PER DCHEINV(1) ICHEINV(1) CHEINV(1) Bit 24/16/8/0 U-0 PERCHEEN — Bit 25/17/9/1 — PER DCHECOH(2) ICHECOH(2) CHECOH(2) U-0 U-0 U-0 R/W-0 U-0 U-0 U-0 R/W-1 — — — CHE PERFEN — — — PFM AWSEN U-0 U-0 R/W-0 R/W-0 U-0 R/W-1 R/W-1 R/W-1 — — PREFEN — PFMWS 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 bit 31-27 Unimplemented: Read as ‘0’ bit 26 PERCHEEN: Peripheral Cache Enable bit 1 = Peripheral cache is enabled 0 = Peripheral cache is disabled bit 25 DCHEEN: Data Cache Enable bit 1 = Data cache is enabled 0 = Data cache is disabled bit 24 ICHEEN: Instruction Cache Enable bit 1 = Instruction cache is enabled 0 = Instruction cache is disabled bit 23 Unimplemented: Read as ‘0’ bit 22 PERCHEINV: Peripheral Cache Invalidate bit(1) 1 = Force invalidate cache/invalidate busy 0 = Cache Invalidation follows CHECOH/invalid complete bit 21 DCHEINV: Data Cache Invalidate bit(1) 1 = Force invalidate cache/invalidate busy 0 = Cache Invalidation follows CHECOH/invalid complete bit 20 ICHEINV: Instruction Cache Invalidate bit(1) 1 = Force invalidate cache/invalidate busy 0 = Cache Invalidation follows CHECOH/invalid complete bit 19 Unimplemented: Read as ‘0’ bit 18 PERCHECOH: Peripheral Auto-cache Coherency Control bit(2) 1 = Automatically invalidate cache on a programming event 0 = Do not automatically invalidate cache on a programming event Note 1: 2: Hardware automatically clears this bit when cache invalidate completes. Bits may clear at different times. The PERCHECOH, DCHECOH, and ICHECOH bits must be stable before initiation of programming to ensure correct invalidation of data. DS60001402H-page 186  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 10-1: CHECON: CACHE MODULE CONTROL REGISTER (CONTINUED) bit 17 DCHECOH: Data Auto-cache Coherency Control bit(2) 1 = Automatically invalidate cache on a programming event 0 = Do not automatically invalidate cache on a programming event bit 16 ICHECOH: Instruction Auto-cache Coherency Control bit(2) 1 = Automatically invalidate cache on a programming event 0 = Do not automatically invalidate cache on a programming event bit 15-13 Unimplemented: Read as ‘0’ bit 12 CHEPERFEN: Cache Performance Counters Enable bit 1 = Performance counters are enabled 0 = Performance counters are disabled bit 11-9 Unimplemented: Read as ‘0’ bit 8 PFMAWSEN: PFM Address Wait State Enable bit 1 = Add one more Wait State to flash address setup (suggested for higher system clock frequencies) 0 = Add no Wait States to the flash address setup (suggested for lower system clock frequencies to achieve higher performance) When this bit is set to ‘1’, total Flash wait states are PFMWS plus PFMAWSEN. bit 7-6 Unimplemented: Read as ‘0’ bit 5-4 PREFEN: Predictive Prefetch Enable bits 11 = Disable predictive prefetch 10 = Disable predictive prefetch 01 = Enable predictive prefetch for CPU instructions only 00 = Disable predictive prefetch bit 3 Unimplemented: Read as ‘0’ bit 2-0 PFMWS: PFM Access Time Defined in Terms of SYSCLK Wait States bits 111 = Seven Wait states • • • 010 = Two Wait states 001 = One Wait state 000 = Zero Wait states Required Flash Wait States Note 1: 2: Note 1: 2: SYSCLK (MHz) 1 - Wait State 0 < SYSCLK  60 MHz 3 - Wait State 60 MHz < SYSCLK  120 MHz When the LPRD bit (NVMCON) = 0, Flash read access wait states are governed by the PFMWS bits. When the LPRD bit = 1, Flash read access wait states are governed by the LPRDWS bits (NVMCOM2). Hardware automatically clears this bit when cache invalidate completes. Bits may clear at different times. The PERCHECOH, DCHECOH, and ICHECOH bits must be stable before initiation of programming to ensure correct invalidation of data.  2016-2021 Microchip Technology Inc. DS60001402H-page 187 PIC32MK GP/MC Family REGISTER 10-2: Bit Range 31:24 23:16 15:8 7:0 CHEHIT: CACHE HIT STATUS REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CHEHIT R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CHEHIT R/W-0 CHEHIT R/W-0 CHEHIT 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 bit 31-0 x = Bit is unknown CHEHIT: Instruction Cache Hit Count bits When the CHEPERFEN bit (CHECON) = 1, the CHEHIT bits increment each time the processor issues an instruction fetch or load that hits the prefetch cache from a cacheable region. Non-cacheable accesses do not modify this value. The CHEHIT bits are reset on a ‘0’ to ‘1’ transition of the CHEPERFEN bit. DS60001402H-page 188  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 10-3: Bit Range 31:24 23:16 15:8 7:0 CHEMIS: CACHE MISS STATUS REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CHEMIS R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CHEMIS R/W-0 CHEMIS R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CHEMIS 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 bit 31-0 x = Bit is unknown CHEMIS: Instruction Cache Miss Count bits When the CHEPERFEN bit (CHECON) = 1, the CHEMIS bits increment each time the processor issues an instruction fetch or load that hits the prefetch cache from a cacheable region. Non-cacheable accesses do not modify this value. The CHEMIS bits are reset on a ‘0’ to ‘1’ transition of the CHEPERFEN bit.  2016-2021 Microchip Technology Inc. DS60001402H-page 189 PIC32MK GP/MC Family 11.0 Note: DIRECT MEMORY ACCESS (DMA) CONTROLLER This data sheet summarizes the features of the PIC32MK GP/MC family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 31. “Direct Memory Access (DMA) Controller” (DS60001117), which is available from the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). The Direct Memory Access (DMA) Controller is a bus Host module useful for data transfers between different devices without CPU intervention. The source and destination of a DMA transfer can be any of the memory mapped modules existent in the device such as SPI, UART, PMP, etc., or memory itself. Following are some of the key features of the DMA Controller module: • Eight identical channels, each featuring: - Auto-increment source and destination address registers - Source and destination pointers - Memory-to-memory and memory-toperipheral transfers • Automatic word-size detection: - Transfer granularity, down to byte level - Bytes need not be word-aligned at source and destination FIGURE 11-1: DMA BLOCK DIAGRAM INT Controller Peripheral Bus • Fixed priority channel arbitration • Flexible DMA channel operating modes: - Manual (software) or automatic (interrupt) DMA requests - One-Shot or Auto-Repeat Block Transfer modes - Channel-to-channel chaining • Flexible DMA requests: - A DMA request can be selected from any of the peripheral interrupt sources - Each channel can select any (appropriate) observable interrupt as its DMA request source - A DMA transfer abort can be selected from any of the peripheral interrupt sources - Up to 2-byte Pattern (data) match transfer termination • Multiple DMA channel status interrupts: - DMA channel block transfer complete - Source empty or half empty - Destination full or half full - DMA transfer aborted due to an external event - Invalid DMA address generated • DMA debug support features: - Most recent error address accessed by a DMA channel - Most recent DMA channel to transfer data • CRC Generation module: - CRC module can be assigned to any of the available channels - CRC module is highly configurable System IRQ Address Decoder SE Channel 0 Control I0 Channel 1 Control I1 DMA SYSCLK L Y Bus Interface System Bus + Bus Arbitration I2 Global Control (DMACON) Channel n Control In SE L Channel Priority Arbitration DS60001402H-page 190  2016-2021 Microchip Technology Inc. DMA Control Registers Virtual Address (BF81_#) Register Name(1) TABLE 11-1: 1000 DMACON 1010 DMASTAT DMA GLOBAL REGISTER MAP 1020 DMAADDR 31/15 30/14 29/13 31:16 — — — 15:0 ON — — 31:16 RDWR — — — 15:0 — — — — All Resets Bit Range Bits 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 — — — — — — — — — — — — — 0000 — — — — — — — — — — — 0000 — — — — — — — — — — — — 0000 — — — — — — — — — SUSPEND DMABUSY 31:16 DMACH 0000 0000 DMAADDR 15:0 0000 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. DMA CRC REGISTER MAP 1030 DCRCCON 1040 DCRCDATA  2016-2021 Microchip Technology Inc. 1050 DCRCXOR 31/15 30/14 31:16 — — 15:0 — — 31:16 15:0 31:16 15:0 29/13 28/12 BYTO — 27/11 WBO 26/10 25/9 24/8 — — BITO PLEN 23/7 — CRCEN DCRCDATA DCRCXOR 22/6 21/5 20/4 19/3 18/2 — — — — — — — CRCAPP CRCTYP 17/1 16/0 — — CRCCH All Resets Bit Range Bits Register Name(1) Virtual Address (BF81_#) TABLE 11-2: 0000 0000 0000 0000 0000 0000 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family DS60001402H-page 191 11.1 Virtual Address (BF81_#) 1060 DCH0CON 1070 DCH0ECON 1080 DCH0INT 1090 DCH0SSA 10A0 DCH0DSA 10B0 DCH0SSIZ 10C0 DCH0DSIZ 10D0 DCH0SPTR 10F0 DCH0CSIZ 1100 DCH0CPTR DCH0DAT 1120 DCH1CON 1130 DCH1ECON DS60001402H-page 192 1140 DCH1INT 1150 DCH1SSA 1160 DCH1DSA 30/14 29/13 15:0 CHBUSY — CHPIGNEN — 31:16 — — — 31:16 28/12 27/11 26/10 25/9 24/8 23/7 — — CHPATLEN — — CHCHNS CHEN CHAED — — — — CHPIGN — 15:0 CHSIRQ 22/6 21/5 20/4 19/3 18/2 17/1 16/0 — — CHCHN CHAEN — — — — CHEDET — 0000 CHPRI 0000 FF00 CHAIRQ CFORCE CABORT All Resets Bit Range 31/15 00FF PATEN SIRQEN AIRQEN — — — 31:16 — — — — — — — — CHSDIE CHSHIE CHDDIE CHDHIE CHBCIE CHCCIE CHTAIE CHERIE 0000 15:0 — — — — — — — — CHSDIF CHSHIF CHDDIF CHDHIF CHBCIF CHCCIF CHTAIF CHERIF 0000 31:16 31:16 — — — — — — — — — — — — — — 15:0 31:16 — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — 0000 — — — — — — — 0000 — — — — — — — 0000 — — — — — — — 0000 — — — — — — — 0000 — — — — — — — — — — — — — — — 0000 CHEN CHAED CHCHN CHAEN — CHEDET CHPRI 0000 FF00 — — — — — — — — — — — — — — — — — — — — — — — 0000 0000 0000 0000 CHCPTR 15:0 — — 0000 CHPDAT 31:16 CHPIGN 15:0 CHBUSY — CHPIGNEN — CHPATLEN — — CHCHNS 31:16 — — — — — — — — 15:0 CHSIRQ 0000 0000 CHCSIZ 15:0 31:16 — CHDPTR 15:0 31:16 0000 — CHSPTR 15:0 31:16 — CHDSIZ 15:0 31:16 — CHSSIZ 15:0 31:16 0000 0000 CHDSA 15:0 31:16 0000 CHSSA 15:0 0000 0000 CHAIRQ CFORCE CABORT 00FF PATEN SIRQEN AIRQEN — — — 31:16 — — — — — — — — CHSDIE CHSHIE CHDDIE CHDHIE CHBCIE CHCCIE CHTAIE CHERIE 0000 15:0 — — — — — — — — CHSDIF CHSHIF CHDDIF CHDHIF CHBCIF CHCCIF CHTAIF CHERIF 0000 31:16 15:0 31:16 15:0 CHSSA CHDSA 0000 0000 0000 0000 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family 10E0 DCH0DPTR 1110 DMA CHANNEL 0 THROUGH CHANNEL 7 REGISTER MAP Bits Register Name(1)  2016-2021 Microchip Technology Inc. TABLE 11-3: Virtual Address (BF81_#) 1180 DCH1DSIZ 1190 DCH1SPTR 11A0 DCH1DPTR 11B0 DCH1CSIZ 11C0 DCH1CPTR 11D0 DCH1DAT 11E0 DCH2CON 11F0 DCH2ECON DCH2INT 1210 DCH2SSA 1220 DCH2DSA  2016-2021 Microchip Technology Inc. 1230 DCH2SSIZ 1240 DCH2DSIZ 1250 DCH2SPTR 1260 DCH2DPTR 1270 DCH2CSIZ 31:16 31/15 30/14 29/13 28/12 27/11 26/10 25/9 — — — — — — — 15:0 31:16 — — — — — — 15:0 31:16 — — — — — — — — — — — — — — — — — — — — — 20/4 19/3 18/2 17/1 16/0 — — — — — — — — — — — — — — — — 0000 — — — — — — — 0000 — — — — — — — 0000 — — — — — — — 0000 — — — — — — — 0000 — — — — — — — — — — — — — — — 0000 CHEN CHAED CHCHN CHAEN — CHEDET CHPRI 0000 FF00 — — — — — — — — — — — — — — — — — — — — — — — — 0000 0000 0000 0000 CHCPTR 15:0 — — 0000 CHPDAT 31:16 CHPIGN 15:0 CHBUSY — CHPIGNEN — CHPATLEN — — CHCHNS 31:16 — — — — — — — — 15:0 CHSIRQ 0000 0000 CHCSIZ 15:0 31:16 21/5 CHDPTR 15:0 31:16 22/6 CHSPTR 15:0 31:16 23/7 CHDSIZ 15:0 31:16 24/8 CHSSIZ — All Resets Bit Range Register Name(1) Bits 1170 DCH1SSIZ 1200 DMA CHANNEL 0 THROUGH CHANNEL 7 REGISTER MAP (CONTINUED) 0000 0000 CHAIRQ CFORCE CABORT 00FF PATEN SIRQEN AIRQEN — — — 31:16 — — — — — — — — CHSDIE CHSHIE CHDDIE CHDHIE CHBCIE CHCCIE CHTAIE CHERIE 0000 15:0 — — — — — — — — CHSDIF CHSHIF CHDDIF CHDHIF CHBCIF CHCCIF CHTAIF CHERIF 0000 31:16 31:16 — — — — — — — — — — — — — — 15:0 31:16 — — — — — — — — — — — — — — 15:0 — 0000 — — — — — — — — — — — — — — — — 0000 — — — — — — — — — — — — — — — — 0000 — — — — — — — — — 0000 — — — — — — — 0000 0000 CHDPTR — — CHCSIZ 0000 0000 CHSPTR 15:0 31:16 — CHDSIZ 15:0 31:16 0000 CHSSIZ 15:0 31:16 0000 CHDSA 15:0 31:16 0000 CHSSA 15:0 0000 0000 0000 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family DS60001402H-page 193 TABLE 11-3: Virtual Address (BF81_#) 1280 DCH2CPTR 1290 DCH2DAT 12A0 DCH3CON 12B0 DCH3ECON 12C0 DCH3INT 12D0 DCH3SSA 12E0 DCH3DSA 12F0 DCH3SSIZ 1310 DCH3SPTR 1320 DCH3DPTR 1330 DCH3CSIZ 1340 DCH3CPTR 1350 DCH3DAT DS60001402H-page 194 1360 DCH4CON 1370 DCH4ECON DCH4INT 30/14 29/13 28/12 27/11 26/10 25/9 — — — — — — — 15:0 31:16 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 — — — — — — — — — — — — — — — — — — — — — — — — 0000 CHEN CHAED CHCHN CHAEN — CHEDET CHPRI 0000 FF00 CHCPTR — — — — — — — 15:0 — — CHPIGN 15:0 CHBUSY — CHPIGNEN — CHPATLEN — — CHCHNS 31:16 — — — — — — — — 15:0 CHSIRQ 0000 0000 CHPDAT 31:16 All Resets Bit Range 31:16 31/15 0000 0000 CHAIRQ CFORCE CABORT 00FF PATEN SIRQEN AIRQEN — — — 31:16 — — — — — — — — CHSDIE CHSHIE CHDDIE CHDHIE CHBCIE CHCCIE CHTAIE CHERIE 0000 15:0 — — — — — — — — CHSDIF CHSHIF CHDDIF CHDHIF CHBCIF CHCCIF CHTAIF CHERIF 0000 31:16 31:16 — — — — — — — — — — — — — — 15:0 31:16 — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — 0000 — — — — — — — 0000 — — — — — — — 0000 — — — — — — — 0000 — — — — — — — 0000 — — — — — — — — — — — — — — — 0000 CHEN CHAED CHCHN CHAEN — CHEDET CHPRI 0000 FF00 — — — — — — — — — — — — — — — — — — — — — — — 0000 0000 0000 0000 CHCPTR 15:0 — — 0000 CHPDAT 31:16 CHPIGN 15:0 CHBUSY — CHPIGNEN — CHPATLEN — — CHCHNS 31:16 — — — — — — — — 15:0 CHSIRQ 0000 0000 CHCSIZ 15:0 31:16 0000 — CHDPTR 15:0 31:16 — CHSPTR 15:0 31:16 — CHDSIZ 15:0 31:16 0000 CHSSIZ 15:0 31:16 0000 CHDSA 15:0 31:16 0000 CHSSA 15:0 0000 0000 CHAIRQ CFORCE CABORT 00FF PATEN SIRQEN AIRQEN — — — 31:16 — — — — — — — — CHSDIE CHSHIE CHDDIE CHDHIE CHBCIE CHCCIE CHTAIE CHERIE 0000 15:0 — — — — — — — — CHSDIF CHSHIF CHDDIF CHDHIF CHBCIF CHCCIF CHTAIF CHERIF 0000 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family 1300 DCH3DSIZ 1380 DMA CHANNEL 0 THROUGH CHANNEL 7 REGISTER MAP (CONTINUED) Bits Register Name(1)  2016-2021 Microchip Technology Inc. TABLE 11-3: Virtual Address (BF81_#) 13A0 DCH4DSA 13B0 DCH4SSIZ 13C0 DCH4DSIZ 13D0 DCH4SPTR 13E0 DCH4DPTR 13F0 DCH4CSIZ 1400 DCH4CPTR 1410 DCH4DAT 1420 DCH5CON 1430 DCH5ECON DCH5INT  2016-2021 Microchip Technology Inc. 1450 DCH5SSA 1460 DCH5DSA 1470 DCH5SSIZ 1480 DCH5DSIZ 1490 DCH5SPTR 31/15 30/14 29/13 28/12 27/11 26/10 25/9 31:16 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — — — — — — — — — — 17/1 16/0 0000 0000 0000 — — 0000 — — — — — — — — — — — — — — — 0000 — — — — — — — 0000 — — — — — — — 0000 — — — — — — — 0000 — — — — — — — 0000 — — — — — — — — — — — — — — — 0000 CHEN CHAED CHCHN CHAEN — CHEDET CHPRI 0000 FF00 — — — — — — — — — — — — — — — — — — — — — — — 0000 0000 0000 0000 CHCPTR 15:0 — — 0000 CHPDAT 31:16 CHPIGN 15:0 CHBUSY — CHPIGNEN — CHPATLEN — — CHCHNS 31:16 — — — — — — — — 15:0 CHSIRQ 0000 0000 CHCSIZ 15:0 31:16 18/2 CHDPTR 15:0 31:16 19/3 CHSPTR 15:0 31:16 20/4 CHDSIZ 15:0 31:16 21/5 CHSSIZ 15:0 31:16 22/6 CHDSA 15:0 31:16 23/7 CHSSA 15:0 31:16 24/8 All Resets Bit Range Register Name(1) Bits 1390 DCH4SSA 1440 DMA CHANNEL 0 THROUGH CHANNEL 7 REGISTER MAP (CONTINUED) 0000 0000 CHAIRQ CFORCE CABORT 00FF PATEN SIRQEN AIRQEN — — — 31:16 — — — — — — — — CHSDIE CHSHIE CHDDIE CHDHIE CHBCIE CHCCIE CHTAIE CHERIE 0000 15:0 — — — — — — — — CHSDIF CHSHIF CHDDIF CHDHIF CHBCIF CHCCIF CHTAIF CHERIF 0000 31:16 15:0 31:16 — — — — — — — — — — — — — — 15:0 31:16 15:0 0000 — — 0000 — — — — — — — — — — — — — — 0000 — — — — — — — 0000 CHSSIZ 15:0 31:16 0000 CHDSA 15:0 31:16 0000 CHSSA — — 0000 CHDSIZ — — — — — — — — — CHSPTR 0000 0000 0000 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family DS60001402H-page 195 TABLE 11-3: Virtual Address (BF81_#) 14A0 DCH5DPTR 14B0 DCH5CSIZ 14C0 DCH5CPTR 14D0 DCH5DAT 14E0 DCH6CON 14F0 DCH6ECON 1500 DMA CHANNEL 0 THROUGH CHANNEL 7 REGISTER MAP (CONTINUED) DCH6INT 1510 DCH6SSA 1530 DCH6SSIZ 1540 DCH6DSIZ 1550 DCH6SPTR 1560 DCH6DPTR 1570 DCH6CSIZ 1580 DCH6CPTR DS60001402H-page 196 1590 DCH6DAT 15A0 DCH7CON 31:16 30/14 29/13 28/12 27/11 26/10 25/9 — — — — — — — 15:0 31:16 — — — — — — 15:0 31:16 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 — — — — — — — — — — — — — — — — 0000 — — — — — — — 0000 — — — — — — — — — — — — — — — 0000 CHEN CHAED CHCHN CHAEN — CHEDET CHPRI 0000 FF00 — — — — — — — — — — — — — — — — — — 0000 CHCPTR 15:0 — — 0000 CHPDAT 31:16 CHPIGN 15:0 CHBUSY — CHPIGNEN — CHPATLEN — — CHCHNS 31:16 — — — — — — — — 15:0 CHSIRQ 0000 0000 CHCSIZ 15:0 31:16 24/8 CHDPTR — All Resets 31/15 0000 0000 CHAIRQ CFORCE CABORT 00FF PATEN SIRQEN AIRQEN — — — 31:16 — — — — — — — — CHSDIE CHSHIE CHDDIE CHDHIE CHBCIE CHCCIE CHTAIE CHERIE 0000 15:0 — — — — — — — — CHSDIF CHSHIF CHDDIF CHDHIF CHBCIF CHCCIF CHTAIF CHERIF 0000 31:16 31:16 — — — — — — — — — — — — — — 15:0 31:16 — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — 0000 — — — — — — — 0000 — — — — — — — 0000 — — — — — — — 0000 — — — — — — — 0000 — — — — — — — — — — — — — — — 0000 CHEN CHAED CHCHN CHAEN — CHEDET CHPRI 0000 — — — — — — — — — — — — — — — — — — — — — — — 0000 0000 0000 0000 CHCPTR 15:0 — 0000 CHPDAT 31:16 15:0 CHBUSY — CHPIGN — CHPIGNEN — CHPATLEN — — CHCHNS 0000 0000 CHCSIZ 15:0 31:16 0000 — CHDPTR 15:0 31:16 — CHSPTR 15:0 31:16 — CHDSIZ 15:0 31:16 0000 CHSSIZ 15:0 31:16 0000 CHDSA 15:0 31:16 0000 CHSSA 15:0 0000 0000 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family 1520 DCH6DSA Bit Range Bits Register Name(1)  2016-2021 Microchip Technology Inc. TABLE 11-3: Virtual Address (BF81_#) DCH7INT 15D0 DCH7SSA 15E0 DCH7DSA 15F0 DCH7SSIZ 1600 DCH7DSIZ 1610 DCH7SPTR 1620 DCH7DPTR 1630 DCH7CSIZ 1640 DCH7CPTR 1650 DCH7DAT 31:16 31/15 30/14 29/13 — — — 15:0 28/12 27/11 26/10 25/9 24/8 — — — — — CHSIRQ 23/7 22/6 21/5 20/4 PATEN SIRQEN 19/3 18/2 17/1 16/0 AIRQEN — — — CHAIRQ CFORCE CABORT All Resets Bit Range Register Name(1) Bits 15B0 DCH7ECON 15C0 DMA CHANNEL 0 THROUGH CHANNEL 7 REGISTER MAP (CONTINUED) 00FF FF00 31:16 — — — — — — — — CHSDIE CHSHIE CHDDIE CHDHIE CHBCIE CHCCIE CHTAIE CHERIE 0000 15:0 — — — — — — — — CHSDIF CHSHIF CHDDIF CHDHIF CHBCIF CHCCIF CHTAIF CHERIF 0000 31:16 31:16 — — — — — — — — — — — — — — 15:0 31:16 — — — — — — — — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — — — — 0000 — — — — — — — — — 0000 — — — — — — — — — 0000 — — — — — — — — — 0000 — — — — — — — — — — — — — — — — — — — — — — — 0000 — — — — — — — 0000 0000 0000 0000 CHCPTR — — CHPDAT 0000 0000 CHCSIZ 15:0 31:16 0000 — CHDPTR 15:0 31:16 — CHSPTR 15:0 31:16 — CHDSIZ 15:0 31:16 0000 CHSSIZ 15:0 31:16 0000 CHDSA 15:0 31:16 0000 CHSSA 15:0 0000 0000 0000 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family DS60001402H-page 197 TABLE 11-3:  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 11-1: Bit Range 31:24 23:16 15:8 7:0 Bit 31/23/15/7 DMACON: DMA CONTROLLER CONTROL REGISTER Bit Bit 30/22/14/6 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 U-0 U-0 R/W-0 R/W-0 U-0 U-0 U-0 ON — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — SUSPEND(1) DMABUSY 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 bit 31-16 Unimplemented: Read as ‘0’ bit 15 ON: DMA On bit 1 = DMA module is enabled 0 = DMA module is disabled bit 14-13 Unimplemented: Read as ‘0’ bit 12 SUSPEND: DMA Suspend bit(1) 1 = DMA transfers are suspended to allow CPU uninterrupted access to data bus 0 = DMA operates normally bit 11 DMABUSY: DMA Module Busy bit 1 = DMA module is active and is transferring data 0 = DMA module is disabled and not actively transferring data bit 10-0 Unimplemented: Read as ‘0’ Note 1: If the user application clears this bit, it may take a number of cycles before the DMA module completes the current transaction and responds to this request. The user application should poll the BUSY bit to verify that the request has been honored. DS60001402H-page 198  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 11-2: Bit Range 31:24 23:16 15:8 7:0 DMASTAT: DMA STATUS REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 RDWR — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 R-0 R-0 R-0 — — — — — DMACH 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 bit 31 x = Bit is unknown RDWR: Read/Write Status bit 1 = Last DMA bus access when an error was detected was a read 0 = Last DMA bus access when an error was detected was a write bit 30-3 Unimplemented: Read as ‘0’ bit 2-0 Note: DMACH: DMA Channel bits These bits contain the value of the most recent active DMA channel when an error was detected. The DMASTAT register will be cleared when its contents are read. If more than one errors at the same time, the read transaction will be recorded. Additional transfers that occur later with an error will not update this register until it has been read or cleared.  2016-2021 Microchip Technology Inc. DS60001402H-page 199 PIC32MK GP/MC Family REGISTER 11-3: Bit Range 31:24 23:16 15:8 7:0 DMAADDR: DMA ADDRESS REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 R-0 R-0 R-0 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 DMAADDR R-0 R-0 R-0 R-0 R-0 DMAADDR R-0 R-0 R-0 R-0 R-0 DMAADDR R-0 R-0 R-0 R-0 R-0 DMAADDR 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 bit 31-0 DMAADDR: DMA Module Address bits These bits contain the address of the most recent DMA access when an error was detected. Note: The DMAADDR register will be cleared when its contents are read. If more than one errors at the same time, the read transaction will be recorded. Additional transfers that occur later with an error will not update this register until it has been read or cleared. DS60001402H-page 200  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 11-4: Bit Range 31:24 23:16 15:8 7:0 DCRCCON: DMA CRC CONTROL REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 U-0 U-0 R/W-0 R/W-0 — — U-0 U-0 U-0 — — — U-0 U-0 U-0 — — — Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 U-0 U-0 R/W-0 WBO(1) — — BITO U-0 U-0 U-0 U-0 U-0 — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 BYTO PLEN(1,2,3) R/W-0 R/W-0 R/W-0 U-0 U-0 CRCEN CRCAPP(1) CRCTYP — — R/W-0 CRCCH 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 bit 31-30 Unimplemented: Read as ‘0’ bit 29-28 BYTO: CRC Byte Order Selection bits 11 = Endian byte swap on half-word boundaries (i.e., source half-word order with reverse source byte order per half-word) 10 = Swap half-words on word boundaries (i.e., reverse source half-word order with source byte order per half-word) 01 = Endian byte swap on word boundaries (i.e., reverse source byte order) 00 = No swapping (i.e., source byte order) bit 27 WBO: CRC Write Byte Order Selection bit(1) 1 = Source data is written to the destination re-ordered as defined by BYTO 0 = Source data is written to the destination unaltered bit 26-25 Unimplemented: Read as ‘0’ bit 24 BITO: CRC Bit Order Selection bit When CRCTYP (DCRCCON) = 1 (CRC module is in IP Header mode): 1 = The IP header checksum is calculated Least Significant bit (LSb) first (i.e., reflected) 0 = The IP header checksum is calculated Most Significant bit (MSb) first (i.e., not reflected) When CRCTYP (DCRCCON) = 0 (CRC module is in LFSR mode): 1 = The LFSR CRC is calculated Least Significant bit first (i.e., reflected) 0 = The LFSR CRC is calculated Most Significant bit first (i.e., not reflected) bit 23-13 Unimplemented: Read as ‘0’ bit 12-8 PLEN: Polynomial Length bits(1,2,3) When CRCTYP (DCRCCON) = 1 (CRC module is in IP Header mode): These bits are unused. When CRCTYP (DCRCCON) = 0 (CRC module is in LFSR mode): Denotes the length of the polynomial – 1. bit 7 CRCEN: CRC Enable bit 1 = CRC module is enabled and channel transfers are routed through the CRC module 0 = CRC module is disabled and channel transfers proceed normally Note 1: 2: 3: When WBO = 1, unaligned transfers are not supported and the CRCAPP bit cannot be set. The maximum CRC length supported by the DMA module is 32. This bit is unused when CRCTYP is equal to ‘1’.  2016-2021 Microchip Technology Inc. DS60001402H-page 201 PIC32MK GP/MC Family REGISTER 11-4: DCRCCON: DMA CRC CONTROL REGISTER (CONTINUED) bit 6 CRCAPP: CRC Append Mode bit(1) 1 = The DMA transfers data from the source into the CRC but NOT to the destination. When a block transfer completes the DMA writes the calculated CRC value to the location given by CHxDSA 0 = The DMA transfers data from the source through the CRC obeying WBO as it writes the data to the destination bit 5 CRCTYP: CRC Type Selection bit 1 = The CRC module will calculate an IP header checksum 0 = The CRC module will calculate a LFSR CRC bit 4-3 Unimplemented: Read as ‘0’ bit 2-0 CRCCH: CRC Channel Select bits 111 = CRC is assigned to Channel 7 110 = CRC is assigned to Channel 6 101 = CRC is assigned to Channel 5 100 = CRC is assigned to Channel 4 011 = CRC is assigned to Channel 3 010 = CRC is assigned to Channel 2 001 = CRC is assigned to Channel 1 000 = CRC is assigned to Channel 0 Note 1: 2: 3: When WBO = 1, unaligned transfers are not supported and the CRCAPP bit cannot be set. The maximum CRC length supported by the DMA module is 32. This bit is unused when CRCTYP is equal to ‘1’. DS60001402H-page 202  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 11-5: Bit Range 31:24 23:16 15:8 7:0 DCRCDATA: DMA CRC DATA REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 R/W-0 R/W-0 R/W-0 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 DCRCDATA R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 DCRCDATA R/W-0 R/W-0 DCRCDATA R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 DCRCDATA 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 bit 31-0 DCRCDATA: CRC Data Register bits Writing to this register will seed the CRC generator. Reading from this register will return the current value of the CRC. Bits greater than PLEN will return ‘0’ on any read. When CRCTYP (DCRCCON) = 1 (CRC module is in IP Header mode): Only the lower 16 bits contain IP header checksum information. The upper 16 bits are always ‘0’. Data written to this register is converted and read back in 1’s complement form (i.e., current IP header checksum value). When CRCTYP (DCRCCON) = 0 (CRC module is in LFSR mode): Bits greater than PLEN will return ‘0’ on any read. REGISTER 11-6: Bit Range 31:24 23:16 15:8 7:0 DCRCXOR: DMA CRCXOR ENABLE REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 DCRCXOR R/W-0 R/W-0 DCRCXOR R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 DCRCXOR R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 DCRCXOR 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 bit 31-0 DCRCXOR: CRC XOR Register bits When CRCTYP (DCRCCON) = 1 (CRC module is in IP Header mode): This register is unused. When CRCTYP (DCRCCON) = 0 (CRC module is in LFSR mode): 1 = Enable the XOR input to the Shift register 0 = Disable the XOR input to the Shift register; data is shifted in directly from the previous stage in the register  2016-2021 Microchip Technology Inc. DS60001402H-page 203 PIC32MK GP/MC Family REGISTER 11-7: Bit Range 31:24 23:16 15:8 7:0 DCHxCON: DMA CHANNEL ‘x’ CONTROL REGISTER (‘x’ = 0-7) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 CHPIGN U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 U-0 R/W-0 U-0 R/W-0 U-0 U-0 R/W-0 CHBUSY — CHIPGNEN — CHPATLEN — — CHCHNS(1) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R-0 CHEN(2) CHAED CHCHN CHAEN — CHEDET CHPRI 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 bit 31-24 CHPIGN: Channel Register Data bits Pattern Terminate mode: Any byte matching these bits during a pattern match may be ignored during the pattern match determination when the CHPIGNEN bit is set. If a byte is read that is identical to this data byte, the pattern match logic will treat it as a “don’t care” when the pattern matching logic is enabled and the CHPIGEN bit is set. bit 23-16 Unimplemented: Read as ‘0’ bit 15 CHBUSY: Channel Busy bit 1 = Channel is active or has been enabled 0 = Channel is inactive or has been disabled bit 14 Unimplemented: Read as ‘0’ bit 13 CHPIGNEN: Enable Pattern Ignore Byte bit 1 = Treat any byte that matches the CHPIGN bits as a “don’t care” when pattern matching is enabled 0 = Disable this feature bit 12 Unimplemented: Read as ‘0’ bit 11 CHPATLEN: Pattern Length bit 1 = 2 byte length 0 = 1 byte length bit 10-9 Unimplemented: Read as ‘0’ bit 8 CHCHNS: Chain Channel Selection bit(1) 1 = Chain to channel lower in natural priority (CH1 will be enabled by CH2 transfer complete) 0 = Chain to channel higher in natural priority (CH1 will be enabled by CH0 transfer complete) bit 7 CHEN: Channel Enable bit(2) 1 = Channel is enabled 0 = Channel is disabled bit 6 CHAED: Channel Allow Events If Disabled bit 1 = Channel start/abort events will be registered, even if the channel is disabled 0 = Channel start/abort events will be ignored if the channel is disabled bit 5 CHCHN: Channel Chain Enable bit 1 = Allow channel to be chained 0 = Do not allow channel to be chained Note 1: 2: The chain selection bit takes effect when chaining is enabled (i.e., CHCHN = 1). When the channel is suspended by clearing this bit, the user application should poll the CHBUSY bit (if available on the device variant) to see when the channel is suspended, as it may take some clock cycles to complete a current transaction before the channel is suspended. DS60001402H-page 204  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 11-7: DCHxCON: DMA CHANNEL ‘x’ CONTROL REGISTER (‘x’ = 0-7) (CONTINUED) bit 4 CHAEN: Channel Automatic Enable bit 1 = Channel is continuously enabled, and not automatically disabled after a block transfer is complete 0 = Channel is disabled on block transfer complete bit 3 Unimplemented: Read as ‘0’ bit 2 CHEDET: Channel Event Detected bit 1 = An event has been detected 0 = No events have been detected bit 1-0 CHPRI: Channel Priority bits 11 = Channel has priority 3 (highest) 10 = Channel has priority 2 01 = Channel has priority 1 00 = Channel has priority 0 Note 1: 2: The chain selection bit takes effect when chaining is enabled (i.e., CHCHN = 1). When the channel is suspended by clearing this bit, the user application should poll the CHBUSY bit (if available on the device variant) to see when the channel is suspended, as it may take some clock cycles to complete a current transaction before the channel is suspended.  2016-2021 Microchip Technology Inc. DS60001402H-page 205 PIC32MK GP/MC Family REGISTER 11-8: Bit Range 31:24 23:16 DCHxECON: DMA CHANNEL x EVENT CONTROL REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 (1) R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 CHAIRQ 15:8 R/W-1 CHSIRQ(1) 7:0 S-0 S-0 R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 CFORCE CABORT PATEN SIRQEN AIRQEN — — — Legend: R = Readable bit -n = Value at POR S = Settable bit W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31-24 Unimplemented: Read as ‘0’ bit 23-16 CHAIRQ: Channel Transfer Abort IRQ bits(1) 11111111 = Interrupt 255 will abort any transfers in progress and set CHAIF flag • • • bit 15-8 00000001 = Interrupt 1 will abort any transfers in progress and set CHAIF flag 00000000 = Interrupt 0 will abort any transfers in progress and set CHAIF flag CHSIRQ: Channel Transfer Start IRQ bits(1) 11111111 = Interrupt 255 will initiate a DMA transfer • • • 00000001 = Interrupt 1 will initiate a DMA transfer 00000000 = Interrupt 0 will initiate a DMA transfer bit 2-0 The DMA does not support I2C, Change Notification, Input Capture, CTMU, QEI, and MC PWMs. Using any of these DMA trigger transfer events could lead to unexpected behavior. CFORCE: DMA Forced Transfer bit 1 = A DMA transfer is forced to begin when this bit is written to a ‘1’ 0 = This bit always reads ‘0’ CABORT: DMA Abort Transfer bit 1 = A DMA transfer is aborted when this bit is written to a ‘1’ 0 = This bit always reads ‘0’ PATEN: Channel Pattern Match Abort Enable bit 1 = Abort transfer and clear CHEN on pattern match 0 = Pattern match is disabled SIRQEN: Channel Start IRQ Enable bit 1 = Start channel cell transfer if an interrupt matching CHSIRQ occurs 0 = Interrupt number CHSIRQ is ignored and does not start a transfer AIRQEN: Channel Abort IRQ Enable bit 1 = Channel transfer is aborted if an interrupt matching CHAIRQ occurs 0 = Interrupt number CHAIRQ is ignored and does not terminate a transfer Unimplemented: Read as ‘0’ Note 1: See Table 8-3: “Interrupt IRQ, Vector and Bit Location” for the list of available interrupt IRQ sources. Note: bit 7 bit 6 bit 5 bit 4 bit 3 DS60001402H-page 206  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 11-9: Bit Range 31:24 23:16 15:8 7:0 DCHxINT: DMA CHANNEL x INTERRUPT CONTROL REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CHSDIE CHSHIE CHDDIE CHDHIE CHBCIE CHCCIE CHTAIE CHERIE U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CHSDIF CHSHIF CHDDIF CHDHIF CHBCIF CHCCIF CHTAIF CHERIF 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 bit 31-24 Unimplemented: Read as ‘0’ bit 23 CHSDIE: Channel Source Done Interrupt Enable bit 1 = Interrupt is enabled 0 = Interrupt is disabled bit 22 CHSHIE: Channel Source Half Empty Interrupt Enable bit 1 = Interrupt is enabled 0 = Interrupt is disabled bit 21 CHDDIE: Channel Destination Done Interrupt Enable bit 1 = Interrupt is enabled 0 = Interrupt is disabled bit 20 CHDHIE: Channel Destination Half Full Interrupt Enable bit 1 = Interrupt is enabled 0 = Interrupt is disabled bit 19 CHBCIE: Channel Block Transfer Complete Interrupt Enable bit 1 = Interrupt is enabled 0 = Interrupt is disabled bit 18 CHCCIE: Channel Cell Transfer Complete Interrupt Enable bit 1 = Interrupt is enabled 0 = Interrupt is disabled bit 17 CHTAIE: Channel Transfer Abort Interrupt Enable bit 1 = Interrupt is enabled 0 = Interrupt is disabled bit 16 CHERIE: Channel Address Error Interrupt Enable bit 1 = Interrupt is enabled 0 = Interrupt is disabled bit 15-8 Unimplemented: Read as ‘0’ bit 7 CHSDIF: Channel Source Done Interrupt Flag bit 1 = Channel Source Pointer has reached end of source (CHSPTR = CHSSIZ) 0 = No interrupt is pending bit 6 CHSHIF: Channel Source Half Empty Interrupt Flag bit 1 = Channel Source Pointer has reached midpoint of source (CHSPTR = CHSSIZ/2) 0 = No interrupt is pending  2016-2021 Microchip Technology Inc. DS60001402H-page 207 PIC32MK GP/MC Family REGISTER 11-9: DCHxINT: DMA CHANNEL x INTERRUPT CONTROL REGISTER (CONTINUED) bit 5 CHDDIF: Channel Destination Done Interrupt Flag bit 1 = Channel Destination Pointer has reached end of destination (CHDPTR = CHDSIZ) 0 = No interrupt is pending bit 4 CHDHIF: Channel Destination Half Full Interrupt Flag bit 1 = Channel Destination Pointer has reached midpoint of destination (CHDPTR = CHDSIZ/2) 0 = No interrupt is pending bit 3 CHBCIF: Channel Block Transfer Complete Interrupt Flag bit 1 = A block transfer has been completed (the larger of CHSSIZ/CHDSIZ bytes has been transferred), or a pattern match event occurs 0 = No interrupt is pending bit 2 CHCCIF: Channel Cell Transfer Complete Interrupt Flag bit 1 = A cell transfer has been completed (CHCSIZ bytes have been transferred) 0 = No interrupt is pending bit 1 CHTAIF: Channel Transfer Abort Interrupt Flag bit 1 = An interrupt matching CHAIRQ has been detected and the DMA transfer has been aborted 0 = No interrupt is pending bit 0 CHERIF: Channel Address Error Interrupt Flag bit 1 = A channel address error has been detected  Either the source or the destination address is invalid. 0 = No interrupt is pending DS60001402H-page 208  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 11-10: DCHxSSA: DMA CHANNEL x SOURCE START ADDRESS REGISTER Bit Range Bit 31/23/15/7 Bit 30/22/14/6 R/W-0 R/W-0 31:24 Bit Bit Bit Bit 29/21/13/5 28/20/12/4 27/19/11/3 26/18/10/2 R/W-0 R/W-0 R/W-0 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CHSSA R/W-0 23:16 R/W-0 R/W-0 R/W-0 R/W-0 CHSSA R/W-0 15:8 R/W-0 R/W-0 R/W-0 R/W-0 CHSSA R/W-0 7:0 R/W-0 R/W-0 R/W-0 R/W-0 CHSSA 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 bit 31-0 x = Bit is unknown CHSSA Channel Source Start Address bits Channel source start address. Note: This must be the physical address of the source. REGISTER 11-11: DCHxDSA: DMA CHANNEL x DESTINATION START ADDRESS REGISTER Bit Range 31:24 23:16 15:8 7:0 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CHDSA R/W-0 R/W-0 CHDSA R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CHDSA R/W-0 CHDSA 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 bit 31-0 CHDSA: Channel Destination Start Address bits Channel destination start address. Note: This must be the physical address of the destination.  2016-2021 Microchip Technology Inc. DS60001402H-page 209 PIC32MK GP/MC Family REGISTER 11-12: DCHxSSIZ: DMA CHANNEL x SOURCE SIZE REGISTER Bit Range 31:24 23:16 15:8 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CHSSIZ 7:0 R/W-0 CHSSIZ Legend: R = Readable bit -n = Value at POR W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31-16 Unimplemented: Read as ‘0’ bit 15-0 CHSSIZ: Channel Source Size bits 1111111111111111 = 65,535 byte source size • • • 0000000000000010 = 2 byte source size 0000000000000001 = 1 byte source size 0000000000000000 = 65,536 byte source size REGISTER 11-13: DCHxDSIZ: DMA CHANNEL x DESTINATION SIZE REGISTER Bit Range 31:24 23:16 15:8 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CHDSIZ 7:0 R/W-0 CHDSIZ Legend: R = Readable bit -n = Value at POR W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31-16 Unimplemented: Read as ‘0’ bit 15-0 CHDSIZ: Channel Destination Size bits 1111111111111111 = 65,535 byte destination size • • • 0000000000000010 = 2 byte destination size 0000000000000001 = 1 byte destination size 0000000000000000 = 65,536 byte destination size DS60001402H-page 210  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 11-14: DCHxSPTR: DMA CHANNEL x SOURCE POINTER REGISTER Bit Range 31:24 23:16 15:8 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 CHSPTR 7:0 R-0 R-0 CHSPTR Legend: R = Readable bit -n = Value at POR W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31-16 Unimplemented: Read as ‘0’ bit 15-0 CHSPTR: Channel Source Pointer bits 1111111111111111 = Points to byte 65,535 of the source • • • 0000000000000001 = Points to byte 1 of the source 0000000000000000 = Points to byte 0 of the source Note: When in Pattern Detect mode, this register is reset on a pattern detect.  2016-2021 Microchip Technology Inc. DS60001402H-page 211 PIC32MK GP/MC Family REGISTER 11-15: DCHxDPTR: DMA CHANNEL x DESTINATION POINTER REGISTER Bit Range 31:24 23:16 15:8 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 CHDPTR 7:0 R-0 R-0 CHDPTR Legend: R = Readable bit -n = Value at POR W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31-16 Unimplemented: Read as ‘0’ bit 15-0 CHDPTR: Channel Destination Pointer bits 1111111111111111 = Points to byte 65,535 of the destination • • • 0000000000000001 = Points to byte 1 of the destination 0000000000000000 = Points to byte 0 of the destination DS60001402H-page 212  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 11-16: DCHxCSIZ: DMA CHANNEL x CELL-SIZE REGISTER Bit Range 31:24 23:16 15:8 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CHCSIZ 7:0 R/W-0 CHCSIZ Legend: R = Readable bit -n = Value at POR W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31-16 Unimplemented: Read as ‘0’ bit 15-0 CHCSIZ: Channel Cell-Size bits 1111111111111111 = 65,535 bytes transferred on an event • • • 0000000000000010 = 2 bytes transferred on an event 0000000000000001= 1 byte transferred on an event 0000000000000000 = 65,536 bytes transferred on an event  2016-2021 Microchip Technology Inc. DS60001402H-page 213 PIC32MK GP/MC Family REGISTER 11-17: DCHxCPTR: DMA CHANNEL x CELL POINTER REGISTER Bit Range 31:24 23:16 15:8 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 CHCPTR 7:0 R-0 R-0 CHCPTR Legend: R = Readable bit -n = Value at POR W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31-16 Unimplemented: Read as ‘0’ bit 15-0 CHCPTR: Channel Cell Progress Pointer bits 1111111111111111 = 65,535 bytes have been transferred since the last event • • • 0000000000000001 = 1 byte has been transferred since the last event 0000000000000000 = 0 bytes have been transferred since the last event Note: When in Pattern Detect mode, this register is reset on a pattern detect. DS60001402H-page 214  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 11-18: DCHxDAT: DMA CHANNEL x PATTERN DATA REGISTER Bit Range 31:24 23:16 15:8 7:0 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CHPDAT R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CHPDAT 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 bit 31-16 Unimplemented: Read as ‘0’ bit 15-0 CHPDAT: Channel Data Register bits Pattern Terminate mode: Data to be matched must be stored in this register to allow terminate on match. All other modes: Unused.  2016-2021 Microchip Technology Inc. DS60001402H-page 215 PIC32MK GP/MC Family 12.0 Note: USB ON-THE-GO (OTG) This data sheet summarizes the features of the PIC32MK GP/MC Family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 27. “USB OnThe-Go (OTG)” (DS60001126), which is available from the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). The Universal Serial Bus (USB) module contains analog and digital components to provide a USB 2.0 full-speed and low-speed embedded host, full-speed device or OTG implementation with a minimum of external components. This module in Host mode is intended for use as an embedded host and therefore does not implement a UHCI or OHCI controller. The USB module consists of the clock generator, the USB voltage comparators, the transceiver, the Serial Interface Engine (SIE), a dedicated USB DMA controller, pull-up and pull-down resistors, and the register interface. A block diagram of the PIC32MK USB OTG module is presented in Figure 12-1. The PIC32MK USB module includes the following features: • • • • • • • • • USB full-speed support for host and device Low-speed host support USB OTG support Integrated signaling resistors Integrated analog comparators for VBUS monitoring Integrated USB transceiver Transaction handshaking performed by hardware Endpoint buffering anywhere in system RAM Integrated DMA to access system RAM and Flash Note: The implementation and use of the USB specifications, and other third party specifications or technologies, may require licensing; including, but not limited to, USB Implementers Forum, Inc. (also referred to as USB-IF). The user is fully responsible for investigating and satisfying any applicable licensing obligations. The clock generator provides the 48 MHz clock required for USB full-speed and low-speed communication. The voltage comparators monitor the voltage on the VBUS pin to determine the state of the bus. The transceiver provides the analog translation between the USB bus and the digital logic. The SIE is a state machine that transfers data to and from the endpoint buffers and generates the hardware protocol for data transfers. The USB DMA controller transfers data between the data buffers in RAM and the SIE. The integrated pull-up and pull-down resistors eliminate the need for external signaling components. The register interface allows the CPU to configure and communicate with the module. DS60001402H-page 216  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family FIGURE 12-1: USB INTERFACE DIAGRAM UPOSCEN (UPLLCON) UFRCEN (OSCCON) USB PLL (UPLL)(1) 5-64 MHz FIN /N Filter RNG 5-64 MHz 350-700 MHz 10-120 MHz FPLL FPLLI FVCO /N PLL * M 0 1 PLLIDIV (UPLLCON) OSC1 PLLRANGE (UPLLCON) OSC2 PLLMUL (UPLLCON) 48 MHz USB Clock 0 1 PLLODIV (UPLLCON) FOSC (HS or EC) FRC Oscillator 8 MHz Typical USB Module SRP Charge VBUS SRP Discharge USB Voltage Comparators 48 MHz USB Clock(2) Full Speed Pull-up D+ Registers and Control Interface Host Pull-down SIE Transceiver Low Speed Pull-up DDMA System RAM Host Pull-down ID Pull-up ID(3) VBUSON(3) VUSB3V3 Note 1: 2: 3: Transceiver Power 3.3V These bits are contained in the DEVCFG2 register. A 48 MHz clock is required for proper USB operation. Pins can be used as GPIO when the USB module is disabled or when the USB module is enabled but the FVBUSIOx bit (DEVCFG3) = 0 or the FUSBIDIOx bit (DEVCFG3) = 0.  2016-2021 Microchip Technology Inc. DS60001402H-page 217 Control Registers Register Name(1) TABLE 12-1: Virtual Address (BF88_#) 9040 U1OTGIR(2) 9050 U1OTGIE 9080 U1OTGCON U1PWRC U1IR(2) 9200 9220 U1IE U1EIR(2) 9230 9240 U1EIE U1STAT(3) 9250 DS60001402H-page 218 9260 9270 U1CON U1ADDR U1BDTP1 Legend: Note 1: 2: 3: 4: 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 22/6 21/5 — — 20/4 31:16 — — — — — — — — — 15:0 — — — — — — — — IDIF 31:16 — — — — — — — — — 15:0 — — — — — — — — IDIE 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — ID — LSTATE — SESVD SESEND — VBUSVD 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — OTGEN VBUSCHG VBUSDIS 0000 31:16 — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — UACTPND(4) — — 31:16 — — — — — — — — — — — — T1MSECIF LSTATEIF — — ACTVIF — T1MSECIE LSTATEIE 19/3 18/2 17/1 — — — SESVDIF SESENDIF — ACTVIE DPPULUP DMPULUP DPPULDWN DMPULDWN VBUSON 15:0 — — — — — — — — STALLIF 31:16 — — — — — — — — — 15:0 — — — — — — — — STALLIE 31:16 — — — — — — — — — — — — ATTACHIE RESUMEIE — — USLPGRD USBBUSY ATTACHIF RESUMEIF — — — IDLEIF TRNIF — — UERRIE — — — — — — — BTSEF BMXEF DMAEF BTOEF 31:16 — — — — — — — — — — — — — — — — — — — — BTSEE BMXEE DMAEE BTOEE 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — 31:16 — — — — — — — — ENDPT — — — — — — — JSTATE SE0 31:16 — — — — — — — — — — 15:0 — — — — — — — — LSPDEN 31:16 — — — — — — — — — 15:0 — — — — — — — — — TOKBUSY — DFN8EF CRC16EF — 15:0 — UERRIF SOFIE — 15:0 — — — PKTDIS SOFIF USBRST — — DFN8EE CRC16EE — — CRC5EF EOFEF — CRC5EE EOFEE — — BDTPTRL 0000 — 0000 URSTIF 0000 DETACHIF 0000 — 0000 URSTIE 0000 DETACHIE 0000 — PIDEF — PIDEE 0000 0000 0000 0000 0000 0000 — — — — 0000 DIR PPBI — — 0000 — — — — 0000 USBEN 0000 SOFEN 0000 0000 HOSTEN RESUME — — 0000 VBUSVDIE 0000 PPBRST — — — — — — 0000 — 0000 DEVADDR — 0000 VBUSVDIF 0000 USUSPEND USBPWR TRNIE — — — — — — — — — IDLEIE 15:0 — — SESVDIE SESENDIE — 16/0 — 0000 x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. With the exception of those noted, all registers in this table (except as noted) have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC respectively. See 13.2 “CLR, SET, and INV Registers” for more information. This register does not have associated SET and INV registers. This register does not have associated CLR, SET, and INV registers. Reset value for this bit is undefined. PIC32MK GP/MC Family 9210 23/7 All Resets Bits 9060 U1OTGSTAT(3) 9070 USB1 AND USB2 REGISTER MAP Bit Range  2016-2021 Microchip Technology Inc. 12.1 Virtual Address (BF88_#) Register Name(1) 9280 U1FRML(3) 9290 U1FRMH(3) U1TOK 92B0 U1SOF 92C0 U1BDTP2 U1BDTP3 92E0 U1CNFG1 9300 U1EP0 9310 U1EP1 9320 U1EP2 9330 U1EP3  2016-2021 Microchip Technology Inc. 9340 U1EP4 9350 U1EP5 9360 U1EP6 9370 U1EP7 9380 U1EP8 Legend: Note 1: 2: 3: 4: 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 31:16 — — — — — — — — — — — — — — — — 15:0 — — — — — — — — 31:16 — — — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — — 31:16 — — — — — — — — — — — — — 15:0 — — — — — — — — 31:16 — — — — — — — — 15:0 — — — — — — — — 31:16 — — — — — — — — 15:0 — — — — — — — — 31:16 — — — — — — — — 15:0 — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — UTEYE UOEMON — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — LSPD RETRYDIS — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — FRML — — FRMH — — — — — — — — — — — — — — — — — — USBSIDL LSDEV — — — — — — — — — EPCONDIS EPRXEN — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN 0000 0000 BDTPTRU — 0000 0000 BDTPTRH — 0000 0000 — CNT — 0000 0000 — EP — 0000 0000 PID — All Resets Bit Range Bits 92A0 92D0 USB1 AND USB2 REGISTER MAP (CONTINUED) 0000 0000 0000 UASUSPND 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. With the exception of those noted, all registers in this table (except as noted) have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC respectively. See 13.2 “CLR, SET, and INV Registers” for more information. This register does not have associated SET and INV registers. This register does not have associated CLR, SET, and INV registers. Reset value for this bit is undefined. PIC32MK GP/MC Family DS60001402H-page 219 TABLE 12-1: Virtual Address (BF88_#) Register Name(1) 9390 U1EP9 U1EP10 93B0 U1EP11 93C0 U1EP12 93D0 U1EP13 U1EP14 93F0 U1EP15 A040 U2OTGIR(2) A050 U2OTGIE A060 U2OTGSTAT(3) A080 U2OTGCON U2PWRC U2IR(2) A200 A210 U2IE DS60001402H-page 220 Legend: Note 1: 2: 3: 4: 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — IDIF 31:16 — — — — — — — — — 15:0 — — — — — — — — IDIE 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — ID — LSTATE — SESVD SESEND — VBUSVD 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — OTGEN VBUSCHG VBUSDIS 0000 31:16 — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — UACTPND(4) — — 31:16 — — — — — — — — — — — — — — — — — — — STALLIF 31:16 — — — — — — — — — — — — — — — — — — — T1MSECIE LSTATEIE — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — ACTVIF — ACTVIE — STALLIE ATTACHIF RESUMEIF — — ATTACHIE RESUMEIE — — — — 17/1 — — — 0000 EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 — — — — — — — TRNIF SOFIF UERRIF — — — — TRNIE SOFIE VBUSVDIF 0000 — UERRIE 0000 VBUSVDIE 0000 USUSPEND USBPWR IDLEIF IDLEIE 16/0 EPTXEN SESVDIE SESENDIE USLPGRD USBBUSY — 18/2 SESVDIF SESENDIF DPPULUP DMPULUP DPPULDWN DMPULDWN VBUSON 15:0 15:0 T1MSECIF LSTATEIF 19/3 0000 — 0000 URSTIF 0000 DETACHIF 0000 — 0000 URSTIE 0000 DETACHIE 0000 x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. With the exception of those noted, all registers in this table (except as noted) have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC respectively. See 13.2 “CLR, SET, and INV Registers” for more information. This register does not have associated SET and INV registers. This register does not have associated CLR, SET, and INV registers. Reset value for this bit is undefined. PIC32MK GP/MC Family 93E0 20/4 All Resets Bits 93A0 A070 USB1 AND USB2 REGISTER MAP (CONTINUED) Bit Range  2016-2021 Microchip Technology Inc. TABLE 12-1: Virtual Address (BF88_#) Register Name(1) A220 U2EIR(2) USB1 AND USB2 REGISTER MAP (CONTINUED) 31:16 A230 A240 U2EIE U2STAT A250 A260 (3) U2CON U2ADDR A270 U2BDTP1 A280 (3) A290 U2FRML U2FRMH A2A0 U2TOK A2B0 A2C0  2016-2021 Microchip Technology Inc. A2D0 (3) U2SOF U2BDTP2 U2BDTP3 A2E0 U2CNFG1 A300 U2EP0 Legend: Note 1: 2: 3: 4: 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 — — — — — — — — — — — — — — 15:0 — — — — — — — — BTSEF BMXEF DMAEF BTOEF 31:16 — — — — — — — — — — — — DFN8EF CRC16EF — 15:0 — — — — — — — — BTSEE BMXEE DMAEE BTOEE 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — 31:16 — — — — — — — — — — 15:0 — — — — — — — — JSTATE SE0 31:16 — — — — — — — — — — 15:0 — — — — — — — — LSPDEN 31:16 — — — — — — — — — 15:0 — — — — — — — — 31:16 — — — — — — — — 15:0 — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — 31:16 — — — — — — — — — — 15:0 — — — — — — — — 31:16 — — — — — — — — 15:0 — — — — — — — — 31:16 — — — — — — — — 15:0 — — — — — — — — 31:16 — — — — — — — — 15:0 — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — UTEYE UOEMON — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — LSPD RETRYDIS — TOKBUSY — USBRST — — CRC5EF EOFEF CRC5EE EOFEE — PIDEE — — — 0000 — — 0000 — — — — 0000 USBEN 0000 SOFEN 0000 0000 HOSTEN RESUME — — — — — PPBRST — — — — — — 0000 — 0000 0000 0000 — — — — — — — — — — — — — — 0000 FRMH — — — — — — — — — — — — — — — — — — USBSIDL LSDEV — — — — — — — — 0000 0000 BDTPTRH — 0000 0000 — CNT — 0000 0000 — EP — 0000 PPBI — — 0000 DIR PID — 0000 — FRML — 0000 — DEVADDR — 0000 — BDTPTRL — PIDEF 0000 — — PKTDIS 16/0 — DFN8EE CRC16EE ENDPT — — 17/1 All Resets Bit Range Bits — 0000 BDTPTRU EPCONDIS EPRXEN 0000 0000 0000 0000 UASUSPND 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. With the exception of those noted, all registers in this table (except as noted) have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC respectively. See 13.2 “CLR, SET, and INV Registers” for more information. This register does not have associated SET and INV registers. This register does not have associated CLR, SET, and INV registers. Reset value for this bit is undefined. PIC32MK GP/MC Family DS60001402H-page 221 TABLE 12-1: Virtual Address (BF88_#) Register Name(1) A310 U2EP1 USB1 AND USB2 REGISTER MAP (CONTINUED) A320 U2EP2 A330 U2EP3 A340 U2EP4 A350 U2EP5 A360 U2EP6 A370 U2EP7 A380 U2EP8 U2EP9 A3A0 U2EP10 A3B0 U2EP11 A3C0 U2EP12 A3D0 U2EP13 A3E0 U2EP14 A3F0 U2EP15 DS60001402H-page 222 Legend: Note 1: 2: 3: 4: 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — — 15:0 — — — — — — — — — — — 20/4 19/3 — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN — — EPCONDIS EPRXEN 18/2 17/1 16/0 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 — — — 0000 EPTXEN EPSTALL EPHSHK 0000 x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. With the exception of those noted, all registers in this table (except as noted) have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC respectively. See 13.2 “CLR, SET, and INV Registers” for more information. This register does not have associated SET and INV registers. This register does not have associated CLR, SET, and INV registers. Reset value for this bit is undefined. PIC32MK GP/MC Family A390 31/15 All Resets Bits Bit Range  2016-2021 Microchip Technology Inc. TABLE 12-1: PIC32MK GP/MC Family REGISTER 12-1: Bit Range 31:24 23:16 15:8 7:0 UxOTGIR: USB OTG INTERRUPT STATUS REGISTER (‘x’ = 1 AND 2) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/WC-0, HS R/WC-0, HS R/WC-0, HS R/WC-0, HS R/WC-0, HS R/WC-0, HS U-0 R/WC-0, HS IDIF T1MSECIF LSTATEIF ACTVIF SESVDIF SESENDIF — VBUSVDIF Legend: WC = Write ‘1’ to clear HS = Hardware Settable 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 31-8 Unimplemented: Read as ‘0’ bit 7 IDIF: ID State Change Indicator bit 1 = Change in ID state is detected 0 = No change in ID state is detected bit 6 T1MSECIF: 1 Millisecond Timer bit 1 = 1 millisecond timer has expired 0 = 1 millisecond timer has not expired bit 5 LSTATEIF: Line State Stable Indicator bit 1 = USB line state has been stable for 1millisecond, but different from last time 0 = USB line state has not been stable for 1 millisecond bit 4 ACTVIF: Bus Activity Indicator bit 1 = Activity on the D+, D-, ID or VBUS pins has caused the device to wake-up 0 = Activity has not been detected bit 3 SESVDIF: Session Valid Change Indicator bit 1 = VBUS voltage has dropped below the session end level 0 = VBUS voltage has not dropped below the session end level bit 2 SESENDIF: B-Device VBUS Change Indicator bit 1 = A change on the session end input was detected 0 = No change on the session end input was detected bit 1 Unimplemented: Read as ‘0’ bit 0 VBUSVDIF: A-Device VBUS Change Indicator bit 1 = Change on the session valid input is detected 0 = No change on the session valid input is detected  2016-2021 Microchip Technology Inc. DS60001402H-page 223 PIC32MK GP/MC Family REGISTER 12-2: Bit Range 31:24 23:16 15:8 7:0 UxOTGIE: USB OTG INTERRUPT ENABLE REGISTER (‘x’ = 1 AND 2) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 IDIE T1MSECIE LSTATEIE ACTVIE SESVDIE SESENDIE — VBUSVDIE 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 bit 31-8 Unimplemented: Read as ‘0’ bit 7 IDIE: ID Interrupt Enable bit 1 = ID interrupt is enabled 0 = ID interrupt is disabled bit 6 T1MSECIE: 1 Millisecond Timer Interrupt Enable bit 1 = 1 millisecond timer interrupt is enabled 0 = 1 millisecond timer interrupt is disabled bit 5 LSTATEIE: Line State Interrupt Enable bit 1 = Line state interrupt is enabled 0 = Line state interrupt is disabled bit 4 ACTVIE: Bus Activity Interrupt Enable bit 1 = ACTIVITY interrupt is enabled 0 = ACTIVITY interrupt is disabled bit 3 SESVDIE: Session Valid Interrupt Enable bit 1 = Session valid interrupt is enabled 0 = Session valid interrupt is disabled bit 2 SESENDIE: B-Session End Interrupt Enable bit 1 = B-session end interrupt is enabled 0 = B-session end interrupt is disabled bit 1 Unimplemented: Read as ‘0’ bit 0 VBUSVDIE: A-VBUS Valid Interrupt Enable bit 1 = A-VBUS valid interrupt is enabled 0 = A-VBUS valid interrupt is disabled DS60001402H-page 224  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 12-3: Bit Range 31:24 23:16 15:8 7:0 UxOTGSTAT: USB OTG STATUS REGISTER (‘x’ = 1 AND 2) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R-0 U-0 R-0 U-0 R-0 R-0 U-0 R-0 ID — LSTATE — SESVD SESEND — VBUSVD 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 bit 31-8 Unimplemented: Read as ‘0’ bit 7 ID: ID Pin State Indicator bit 1 = No cable is attached or a Type-B cable has been plugged into the USB receptacle 0 = A Type-A cable has been plugged into the USB receptacle bit 6 Unimplemented: Read as ‘0’ bit 5 LSTATE: Line State Stable Indicator bit 1 = USB line state (SE0 (UxCON) and JSTATE (UxCON)) has been stable for the previous 1 ms 0 = USB line state (SE0 and JSTATE) has not been stable for the previous 1 ms bit 4 Unimplemented: Read as ‘0’ bit 3 SESVD: Session Valid Indicator bit 1 = VBUS voltage is above Session Valid on the A or B device 0 = VBUS voltage is below Session Valid on the A or B device bit 2 SESEND: B-Device Session End Indicator bit 1 = VBUS voltage is below Session Valid on the B device 0 = VBUS voltage is above Session Valid on the B device bit 1 Unimplemented: Read as ‘0’ bit 0 VBUSVD: A-Device VBUS Valid Indicator bit 1 = VBUS voltage is above Session Valid on the A device 0 = VBUS voltage is below Session Valid on the A device  2016-2021 Microchip Technology Inc. DS60001402H-page 225 PIC32MK GP/MC Family REGISTER 12-4: Bit Range 31:24 23:16 15:8 7:0 UxOTGCON: USB OTG CONTROL REGISTER (‘x’ = 1 AND 2) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 VBUSON OTGEN VBUSCHG VBUSDIS DPPULUP DMPULUP DPPULDWN DMPULDWN 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 bit 31-8 Unimplemented: Read as ‘0’ bit 7 DPPULUP: D+ Pull-Up Enable bit 1 = D+ data line pull-up resistor is enabled 0 = D+ data line pull-up resistor is disabled bit 6 DMPULUP: D- Pull-Up Enable bit 1 = D- data line pull-up resistor is enabled 0 = D- data line pull-up resistor is disabled bit 5 DPPULDWN: D+ Pull-Down Enable bit 1 = D+ data line pull-down resistor is enabled 0 = D+ data line pull-down resistor is disabled bit 4 DMPULDWN: D- Pull-Down Enable bit 1 = D- data line pull-down resistor is enabled 0 = D- data line pull-down resistor is disabled bit 3 VBUSON: VBUS Power-on bit 1 = VBUS line is powered 0 = VBUS line is not powered bit 2 OTGEN: OTG Functionality Enable bit 1 = DPPULUP, DMPULUP, DPPULDWN, and DMPULDWN bits are under software control 0 = DPPULUP, DMPULUP, DPPULDWN, and DMPULDWN bits are under USB hardware control bit 1 VBUSCHG: VBUS Charge Enable bit 1 = VBUS line is charged through a pull-up resistor 0 = VBUS line is not charged through a resistor bit 0 VBUSDIS: VBUS Discharge Enable bit 1 = VBUS line is discharged through a pull-down resistor 0 = VBUS line is not discharged through a resistor DS60001402H-page 226  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 12-5: Bit Bit Range 31/23/15/7 31:24 23:16 15:8 7:0 UxPWRC: USB POWER CONTROL REGISTER (‘x’ = 1 AND 2) Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R-0 U-0 U-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 UACTPND — — USLPGRD USBBUSY(1) — USUSPEND USBPWR 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 bit 31-8 Unimplemented: Read as ‘0’ bit 7 UACTPND: USB Activity Pending bit 1 = USB hardware has detected a change in link status; however, an interrupt is pending and has not yet been generated. Software should not put the device into Sleep mode. 0 = An interrupt is not pending bit 6-5 Unimplemented: Read as ‘0’ bit 4 USLPGRD: USB Sleep Entry Guard bit 1 = Sleep entry is blocked if USB bus activity is detected or if a notification is pending 0 = USB module does not block Sleep entry bit 3 USBBUSY: USB Module Busy bit(1) 1 = USB module is active or disabled, but not ready to be enabled 0 = USB module is not active and is ready to be enabled Note: When USBPWR = 0 and USBBUSY = 1, status from all other registers is invalid and writes to all USB module registers produce undefined results. bit 2 Unimplemented: Read as ‘0’ bit 1 USUSPEND: USB Suspend Mode bit 1 = USB module is placed in Suspend mode (The 48 MHz USB clock will be gated off. The transceiver is placed in a low-power state.) 0 = USB module operates normally bit 0 USBPWR: USB Operation Enable bit 1 = USB module is turned on 0 = USB module is disabled (Outputs held inactive, device pins not used by USB, analog features are shut down to reduce power consumption.)  2016-2021 Microchip Technology Inc. DS60001402H-page 227 PIC32MK GP/MC Family REGISTER 12-6: Bit Bit Range 31/23/15/7 31:24 23:16 15:8 7:0 UxIR: USB INTERRUPT REGISTER (‘x’ = 1 AND 2) Bit 30/22/14/6 Bit 29/21/13/5 Bit Bit Bit 28/20/12/4 27/19/11/3 26/18/10/2 U-0 U-0 U-0 U-0 U-0 — — — — — U-0 U-0 U-0 U-0 U-0 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 — — — U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/WC-0, HS R/WC-0, HS R/WC-0, HS R/WC-0, HS R/WC-0, HS R/WC-0, HS R-0 IDLEIF TRNIF(3) SOFIF UERRIF(4) R/WC-0, HS (5) STALLIF Legend: R = Readable bit -n = Value at POR ATTACHIF(1) RESUMEIF(2) WC = Write ‘1’ to clear W = Writable bit ‘1’ = Bit is set URSTIF DETACHIF(6) HS = Hardware Settable bit U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31-8 Unimplemented: Read as ‘0’ bit 7 STALLIF: STALL Handshake Interrupt bit 1 = In Host mode, a STALL handshake was received during the handshake phase of the transaction In Device mode, a STALL handshake was transmitted during the handshake phase of the transaction 0 = STALL handshake has not been sent ATTACHIF: Peripheral Attach Interrupt bit(1) 1 = Peripheral attachment was detected by the USB module 0 = Peripheral attachment was not detected RESUMEIF: Resume Interrupt bit(2) 1 = K-State is observed on the D+ or D- pin for 2.5 µs 0 = K-State is not observed IDLEIF: Idle Detect Interrupt bit 1 = Idle condition detected (constant Idle state of 3 ms or more) 0 = No Idle condition detected TRNIF: Token Processing Complete Interrupt bit(3) 1 = Processing of current token is complete; a read of the UxSTAT register will provide endpoint information 0 = Processing of current token not complete SOFIF: SOF Token Interrupt bit 1 = SOF token received by the peripheral or the SOF threshold reached by the host 0 = SOF token was not received nor threshold reached UERRIF: USB Error Condition Interrupt bit(4) 1 = Unmasked error condition has occurred 0 = Unmasked error condition has not occurred URSTIF: USB Reset Interrupt bit (Device mode)(5) 1 = Valid USB Reset has occurred 0 = No USB Reset has occurred DETACHIF: USB Detach Interrupt bit (Host mode)(6) 1 = Peripheral detachment was detected by the USB module 0 = Peripheral detachment was not detected bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 bit 0 Note 1: 2: 3: 4: 5: 6: This bit is valid only if the HOSTEN bit is set (see Register 12-11), there is no activity on the USB for 2.5 µs, and the current bus state is not SE0. When not in Suspend mode, this interrupt should be disabled. Clearing this bit will cause the STAT FIFO to advance. Only error conditions enabled through the UxEIE register will set this bit. Device mode. Host mode. DS60001402H-page 228  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 12-7: Bit Range 31:24 23:16 15:8 7:0 UxIE: USB INTERRUPT ENABLE REGISTER (‘x’ = 1 AND 2) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 IDLEIE TRNIE SOFIE UERRIE(1) STALLIE ATTACHIE RESUMEIE URSTIE(2) DETACHIE(3) 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 bit 31-8 Unimplemented: Read as ‘0’ bit 7 STALLIE: STALL Handshake Interrupt Enable bit 1 = STALL interrupt is enabled 0 = STALL interrupt is disabled bit 6 ATTACHIE: ATTACH Interrupt Enable bit 1 = ATTACH interrupt is enabled 0 = ATTACH interrupt is disabled bit 5 RESUMEIE: RESUME Interrupt Enable bit 1 = RESUME interrupt is enabled 0 = RESUME interrupt is disabled bit 4 IDLEIE: Idle Detect Interrupt Enable bit 1 = Idle interrupt is enabled 0 = Idle interrupt is disabled bit 3 TRNIE: Token Processing Complete Interrupt Enable bit 1 = TRNIF interrupt is enabled 0 = TRNIF interrupt is disabled bit 2 SOFIE: SOF Token Interrupt Enable bit 1 = SOFIF interrupt is enabled 0 = SOFIF interrupt is disabled bit 1 UERRIE: USB Error Interrupt Enable bit(1) 1 = USB Error interrupt is enabled 0 = USB Error interrupt is disabled bit 0 URSTIE: USB Reset Interrupt Enable bit(2) 1 = URSTIF interrupt is enabled 0 = URSTIF interrupt is disabled DETACHIE: USB Detach Interrupt Enable bit(3) 1 = DATTCHIF interrupt is enabled 0 = DATTCHIF interrupt is disabled Note 1: 2: 3: For an interrupt to propagate USBIF, the UERRIE bit (UxIE) must be set. Device mode. Host mode.  2016-2021 Microchip Technology Inc. DS60001402H-page 229 PIC32MK GP/MC Family REGISTER 12-8: Bit Range 31:24 23:16 15:8 7:0 UxEIR: USB ERROR INTERRUPT STATUS REGISTER (‘x’ = 1 AND 2) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/WC-0, HS R/WC-0, HS R/WC-0, HS R/WC-0, HS R/WC-0, HS R/WC-0, HS R/WC-0, HS R/WC-0, HS BTSEF BMXEF DMAEF(1) BTOEF(2) DFN8EF CRC16EF CRC5EF(4) EOFEF(3,5) Legend: WC = Write ‘1’ to clear HS = Hardware Settable 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 PIDEF x = Bit is unknown bit 31-8 Unimplemented: Read as ‘0’ bit 7 BTSEF: Bit Stuff Error Flag bit 1 = Packet rejected due to bit stuff error 0 = Packet accepted bit 6 BMXEF: Bus Matrix Error Flag bit 1 = The base address, of the BDT, or the address of an individual buffer pointed to by a BDT entry, is invalid. 0 = No address error bit 5 DMAEF: DMA Error Flag bit(1) 1 = USB DMA error condition detected 0 = No DMA error bit 4 BTOEF: Bus Turnaround Time-Out Error Flag bit(2) 1 = Bus turnaround time-out has occurred 0 = No bus turnaround time-out bit 3 DFN8EF: Data Field Size Error Flag bit 1 = Data field received is not an integral number of bytes 0 = Data field received is an integral number of bytes bit 2 CRC16EF: CRC16 Failure Flag bit 1 = Data packet rejected due to CRC16 error 0 = Data packet accepted Note 1: 2: 3: 4: 5: This type of error occurs when the module’s request for the DMA bus is not granted in time to service the module’s demand for memory, resulting in an overflow or underflow condition, and/or the allocated buffer size is not sufficient to store the received data packet causing it to be truncated. This type of error occurs when more than 16-bit-times of Idle from the previous End-of-Packet (EOP) has elapsed. This type of error occurs when the module is transmitting or receiving data and the SOF counter has reached zero. Device mode. Host mode. DS60001402H-page 230  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 12-8: UxEIR: USB ERROR INTERRUPT STATUS REGISTER (‘x’ = 1 AND 2) bit 1 CRC5EF: CRC5 Host Error Flag bit(4) 1 = Token packet rejected due to CRC5 error 0 = Token packet accepted EOFEF: EOF Error Flag bit(3,5) 1 = EOF error condition detected 0 = No EOF error condition bit 0 PIDEF: PID Check Failure Flag bit 1 = PID check failed 0 = PID check passed Note 1: 2: 3: 4: 5: This type of error occurs when the module’s request for the DMA bus is not granted in time to service the module’s demand for memory, resulting in an overflow or underflow condition, and/or the allocated buffer size is not sufficient to store the received data packet causing it to be truncated. This type of error occurs when more than 16-bit-times of Idle from the previous End-of-Packet (EOP) has elapsed. This type of error occurs when the module is transmitting or receiving data and the SOF counter has reached zero. Device mode. Host mode.  2016-2021 Microchip Technology Inc. DS60001402H-page 231 PIC32MK GP/MC Family REGISTER 12-9: Bit Range 31:24 23:16 15:8 7:0 UxEIE: USB ERROR INTERRUPT ENABLE REGISTER (‘x’ = 1 AND 2) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 BTSEE BMXEE DMAEE BTOEE DFN8EE CRC16EE Legend: R = Readable bit -n = Value at POR W = Writable bit ‘1’ = Bit is set CRC5EE(1) EOFEE(2) PIDEE U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31-8 Unimplemented: Read as ‘0’ bit 7 BTSEE: Bit Stuff Error Interrupt Enable bit 1 = BTSEF interrupt is enabled 0 = BTSEF interrupt is disabled bit 6 BMXEE: Bus Matrix Error Interrupt Enable bit 1 = BMXEF interrupt is enabled 0 = BMXEF interrupt is disabled bit 5 DMAEE: DMA Error Interrupt Enable bit 1 = DMAEF interrupt is enabled 0 = DMAEF interrupt is disabled bit 4 BTOEE: Bus Turnaround Time-out Error Interrupt Enable bit 1 = BTOEF interrupt is enabled 0 = BTOEF interrupt is disabled bit 3 DFN8EE: Data Field Size Error Interrupt Enable bit 1 = DFN8EF interrupt is enabled 0 = DFN8EF interrupt is disabled bit 2 CRC16EE: CRC16 Failure Interrupt Enable bit 1 = CRC16EF interrupt is enabled 0 = CRC16EF interrupt is disabled bit 1 CRC5EE: CRC5 Host Error Interrupt Enable bit(1) 1 = CRC5EF interrupt is enabled 0 = CRC5EF interrupt is disabled EOFEE: EOF Error Interrupt Enable bit(2) 1 = EOF interrupt is enabled 0 = EOF interrupt is disabled bit 0 PIDEE: PID Check Failure Interrupt Enable bit 1 = PIDEF interrupt is enabled 0 = PIDEF interrupt is disabled Note 1: 2: Note: Device mode. Host mode. For an interrupt to propagate USBIF, the UERRIE bit (UxIE) must be set. DS60001402H-page 232  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 12-10: UxSTAT: USB STATUS REGISTER (‘x’ = 1 AND 2) Bit Range 31:24 23:16 15:8 7:0 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R-x R-x R-x R-x R-x R-x U-0 U-0 DIR PPBI — — ENDPT 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 bit 31-8 Unimplemented: Read as ‘0’ bit 7-4 ENDPT: Encoded Number of Last Endpoint Activity bits (Represents the number of the BDT, updated by the last USB transfer.) 1111 = Endpoint 15 1110 = Endpoint 14 • • • 0001 = Endpoint 1 0000 = Endpoint 0 bit 3 DIR: Last BD Direction Indicator bit 1 = Last transaction was a transmit transfer (TX) 0 = Last transaction was a receive transfer (RX) bit 2 PPBI: Ping-Pong BD Pointer Indicator bit 1 = The last transaction was to the ODD BD bank 0 = The last transaction was to the EVEN BD bank bit 1-0 Unimplemented: Read as ‘0’ Note: The UxSTAT register is a window into a 4-byte FIFO maintained by the USB module. UxSTAT value is only valid when the TRNIF bit (UxIR) is active. Clearing the TRNIF bit advances the FIFO. Data in register is invalid when the TRNIF bit = 0.  2016-2021 Microchip Technology Inc. DS60001402H-page 233 PIC32MK GP/MC Family REGISTER 12-11: UxCON: USB CONTROL REGISTER (‘x’ = 1 AND 2) Bit Bit Bit Range 31/23/15/7 30/22/14/6 31:24 23:16 15:8 7:0 U-0 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R-x R-x R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 JSTATE SE0 PKTDIS(4) USBRST(5) HOSTEN(2) RESUME(3) TOKBUSY(1,5) PPBRST USBEN(4) SOFEN(5) 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 bit 31-8 Unimplemented: Read as ‘0’ bit 7 JSTATE: Live Differential Receiver JSTATE flag bit 1 = JSTATE detected on the USB 0 = No JSTATE detected bit 6 SE0: Live Single-Ended Zero flag bit 1 = Single Ended Zero detected on the USB 0 = No Single Ended Zero detected bit 5 PKTDIS: Packet Transfer Disable bit(4) 1 = Token and packet processing disabled (set upon SETUP token received) 0 = Token and packet processing enabled TOKBUSY: Token Busy Indicator bit(1,5) 1 = Token being executed by the USB module 0 = No token being executed bit 4 USBRST: Module Reset bit(5) 1 = USB reset is generated 0 = USB reset is terminated bit 3 HOSTEN: Host Mode Enable bit(2) 1 = USB host capability is enabled 0 = USB host capability is disabled bit 2 RESUME: RESUME Signaling Enable bit(3) 1 = RESUME signaling is activated 0 = RESUME signaling is disabled Note 1: 2: 3: 4: 5: Software is required to check this bit before issuing another token command to the UxTOK register (see Register 12-15). All host control logic is reset any time that the value of this bit is toggled. Software must set the RESUME bit for 10 ms if the part is a function, or for 25 ms if the part is a host, and then clear it to enable remote wake-up. In Host mode, the USB module will append a low-speed EOP to the RESUME signaling when this bit is cleared. Device mode. Host mode. DS60001402H-page 234  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 12-11: UxCON: USB CONTROL REGISTER (‘x’ = 1 AND 2) (CONTINUED) bit 1 PPBRST: Ping-Pong Buffers Reset bit 1 = Reset all Even/Odd buffer pointers to the EVEN BD banks 0 = Even/Odd buffer pointers not being Reset bit 0 USBEN: USB Module Enable bit(4) 1 = USB module and supporting circuitry is enabled 0 = USB module and supporting circuitry is disabled SOFEN: SOF Enable bit(5) 1 = SOF token sent every 1 ms 0 = SOF token disabled Note 1: 2: 3: 4: 5: Software is required to check this bit before issuing another token command to the UxTOK register (see Register 12-15). All host control logic is reset any time that the value of this bit is toggled. Software must set the RESUME bit for 10 ms if the part is a function, or for 25 ms if the part is a host, and then clear it to enable remote wake-up. In Host mode, the USB module will append a low-speed EOP to the RESUME signaling when this bit is cleared. Device mode. Host mode.  2016-2021 Microchip Technology Inc. DS60001402H-page 235 PIC32MK GP/MC Family REGISTER 12-12: UxADDR: USB ADDRESS REGISTER (‘x’ = 1 AND 2) Bit Range 31:24 23:16 15:8 7:0 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 LSPDEN DEVADDR 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 bit 31-8 Unimplemented: Read as ‘0’ bit 7 LSPDEN: Low Speed Enable Indicator bit 1 = Next token command to be executed at Low Speed 0 = Next token command to be executed at Full Speed bit 6-0 DEVADDR: 7-bit USB Device Address bits REGISTER 12-13: UxFRML: USB FRAME NUMBER LOW REGISTER (‘x’ = 1 AND 2) Bit Range 31:24 23:16 15:8 7:0 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 FRML 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 bit 31-8 Unimplemented: Read as ‘0’ bit 7-0 FRML: The 11-bit Frame Number Lower bits The register bits are updated with the current frame number whenever a SOF TOKEN is received. DS60001402H-page 236  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 12-14: UxFRMH: USB FRAME NUMBER HIGH REGISTER (‘x’ = 1 AND 2) Bit Range 31:24 23:16 15:8 7:0 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 R-0 R-0 R-0 — — — — — FRMH 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 bit 31-3 Unimplemented: Read as ‘0’ bit 2-0 FRMH: The Upper 3 bits of the Frame Numbers bits The register bits are updated with the current frame number whenever a SOF TOKEN is received. REGISTER 12-15: UxTOK: USB TOKEN REGISTER (‘x’ = 1 AND 2) Bit Range 31:24 23:16 15:8 7:0 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PID(1) EP 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 bit 31-8 Unimplemented: Read as ‘0’ bit 7-4 PID: Token Type Indicator bits(1) 0001 = OUT (TX) token type transaction 1001 = IN (RX) token type transaction 1101 = SETUP (TX) token type transaction Note: All other values are reserved and must not be used. bit 3-0 EP: Token Command Endpoint Address bits The four bit value must specify a valid endpoint. Note 1: All other values are reserved and must not be used.  2016-2021 Microchip Technology Inc. DS60001402H-page 237 PIC32MK GP/MC Family REGISTER 12-16: UxSOF: USB SOF THRESHOLD REGISTER (‘x’ = 1 AND 2) Bit Range 31:24 23:16 15:8 7:0 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CNT 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 bit 31-8 Unimplemented: Read as ‘0’ bit 7-0 CNT: SOF Threshold Value bits Typical values of the threshold are: 01001010 = 64-byte packet 00101010 = 32-byte packet 00011010 = 16-byte packet 00010010 = 8-byte packet REGISTER 12-17: UxBDTP1: USB BDT PAGE 1 REGISTER (‘x’ = 1 AND 2) Bit Range 31:24 23:16 15:8 7:0 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 BDTPTRL — 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 bit 31-8 Unimplemented: Read as ‘0’ bit 7-1 BDTPTRL: BDT Base Address bits This 7-bit value provides address bits 15 through 9 of the BDT base address, which defines the starting location of the BDT in system memory. The 32-bit BDT base address is 512-byte aligned. bit 0 Unimplemented: Read as ‘0’ DS60001402H-page 238  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 12-18: UxBDTP2: USB BDT PAGE 2 REGISTER (‘x’ = 1 AND 2) Bit Range 31:24 23:16 15:8 7:0 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 BDTPTRH 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 bit 31-8 Unimplemented: Read as ‘0’ bit 7-0 BDTPTRH: BDT Base Address bits This 8-bit value provides address bits 23 through 16 of the BDT base address, which defines the starting location of the BDT in system memory. The 32-bit BDT base address is 512-byte aligned. REGISTER 12-19: UxBDTP3: USB BDT PAGE 3 REGISTER (‘x’ = 1 AND 2) Bit Range 31:24 23:16 15:8 7:0 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 BDTPTRU 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 bit 31-8 Unimplemented: Read as ‘0’ bit 7-0 BDTPTRU: BDT Base Address bits This 8-bit value provides address bits 31 through 24 of the BDT base address, defines the starting location of the BDT in system memory. The 32-bit BDT base address is 512-byte aligned.  2016-2021 Microchip Technology Inc. DS60001402H-page 239 PIC32MK GP/MC Family REGISTER 12-20: UxCNFG1: USB CONFIGURATION 1 REGISTER (‘x’ = 1 AND 2) Bit Range 31:24 23:16 15:8 7:0 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 U-0 R/W-0 R/W-0 U-0 U-0 R/W-0 UTEYE UOEMON — USBSIDL LSDEV — — UASUSPND 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 bit 31-8 Unimplemented: Read as ‘0’ bit 7 UTEYE: USB Eye-Pattern Test Enable bit 1 = Eye-Pattern Test is enabled 0 = Eye-Pattern Test is disabled bit 6 UOEMON: USB OE Monitor Enable bit 1 = OE signal is active; it indicates intervals during which the D+/D- lines are driving 0 = OE signal is inactive bit 5 Unimplemented: Read as ‘0’ bit 4 USBSIDL: Stop in Idle Mode bit 1 = Discontinue module operation when device enters Idle mode 0 = Continue module operation in Idle mode bit 3 LSDEV: Low-Speed Device Enable bit 1 = USB module to operate in Low-Speed Device mode 0 = USB module to operate in OTG, Host, or Full-Speed Device mode bit 2-1 Unimplemented: Read as ‘0’ bit 0 UASUSPND: Automatic Suspend Enable bit 1 = USB module automatically suspends upon entry to Sleep mode. See the USUSPEND bit (UxPWRC) in Register 12-5. 0 = USB module does not automatically suspend upon entry to Sleep mode. Software must use the USUSPEND bit (UxPWRC) to suspend the module, including the USB 48 MHz clock DS60001402H-page 240  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 12-21: UxEP0-UxEP15: USB ENDPOINT CONTROL REGISTER (‘x’ = 1 AND 2) Bit Range 31:24 23:16 15:8 7:0 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 LSPD RETRYDIS — EPCONDIS EPRXEN EPTXEN EPSTALL EPHSHK 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 bit 31-8 Unimplemented: Read as ‘0’ bit 7 LSPD: Low-Speed Direct Connection Enable bit (Host mode and UxEP0 only) 1 = Direct connection to a low-speed device is enabled 0 = Direct connection to a low-speed device is disabled; hub required with PRE_PID bit 6 RETRYDIS: Retry Disable bit (Host mode and UxEP0 only) 1 = Retry NAKed transactions is disabled 0 = Retry NAKed transactions is enabled; retry done in hardware bit 5 Unimplemented: Read as ‘0’ bit 4 EPCONDIS: Bidirectional Endpoint Control bit If EPTXEN = 1 and EPRXEN = 1: 1 = Disable Endpoint n from Control transfers; only TX and RX transfers allowed 0 = Enable Endpoint n for Control (SETUP) transfers; TX and RX transfers also allowed Otherwise, this bit is ignored. bit 3 EPRXEN: Endpoint Receive Enable bit 1 = Endpoint n receive is enabled 0 = Endpoint n receive is disabled bit 2 EPTXEN: Endpoint Transmit Enable bit 1 = Endpoint n transmit is enabled 0 = Endpoint n transmit is disabled bit 1 EPSTALL: Endpoint Stall Status bit 1 = Endpoint n was stalled 0 = Endpoint n was not stalled bit 0 EPHSHK: Endpoint Handshake Enable bit 1 = Endpoint Handshake is enabled 0 = Endpoint Handshake is disabled (typically used for isochronous endpoints)  2016-2021 Microchip Technology Inc. DS60001402H-page 241 PIC32MK GP/MC Family 13.0 I/O PORTS Note: with alternate function(s). These functions depend on which peripheral features are on the device. In general, when a peripheral is functioning, that pin may not be used as a general purpose I/O pin. This data sheet summarizes the features of the PIC32MK GP/MC Family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 12. “I/O Ports” (DS60001120), which is available from the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). The following are key features of the I/O ports: • Individual output pin open-drain enable/disable • Individual input pin weak pull-up and pull-down • Monitor selective inputs and generate interrupt when change in pin state is detected • Operation during Sleep mode and Idle mode • Fast bit manipulation using CLR, SET, and INV registers Figure 13-1 illustrates a block diagram of a typical multiplexed I/O port. General purpose I/O pins are the simplest of peripherals. They allow the PIC32MK GP/MC family device to monitor and control other devices. To add flexibility and functionality, some pins are multiplexed FIGURE 13-1: BLOCK DIAGRAM OF A TYPICAL MULTIPLEXED PORT STRUCTURE Peripheral Module Peripheral Module Enable Peripheral Output Enable Peripheral Output Data Port Control PIO Module RD ODC PBCLK4 Data Bus PBCLK4 D Q ODC CK EN Q WR ODC 1 RD TRIS 0 0 I/O Cell 1 D Q 1 TRIS CK EN Q WR TRIS Output Multiplexers D WR LAT WR PORT 0 Q I/O Pin LAT CK EN Q RD LAT 1 RD PORT 0 Sleep Q Q D CK Q Q D CK PBCLK4 Synchronization Peripheral Input Legend: Note: R Peripheral Input Buffer R = Peripheral input buffer types may vary. Refer to Table 1-1 for peripheral details. This block diagram is a general representation of a shared port/peripheral structure for illustration purposes only. The actual structure for any specific port/peripheral combination may be different than it is shown here. DS60001402H-page 242  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family 13.1 Parallel I/O (PIO) Ports All port pins have ten registers directly associated with their operation as digital I/O. The data direction register (TRISx) determines whether the pin is an input or an output. If the data direction bit is a ‘1’, then the pin is an input. All port pins are defined as inputs after a Reset. Reads from the latch (LATx) read the latch. Writes to the latch write the latch. Reads from the port (PORTx) read the port pins, while writes to the port pins write the latch. 13.1.1 OPEN-DRAIN CONFIGURATION In addition to the PORTx, LATx, and TRISx registers for data control, some port pins can also be individually configured for either digital or open-drain output. This is controlled by the Open-Drain Control register, ODCx, associated with each port. Setting any of the bits configures the corresponding pin to act as an open-drain output. The open-drain feature allows the generation of outputs higher than VDD (e.g., 5V) on any desired 5V-tolerant pins by using external pull-up resistors. The maximum open-drain voltage allowed is the same as the maximum VIH specification. Refer to the pin name tables (Table 3 and Table 5) for the available pins and their functionality. 13.1.2 CONFIGURING ANALOG AND DIGITAL PORT PINS The ANSELx register controls the operation of the analog port pins. The port pins that are to function as analog inputs must have their corresponding ANSEL and TRIS bits set. In order to use port pins for I/O functionality with digital modules, such as Timers, UARTs, etc., the corresponding ANSELx bit must be cleared. The ANSELx register has a default value of 0xFFFF; therefore, all pins that share analog functions are analog (not digital) by default. If the TRIS bit is cleared (output) while the ANSELx bit is set, the digital output level (VOH or VOL) is converted by an analog peripheral, such as the ADC module or Comparator module. When the PORT register is read, all pins configured as analog input channels are read as cleared (a low level). Pins configured as digital inputs do not convert an analog input. Analog levels on any pin defined as a digital input (including the ANx pins) can cause the input buffer to consume current that exceeds the device specifications.  2016-2021 Microchip Technology Inc. 13.1.3 I/O PORT WRITE/READ TIMING One instruction cycle is required between a port direction change or port write operation and a read operation of the same port. Typically this instruction would be an NOP. 13.1.4 INPUT CHANGE NOTIFICATION The input change notification function of the I/O ports allows the PIC32MK GP/MC devices to generate interrupt requests to the processor in response to a change-of-state on selected input pins. This feature can detect input change-of-states even in Sleep mode, when the clocks are disabled. Every I/O port pin can be selected (enabled) for generating an interrupt request on a change-of-state. Five control registers are associated with the CN functionality of each I/O port. The CNENx and CNNEx registers contain the CN interrupt enable control bits for each of the input pins. Setting these bits enables a CN interrupt for the corresponding pins. The CNENx register enables a mismatch CN interrupt condition when the EDGEDETECT bit (CNCONx) is not set. When the EDGEDETECT bit is set, the CNNEx register controls the negative edge while the CNENx register controls the positive edge. The CNSTATx and CNFx registers indicate the status of change notice based on the setting of the EDGEDETECT bit. If the EDGEDETECT bit is set to ‘0’, the CNSTATx register indicates whether a change occurred on the corresponding pin since the last read of the PORTx bit. If the EDGEDETECT bit is set to ‘1’, the CNFx register indicates whether a change has occurred and through the CNNEx and CNENx registers the edge type of the change that occurred is also indicated. Each I/O pin also has a weak pull-up and a weak pull-down connected to it. The pull-ups act as a current source or sink source connected to the pin, and eliminate the need for external resistors when push-button or keypad devices are connected. The pull-ups and pull-downs are enabled separately using the CNPUx and the CNPDx registers, which contain the control bits for each of the pins. Setting any of the control bits enables the weak pull-ups and/or pull-downs for the corresponding pins. Note: Pull-ups and pull-downs on change notification pins should always be disabled when the port pin is configured as a digital output. An additional control register (CNCONx) is shown in Register 13-3. DS60001402H-page 243 PIC32MK GP/MC Family 13.2 CLR, SET, and INV Registers Every I/O module register has a corresponding CLR (clear), SET (set) and INV (invert) register designed to provide fast atomic bit manipulations. As the name of the register implies, a value written to a SET, CLR or INV register effectively performs the implied operation, but only on the corresponding base register and only bits specified as ‘1’ are modified. Bits specified as ‘0’ are not modified. Reading SET, CLR and INV registers returns undefined values. To see the affects of a write operation to a SET, CLR or INV register, the base register must be read. 13.3 Peripheral Pin Select (PPS) A major challenge in general purpose devices is providing the largest possible set of peripheral features while minimizing the conflict of features on I/O pins. The challenge is even greater on low pin-count devices. In an application where more than one peripheral needs to be assigned to a single pin, inconvenient workarounds in application code or a complete redesign may be the only option. PPS configuration provides an alternative to these choices by enabling peripheral set selection and their placement on a wide range of I/O pins. By increasing the pinout options available on a particular device, users can better tailor the device to their entire application, rather than trimming the application to fit the device. The PPS configuration feature operates over a fixed subset of digital I/O pins. Users may independently map the input and/or output of most digital peripherals to these I/O pins. PPS is performed in software and generally does not require the device to be reprogrammed. Hardware safeguards are included that prevent accidental or spurious changes to the peripheral mapping once it has been established. 13.3.1 AVAILABLE PINS The number of available pins is dependent on the particular device and its pin count. Pins that support the PPS feature include the designation “RPn” in their full pin designation, where “RP” designates a remappable peripheral and “n” is the remappable port number. 13.3.2 AVAILABLE PERIPHERALS The peripherals managed by the PPS are all digitalonly peripherals. These include general serial communications (UART, SPI, and CAN), general purpose timer clock inputs, timer-related peripherals (input capture and output compare), interrupt-on-change inputs, and reference clocks (input and output). In comparison, some digital-only peripheral modules are never included in the PPS feature. This is because the peripheral’s function requires special I/O circuitry on a specific port and cannot be easily connected to multiple pins. A similar requirement excludes all modules with analog inputs, such as the Analog-toDigital Converter (ADC). A key difference between remappable and non-remappable peripherals is that remappable peripherals are not associated with a default I/O pin. The peripheral must always be assigned to a specific I/O pin before it can be used. In contrast, non-remappable peripherals are always available on a default pin, assuming that the peripheral is active and not conflicting with another peripheral. When a remappable peripheral is active on a given I/O pin, it takes priority over all other digital I/O and digital communication peripherals associated with the pin. Priority is given regardless of the type of peripheral that is mapped. Remappable peripherals never take priority over any analog functions associated with the pin. 13.3.3 CONTROLLING PPS PPS features are controlled through two sets of SFRs: one to map peripheral inputs, and one to map outputs. Because they are separately controlled, a particular peripheral’s input and output (if the peripheral has both) can be placed on any selectable function pin without constraint. The association of a peripheral to a peripheral-selectable pin is handled in two different ways, depending on whether an input or output is being mapped. 13.3.4 INPUT MAPPING The inputs of the PPS options are mapped on the basis of the peripheral. That is, a control register associated with a peripheral dictates the pin it will be mapped to. The [pin name]R registers, where [pin name] refers to the peripheral pins listed in Table 13-1, are used to configure peripheral input mapping (see Register 13-1). Each register contains sets of 4 bit fields. Programming these bit fields with an appropriate value maps the RPn pin with the corresponding value to that peripheral. For any given device, the valid range of values for any bit field is shown in Table 13-1. Figure 13-2 illustrates the remappable pin selection for the U1RX input. DS60001402H-page 244  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family FIGURE 13-2: REMAPPABLE INPUT EXAMPLE FOR U1RX U1RXR 0 RPD2 1 RPG8 2 RPF4 U1RX input to peripheral n RPn Note: For input only, PPS functionality does not have priority over TRISx settings. Therefore, when configuring RPn pin for input, the corresponding bit in the TRISx register must also be configured for input (set to ‘1’).  2016-2021 Microchip Technology Inc. DS60001402H-page 245 PIC32MK GP/MC Family TABLE 13-1: INPUT PIN SELECTION Peripheral Pin Note 1: [pin name]R SFR [pin name]R bits INT4 INT4R INT4R T2CK T2CKR T2CKR T6CK T6CKR T6CKR IC4 IC4R IC4R IC7 IC7R IC7R IC12 IC12R IC12R [pin name]R Value to RPn Pin Selection 0000 = RPA0 0001 = RPB3 0010 = RPB4 0011 = RPB15 IC15 IC15R IC15R U3RX U3RXR U3RXR U4CTS U4CTSR U4CTSR 0101 = RPC7 U6RX U6RXR U6RXR 0110 = RPC0 SDI1 SDI1R SDI1R SDI3 SDI3R SDI3R 0111 = Reserved SCK4 SCK4R SCK4R SDI5 SDI5R SDI5R 1000 = RPA11 SS6 SS6R SS6R QEA1 QEA1R QEA1R HOME2 HOME2R HOME2R QAEA3 QAEA3R QEA3R HOME4 HOME4R HOME4R QEA5 QEA5R QEA5R HOME6 HOME6R HOME6R FLT1 FLT1R FLT1R C3RX C3RXR C3RXR REFCLKI REFIR REFIR 0100 = RPB7 1001 = RPD5 1010 = RPG6 1011 = RPF1 1100 = RPE0(1) 1101 = RPA15(1) 1110 = Reserved 1111 = Reserved This selection is not available on 64-pin devices. DS60001402H-page 246  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family TABLE 13-1: INPUT PIN SELECTION (CONTINUED) Peripheral Pin Note 1: [pin name]R SFR [pin name]R bits [pin name]R Value to RPn Pin Selection INT3 INT3R INT3R 0000 = RPA1 T3CK T3CKR T3CKR T7CK T7CKR T7CKR 0001 = RPB5 IC3 IC3R IC3R IC8 IC8R IC8R 0011 = RPB11 IC11 IC11R IC11R 0100 = RPB8 IC16 IC16R IC16R U1CTS U1CTSR U1CTSR 0101 = RPA8 U2RX U2RXR U2RXR U5CTS U5CTSR U5CTSR 0111 = RPB12 SDI2 SDI2R SDI2R 1000 = RPA12 SDI4 SDI4R SDI4R SCK6 SCK6R SCK6R 1001 = RPD6 QEB1 QEB1R QEB1R INDX2 INDX2R INDX2R 1011 = RPG0(1) QEB3 QEB3R QEB3R 1100 = RPE1(1) INDX4 INDX4R INDX4R QEB5 QEB5R QEB5R 1101 = RPA14(1) INDX6 INDX6R INDX6R C2RX C2RXR C2RXR FLT2 FLT2R FLT2R 0010 = RPB1 0110 = RPC8 1010 = RPG7 1110 = Reserved 1111 = Reserved This selection is not available on 64-pin devices.  2016-2021 Microchip Technology Inc. DS60001402H-page 247 PIC32MK GP/MC Family TABLE 13-1: INPUT PIN SELECTION (CONTINUED) Peripheral Pin Note 1: [pin name]R SFR [pin name]R bits [pin name]R Value to RPn Pin Selection INT2 INT2R INT2R T4CK T4CKR T4CKR 0000 = RPB6 T8CK T8CKR T8CKR IC1 IC1R IC1R 0010 = RPA4 IC5 IC5R IC5R 0011 = RPB13 IC9 IC9R IC9R IC13 IC13R IC13R U1RX U1RXR U1RXR U2CTS U2CTSR U2CTSR U5RX U5RXR U5RXR SS1 SS1R SS1R 0111 = RPA7 SS3 SS3R SS3R 1000 = RPE14 SS4 SS4R SS4R SS5 SS5R SS5R INDX1 INDX1R INDX1R QEB2 QEB2R QEB2R INDX3 INDX3R INDX3R QEB4 QEB4R QEB4R 1100 = RPF0 INDX5 INDX5R INDXR5 1101 = RPD4(1) QEB6 QEB6R QEB6R C1RX C1RXR C1RXR OCFB OCFBR OCFBR 0001 = RPC15 0100 = RPB2 0101 = RPC6 0110 = RPC1 1001 = RPC13 1010 = RPG8 1011 = Reserved 1110 = Reserved 1111 = Reserved This selection is not available on 64-pin devices. DS60001402H-page 248  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family TABLE 13-1: INPUT PIN SELECTION (CONTINUED) Peripheral Pin Note 1: [pin name]R SFR [pin name]R bits [pin name]R Value to RPn Pin Selection INT1 INT1R INT1R T5CK T5CKR T5CKR T9CK T9CKR T9CKR IC2 IC2R IC2R 0010 = RPB0 0011 = RPB10 IC6 IC6R IC6R IC10 IC10R IC10R IC14 IC14R IC14R U3CTS U3CTSR U3CTSR 0000 = RPB14 0001 = RPC12 0100 = RPB9 0101 = RPC9 U4RX U4RXR U4RXR U6CTS U6CTSR U6CTSR SS2 SS2R SS2R SCK3 SCK3R SCK3R SCK5 SCK5R SCK5R SDI6 SDI6R SDI6R HOME1 HOME1R HOME1R QEA2 QEA2R QEA2R HOME3 HOME3R HOME3R QEA4 QEA4R QEA4R 1100 = RPG1(1) HOME5 HOME5R HOME5R 1101 = RPD3(1) QEA6 QEA6R QEA6R C4RX C4RXR C4RXR OCFA OCFAR OCFAR 0110 = RPC2 0111 = Reserved 1000 = RPE15 1001 = RPC10 1010 = RPG9 1011 = RPG12(1) 1110 = Reserved 1111 = Reserved This selection is not available on 64-pin devices.  2016-2021 Microchip Technology Inc. DS60001402H-page 249 PIC32MK GP/MC Family 13.3.5 OUTPUT MAPPING 13.3.6.1 In contrast to inputs, the outputs of the PPS options are mapped on the basis of the pin. In this case, a control register associated with a particular pin dictates the peripheral output to be mapped. The RPnR registers (Register 13-2) are used to control output mapping. Like the [pin name]R registers, each register contains sets of 4 bit fields. The value of the bit field corresponds to one of the peripherals, and that peripheral’s output is mapped to the pin (see Table 13-2 and Figure 13-3). A null output is associated with the output register reset value of ‘0’. This is done to ensure that remappable outputs remain disconnected from all output pins by default. FIGURE 13-3: EXAMPLE OF MULTIPLEXING OF REMAPPABLE OUTPUT FOR RPF0 RPF0R Default U1TX Output U2RTS Output 0 1 2 RPF0 Output Data Control Register Lock Under normal operation, writes to the RPnR and [pin name]R registers are not allowed. Attempted writes appear to execute normally, but the contents of the registers remain unchanged. To change these registers, they must be unlocked in hardware. The register lock is controlled by the IOLOCK Configuration bit (CFGCON). Setting the IOLOCK bit prevents writes to the control registers and clearing the IOLOCK bit allows writes. To set or clear the IOLOCK bit, an unlock sequence must be executed. Refer to the Section 42. “Oscillators with Enhanced PLL” (DS60001250) in the “PIC32 Family Reference Manual” for details. 13.3.6.2 Configuration Bit Select Lock As an additional level of safety, the device can be configured to prevent more than one write session to the RPnR and [pin name]R registers. The IOL1WAY Configuration bit (DEVCFG3) blocks the IOLOCK bit from being cleared after it has been set once. If the IOLOCK bit remains set, the register unlock procedure does not execute, and the PPS control registers cannot be written to. The only way to clear the bit and reenable peripheral remapping is to perform a device Reset. In the default (unprogrammed) state, IOL1WAY is set, restricting users to one write session. 14 REFCLKO1 13.3.6 15 CONTROLLING CONFIGURATION CHANGES Because peripheral remapping can be changed during run time, some restrictions on peripheral remapping are needed to prevent accidental configuration changes. The PIC32MK GP/MC devices include two features to prevent alterations to the peripheral map: • Control register lock sequence • Configuration bit select lock DS60001402H-page 250  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family TABLE 13-2: OUTPUT PIN SELECTION RPn Port Pin RPnR SFR RPnR bits RPA0 RPA0R RPA0R RPB3 RPB3R RPB3R RPB4 RPB4R RPB4R RPB15 RPB15R RPB15R RPB7 RPB7R RPB7R RPC7 RPC7R RPC7R RPC0 RPC0R RPC0R RPA11 RPA11R RPA11R RPD5 RPD5R RPD5R RPG6 RPG6R RPG6R RPF1 RPF1R RPF1R RPE0(1) RPE0R(1) RPE0R (1) RPA15(1) RPA15R(1) RPA15R (1) RPnR Value to Peripheral Selection 00000 = Off 00001 = U1TX 00010 = U2RTS 00011 = SDO1 00100 = SDO2 00101 = OCI 00110 = OC7 00111 = C2OUT 01000 = C4OUT 01001 = OC13 01010 = Reserved 01011 = U5RTS 01100 = C1TX 01101 = Reserved 01110 = SDO3 01111 = SCK4 10000 = SDO5 10001 = SS6 10010 = REFCLKO4 10011 = Reserved 10100 = QEICMP1 10101 = QEICMP5 10110 = Reserved • • • 11111 = Reserved Note 1: This selection is not available on 64-pin devices.  2016-2021 Microchip Technology Inc. DS60001402H-page 251 PIC32MK GP/MC Family TABLE 13-2: OUTPUT PIN SELECTION (CONTINUED) RPn Port Pin RPnR SFR RPnR bits RPA1 RPA1R RPA1R RPB5 RPB5R RPB5R RPB1 RPB1R RPB1R RPB11 RPB11R RPB11R RPA8 RPA8R RPA8R RPC8 RPC8R RPC8R RPB12 RPB12R RPB12R RPA12 RPA12R RPA12R RPD6 RPD6R RPD6R RPG7 RPG7R RPG7R RPG0(1) RPG0R(1) RPG0R (1) RPE1(1) RPE1R(1) RPE1R (1) RPA14(1) RPA14R(1) RPA14R (1) Note 1: RPnR Value to Peripheral Selection 00000 = Off 00001 = U3RTS 00010 = U4TX 00011 = SDO1 00100 = SDO2 00101 = OC2 00110 = OC8 00111 = C3OUT 01000 = OC9 01001 = OC12 01010 = OC16 01011 = U6RTS 01100 = C4TX 01101 = Reserved 01110 = SDO3 01111 = SDO4 10000 = SDO5 10001 = SCK6 10010 = REFCLKO3 10011 = Reserved 10100 = QEICMP2 10101 = QEICMP6 10110 = Reserved • • • 11111 = Reserved This selection is not available on 64-pin devices. DS60001402H-page 252  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family TABLE 13-2: OUTPUT PIN SELECTION (CONTINUED) RPn Port Pin RPnR SFR RPnR bits RPB6 RPB6R RPB6R RPC15 RPC15R RPC15R RPA4 RPA4R RPA4R RPB13 RPB13R RPB13R RPB2 RPB2R RPB2R RPC6 RPC6R RPC6R RPC1 RPC1R RPC1R RPA7 RPA7R RPA7R RPE14 RPE14R RPE14R RPG8 RPG8R RPG8R RPF0 RPF0R RPF0R RPnR Value to Peripheral Selection 00000 = Off 00001 = U3TX 00010 = U4RTS 00011 = SS1 00100 = Reserved 00101 = OC4 00110 = OC5 00111 = REFCLKO1 01000 = C5OUT 01001 = OC10 01010 = OC14 01011 = U6TX 01100 = C3TX 01101 = Reserved 01110 = SS3 01111 = SS4 10000 = SS5 10001 = SDO6 10010 = REFCLKO2 10011 = Reserved 10100 = QEICMP3 10101 = Reserved • RPD4(1) RPD4R(1) RPD4R (1) • • 11111 = Reserved Note 1: This selection is not available on 64-pin devices.  2016-2021 Microchip Technology Inc. DS60001402H-page 253 PIC32MK GP/MC Family TABLE 13-2: OUTPUT PIN SELECTION (CONTINUED) RPnR Value to Peripheral Selection RPn Port Pin RPnR SFR RPnR bits RPB14 RPB14R RPB14R RPC12 RPC12R RPC12R RPB0 RPB0R RPB0R RPB10 RPB10R RPB10R RPB9 RPB9R RPB9R RPC9 RPC9R RPC9R RPC2 RPC2R RPC2R RPE15 RPE15R RPE15R RPC10 RPC10R RPC10R RPG9 RPG9R RPG9R RPG12(1) RPG12R(1) RPG12R RPG1(1) RPG1R(1) RPG1R (1) RPD3(1) RPD3R(1) (1) 00000 = Off 00001 = U1RTS 00010 = U2TX 00011 = Reserved 00100 = SS2 00101 = OC3 00110 = OC6 00111 = C1OUT 01000 = Reserved 01001 = OC11 01010 = OC15 01011 = U5TX 01100 = C2TX 01101 = Reserved 01110 = SCK3 01111 = SDO4 10000 = SCK5 10001 = SDO6 10010 = CTPLS 10011 = Reserved 10100 = QEICMP4 10101 = Reserved • • Note 1: RPD3R • 11111 = Reserved This selection is not available on 64-pin devices. DS60001402H-page 254  2016-2021 Microchip Technology Inc. I/O Ports Control Registers Virtual Address (BF86_#) Register Name(1) TABLE 13-3: 0000 ANSELA 0010 0020 0030 0040 TRISA PORTA LATA ODCA CNPUA 0060 CNPDA 0070 CNCONA CNENA  2016-2021 Microchip Technology Inc. 00A0 CNNEA 00B0 CNFA 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 31:16 — — — — — — — — — — — — — — — — 0000 15:0 ANSA15 ANSA14 — ANSA12 ANSA11 — — ANSA8 — — — ANSA4 — — ANSA1 ANSA0 D813 31:16 — — — — — — — — — — — — — — — — 0000 TRISA10 — TRISA8 TRISA7 — — TRISA4 — — TRISA1 TRISA0 DD93 15:0 TRISA15 TRISA14 — TRISA12 TRISA11 31:16 — — — — — — — — — — — — — — — — 0000 15:0 RA15 RA14 — RA12 RA11 RA10 — RA8 RA7 — — RA4 — — RA1 RA0 xxxx 31:16 — — — — — — — — — — — — — — — — 0000 15:0 LATA15 LATA14 — LATA12 LATA11 LATA10 — LATA8 LATA7 — — LATA4 — — LATA1 LATA0 xxxx 31:16 — — — — — — — — — — — — — — — — 0000 ODCA10 — ODCA8 ODCA7 — — ODCA4 — — ODCA1 ODCA0 0000 — — — — — — — — — — — 0000 — — CNPUA4 — — — — — — — — — CNPDA4 — — 15:0 31:16 ODCA15 ODCA14 — — — — 15:0 CNPUA15 CNPUA14 — 31:16 — — — 15:0 CNPDA15 CNPDA14 — ODCA12 ODCA11 — — CNPUA12 CNPUA11 CNPUA10 — — — CNPDA12 CNPDA11 CNPDA10 — — — CNPUA8 CNPUA7 — — CNPDA8 CNPDA7 CNPUA1 CNPUA0 0000 — — 0000 CNPDA1 CNPDA0 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 ON — SIDL — EDGE DETECT — — — — — — — — — — — 0000 — — — — — — 0000 31:16 15:0 31:16 0090 CNSTATA 31/15 All Resets Bit Range Bits 0050 0080 PORTA REGISTER MAP FOR 100-PIN DEVICES ONLY 15:0 31:16 CNIEA15 CNIEA14 — — CN CN STATA15 STATA14 — — — — — — CNIEA12 CNIEA11 — — CN CN STATA12 STATA11 — — — — — — — — — — — — CNIEA10 — CNIEA8 CNIEA7 — — CNIEA4 — — CNIEA1 — — — — — — — — — — CN STATA10 — CN STATA8 CN STATA7 — — CN STATA4 — — CN STATA1 — — — — — — — — — — — CNNEA4 — — CNNEA8 CNNEA7 — 0000 — 0000 — 31:16 — — — — — — — — — — — — — — — — 0000 15:0 CNFA15 CNFA14 — CNFA12 CNFA11 CNFA10 — CNFA8 CNFA7 — — CNFA4 — — CNFA1 CNFA0 0000 00C0 SRCON0A 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — SR0A10 — SR0A8 SR0A7 — — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 Legend: Note 1: — — CN 0000 STATA0 15:0 CNNEA15 CNNEA14 00D0 SRCON1A CNNEA12 CNNEA11 CNNEA10 CNIEA0 0000 CNNEA1 CNNEA0 0000 0000 15:0 — — — — — SR1A10 — SR1A8 SR1A7 — — — — — — — x = Unknown value on Reset; — = Unimplemented, read as ‘0’; Reset values are shown in hexadecimal. All registers in this table have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family DS60001402H-page 255 13.4 ANSELA 0010 0020 0030 0040 TRISA PORTA LATA ODCA 0050 CNPUA 0060 CNPDA 0080 CNENA 0090 CNSTATA 00A0 CNNEA 00B0 CNFA DS60001402H-page 256 00C0 SRCON0A 00D0 SRCON1A Legend: Note 1: 31/15 30/14 29/13 31:16 — — — 15:0 — — — 31:16 — — — — 15:0 — — — 31:16 — — — — 15:0 — — — 31:16 — — 15:0 — 31:16 0623 0000 — TRISA1 TRISA0 06FF — — — — 0000 RA4 — — RA1 RA0 xxxx — — — — — — 0000 — — LATA4 — — LATA1 LATA0 xxxx — — — — — — — — 0000 ODCA8 ODCA7 — — ODCA4 — — ODCA1 ODCA0 0000 — — — — — — — — — 0000 — — CNPUA4 — — — — — — — — — CNPDA4 — — — — — — — TRISA10 — TRISA8 — — — RA12 RA11 RA10 — — — — — LATA12 — — — — 15:0 — — — 31:16 — — — 15:0 — — — 31:16 — — — 15:0 — — — 31:16 — — — — — — — 31:16 — — — — — — — — — — — ANSA8 — — 0000 — — 15:0 — ANSA11 — — 31:16 — ANSA12 ANSA0 21/5 SIDL 25/9 — 22/6 — 26/10 ANSA1 23/7 ON 27/11 16/0 24/8 15:0 28/12 20/4 19/3 18/2 — — — — — ANSA4 — — — — — — — TRISA7 — — TRISA4 — — — — — — — RA8 RA7 — — — — — — — LATA11 LATA10 — LATA8 LATA7 — — — — ODCA10 — — — TRISA12 TRISA11 ODCA12 ODCA11 — — CNPUA12 CNPUA11 CNPUA10 — — — CNPDA12 CNPDA11 CNPDA10 — — — CNPUA8 CNPUA7 — — CNPDA8 CNPDA7 17/1 CNPUA1 CNPUA0 0000 — — 0000 CNPDA1 CNPDA0 0000 — — — — — — — — — — — — — 0000 — EDGE DETECT — — — — — — — — — — — 0000 — — — 0000 CNIEA12 CNIEA11 — — CN CN STATA12 STATA11 — — — — — — — — — — CNIEA10 — CNIEA8 CNIEA7 — — CNIEA4 — — CNIEA1 — — — — — — — CN STATA4 — — CN STATA1 — — — CN STATA10 — CN STATA8 CN STATA7 — — — — — — — — — — — — — CNNEA4 — — CNIEA0 0000 — 0000 CN 0000 STATA0 15:0 — — — 31:16 — — — 15:0 — — — 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — CNFA12 CNFA11 CNFA10 — CNFA8 CNFA7 — — CNFA4 — — CNFA1 CNFA0 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — SR0A10 — SR0A8 SR0A7 — — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — SR1A10 — SR1A8 SR1A7 — — — — — — — 0000 — — CNNEA12 CNNEA11 CNNEA10 — CNNEA8 CNNEA7 — — 0000 CNNEA1 CNNEA0 0000 x = Unknown value on Reset; — = Unimplemented, read as ‘0’; Reset values are shown in hexadecimal. All registers in this table have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family 0070 CNCONA Bits All Resets Register Name(1) 0000 PORTA REGISTER MAP FOR 64-PIN DEVICES ONLY Bit Range Virtual Address (BF86_#)  2016-2021 Microchip Technology Inc. TABLE 13-4: TRISB 0120 PORTB 0140 LATB ODCB 0150 CNPUB 0160 CNPDB 0170 CNCONB 0180 CNENB 0190 CNSTATB 01A0 CNNEB  2016-2021 Microchip Technology Inc. 01B0 CNFB 01C0 SRCON0B 01D0 SRCON1B Legend: Note 1: 31/15 30/14 29/13 28/12 27/11 26/10 31:16 — — — — — 15:0 — — — — — 31:16 — — — — 15:0 TRISB15 TRISB14 TRISB13 31:16 — — 15:0 RB15 31:16 16/0 All Resets 0110 Bit Range Register Name(1) Virtual Address (BF86_#) Bits 0100 ANSELB 0130 PORTB REGISTER MAP FOR 64-PIN AND 100-PIN DEVICES — — 0000 ANSB1 ANSB0 008F — — 0000 TRISB2 TRISB1 TRISB0 FFFF — — — — 0000 RB4 RB3 RB2 RB1 RB0 xxxx — — — — — — 0000 LATB6 LATB5 LATB4 LATB3 LATB2 LATB1 LATB0 xxxx — — — — — — — — 0000 — ODCB7 ODCB6 ODCB5 ODCB4 ODCB3 ODCB2 ODCB1 ODCB0 0000 — — — — — — — — — 0000 25/9 24/8 23/7 22/6 21/5 20/4 — — — ANSB9 — — TRISB12 TRISB11 — — RB14 RB13 — — 15:0 LATB15 31:16 — — — — — — — — ANSB7 — — — ANSB3 ANSB2 — — — — — — — — TRISB10 TRISB9 TRISB8 TRISB7 TRISB6 TRISB5 TRISB4 TRISB3 — — — — — — — — RB12 RB11 RB10 RB9 RB8 RB7 RB6 RB5 — — — — — — — — LATB14 LATB13 LATB12 LATB11 LATB10 LATB9 — LATB7 — — — — — — — — 15:0 ODCB15 ODCB14 ODCB13 ODCB12 ODCB11 ODCB10 ODCB9 31:16 — — — — — — — 15:0 CNPUB15 CNPUB14 CNPUB13 CNPUB12 CNPUB11 CNPUB10 CNPUB9 — 31:16 — — — — — — — — 15:0 CNPDB15 CNPDB14 CNPDB13 CNPDB12 CNPDB11 CNPDB10 CNPDB9 — 31:16 15:0 — ON — — — SIDL CNPUB7 CNPUB6 CNPUB5 — — — CNPDB7 CNPDB6 CNPDB5 CNPUB4 — CNPDB4 19/3 18/2 17/1 CNPUB3 CNPUB2 CNPUB1 CNPUB0 0000 — — — — 0000 CNPDB3 CNPDB2 CNPDB1 CNPDB0 0000 — — — — — — — — — — — — — 0000 — EDGE DETECT — — — — — — — — — — — 0000 — 0000 31:16 — — — — — — — — — — — — — — — 15:0 CNIEB15 CNIEB14 CNIEB13 CNIEB12 CNIEB11 CNIEB10 CNIEB9 — CNIEB7 CNIEB6 CNIEB5 CNIEB4 CNIEB3 CNIEB2 CNIEB1 31:16 — — — — — — — — — — — — — — — 15:0 CN STATB15 CN STATB14 CN STATB13 CN STATB12 CN STATB11 CN STATB10 CN STATB9 — CN STATB7 CN STATB6 CN STATB5 CN STATB4 CN STATB3 CN STATB2 CN STATB1 31:16 — — — — — — — — — — — — — — CNNEB7 CNNEB6 CNNEB5 — CNNEB4 CNIEB0 0000 — 0000 CN 0000 STATB0 — 0000 15:0 CNNEB15 CNNEB14 CNNEB13 CNNEB12 CNNEB11 CNNEB10 CNNEB9 — CNNEB3 CNNEB2 CNNEB1 CNNEB0 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 CNFB15 CNFB14 CNFB13 CNFB12 CNFB11 CNFB10 CNFB9 — CNFB7 CNFB6 CNFB5 CNFB4 CNFB3 CNFB2 CNFB1 CNFB0 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 SR0B15 SR0B14 SR0B13 SR0B12 SR0B11 SR0B10 — — SR0B7 SR0B6 — SR0B4 — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 0000 15:0 SR1B15 SR1B14 SR1B13 SR1B12 SR1B11 SR1B10 — — SR1B7 SR1B6 — SR1B4 — — — — x = Unknown value on Reset; — = Unimplemented, read as ‘0’; Reset values are shown in hexadecimal. All registers in this table have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family DS60001402H-page 257 TABLE 13-5: PORTC REGISTER MAP FOR 64-PIN AND 100-PIN DEVICES 0210 TRISC 0220 PORTC 0230 LATC 0240 ODCC 0250 CNPUC 0260 CNPDC 31/15 30/14 29/13 31:16 — — — — 15:0 — — — ANSC12 31:16 — — — — 15:0 TRISC15 TRISC14 TRISC13 TRISC12 CNENC 0290 CNSTATC 02A0 CNNEC 02B0 CNFC 02C0 SRCON0C 02D0 SRCON1C DS60001402H-page 258 Legend: Note 1: 18/2 16/0 — — 0000 ANSC1 ANSC0 1007 — 0000 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 17/1 — — — — — — — — — — ANSC11 ANSC10 — — — — — — — ANSC2 — — — — — — — — — — — TRISC11 TRISC10 TRIS92 TRISC8 TRISC7 TRISC6 — — — TRISC2 TRISC1 TRISC0 FFC7 — — — — — — — — — — — — — — — — 0000 15:0 RC15 RC14 RC13 RC12 RC11 RC10 RC9 RC8 RC7 RC6 — — — RC2 RC1 RC0 xxxx 31:16 — — — — — — — — — — — — — — — — 0000 15:0 LATC15 LATC14 — LATC12 LATC11 LATC10 LATC9 LATC8 LATC7 LATC6 — — — LATC2 LATC1 LATC0 xxxx 31:16 — — — — — — — — — — — — — — — — 0000 15:0 ODCC15 ODCC14 — ODCC12 ODCC11 ODCC10 ODCC9 ODCC8 ODCC7 ODCC6 — — — ODCC2 ODCC1 — — — — — — — — — — — — — — — — — — — — — — — — 31:16 15:0 31:16 15:0 CNPUC15 CNPUC14 — — CNPDC15 CNPDC14 — — — — — — 15:0 ON — 31:16 — — SIDL 15:0 CNIEC15 CNIEC14 — CNPUC12 CNPUC11 CNPUC10 CNPUC9 CNPUC8 CNPUC7 CNPUC6 — — — — — — — CNPDC12 CNPDC11 CNPDC10 CNPDC9 CNPDC8 CNPDC7 CNPDC6 — — 0000 — — — — — — — — — — — — 0000 — EDGE DETECT — — — — — — — — — — — 0000 — — — — — — — — — — — — — 0000 CNIEC12 CNIEC11 CNIEC10 CNIEC9 CNIEC8 CNIEC7 CNIEC7 — — — CNIEC2 CNIEC1 — — — — — — — — — — — — — — — CN STATC14 — CN STATC12 CN STATC11 CN STATC10 CN STATC9 CN STATC8 CN STATC7 CN STATC6 — — — CN STATC2 CN STATC1 — — — — — — — — — — — — — — — — — — — — — CN STATC15 CNNEC15 CNNEC14 0000 CNPDC2 CNPDC1 CNPDC0 0000 15:0 15:0 — CNPUC2 CNPUC1 CNPUC0 0000 31:16 31:16 ODCC0 0000 CNNEC12 CNNEC11 CNNEC10 CNNEC9 CNNEC8 CNNEC7 CNNEC6 CNIEC0 0000 — 0000 CN 0000 STATC0 — 0000 CNNEC2 CNNEC1 CNNEC0 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 CNFC15 CNFC14 — CNFC12 CNFC11 CNFC10 CNFC9 CNFC8 CNFC7 CNFC6 — — — CNFC2 CNFC1 CNFC0 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 SR0C15 — — — SR0C11 — SR0C9 SR0C8 SR0C7 SR0C6 — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 0000 15:0 SR1C15 — — — SR1C11 — SR1C9 SR1C8 SR1C7 SR1C6 — — — — — — x = Unknown value on Reset; — = Unimplemented, read as ‘0’; Reset values are shown in hexadecimal. All registers in this table have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family 0280 27/11 31:16 31:16 0270 CNCONC 28/12 All Resets 0200 ANSELC Bit Range Bits Register Name(1) Virtual Address (BF86_#)  2016-2021 Microchip Technology Inc. TABLE 13-6: 0320 0330 TRISD PORTD LATD 0340 ODCD 0350 CNPUD 0360 CNPDD 0370 CNCOND 0380 CNEND 0390 CNSTATD 03A0  2016-2021 Microchip Technology Inc. 03B0 CNNED CNFD 03C0 SRCON0D 03D0 SRCON1D Legend: Note 1: 2: 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 All Resets Bit Range Register Name(1) Virtual Address (BF86_#) Bits 0300 ANSELD 0310 PORTD REGISTER MAP FOR 100-PIN DEVICES ONLY 31:16 — — — — — — — — — — — — — — — — 0000 15:0 ANSD15 ANSD14 — — — — — — — — — — — — — — C000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 TRISD15 TRISD14 TRISD13 TRISD12 — — — TRISD8(2) — TRISD6 TRISD5 TRISD4 TRISD3 TRISD2 TRISD1 — F1FE 31:16 — — — — — — — — — — — — — — — — 0000 15:0 RD15 RD14 RD13 RD12 — — — RD8(2) — RD6 RD5 RD4 RD3 RD2 RD1 — xxxx 31:16 — — — — — — — — — — — — — — — — 0000 15:0 LATD15 LATD14 LATD13 LATD12 — — — LATD8(2) — LATD6 LATD5 LATD4 LATD3 LATD2 LATD1 — xxxx 31:16 — — — — — — — — — — — — — — — — 0000 15:0 ODCD15 ODCD14 ODCD13 ODCD12 — — — ODCD8(2) — ODCD6 ODCD5 ODCD4 ODCD3 ODCD2 ODCD1 — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 CNPUD15 CNPUD14 CNPUD13 CNPUD12 — — — CNPUD8(2) — — 0000 31:16 — — — — — — 0000 15:0 CNPDD15 CNPDD14 CNPDD13 CNPDD12 — — — CNPDD8(2) — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 ON — SIDL — EDGE DETECT — — — — — — — — — — — 0000 — — — — — — — — — — — — — — 0000 — — — CNIED8(2) — CNIED6 CNIED5 CNIED4 CNIED3 CNIED2 CNIED1 — 0000 — — — — — — — — — — — — 0000 CN STATD5 CN STATD4 CN STATD3 CN STATD2 CN STATD1 — 0000 — — — — — — 0000 — 0000 — — 31:16 — — 15:0 CNIED15 CNIED14 31:16 — — 15:0 CNS TATD15 CN STATD14 31:16 — — — — CNIED13 CNIED12 — — CN CN STATD13 STATD12 CNPUD6 CNPUD5 CNPUD4 CNPUD3 CNPUD2 CNPUD1 — — — — — — CNPDD6 CNPDD5 CNPDD4 CNPDD3 CNPDD2 CNPDD1 — — — CN STATD8(2) — CN STATD6 — — — — — — 15:0 CNNED15 CNNED14 CNNED13 CNNED12 — — — CNNED8(2) — 31:16 — — — — — — — — — — — — — — — — 0000 15:0 CNFD15 CNFD14 CNFD13 CNFD12 — — — CNFD8(2) — CNFD6 CNFD5 CNFD4 CNFD3 CNFD2 CNFD1 — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — SR0D6 SR0D5 SR0D4 SR0D3 SR0D2 SR0D1 — 0000 31:16 — — — — — — — — — — — — — — — 0000 — — SR0D8 — (2) CNNED6 CNNED5 CNNED4 CNNED3 CNNED2 CNNED1 0000 15:0 — — — — — — — — SR1D6 SR1D5 SR1D4 SR1D3 SR1D2 SR1D1 — SR1D8(2) x = Unknown value on Reset; — = Unimplemented, read as ‘0’; Reset values are shown in hexadecimal. All registers in this table have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. This bit is not available on general purpose devices. PIC32MK GP/MC Family DS60001402H-page 259 TABLE 13-7: Virtual Address (BF86_#) Register Name(1) 0310 TRISD Bits PORTD 0330 LATD 0340 ODCD 0350 0360 CNPUD CNPDD 0370 CNCOND 0380 CNEND 03A0 03B0 CNNED CNFD 03C0 SRCON0D 03D0 SRCON1D DS60001402H-page 260 Legend: Note 1: 2: 20/4 19/3 18/2 17/1 16/0 — — — — — — — 0000 TRISD6 TRISD5 — — — — — 0160 — — — — — — — 0000 — RD6 RD5 — — — — — xxxx — — — — — — — — — 0000 — LATD8(2) — LATD6 LATD5 — — — — — xxxx — — — — — — — — — — — 0000 — — — ODCD8(2) — ODCD6 ODCD5 — — — — — 0000 — — — — — — — — — — — — — 0000 — — — — — CNPUD8(2) — — — — — — 0000 — — — — — — — — — — — — — 0000 — — — — — — — CNPDD8(2) — — — — — — 0000 — — — — — — — — — — — — — — — — 0000 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 31:16 — — — — — — 15:0 — — — — — — — — — — TRISD8(2) — 31:16 — — — — — — — — — 15:0 — — — — — — — RD8(2) 31:16 — — — — — — — 15:0 — — — — — — 31:16 — — — — — 15:0 — — — — 31:16 — — — 15:0 — — 31:16 — 15:0 31:16 22/6 CNPUD6 CNPUD5 — — CNPDD6 CNPDD5 15:0 ON — SIDL — EDGE DETECT — — — — — — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — CNIED8(2) — CNIED6 CNIED5 — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 CN STATD8(2) — CN STATD6 CN STATD5 — — — — — 0000 — — — — — — — 0000 — — — — — 0000 15:0 — — — — — — — 31:16 — — — — — — — — — 15:0 — — — — — — — CNNED8(2) — 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — CNFD8(2) — CNFD6 CNFD5 — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 SR0D5 — — — — — 0000 — — — — — — 0000 15:0 31:16 — — — — — — — — — — — — — — (2) SR0D8 — — — CNNED6 CNNED5 SR0D6 — 0000 15:0 — — — — — — — — SR1D6 SR1D5 — SR1D8 x = Unknown value on Reset; — = Unimplemented, read as ‘0’; Reset values are shown in hexadecimal. All registers in this table have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. This bit is not available on general purpose devices. (2) — — — — PIC32MK GP/MC Family 0390 CNSTATD 21/5 All Resets 0320 PORTD REGISTER MAP FOR 64-PIN DEVICES ONLY Bit Range  2016-2021 Microchip Technology Inc. TABLE 13-8: Virtual Address (BF86_#) Register Name(1) 0400 ANSELE 0410 TRISE 0420 0440 PORTE LATE ODCE 0450 CNPUE 0460 CNPDE 0470 CNCONE CNENE  2016-2021 Microchip Technology Inc. 04A0 CNNEE 04B0 CNFE 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 — — — — — — — — — — — — — — — — 0000 15:0 ANSE15 ANSE14 ANSE13 ANSE12 — — ANSE9 ANSE8 — — — — — — ANSE1 ANSE0 F303 31:16 — — — — — — — — — — — — — — — — 0000 — — TRISE9 TRISE8 — — — — — — TRISE1 TRISE0 F303 15:0 TRISE15 TRISE14 TRISE13 TRISE12 31:16 — — — — — — — — — — — — — — — — 0000 15:0 RE15 RE14 RE13 RE12 — — RE9 RE8 — — — — — — RE1 RE0 xxxx 31:16 — — — — — — — — — — — — — — — — 0000 15:0 LATE15 LATE14 LATE13 LATE12 — — LATE9 LATE8 — — — — — — LATE1 LATE0 xxxx 31:16 — — — — — — — — — — — — — — — — 0000 — — ODCE9 ODCE8 — — — — — — ODCE1 ODCE0 0000 — — — — — — — — — — — — 0000 15:0 CNPUE15 CNPUE14 CNPUE13 CNPUE12 — — — — — — — — 31:16 — — — — — — — — — — — — — — — — 15:0 31:16 ODCE15 ODCE14 ODCE13 ODCE12 — — — — — — — — 15:0 CNPDE15 CNPDE14 CNPDE13 CNPDE12 CNPUE9 CNPUE8 — — CNPDE9 CNPDE8 CNPUE1 CNPUE0 0000 — — 0000 CNPDE1 CNPDE0 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 ON — SIDL — EDGE DETECT — — — — — — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — CNIEE9 CNIEE8 — — — — — — CNIEE1 — — — — — — — — — — — — — — — — — CN STATE9 CN STATE8 — — — — — — CN STATE1 — — — — — — — — — — 15:0 CNNEE15 CNNEE14 CNNEE13 CNNEE12 — — — — — — — — 31:16 — — — — — — — — — — — — — — — — 0000 15:0 CNFE15 CNFE14 CNFE13 CNFE12 — — CNFE9 CNFE8 — — — — — — CNFE1 CNFE0 0000 — — — — — — — — — — — — — — — — 0000 SR0E15 SR0E14 SR0E13 SR0E12 — — — — — — — — — — — — 0000 — — — — — — — — — — — — — — — — 0000 SR1E15 SR1E14 SR1E13 SR1E12 — — — — — — — — — — — — 0000 15:0 31:16 04C0 SRCON0E 31:16 15:0 04D0 SRCON1E 31:16 15:0 Legend: Note 1: 30/14 31:16 31:16 0490 CNSTATE 31/15 All Resets Bit Range Bits 0440 0480 PORTE REGISTER MAP FOR 100-PIN DEVICES ONLY CN CN CN CN STATE15 STATE14 STATE13 STATE12 — — — — CNNEE9 CNNEE8 — CNIEE0 0000 — 0000 CN 0000 STATE0 — 0000 CNNEE1 CNNEE0 0000 x = Unknown value on Reset; — = Unimplemented, read as ‘0’; Reset values are shown in hexadecimal. All registers in this table have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family DS60001402H-page 261 TABLE 13-9: Virtual Address (BF86_#) Register Name(1) 0400 ANSELE 0410 TRISE 0420 PORTE 0440 LATE 0440 0450 0460 ODCE CNPUE CNPDE 0470 CNCONE CNENE 0490 CNSTATE 04A0 CNNEE 04B0 CNFE 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 31:16 — — — — — — — — — — — — — — — — 0000 15:0 ANSE15 ANSE14 ANSE13 ANSE12 — — — — — — — — — — — — F000 31:16 — — — — — — — — — — — — — — — — 0000 — — — — — — — — — — — — F000 15:0 TRISE15 TRISE14 TRISE13 TRISE12 31:16 — — — — — — — — — — — — — — — — 0000 15:0 RE15 RE14 RE13 RE12 — — — — — — — — — — — — xxxx 31:16 — — — — — — — — — — — — — — — — 0000 15:0 LATE15 LATE14 LATE13 LATE12 — — — — — — — — — — — — xxxx 31:16 — — — — — — — — — — — — — — — — 0000 — — — — — — — — — — — — 0000 — — — — — — — — — — — — 0000 15:0 CNPUE15 CNPUE14 CNPUE13 CNPUE12 — — — — — — — — — — — — 0000 31:16 — — — — — — — — — — — — 0000 15:0 CNPDE15 CNPDE14 CNPDE13 CNPDE12 — — — — — — — — — — — — 0000 31:16 — — — — — — — — — — — — — 0000 15:0 31:16 ODCE15 ODCE14 ODCE13 ODCE12 — — — — — — — — — — — 15:0 ON — SIDL — EDGE DETECT — — — — — — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — — — — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 — — — — — — — — — — — — 0000 15:0 31:16 CN CN CN CN STATE15 STATE14 STATE13 STATE12 — — — — — — — — — — — — 0000 15:0 CNNEE15 CNNEE14 CNNEE13 CNNEE12 — — — — — — — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 CNFE15 CNFE14 CNFE13 CNFE12 — — — — — — — — — — — — 0000 — — — — — — — — — — — — — — — — 0000 SR0E15 SR0E14 SR0E13 SR0E12 — — — — — — — — — — — — 0000 — — — — — — — — — — — — — — — — 0000 SR1E15 SR1E14 SR1E13 SR1E12 — — — — — — — — — — — — 0000 04C0 SRCON0E 31:16 15:0 04D0 SRCON1E 31:16 15:0 DS60001402H-page 262 Legend: Note 1: 30/14 — — — — x = Unknown value on Reset; — = Unimplemented, read as ‘0’; Reset values are shown in hexadecimal. All registers in this table have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family 0480 31/15 All Resets Bits Bit Range  2016-2021 Microchip Technology Inc. TABLE 13-10: PORTE REGISTER MAP FOR 64-PIN DEVICES ONLY 0510 0520 0530 TRISF PORTF LATF 0540 ODCF 0550 CNPUF 0560 CNPDF 0570 CNCONF 0580 CNENF 0590 CNSTATF 21/5 20/4 19/3 18/2 17/1 16/0 All Resets 0500 ANSELF Bit Range Register Name(1) Virtual Address (BF86_#) Bits — — — — — — — 0000 — ANSF5 — — — — — 3620 — — — — — — — — 0000 — TRISF7 TRISF6 TRISF5 — — — TRISF1 TRISF0 36E3 — — — — — — — — — — 0000 RF10 RF9 — RF7 RF6 RF5 — — — RF1 RF0 xxxx — — — — — — — — — — — — 0000 LATF12 — LATF10 LATF9 — LATF7 LATF6 LATF5 — — — LATF1 LATF0 xxxx — — — — — — — — — — — — — — 0000 — ODCF13 ODCF12 — ODCF10 ODCF9 — ODCF7 ODCF6 ODCF5 — — — ODCF1 ODCF0 0000 — — — — — — — — — — — — — — — — 0000 15:0 — — — CNPUF7 CNPUF6 CNPUF5 — — — CNPUF1 31:16 — — 15:0 — — 31:16 — — — — — — 15:0 ON — SIDL — EDGE DETECT — 31:16 — — — — — 15:0 — — CNIEF13 CNIEF12 — 31:16 — — — — — CN STATF12 — 31/15 30/14 31:16 — — 15:0 — — 31:16 — — 15:0 — 31:16 29/13 28/12 27/11 — — — ANSF13 ANSF12 — — — — — TRISF13 TRISF12 — — — 15:0 — — 31:16 — 15:0 25/9 24/8 23/7 22/6 — — — — ANSF10 ANSF9 — — — — — — TRISF10 TRISF9 — — — RF13 RF12 — — — — — — LATF13 31:16 — — 15:0 — 31:16 CNPUF13 CNPUF12 — — CNPDF13 CNPDF12 — — 26/10 CNPUF10 CNPUF9 — — — — — — — — — CNPDF7 CNPDF6 CNPDF5 — — — CNPDF1 — — — — — — — — — — 0000 — — — — — — — — — — 0000 — — — — — — — — — — — 0000 CNIEF10 CNIEF9 — CNIEF7 CNIEF6 CNIEF5 — — — CNIEF1 CNIEF0 0000 — — — — — — — — — — — 0000 — CN STATF10 CN STATF9 — CN STATF7 CN STATF6 CN STATF5 — — — CN STATF1 CN STATF0 0000 — — — — — — — — — — — — 0000 — CNNEE7 CNNEF6 CNNEF5 — — — CNNEF1 — — — CNPUF0 0000 CNPDF10 CNPDF9 — 0000 CNPDF0 0000  2016-2021 Microchip Technology Inc. 15:0 — — CN STATF13 31:16 — — — 15:0 — — 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — CNFF13 CNFF12 — CNFF10 CNFF9 — CNFE7 CNFF6 CNFF5 — — — CNFF1 CNFF0 0000 05C0 SRCON0F 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — — — — — — — SR0F1 SR0F0 0000 05D0 SRCON1F 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — — — — — — — SR1F1 SR1F0 0000 05A0 CNNEF 05B0 CNFF Legend: Note 1: CNNEF13 CNNEF12 — CNNEF10 CNNEF9 CNNEF0 0000 x = Unknown value on Reset; — = Unimplemented, read as ‘0’; Reset values are shown in hexadecimal. All registers in this table have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family DS60001402H-page 263 TABLE 13-11: PORTF REGISTER MAP FOR 100-PIN DEVICES ONLY Virtual Address (BF86_#) Register Name(1) 0510 TRISF PORTF 0530 LATF 0540 ODCF 0550 CNPUF 0560 CNPDF 0570 CNCONF 0580 CNENF — — 0000 TRISF1 TRISF0 0003 — — 0000 — RF1 RF0 xxxx — — — — 0000 — — — LATF1 LATF0 xxxx — — — — — — 0000 — — — — — ODCF1 ODCF0 0000 — — — — — — — — 0000 — — — — — — — CNPUF1 — — — — — — — — — — — — — — — — — CNPDF1 — — — — — — — — — — — 0000 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — — — 31:16 — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — 31:16 — — — — — — — — — — 15:0 — — — — — — — — — 31:16 — — — — — — — — 15:0 — — — — — — — 31:16 — — — — — — 15:0 — — — — — — 31:16 — — — — — 17/1 CNPUF0 0000 — 0000 CNPDF0 0000 15:0 ON — SIDL — EDGE DETECT — — — — — — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — — — — — — — CNIEF1 CNIEF0 0000 31:16 — — — — — — — — — — — — — — — — 0000 CN STATF1 CN STATF0 0000 — 0000 15:0 — — — — — — — — — — — — — — 31:16 — — — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — — — CNNEF1 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — — — — — — — CNFF1 CNFF0 0000 05C0 SRCON0F 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — — — — — — — SR0F1 SR0F0 0000 05D0 SRCON1F 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — — — — — — — SR1F1 SR1F0 0000 05A0 CNNEF 05B0 CNFF Legend: Note 1: CNNEF0 0000 DS60001402H-page 264 x = Unknown value on Reset; — = Unimplemented, read as ‘0’; Reset values are shown in hexadecimal. All registers in this table have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family 0590 CNSTATF 16/0 All Resets 0520 Bits Bit Range  2016-2021 Microchip Technology Inc. TABLE 13-12: PORTF REGISTER MAP FOR 64-PIN DEVICES ONLY 0610 0620 0630 0640 TRISG PORTG LATG ODCG 0650 CNPUG 0660 CNPDG 0670 CNCONG 0680 CNENG 0690 CNSTATG 06A0 CNNEG  2016-2021 Microchip Technology Inc. 06B0 CNFG Legend: Note 1: 22/6 21/5 20/4 19/3 18/2 17/1 16/0 All Resets 0600 ANSELG Bit Range Register Name(1) Virtual Address (BF86_#) Bits — — — — — — — — 0000 ANSG7 ANSG6 — — — — — — 8FC0 — — — — — — — — 0000 TRISG8 TRISG7 TRISG6 — — — — TRISG1 TRISG0 FFC3 — — — — — — — — — — 0000 RG10 RG9 RG8 RG7 RG6 — — — — RG1 RG0 xxxx — — — — — — — — — — — — 0000 LATG12 LATG11 LATG10 LATG9 LATG8 LATG7 LATG6 — — — — LATG1 LATG0 xxxx — — — — — — — — — — — — — — 0000 ODCG14 ODCG13 ODCG12 ODCG11 ODCG10 ODCG9 ODCG8 ODCG7 ODCG6 — — — — ODCG1 ODCG0 0000 — — — — — — — — — — — — — — — 0000 CNPUG8 CNPUG7 CNPUG6 — — — — 31/15 30/14 29/13 28/12 27/11 31:16 — — — — — — — — 15:0 ANSG15 — — — ANSG11 ANSG10 ANSG9 ANSG8 31:16 — — — — — — — — 15:0 TRISG15 TRISG10 TRISG9 31:16 — — — — — — 15:0 RG15 RG14 RG13 RG12 RG11 31:16 — — — — 15:0 LATG15 LATG14 LATG13 31:16 — — 15:0 ODCG15 31:16 — TRISG14 TRISG13 TRISG12 TRISG11 26/10 25/9 15:0 CNPUG15 CNPUG14 CNPUG13 CNPUG12 CNPUG11 CNPUG10 CNPUG9 31:16 — — — — — — — 15:0 CNPDG15 CNPDG14 CNPDG13 CNPDG12 CNPDG11 CNPDG10 CNPDG9 24/8 23/7 — — — — — — — CNPDG8 CNPDG7 CNPDG6 — — — — CNPUG1 CNPUG0 0000 — — 0000 CNPDG1 CNPDG0 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 ON — SIDL — EDGE DETECT — — — — — — — — — — — 0000 — — — — — — 0000 31:16 — 15:0 CNIEG15 31:16 — 15:0 CN STATG15 31:16 — CNIEG14 CNIEG13 CNIEG12 CNIEG11 CNIEG10 — — — — — CN CN CN CN CN STATG14 STATG13 STATG12 STATG11 STATG10 — — — — — — — — — — — — — — CNIEG9 CNIEG8 CNIEG7 CNIEG6 — — — — CNIEG1 — — — — — CN STATG1 — — — — CN STATG9 CN STATG8 CN STATG7 CN STATG6 — — — — — — — — — — — — CNNEG8 CNNEG7 CNNEG6 — — — — 15:0 CNNEG15 CNNEG14 CNNEG13 CNNEG12 CNNEG11 CNNEG10 CNNEG9 — CNIEG0 0000 — 0000 CN 0000 STATG0 — 0000 CNNEG1 CNNEG0 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 CNFG15 CNFG14 CNFG13 CNFG12 CNFG11 CNFG10 CNFG9 CNFG8 CNFG7 CNFG6 — — — — CNFG1 CNFG0 0000 x = Unknown value on Reset; — = Unimplemented, read as ‘0’; Reset values are shown in hexadecimal. All registers in this table have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family DS60001402H-page 265 TABLE 13-13: PORTG REGISTER MAP FOR 100-PIN DEVICES ONLY 0610 TRISG 0620 PORTG 0630 LATG 0640 ODCG 0650 CNPUG 0660 CNPDG 0670 CNCONG 0690 CNSTATG 06A0 CNNEG 06B0 CNFG Legend: Note 1: 21/5 20/4 19/3 18/2 17/1 16/0 — — — — — — — — 0000 ANSG7 ANSG6 — — — — — — 03C0 — — — — — — — — 0000 TRISG8 TRISG7 TRISG6 — — — — — — 03C0 — — — — — — — — — — 0000 — RG9 RG8 RG7 RG6 — — — — — — xxxx — — — — — — — — — — — — 0000 — — — LATG9 LATG8 LATG7 LATG6 — — — — — — xxxx — — — — — — — — — — — — — — 0000 — — — — — ODCG9 ODCG8 ODCG7 ODCG6 — — — — — — 0000 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — CNPUG9 CNPUG8 CNPUG7 CNPUG6 — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — CNPDG9 CNPDG8 CNPDG7 CNPDG6 — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 31:16 — — — — — — — — 15:0 — — — — — — ANSG9 ANSG8 31:16 — — — — — — — — 15:0 — — — — — — TRISG9 31:16 — — — — — — 15:0 — — — — — 31:16 — — — — 15:0 — — — 31:16 — — 15:0 — 31:16 23/7 15:0 ON — SIDL — EDGE DETECT — — — — — — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — CNIEG9 CNIEG8 CNIEG7 CNIEG6 — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — CN STATG9 CN STATG8 CN STATG7 CN STATG6 — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — CNNEG9 CNNEG8 CNNEG7 CNNEG6 — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — CNFG9 CNFG8 CNFG7 CNFG6 — — — — — — 0000 x = Unknown value on Reset; — = Unimplemented, read as ‘0’; Reset values are shown in hexadecimal. All registers in this table have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. DS60001402H-page 266 PIC32MK GP/MC Family 0680 CNENG 22/6 All Resets 0600 ANSELG Bit Range Bits Register Name(1) Virtual Address (BF86_#)  2016-2021 Microchip Technology Inc. TABLE 13-14: PORTG REGISTER MAP FOR 64-PIN DEVICES ONLY 1408 140C 1410 1418 141C 1420 1424 1428 142C 1430  2016-2021 Microchip Technology Inc. 1434 1438 143C 1440 Legend: Note 1: 2: 3: 4: INT1R INT2R INT3R INT4R T2CKR T3CKR T4CKR T5CKR T6CKR T7CKR T8CKR T9CKR IC1R IC2R IC3R All Resets Bit Range Register Name Virtual Address (BF80_#) 1404 Bits 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. This register is not available on 64-pin devices. This register is not available on devices without a CAN module. This register is only available on PIC32MKXXX*XGPE*/MCF*XXX devices. This register is only available on motor control variants. INT1R — — — — — — — — — — — — — — — — — — — — — — — — — — — — — 0000 INT2R — 0000 INT3R — 0000 INT4R — 0000 T2CKR — 0000 T3CKR — 0000 T4CKR — 0000 T5CKR — 0000 T6CKR — 0000 T7CKR — 0000 T8CKR — 0000 T9CKR — 0000 IC1R — 0000 IC2R — IC3R 0000 0000 PIC32MK GP/MC Family DS60001402H-page 267 TABLE 13-15: PERIPHERAL PIN SELECT INPUT REGISTER MAP IC4R 1448 IC5R 144C IC6R 1450 IC7R 1454 IC8R 1458 IC9R 145C OCFBR 1464 1468 U1RXR U1CTSR 146C 1470 U2RXR U2CTSR 1474 DS60001402H-page 268 1478 U3RXR U3CTSR 147C Legend: Note 1: 2: 3: 4: U4RXR 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. This register is not available on 64-pin devices. This register is not available on devices without a CAN module. This register is only available on PIC32MKXXX*XGPE*/MCF*XXX devices. This register is only available on motor control variants. IC4R — — — — — — — — — — — — — 0000 IC5R — 0000 IC6R — 0000 IC7R — 0000 IC8R — 0000 IC9R — 0000 OCFAR — — — 0000 OCFBR — — — — — 0000 U1RXR — 0000 U1CTSR — — — — — 0000 U2RXR — 0000 U2CTSR — — — — — 0000 U3RXR — 0000 U3CTSR — — — U4RXR 0000 0000 PIC32MK GP/MC Family 1460 OCFAR All Resets Register Name 1444 Bit Range Bits Virtual Address (BF80_#)  2016-2021 Microchip Technology Inc. TABLE 13-15: PERIPHERAL PIN SELECT INPUT REGISTER MAP (CONTINUED) 1480 U4CTSR 1484 1488 U5RXR U5CTSR 148C 1490 U6RXR U6CTSR 1498 149C 14A4 14A8 14AC 14B0  2016-2021 Microchip Technology Inc. 14B4 14B8 14BC 14C0 Legend: Note 1: 2: 3: 4: SDI1R SS1R SDI2R SS2R SCK3R SDI3R SS3R SCK4R SDI4R SS4R 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 31:16 — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. This register is not available on 64-pin devices. This register is not available on devices without a CAN module. This register is only available on PIC32MKXXX*XGPE*/MCF*XXX devices. This register is only available on motor control variants. All Resets Bit Range Register Name Virtual Address (BF80_#) Bits 18/2 17/1 16/0 — — — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 U4CTSR — — — — — 0000 U5RXR — 0000 U5CTSR — — — — — 0000 U6RXR — 0000 U6CTSR — — — — — — — — — — — — — — — — — — — — — 0000 SDI1R — 0000 SS1R — 0000 SDI2R — 0000 SS2R — 0000 SCK3R — 0000 SDI3R — 0000 SS3R — 0000 SCK4R — 0000 SDI4R — SS4R 0000 0000 PIC32MK GP/MC Family DS60001402H-page 269 TABLE 13-15: PERIPHERAL PIN SELECT INPUT REGISTER MAP (CONTINUED) 14C4 14C8 C2RXR(2) 14D4 14D8 14DC 14E4 14E8 14EC QEA1R(4) QEB1R(4) INDX1R(4) HOME1R (4) QEA2R(4) QEB2R(4) INDX2R(4) HOME2R 14F0 14F4 DS60001402H-page 270 14F8 14FC Legend: Note 1: 2: 3: 4: FLT1R FLT2R IC10R IC11R (4) 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. This register is not available on 64-pin devices. This register is not available on devices without a CAN module. This register is only available on PIC32MKXXX*XGPE*/MCF*XXX devices. This register is only available on motor control variants. C1RXR — — — — — — — — — — — 0000 C2RXR — 0000 REFIR — 0000 QEA1R — 0000 QEB1R — 0000 INDX1R — — — 0000 HOME1R — — — — — — — 0000 QEA2R — 0000 QEB2R — 0000 INDX2R — — — 0000 HOME2R — — — — — — — — — 0000 FLT1R — 0000 FLT2R — 0000 IC10R — IC11R 0000 0000 PIC32MK GP/MC Family 14E0 REFIR All Resets Register Name C1RXR(2) 14CC 14D0 Bit Range Bits Virtual Address (BF80_#)  2016-2021 Microchip Technology Inc. TABLE 13-15: PERIPHERAL PIN SELECT INPUT REGISTER MAP (CONTINUED) 1500 IC12R 1504 IC13R 1508 IC14R 150C IC15R 1510 IC16R 1514 SCK5R 1518 SDI5R 151C SS5R 1520 SCK6R 1524 SDI6R 1528 SS6R  2016-2021 Microchip Technology Inc. 152C C3RXR(2) 1530 (2) 1534 1538 C4RXR QEA3R(4) QEB3R(4) Legend: Note 1: 2: 3: 4: All Resets Bit Range Register Name Virtual Address (BF80_#) Bits 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — — 0000 — 0000 — 0000 — 0000 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. This register is not available on 64-pin devices. This register is not available on devices without a CAN module. This register is only available on PIC32MKXXX*XGPE*/MCF*XXX devices. This register is only available on motor control variants. IC12R — — — — — — — — — — — — — 0000 IC13R — 0000 IC14R — 0000 IC15R — 0000 IC16R — 0000 — SCK5R — — 0000 — 0000 SDI5R — — — — — — — 0000 SS5R — 0000 — SCK6R — — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 SDI6R — — — — — — — — — — — 0000 SS6R — 0000 C3RXR — 0000 C4RXR — 0000 QEA3R — QEB3R 0000 0000 PIC32MK GP/MC Family DS60001402H-page 271 TABLE 13-15: PERIPHERAL PIN SELECT INPUT REGISTER MAP (CONTINUED) 153C INDX3R(4) 1540 HOME3R(4) 1544 QEA4R(4) 1548 154C 1550 1554 155C 1560 1564 1568 156C DS60001402H-page 272 1570 INDX4R(4) HOME4R(4) QEA5R (4) QEB5R(4) INDX5R(4) HOME5R(4) QEA6R (4) QEB6R(4) INDX6R(4) HOME6R(4) Legend: Note 1: 2: 3: 4: 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 31:16 — — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — 31:16 — — — — — — — — — — — — 15:0 — — — — — — — — — — — — x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. This register is not available on 64-pin devices. This register is not available on devices without a CAN module. This register is only available on PIC32MKXXX*XGPE*/MCF*XXX devices. This register is only available on motor control variants. 18/2 17/1 16/0 — — — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 — 0000 INDX3R — — — 0000 HOME3R — — — — — — — 0000 QEA4R — 0000 QEB4R — 0000 INDX4R — — — 0000 HOME4R — — — — — — — 0000 QEA5R — 0000 QEB5R — 0000 INDX5R — — — 0000 HOME5R — — — — — — — 0000 QEA6R — 0000 QEB6R — 0000 INDX6R — — — HOME6R 0000 0000 PIC32MK GP/MC Family 1558 QEB4R(4) 31/15 All Resets Register Name Bit Range Bits Virtual Address (BF80_#)  2016-2021 Microchip Technology Inc. TABLE 13-15: PERIPHERAL PIN SELECT INPUT REGISTER MAP (CONTINUED) 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8  2016-2021 Microchip Technology Inc. — — — — — — — — 31:16 — — — — — — — — 15:0 31:16 — — — — — — — — 1604 RPA1R 15:0 — — — — — — — — — — — — — — — — 31:16 1608 RPA2R — — — — — — — — 15:0 31:16 — — — — — — — — 160C RPA3R — — — — — — — — 15:0 31:16 — — — — — — — — 1610 RPA4R 15:0 — — — — — — — — — — — — — — — — 31:16 161C RPA7R — — — — — — — — 15:0 31:16 — — — — — — — — 1620 RPA8R — — — — — — — — 15:0 31:16 — — — — — — — — 162C RPA11R 15:0 — — — — — — — — — — — — — — — — 31:16 1630 RPA12R — — — — — — — — 15:0 31:16 — — — — — — — — 1638 RPA14R — — — — — — — — 15:0 31:16 — — — — — — — — 163C RPA15R 15:0 — — — — — — — — — — — — — — — — 31:16 1640 RPB0R — — — — — — — — 15:0 31:16 — — — — — — — — 1644 RPB1R — — — — — — — — 15:0 — — — — — — — — 31:16 1648 RPB2R — — — — — — — — 15:0 31:16 — — — — — — — — 164C RPB3R — — — — — — — — 15:0 31:16 — — — — — — — — 1650 RPB4R 15:0 — — — — — — — — — — — — — — — — 31:16 1654 RPB5R — — — — — — — — 15:0 31:16 — — — — — — — — 1658 RPB6R 15:0 — — — — — — — — 31:16 — — — — — — — — 165C RPB7R 15:0 — — — — — — — — Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. 1600 RPA0R 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — RPA0R — RPA1R — RPA2R — RPA3R — RPA4R — RPA7R — RPA8R — RPA11R — RPA12R — RPA14R — RPA15R — RPB0R — RPB1R — RPB2R — RPB3R — RPB4R — RPB5R — RPB6R — RPB7R — — All Resets Bit Range Register Name Virtual Address (BF80_#) Bits 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 PIC32MK GP/MC Family DS60001402H-page 273 TABLE 13-16: PERIPHERAL PIN SELECT OUTPUT REGISTER MAP 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 RPB9R 22/6 21/5 20/4 19/3 18/2 17/1 16/0 — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — RPB9R — RPB10R — RPB11R — RPB12R — RPB13R — RPB14R — RPB15R — RPC0R — RPC1R — RPC2R — RPC4R — RPC6R — RPC7R — RPC8R — RPC9R — RPC10R — RPC12R — RPC15R — RPD3R — — 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 PIC32MK GP/MC Family DS60001402H-page 274 — — — — — — — — 31:16 — — — — — — — — 15:0 31:16 — — — — — — — — 1668 RPB10R — — — — — — — — 15:0 31:16 — — — — — — — — 166C RPB11R 15:0 — — — — — — — — — — — — — — — — 31:16 1670 RPB12R — — — — — — — — 15:0 31:16 — — — — — — — — 1674 RPB13R — — — — — — — — 15:0 31:16 — — — — — — — — 1678 RPB14R 15:0 — — — — — — — — — — — — — — — — 31:16 167C RPB15R — — — — — — — — 15:0 31:16 — — — — — — — — 1680 RPC0R — — — — — — — — 15:0 31:16 — — — — — — — — 1684 RPC1R 15:0 — — — — — — — — — — — — — — — — 31:16 1688 RPC2R — — — — — — — — 15:0 31:16 — — — — — — — — 1690 RPC4R — — — — — — — — 15:0 31:16 — — — — — — — — 1698 RPC6R 15:0 — — — — — — — — — — — — — — — — 31:16 169C RPC7R — — — — — — — — 15:0 31:16 — — — — — — — — 16A0 RPC8R 15:0 — — — — — — — — — — — — — — — — 31:16 16A4 RPC9R — — — — — — — — 15:0 31:16 — — — — — — — — 16A8 RPC10R — — — — — — — — 15:0 31:16 — — — — — — — — 16B0 RPC12R 15:0 — — — — — — — — — — — — — — — — 31:16 16BC RPC15R — — — — — — — — 15:0 31:16 — — — — — — — — 16CC RPD3R — — — — — — — — 15:0 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. 1664 23/7 All Resets Bit Range Bits Register Name Virtual Address (BF80_#)  2016-2021 Microchip Technology Inc. TABLE 13-16: PERIPHERAL PIN SELECT OUTPUT REGISTER MAP (CONTINUED) 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8  2016-2021 Microchip Technology Inc. — — — — — — — — 31:16 — — — — — — — — 15:0 31:16 — — — — — — — — 16D4 RPD5R — — — — — — — — 15:0 31:16 — — — — — — — — 16D8 RPD6R 15:0 — — — — — — — — — — — — — — — — 31:16 1700 RPE0R — — — — — — — — 15:0 31:16 — — — — — — — — 1704 RPE1R — — — — — — — — 15:0 31:16 — — — — — — — — 1738 RPE14R 15:0 — — — — — — — — — — — — — — — — 31:16 173C RPE15R — — — — — — — — 15:0 31:16 — — — — — — — — 1740 RPF0R — — — — — — — — 15:0 31:16 — — — — — — — — 1744 RPF1R 15:0 — — — — — — — — — — — — — — — — 31:16 1780 RPG0R — — — — — — — — 15:0 31:16 — — — — — — — — 1784 RPG1R — — — — — — — — 15:0 31:16 — — — — — — — — 1798 RPG6R 15:0 — — — — — — — — — — — — — — — — 31:16 179C RPG7R — — — — — — — — 15:0 31:16 — — — — — — — — 17A0 RPG8R 15:0 — — — — — — — — — — — — — — — — 31:16 17A4 RPG9R — — — — — — — — 15:0 31:16 — — — — — — — — 17B0 RPG12R — — — — — — — — 15:0 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. 16D0 RPD4R 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — RPD4R — RPD5R — RPD6R — RPE0R — RPE1R — RPF14R — RPE15R — RPF0R — RPF1R — RPG0R — RPG1R — RPG6R — RPG7R — RPG8R — RPG9R — RPG12R — — All Resets Bit Range Register Name Virtual Address (BF80_#) Bits 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 PIC32MK GP/MC Family DS60001402H-page 275 TABLE 13-16: PERIPHERAL PIN SELECT OUTPUT REGISTER MAP (CONTINUED) PIC32MK GP/MC Family REGISTER 13-1: Bit Range 31:24 23:16 15:8 7:0 [pin name]R: PERIPHERAL PIN SELECT INPUT REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 U-0 U-0 U-0 Bit Bit 28/20/12/4 27/19/11/3 U-0 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 — — — — [pin name]R 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 bit 31-4 Unimplemented: Read as ‘0’ bit 3-0 [pin name]R: Peripheral Pin Select Input bits Where [pin name] refers to the pins that are used to configure peripheral input mapping. See Table 13-1 for input pin selection values. Note: Register values can only be changed if the IOLOCK Configuration bit (CFGCON) = 0. REGISTER 13-2: Bit Range 31:24 23:16 15:8 7:0 RPnR: PERIPHERAL PIN SELECT OUTPUT REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 U-0 U-0 U-0 Bit Bit 28/20/12/4 27/19/11/3 U-0 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 — — — RPnR 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 bit 31-5 Unimplemented: Read as ‘0’ bit 4-0 RPnR: Peripheral Pin Select Output bits See Table 13-2 for output pin selection values. Note: x = Bit is unknown Register values can only be changed if the IOLOCK Configuration bit (CFGCON) = 0. DS60001402H-page 276  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 13-3: Bit Range 31:24 23:16 15:8 7:0 CNCONx: CHANGE NOTICE CONTROL FOR PORTx REGISTER (x = A – G) Bit Bit Bit Bit 31/23/15/7 30/22/14/6 29/21/13/5 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 U-0 R/W-0 U-0 R/W-0 r-0 U-0 U-0 ON — SIDL — EDGEDETECT — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — 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 bit 31-16 Unimplemented: Read as ‘0’ bit 15 ON: Change Notice (CN) Control ON bit 1 = CN is enabled 0 = CN is disabled bit 14 Unimplemented: Read as ‘0’ bit 13 SIDL: Stop in Idle Control bit 1 = CPU Idle mode halts CN operation 0 = CPU Idle mode does not affect CN operation bit 12 Unimplemented: Read as ‘0’ bit 11 EDGEDETECT: Edge Detection Type Control bit 1 = Detects any edge on the pin (CNx is used for the CN event) 0 = Detects any edge on the pin (CNSTATx is used for the CN event) bit 10 Reserved: Always write ‘0’ bit 9-0 Unimplemented: Read as ‘0’  2016-2021 Microchip Technology Inc. DS60001402H-page 277 PIC32MK GP/MC Family 14.0 Note: TIMER1 This data sheet summarizes the features of the PIC32MK GP/MC family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 14. “Timers” (DS60001105), which is available from the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). PIC32MK GP/MC devices feature one synchronous/ asynchronous 16-bit timer that can operate as a free-running interval timer for various timing applications and counting external events. This timer can also be used with the low-power Secondary Oscillator (SOSC) for realtime clock applications. The following modes are supported by Timer1: • • • • Synchronous Internal Timer Synchronous Internal Gated Timer Synchronous External Timer Asynchronous External Timer 14.1 Additional Supported Features • Selectable clock prescaler • Timer operation during Sleep and Idle modes • Fast bit manipulation using CLR, SET, and INV registers • Asynchronous mode can be used with the SOSC to function as a real-time clock • ADC event trigger 14.2 14.2.1 14.2.2 ASYNCHRONOUS MODE OPERATION When writing the ON bit when the Timer is configured in Asynchronous mode or in an external clock mode with the prescaler enabled, the act of setting the ON bit does not take effect until two rising edges of the external clock input have occurred. 14.2.3 ASYNCHRONOUS MODE OPERATION WITH A PENDING TMRx REGISTER WRITE When the Timer is configured in Asynchronous mode and the Timer is attempting to write to the TMRx register while a previous write is awaiting synchronization, the value written to the timer can become corrupted. To ensure that writes will not cause the TMRx value to become corrupted, the TWDIS bit (TxCON), when set, will ignore a write to the TMRx register when a previous write to the TMRx register is awaiting synchronization into the Asynchronous Timer Clock domain. The TWIP bit (TxCON) indicates when write synchronization is complete, and it is safe to write another value to the timer. 14.2.4 PRx REGISTER WRITES Writing to the PRx register while the Timer is active, may cause erratic operation. TImer1 Usage Model Guidelines EXTERNAL CLOCK MODE OPERATION When the Timer is operating with an external clock mode with the TCS bit (TxCON) = 1, the mode bits of the TxCON register must be initialized using a separate Write operation from that used to enable the Timer. Specifically, the TCS, TSYNC, etc. bits must be written first, and then the ON bit (TxCON) must be set in a subsequent write. Once the ON bit is set, any writes to the TxCON register may cause erroneous counter operation. Note: The ON bit should be clear when updates are made to any other bits in the TxCON register. DS60001402H-page 278  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family FIGURE 14-1: TIMER1 BLOCK DIAGRAM PR1 Trigger to ADC(1) Q D Equal 16-bit Comparator TSYNC Q 1 Sync TMR1 Reset 0 T1IF Event Flag(1) 0 1 Q TGATE D Q TGATE TCS ON SOSC 00 T1CK 01 LPRC 10 TECS x1 Gate Sync PBCLK2 10 00 Prescaler 1, 8, 64, 256 2 TCKPS Note 1: Timer1 ADC trigger and interrupt occurs on match plus 1 count; therefore, set the period to PR1 minus 1 to compensate, regardless of the prescaler.  2016-2021 Microchip Technology Inc. DS60001402H-page 279 Timer1 Control Register TABLE 14-1: Virtual Address (BF82_#) TMR1 0020 PR1 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 31:16 — — — 15:0 ON — SIDL — — — — — TWDIS TWIP — 31:16 — — — — — — TECS — 15:0 31:16 15:0 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 — — — — — — — — 0000 TGATE — TCKPS — TSYNC TCS — 0000 — — — — — — — — 0000 — — — — — — — — TMR1 — — — — — — — All Resets Bit Range 0000 T1CON 0010 TIMER1 REGISTER MAP Bits Register Name(1)  2016-2021 Microchip Technology Inc. 14.3 — — PR1 0000 0000 FFFF Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family DS60001402H-page 280 PIC32MK GP/MC Family REGISTER 14-1: Bit Range 31:24 23:16 15:8 7:0 T1CON: TYPE A TIMER CONTROL REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 U-0 R/W-0 R/W-0 R-0 U-0 R/W-0 R/W-0 ON — SIDL TWDIS TWIP — R/W-0 U-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 U-0 TGATE — — TSYNC TCS — TCKPS TECS 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 bit 31-16 Unimplemented: Read as ‘0’ bit 15 ON: Timer On bit 1 = Timer is enabled 0 = Timer is disabled bit 14 Unimplemented: Read as ‘0’ bit 13 SIDL: Stop in Idle Mode bit 1 = Discontinue operation when device enters Idle mode 0 = Continue operation even in Idle mode bit 12 TWDIS: Asynchronous Timer Write Disable bit 1 = Writes to TMR1 are ignored until pending write operation completes 0 = Back-to-back writes are enabled (Legacy Asynchronous Timer functionality) bit 11 TWIP: Asynchronous Timer Write in Progress bit In Asynchronous Timer mode: 1 = Asynchronous write to TMR1 register in progress 0 = Asynchronous write to TMR1 register complete In Synchronous Timer mode: This bit is read as ‘0’. bit 10 Unimplemented: Read as ‘0’ bit 9-8 TECS: Timer1 External Clock Selection bits 11 = Reserved 10 = External clock comes from the LPRC 01 = External clock comes from the T1CK pin 00 = External clock comes from the SOSC bit 7 TGATE: Timer Gated Time Accumulation Enable bit When TCS = 1: This bit is ignored. When TCS = 0: 1 = Gated time accumulation is enabled 0 = Gated time accumulation is disabled bit 6 Unimplemented: Read as ‘0’  2016-2021 Microchip Technology Inc. DS60001402H-page 281 PIC32MK GP/MC Family REGISTER 14-1: T1CON: TYPE A TIMER CONTROL REGISTER (CONTINUED) bit 5-4 TCKPS: Timer Input Clock Prescale Select bits 11 = 1:256 prescale value 10 = 1:64 prescale value 01 = 1:8 prescale value 00 = 1:1 prescale value bit 3 Unimplemented: Read as ‘0’ bit 2 TSYNC: Timer External Clock Input Synchronization Selection bit When TCS = 1: 1 = External clock input is synchronized 0 = External clock input is not synchronized When TCS = 0: This bit is ignored. bit 1 TCS: Timer Clock Source Select bit 1 = External clock is defined by the TECS bits 0 = Internal peripheral clock bit 0 Unimplemented: Read as ‘0’ DS60001402H-page 282  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family NOTES:  2016-2021 Microchip Technology Inc. DS60001402H-page 283 PIC32MK GP/MC Family 15.0 TIMER2 THROUGH TIMER9 Note: 15.1 The following are key features of the timers: This data sheet summarizes the features of the PIC32MK GP/MC family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 14. “Timers” (DS60001105), which is available from the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). • External 16-bit/32-bit Counter Input mode • Asynchronous external clock with/without selectable prescaler • Synchronous internal clock with/without selectable prescaler • External gate control (External pulse width measurement) • Automatic timer synchronization control • Operation in Idle mode • Interrupt on a period register match or falling edge of external gate signal • Time base for Input Capture and/or Output Compare modules The PIC32MK GP/MC family of devices features eight native synchronous/asynchronous 16/32-bit timers (default 16-bit mode) that can operate as freerunning interval timers for various timing applications and counting external events. FIGURE 15-1: Features TIMER2 THROUGH TIMER9 BLOCK DIAGRAM (16/32-BIT) Reset Trigger to ADC(1,2) Q D Sync TMRx (16/32) Equal Comparator x 16/32 Q PRx (16/32) 0 TxIF Event Flag(2) 1 TGATE Q TGATE D Q TCS ON TxCK x1 Gate Sync PBCLK2 Note 1: 2: 10 00 Prescaler 1, 2, 4, 8, 16, 32, 64, 256 3 TCKPS The ADC event trigger is available on Timer1, Timer3, and Timer5 only. Timer2-Timer9 ADC trigger and interrupt occurs on match plus 1 count; therefore, set the period to PRx minus 1 to compensate, regardless of the prescaler. DS60001402H-page 284  2016-2021 Microchip Technology Inc. Timer2-Timer9 Control Registers Virtual Address (BF82_#) TABLE 15-1: TMR2 0220 PR2 0400 T3CON 0410 TMR3 0420 PR3 0600 T4CON 0610 TMR4 0620 PR4 0800 T5CON 0810 TMR5  2016-2021 Microchip Technology Inc. 0820 PR5 0A00 T6CON 0A10 TMR6 0A20 PR6 0C00 T7CON 31/15 30/14 29/13 28/12 27/11 26/10 25/9 31:16 — 15:0 ON — — — — — — — SIDL — — — — 24/8 23/7 22/6 — — — SYNC TGATE 21/5 20/4 — — TCKPS 19/3 18/2 — T32 All Resets Register Name(1) Bit Range Bits 0200 T2CON 0210 TIMER2 THROUGH TIMER9 REGISTER MAP 17/1 16/0 — — — 0000 — TCS — 0000 31:16 TMR2 0000 15:0 TMR2 0000 31:16 PR2 FFFF 15:0 PR2 31:16 — — — — — — — — — 15:0 ON — SIDL — — — — SYNC TGATE FFFF — — — TCKPS — — — — 0000 T32 — TCS — 0000 31:16 TMR3 0000 15:0 TMR3 0000 31:16 PR3 FFFF 15:0 PR3 31:16 — — — — — — — — — 15:0 ON — SIDL — — — — SYNC TGATE FFFF — — — TCKPS — — — — 0000 T32 — TCS — 0000 31:16 TMR4 0000 15:0 TMR4 0000 31:16 PR4 FFFF 15:0 PR4 31:16 — — — — — — — — — 15:0 ON — SIDL — — — — SYNC TGATE FFFF — — — TCKPS — — — — 0000 T32 — TCS — 0000 31:16 TMR5 0000 15:0 TMR5 0000 31:16 PR5 FFFF 15:0 PR5 31:16 — — — — — — — — — 15:0 ON — SIDL — — — — SYNC TGATE FFFF — — — TCKPS — — — — 0000 T32 — TCS — 0000 31:16 TMR6 0000 15:0 TMR6 0000 31:16 PR6 FFFF 15:0 PR6 31:16 — — — — — — — — — 15:0 ON — SIDL — — — — SYNC TGATE FFFF — — TCKPS — — — — — 0000 T32 — TCS — 0000 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family DS60001402H-page 285 15.2 Virtual Address (BF82_#) TIMER2 THROUGH TIMER9 REGISTER MAP (CONTINUED) 0C10 TMR7 0C20 PR7 0E00 T8CON 0E10 TMR8 0E20 PR8 1000 T9CON 1010 TMR9 1020 PR9 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 All Resets Bit Range Bits Register Name(1)  2016-2021 Microchip Technology Inc. TABLE 15-1: 31:16 TMR7 0000 15:0 TMR7 0000 31:16 PR7 FFFF 15:0 PR7 31:16 — — — — — — — — — 15:0 ON — SIDL — — — — SYNC TGATE FFFF — — — TCKPS — — — — 0000 T32 — TCS — 0000 31:16 TMR8 0000 15:0 TMR8 0000 31:16 PR8 FFFF 15:0 PR8 31:16 — — — — — — — — — 15:0 ON — SIDL — — — — SYNC TGATE FFFF — — TCKPS — — — — — 0000 T32 — TCS — 0000 31:16 TMR9 0000 15:0 TMR9 0000 31:16 PR9 FFFF 15:0 PR9 FFFF x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. DS60001402H-page 286 PIC32MK GP/MC Family Legend: PIC32MK GP/MC Family REGISTER 15-1: Bit Range 31:24 23:16 15:8 7:0 TxCON: TYPE B TIMER CONTROL REGISTER (‘x’ = 2-9) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 U-0 R/W-0 U-0 U-0 U-0 U-0 R/W-0 ON — SIDL — — — — SYNC R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 R/W-0 U-0 T32 — TCS — TGATE Legend: R = Readable bit -n = Value at POR bit 31-16 bit 15 bit 14 bit 13 bit 12-9 bit 8 TCKPS W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown Unimplemented: Read as ‘0’ ON: Timer On bit 1 = Module is enabled 0 = Module is disabled Unimplemented: Read as ‘0’ SIDL: Stop in Idle Mode bit 1 = Discontinue operation when device enters Idle mode 0 = Continue operation even in Idle mode Unimplemented: Read as ‘0’ SYNC: TMRx Synchronized Timer Start/Stop Enable bit 1 = TMRx synchronized timer start/stop is enabled 0 = TMRx synchronized timer start/stop is disabled Note: bit 7 bit 6-4 bit 3 bit 2 bit 1 bit 0 Setting this bit chains all timers whose corresponding SYNC bit is also set such that when the TON bit of all corresponding timers is set, the timers are enabled simultaneously. If any timers in the group are disabled, they are all disabled simultaneously. TGATE: Timer Gated Time Accumulation Enable bit When TCS = 1: This bit is ignored and is read as ‘0’. When TCS = 0: 1 = Gated time accumulation is enabled 0 = Gated time accumulation is disabled TCKPS: Timer Input Clock Prescale Select bits 111 = 1:256 prescale value 110 = 1:64 prescale value 101 = 1:32 prescale value 100 = 1:16 prescale value 011 = 1:8 prescale value 010 = 1:4 prescale value 001 = 1:2 prescale value 000 = 1:1 prescale value T32: 32-Bit Timer Mode Select bit 1 = 32-bit Timer mode 0 = 16-bit Timer mode Unimplemented: Read as ‘0’ TCS: Timer Clock Source Select bit 1 = External clock from TxCK pin 0 = Internal peripheral clock Unimplemented: Read as ‘0’  2016-2021 Microchip Technology Inc. DS60001402H-page 287 PIC32MK GP/MC Family 16.0 DEADMAN TIMER (DMT) Note: The primary function of the Deadman Timer (DMT) is to reset the processor in the event of a software malfunction. The DMT is a free-running instruction fetch timer, which is clocked whenever an instruction fetch occurs until a count match occurs. Instructions are not fetched when the processor is in Sleep mode. This data sheet summarizes the features of the PIC32MK GP/MC family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 9. “Watchdog, Deadman, and Power-up Timers” (DS60001114), which is available from the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). The DMT consists of a 32-bit counter with a time-out count match value as specified by the DMTCNT bits in the DEVCFG1 Configuration register. A Deadman Timer is typically used in mission critical and safety critical applications, where any single failure of the software functionality and sequencing must be detected. Figure 16-1 shows a block diagram of the Deadman Timer module. FIGURE 16-1: DEADMAN TIMER BLOCK DIAGRAM “improper sequence” flag ON Instruction Fetched Strobe Force DMT Event System Reset Counter Initialization Value PBCLK7 Clock “Proper Clear Sequence” Flag ON 32-bit counter ON 32 DMT event to NMI(3) DMT Count Reset Load System Reset (COUNTER) = DMT Max Count(1)  (COUNTER)  DMT Window Interval(2) Window Interval Open Note 1: 2: 3: DMT Max Count is controlled by the DMTCNT bits in the DEVCFG1 Configuration register. DMT Window Interval is controlled by the DMTINTV bits in the DEVCFG1 Configuration register. Refer to 7.0 “Resets” for more information. DS60001402H-page 288  2016-2021 Microchip Technology Inc. Deadman Timer Control Registers Virtual Address (BF80_#) Register Name TABLE 16-1: 0E00 DMTCON DEADMAN TIMER REGISTER MAP 0E10 DMTPRECLR 0E20 DMCLR 0E30 DMTSTAT 0E40 DMTCNT 0E60 DMTPSCNT 0E70 DMTPSINTV Legend: All Resets Bit Range Bits 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 31:16 — — — — — — — — — — — — — — — — 0000 15:0 ON — — — — — — — — — — — — — — — 0000 31:16 — — — — — — — — — — — — — — — — 0000 — — — — — — — — 0000 — — — — — — — — 0000 — 15:0 STEP1 31:16 — — — — — — — — 15:0 — — — — — — — — 31:16 — — — — — — — — — — — — — — — 15:0 — — — — — — — — BAD1 BAD2 DMTEVENT — — — — 31:16 15:0 31:16 15:0 31:16 15:0 STEP2 COUNTER PSCNT PSINTV x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. 0000 0000 WINOPN 0000 0000 0000 0000 0000 0000 0000 PIC32MK GP/MC Family DS60001402H-page 289 16.1  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 16-1: Bit Range DMTCON: DEADMAN TIMER CONTROL REGISTER Bit 31/23/15/7 Bit 30/22/14/6 U-0 U-0 U-0 U-0 U-0 — — — — — U-0 U-0 U-0 U-0 U-0 31:24 23:16 15:8 Bit Bit Bit Bit 29/21/13/5 28/20/12/4 27/19/11/3 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 — — — U-0 U-0 U-0 — — — — — — — — R/W-0 (1) U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — ON 7:0 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 bit 31-16 Unimplemented: Read as ‘0’ bit 15 ON: Deadman Timer Module Enable bit(1,2) 1 = Deadman Timer module is enabled 0 = Deadman Timer module is disabled bit 13-0 Unimplemented: Read as ‘0’ Note 1: 2: x = Bit is unknown This bit only has control when the FDMTEN bit (DEVCFG1) = 0. Once set, the DMTCON.ON bit cannot be disabled by software. REGISTER 16-2: Bit Range DMTPRECLR: DEADMAN TIMER PRECLEAR REGISTER Bit 31/23/15/7 Bit 30/22/14/6 U-0 U-0 U-0 U-0 U-0 — — — — — U-0 U-0 U-0 U-0 U-0 31:24 23:16 15:8 Bit Bit Bit Bit 29/21/13/5 28/20/12/4 27/19/11/3 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 — — — U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — STEP1 7:0 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 bit 31-16 Unimplemented: Read as ‘0’ bit 15-8 STEP1: Preclear Enable bits 01000000 = Enables the Deadman Timer Preclear (Step 1) All other write patterns = Set BAD1 flag. These bits are cleared when a DMT reset event occurs. STEP1 is also cleared if the STEP2 bits are loaded with the correct value in the correct sequence. bit 7-0 Unimplemented: Read as ‘0’ DS60001402H-page 290  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 16-3: Bit Range Bit 31/23/15/7 Bit 30/22/14/6 U-0 U-0 U-0 U-0 U-0 — — — — — U-0 U-0 U-0 U-0 U-0 31:24 23:16 15:8 7:0 DMTCLR: DEADMAN TIMER CLEAR REGISTER Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 — — — U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 STEP2 Legend: R = Readable bit -n = Value at POR bit 31-8 bit 7-0 Bit Bit Bit Bit 29/21/13/5 28/20/12/4 27/19/11/3 26/18/10/2 W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown Unimplemented: Read as ‘0’ STEP2: Clear Timer bits 00001000 = Clears STEP1, STEP2 and the Deadman Timer if, and only if, preceded by correct loading of STEP1 bits in the correct sequence. The write to these bits may be verified by reading DMTCNT and observing the counter being reset. All other write patterns = Set BAD2 bit, the value of STEP1 will remain unchanged, and the new value being written STEP2 will be captured. These bits are also cleared when a DMT reset event occurs.  2016-2021 Microchip Technology Inc. DS60001402H-page 291 PIC32MK GP/MC Family REGISTER 16-4: Bit Range Bit 30/22/14/6 Bit 29/21/13/5 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 31:24 23:16 15:8 7:0 DMTSTAT: DEADMAN TIMER STATUS REGISTER Bit 31/23/15/7 bit 6 bit 5 bit 4-1 bit 0 Bit Bit 25/17/9/1 24/16/8/0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R-0, HC R-0, HC R-0, HC R/W-0 R/W-0 R/W-0 R/W-0 R-0 BAD1 BAD2 DMTEVENT Legend: R = Readable bit -n = Value at POR bit 31-8 bit 7 Bit Bit Bit 28/20/12/4 27/19/11/3 26/18/10/2 HC = Hardware Cleared W = Writable bit ‘1’ = Bit is set WINOPN U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown Unimplemented: Read as ‘0’ BAD1: Bad STEP1 Value Detect bit 1 = Incorrect STEP1 value or out of sequence write to step2 was detected 0 = Incorrect STEP1 value was not detected BAD2: Bad STEP2 Value Detect bit 1 = Incorrect STEP2 value was detected 0 = Incorrect STEP2 value was not detected DMTEVENT: Deadman Timer Event bit 1 = Deadman timer event was detected (counter expired or bad STEP1 or STEP2 value was entered prior to counter increment) 0 = Deadman timer even was not detected Note: This bit is cleared only on a Reset. Unimplemented: Read as ‘0’ WINOPN: Deadman Timer Clear Window bit 1 = Deadman timer clear window is open 0 = Deadman timer clear window is not open DS60001402H-page 292  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 16-5: Bit Range DMTCNT: DEADMAN TIMER COUNT REGISTER Bit 31/23/15/7 Bit 30/22/14/6 R-0 R-0 31:24 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 COUNTER R-0 7:0 R-0 R-0 R-0 R-0 COUNTER Legend: R = Readable bit -n = Value at POR W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown COUNTER: Read current contents of DMT counter REGISTER 16-6: DMTPSCNT: POST STATUS CONFIGURE DMT COUNT STATUS REGISTER Bit 31/23/15/7 Bit 30/22/14/6 R-0 R-0 31:24 Bit Bit Bit Bit 29/21/13/5 28/20/12/4 27/19/11/3 26/18/10/2 R-0 R-0 R-0 Bit 25/17/9/1 Bit 24/16/8/0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-y R-y R-y PSCNT R-0 23:16 R-0 R-0 R-0 R-0 PSCNT R-0 15:8 R-0 R-0 R-0 R-0 PSCNT R-0 7:0 R-0 R-0 R-y R-y PSCNT Legend: R = Readable bit -n = Value at POR bit 31-8 R-0 Bit 24/16/8/0 COUNTER 15:8 Bit Range R-0 Bit 25/17/9/1 COUNTER 23:16 bit 31-8 Bit Bit Bit Bit 29/21/13/5 28/20/12/4 27/19/11/3 26/18/10/2 W = Writable bit ‘1’ = Bit is set y= Value set from Configuration bits on POR U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown PSCNT: DMT Instruction Count Value Configuration Status bits This is always the value of the DMTCNT bits in the DEVCFG1 Configuration register.  2016-2021 Microchip Technology Inc. DS60001402H-page 293 PIC32MK GP/MC Family REGISTER 16-7: Bit Range DMTPSINTV: POST STATUS CONFIGURE DMT INTERVAL STATUS REGISTER Bit 31/23/15/7 Bit 30/22/14/6 R-0 R-0 31:24 R-0 R-0 R-0 Bit 25/17/9/1 Bit 24/16/8/0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-y R-y R-y PSINTV R-0 23:16 R-0 R-0 R-0 R-0 PSINTV R-0 15:8 R-0 R-0 R-0 R-0 PSINTV R-0 7:0 R-0 R-0 R-0 R-0 PSINTV Legend: R = Readable bit -n = Value at POR bit 31-8 Bit Bit Bit Bit 29/21/13/5 28/20/12/4 27/19/11/3 26/18/10/2 W = Writable bit ‘1’ = Bit is set y= Value set from Configuration bits on POR U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown PSINTV: DMT Window Interval Configuration Status bits This is always the value of the DMTINTV bits in the DEVCFG1 Configuration register. DS60001402H-page 294  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family NOTES:  2016-2021 Microchip Technology Inc. DS60001402H-page 295 PIC32MK GP/MC Family 17.0 WATCHDOG TIMER (WDT) Note: This data sheet summarizes the features of the PIC32MK GP/MC Family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 9. “Watchdog, Deadman, and Power-up Timers” (DS60001114), which is available from the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). FIGURE 17-1: When enabled, the Watchdog Timer (WDT) operates from the internal Low-Power Oscillator (LPRC) clock source and can be used to detect system software malfunctions by resetting the device if the WDT is not cleared periodically in software. Various WDT time-out periods can be selected using the WDT postscaler. The WDT can also be used to wake the device from Sleep or Idle mode. Some of the key features of the WDT module are as follows: • Configuration or software controlled • User-configurable time-out period • Can wake the device from Sleep mode or Idle mode WATCHDOG TIMER BLOCK DIAGRAM LPRC WDTCLR = 1 ON Wake ON Reset Event ON Clock 25-bit Counter 25 0 1 WDT Counter Reset WDT Event to NMI(1) Power Save Decoder FWDTPS (DEVCFG1) Note 1: Refer to 7.0 “Resets” for more information. DS60001402H-page 296  2016-2021 Microchip Technology Inc. Watchdog Timer Control Registers Virtual Address (BF80_#) Register Name TABLE 17-1: 0C00 WDTCON(1) WATCHDOG TIMER REGISTER MAP Legend: Note 1: 31/15 30/14 29/13 ON — — 28/12 27/11 26/10 31:16 15:0 25/9 24/8 23/7 22/6 21/5 20/4 19/3 WDTCLRKEY RUNDIV — — 18/2 17/1 All Resets Bit Range Bits 16/0 0000 SLPDIV WDTWINEN 0000 x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. This register has corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family DS60001402H-page 297 17.1  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 17-1: Bit Range 31:24 23:16 15:8 7:0 WDTCON: WATCHDOG TIMER CONTROL REGISTER Bit 31/23/15/7 W-0 Bit Bit Bit 30/22/14/6 29/21/13/5 28/20/12/4 W-0 W-0 W-0 Bit Bit 27/19/11/3 26/18/10/2 W-0 Bit 25/17/9/1 Bit 24/16/8/0 W-0 W-0 W-0 W-0 W-0 W-0 R-y R-y R-y WDTCLRKEY W-0 W-0 W-0 W-0 W-0 WDTCLRKEY R/W-0 U-0 U-0 ON(1) — — U-0 U-0 R-y — — Legend: R-y R-y RUNDIV R-y R-y R-y R-y SLPDIV R/W-0 WDTWINEN y = Values set from Configuration bits on POR 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 31-16 WDTCLRKEY: Watchdog Timer Clear Key bits To clear the Watchdog Timer to prevent a time-out, software must write the value 0x5743 to these bits using a single 16-bit write. bit 15 ON: Watchdog Timer Enable bit(1) 1 = The Watchdog Timer module is enabled 0 = The Watchdog Timer module is disabled bit 14-13 Unimplemented: Read as ‘0’ bit 12-8 RUNDIV: Watchdog Timer Postscaler Value in Run Mode bits In Run mode, these bits are set to the values of the WDTPS Configuration bits in the DEVCFG1 register. bit 7-6 Unimplemented: Read as ‘0’ bit 5-1 SLPDIV: Watchdog Timer Postscaler Value in Sleep Mode bits In Sleep mode, these bits are set to the values of the WDTPS Configuration bits in the DEVCFG1 register. bit 0 WDTWINEN: Watchdog Timer Window Enable bit 1 = Enable windowed Watchdog Timer 0 = Disable windowed Watchdog Timer Note 1: This bit only has control when FWDTEN (DEVCFG1) = 0. DS60001402H-page 298  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family NOTES:  2016-2021 Microchip Technology Inc. DS60001402H-page 299 PIC32MK GP/MC Family 18.0 Note: INPUT CAPTURE This data sheet summarizes the features of the PIC32MK GP/MC family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 15. “Input Capture” (DS60001122), which is available from the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). The Input Capture module is useful in applications requiring frequency (period) and pulse measurement. The Input Capture module captures the 16-bit or 32-bit value of the selected Time Base registers when an event occurs at the ICx pin. Capture events are caused by the following factors: • Capture timer value on every edge (rising and falling), specified edge first • Prescaler capture event modes: - Capture timer value on every 4th rising edge of input at ICx pin - Capture timer value on every 16th rising edge of input at ICx pin - Capture every falling edge of input at ICx pin - Capture every rising edge of input at ICx pin - Capture every 4th rising edge of input at ICx pin - Capture every 16th rising edge of input at ICx pin - Capture every rising and falling edge of input at ICx pin - Capture timer values based on internal or external clocks Each input capture channel can select between either eight 16-bit time bases or four 32-bit time base. The selected timer can use either an internal or external clock. Other operational features include: • Device wake-up from capture pin during Sleep and Idle modes • Interrupt on input capture event • 4-word FIFO buffer for capture values; Interrupt optionally generated after 1, 2, 3, or 4 buffer locations are filled • Input capture can also be used to provide additional sources of external interrupts DS60001402H-page 300  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family FIGURE 18-1: INPUT CAPTURE BLOCK DIAGRAM FEDGE Specified/Every Edge Mode ICM 110 See Table 18-1 Timerx(2) Prescaler Mode (16th Rising Edge) 101 Prescaler Mode (4th Rising Edge) 100 ICx(1) Rising Edge Mode 011 Falling Edge Mode 010 Edge Detection Mode 001 C32 (ICxCON ICACLK (CFGCON CaptureEvent PBCLKx (‘x’ = 2, 3)(3) Timery(2) To CPU FIFO Control ICxBUF(1) FIFO ICI ICM Set Flag ICxIF(1) (In IFSx Register) /N Sleep/Idle Wake-up Mode 111 Note 1: An ‘x’ in a signal, register or bit name denotes the number of the capture channel. 2: See Table 18-1 for Timerx and Timery selections. 3: PBCLK2 = Input Capture 1 through Input Capture 9; PBCLK3 = Input Capture 10 through Input Capture 16.  2016-2021 Microchip Technology Inc. DS60001402H-page 301  2016-2021 Microchip Technology Inc. The timer source for each Input Capture module depends on the setting of the ICACLK bit in the CFGCON register and the C32 bit in the ICxCON register. The available configurations are shown in Table 18-1. TABLE 18-1: ICAPx TIMER SOURCE CONFIGURATIONS CFGCON ICxCON 0 0 0 1 1 0 ICAP[3-1] ICAP[6-4] ICAP[16-13] 1 0 0 0 1 1 0 1 1 0 0 0 1 ICAP[9-7] ICAP[12-10] DS60001402H-page 302 ICAP[16-13] 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 TIMER_x — TIMER_y 0x0000_TMR3 [15:0] 0x0000_TMR2 [15:0] — — TMR2 [31:0] --0x0000_TMR5 [15:0] TMR2 [31:0] — 0x0000_TMR4 [15:0] — — TMR4 [31:0] TMR4 [31:0] — — 0x0000_TMR3 [15:0] 0x0000_TMR2 [15:0] — — TMR2 [31:0] TMR2 [31:0] — — 0x0000_TMR3 [15:0] 0x0000_TMR2 [15:0] — — TMR2 [31:0] TMR2 [31:0] — — 0x0000_TMR3 [15:0] 0x0000_TMR2 [15:0] — — TMR2 [31:0] TMR2 [31:0] — — 0x0000_TMR7 [15:0] 0x0000_TMR6 [15:0] — — TMR6 [31:0] TMR6 [31:0] — — 0x0000_TMR3 [15:0] 0x0000_TMR2 [15:0] — — TMR2 [31:0] TMR2 [31:0] — — 0x0000_TMR9 [15:0] 0x0000_TMR8 [15:0] — — TMR8 [31:0] TMR8 [31:0] — — 0x0000_TMR3 [15:0] 0x0000_TMR2 [15:0] — — TMR2 [31:0] TMR2 [31:0] — — 0x0000_TMR3 [15:0] 0x0000_TMR2 [15:0] — — TMR2 [31:0] TMR2 [31:0] — ICxBUF CONTENT 0x0000_TMR3 [15:0] 0x0000_TMR2 [15:0] TMR2 [31:0] TMR2 [31:0] 0x0000_TMR5 [15:0] 0x0000_TMR4 [15:0] TMR4 [31:0] TMR4 [31:0] 0x0000_TMR3 [15:0] 0x0000_TMR2 [15:0] TMR2 [31:0] TMR2 [31:0] 0x0000_TMR3 [15:0] 0x0000_TMR2 [15:0] TMR2 [31:0] TMR2 [31:0] 0x0000_TMR3 [15:0] 0x0000_TMR2 [15:0] TMR2 [31:0] TMR2 [31:0] 0x0000_TMR7 [15:0] 0x0000_TMR6 [15:0] TMR6 [31:0] TMR6 [31:0] 0x0000_TMR3 [15:0] 0x0000_TMR2 [15:0] TMR2 [31:0] TMR2 [31:0] 0x0000_TMR9 [15:0] 0x0000_TMR8 [15:0] TMR8 [31:0] TMR8 [31:0] 0x0000_TMR3 [15:0] 0x0000_TMR2 [15:0] TMR2 [31:0] TMR2 [31:0] 0x0000_TMR3 [15:0] 0x0000_TMR2 [15:0] TMR2 [31:0] TMR2 [31:0] PIC32MK GP/MC Family 1 ICxCON 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Input Capture Control Registers INPUT CAPTURE 1 THROUGH INPUT CAPTURE 9 REGISTER MAP 2000 IC1CON(1) 31:16 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 — — — — — — — — — — — — — — — — All Resets Bit Range Bits Register Name Virtual Address BF82_# TABLE 18-2: 0000  2016-2021 Microchip Technology Inc. 15:0 ON — SIDL — — — FEDGE C32 ICTMR ICI ICOV ICBNE ICM 0000 31:16 xxxx IC1BUF IC1BUF 2010 15:0 xxxx — — — — — — — — — — — — — — — — 0000 (1) 31:16 2200 IC2CON 15:0 ON — SIDL — — — FEDGE C32 ICTMR ICI ICOV ICBNE ICM 0000 31:16 xxxx IC2BUF IC2BUF 2210 15:0 xxxx 31:16 — — — — — — — — — — — — — — — — 0000 2400 IC3CON(1) 15:0 ON — SIDL — — — FEDGE C32 ICTMR ICI ICOV ICBNE ICM 0000 31:16 xxxx IC3BUF IC3BUF 2410 15:0 xxxx 31:16 — — — — — — — — — — — — — — — — 0000 (1) 2600 IC4CON 15:0 ON — SIDL — — — FEDGE C32 ICTMR ICI ICOV ICBNE ICM 0000 31:16 xxxx IC4BUF IC4BUF 2610 15:0 xxxx 31:16 — — — — — — — — — — — — — — — — 0000 2800 IC5CON(1) 15:0 ON — SIDL — — — FEDGE C32 ICTMR ICI ICOV ICBNE ICM 0000 31:16 xxxx IC5BUF IC5BUF 2810 15:0 xxxx — — — — — — — — — — — — — — — — 0000 (1) 31:16 2A00 IC6CON 15:0 ON — SIDL — — — FEDGE C32 ICTMR ICI ICOV ICBNE ICM 0000 31:16 xxxx IC6BUF IC6BUF 2A10 15:0 xxxx 31:16 — — — — — — — — — — — — — — — — 0000 2C00 IC7CON(1) 15:0 ON — SIDL — — — FEDGE C32 ICTMR ICI ICOV ICBNE ICM 0000 31:16 xxxx IC7BUF 2C10 IC7BUF 15:0 xxxx — — — — — — — — — — — — — — — — 0000 (1) 31:16 2E00 IC8CON 15:0 ON — SIDL — — — FEDGE C32 ICTMR ICI ICOV ICBNE ICM 0000 31:16 xxxx IC8BUF IC8BUF 2E10 15:0 xxxx 31:16 — — — — — — — — — — — — — — — — 0000 3000 IC9CON(1) 15:0 ON — SIDL — — — FEDGE C32 ICTMR ICI ICOV ICBNE ICM 0000 31:16 xxxx IC9BUF IC9BUF 3010 15:0 xxxx Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: This register has corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family DS60001402H-page 303 18.1 Virtual Address BF84_# 3210 IC10BUF 3400 IC11CON(1) IC11BUF 3600 IC12CON 3610 (1) IC12BUF 3800 IC13CON (1) IC13BUF 3A00 IC14CON(1) 3A10 IC14BUF 3C00 IC15CON (1) 3C10 IC15BUF 3E00 IC16CON(1) 3E10 IC16BUF 30/14 29/13 28/12 27/11 26/10 31:16 — 15:0 ON 25/9 — — — — — — — SIDL — — — FEDGE 31:16 24/8 23/7 22/6 21/5 — — — — C32 ICTMR 31:16 — — — — — — — — — 15:0 ON — SIDL — — — FEDGE C32 ICTMR 31:16 18/2 — — — ICOV ICBNE 17/1 16/0 — — ICM 31:16 — — — — — — — — — 15:0 ON — SIDL — — — FEDGE C32 ICTMR 31:16 xxxx xxxx — — ICI — — ICOV ICBNE — — — ICM 31:16 — — — — — — — — — 15:0 ON — SIDL — — — FEDGE C32 ICTMR 31:16 xxxx xxxx — — ICI — — ICOV ICBNE — — — ICM 31:16 — — — — — — — — — 15:0 ON — SIDL — — — FEDGE C32 ICTMR 31:16 xxxx xxxx — — ICI — — ICOV ICBNE — — — ICM 31:16 — — — — — — — — — 15:0 ON — SIDL — — — FEDGE C32 ICTMR 31:16 xxxx xxxx — — ICI — — ICOV ICBNE — — — ICM 31:16 — — — — — — — — — 15:0 ON — SIDL — — — FEDGE C32 ICTMR IC16BUF 0000 0000 xxxx xxxx — — ICI — — ICOV ICBNE — — — ICM 0000 0000 xxxx IC15BUF 15:0 0000 0000 IC14BUF 15:0 0000 0000 IC13BUF 15:0 0000 0000 IC12BUF 15:0 0000 0000 IC11BUF 15:0 15:0 19/3 IC10BUF 15:0 31:16 ICI 20/4 xxxx — — ICI — — ICOV ICBNE — — ICM — 0000 0000 xxxx xxxx DS60001402H-page 304 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: This register has corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family 3810 31/15 All Resets Bit Range 3200 IC10CON(1) 3410 INPUT CAPTURE 10 THROUGH INPUT CAPTURE 16 REGISTER MAP Bits Register Name  2016-2021 Microchip Technology Inc. TABLE 18-3: PIC32MK GP/MC Family ICXCON: INPUT CAPTURE ‘x’ CONTROL REGISTER (‘x’ = 1-16) Bit Range Bit 31/23/15/7 Bit 30/22/14/6 U-0 U-0 U-0 U-0 U-0 — — — — — U-0 U-0 U-0 U-0 U-0 31:24 23:16 15:8 7:0 Bit Bit Bit Bit 29/21/13/5 28/20/12/4 27/19/11/3 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 — — — U-0 U-0 U-0 — — — — — — — — R/W-0 U-0 R/W-0 U-0 U-0 U-0 R/W-0 R/W-0 — SIDL — — — FEDGE C32 R/W-0 R/W-0 R-0 R-0 R/W-0 R/W-0 R/W-0 ICOV ICBNE ON R/W-0 (1) ICTMR ICI ICM Legend: R = Readable bit W = Writable bit -n = Bit Value at POR: (‘0’, ‘1’, x = unknown) U = Unimplemented bit P = Programmable bit r = Reserved bit bit 31-16 Unimplemented: Read as ‘0’ bit 15 ON: Input Capture Module Enable bit 1 = Module enabled 0 = Disable and reset module, disable clocks, disable interrupt generation and allow SFR modifications bit 14 Unimplemented: Read as ‘0’ bit 13 SIDL: Stop in Idle Control bit 1 = Halt in CPU Idle mode 0 = Continue to operate in CPU Idle mode bit 12-10 Unimplemented: Read as ‘0’ bit 9 FEDGE: First Capture Edge Select bit (only used in mode 6, ICM = 110) 1 = Capture rising edge first 0 = Capture falling edge first bit 8 C32: 32-bit Capture Select bit 1 = 32-bit timer resource capture 0 = 16-bit timer resource capture bit 7 ICTMR: Timer Select bit (Does not affect timer selection when C32 (ICxCON) is ‘1’)(1) 0 = Timery is the counter source for capture 1 = Timerx is the counter source for capture bit 6-5 ICI: Interrupt Control bits 11 = Interrupt on every fourth capture event 10 = Interrupt on every third capture event 01 = Interrupt on every second capture event 00 = Interrupt on every capture event bit 4 ICOV: Input Capture Overflow Status Flag bit (read-only) 1 = Input capture overflow occurred 0 = No input capture overflow occurred bit 3 ICBNE: Input Capture Buffer Not Empty Status bit (read-only) 1 = Input capture buffer is not empty; at least one more capture value can be read 0 = Input capture buffer is empty Note 1: Refer to Table 18-1 for Timerx and Timery selections.  2016-2021 Microchip Technology Inc. DS60001402H-page 305 PIC32MK GP/MC Family ICXCON: INPUT CAPTURE ‘x’ CONTROL REGISTER (‘x’ = 1-16) (CONTINUED) bit 2-0 Note 1: ICM: Input Capture Mode Select bits 111 = Interrupt-Only mode (only supported while in Sleep mode or Idle mode) 110 = Simple Capture Event mode – every edge, specified edge first and every edge thereafter 101 = Prescaled Capture Event mode – every sixteenth rising edge 100 = Prescaled Capture Event mode – every fourth rising edge 011 = Simple Capture Event mode – every rising edge 010 = Simple Capture Event mode – every falling edge 001 = Edge Detect mode – every edge (rising and falling) 000 = Input Capture module is disabled Refer to Table 18-1 for Timerx and Timery selections. DS60001402H-page 306  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family NOTES:  2016-2021 Microchip Technology Inc. DS60001402H-page 307 PIC32MK GP/MC Family 19.0 Note: OUTPUT COMPARE When a match occurs, the Output Compare module generates an event based on the selected mode of operation. This data sheet summarizes the features of the PIC32MK GP/MC family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 16. “Output Compare” (DS60001111), which is available from the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). The following are some of the key features of the Output Compare: • Multiple Output Compare modules in a device • Programmable interrupt generation on compare event • Single and Dual Compare modes • Single and continuous output pulse generation • Pulse-Width Modulation (PWM) mode • Hardware-based PWM Fault detection and automatic output disable • Programmable selection of 16-bit or 32-bit time bases • Can operate from either of two available 16-bit time bases or a single 32-bit time base • ADC event trigger for OC1 through OC4 The Output Compare module is used to generate a single pulse or a train of pulses in response to selected time base events. For all modes of operation, the Output Compare module compares the values stored in the OCxR and/or the OCxRS registers to the value in the selected timer. FIGURE 19-1: OUTPUT COMPARE MODULE BLOCK DIAGRAM Set Flag bit OCxIF(1) OCxRS(1) Trigger to ADC(4) Output Logic OCxR(1) 3 OCM Mode Select Comparator 0 16/32 PBCLKx (‘x’ = 2, 3)(5) Timerx(3) 1 OCTSEL 0 S R Output Enable Q OCx(1) Output Enable Logic OCFA or OCFB(2) 1 16/32 Timery(3) Timerx(3) Rollover Timery(3) Rollover Note 1: Where ‘x’ is shown, reference is made to the registers associated with the respective output compare channels, 1 through 9. 2: The OCFA pin controls the OCMP1-OCMP3, OCMP7-OCMP9, and OCMP13-OCMP15 channels. The OCFB pin controls the OCMP4-OCMP6, OCMP10-OCMP12, and OCMP16 channels. 3: Refer to Table 19-1 for Timerx and Timery selections. 4: The ADC event trigger is only available on OC1 through OC4. 5: PBCLK2 = Output Compare 1 through Output Compare 9; PBCLK3 = Output Compare 10 through Output Compare 16. DS60001402H-page 308  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family The timer source for each Output Compare module depends on the setting of the OCACLK bit in the CFGCON register, the OC32 bit in the OCxCON register, and the OCTSEL bit in the OCxCON register. The available configurations are shown in Table 19-1. TABLE 19-1: OCx OC1-OC3 TIMER SOURCE CONFIGURATIONS OCACLK OC32 OCTSEL CFGCON (OCxCON OCxCON 0 0 1 1 OC4-OC6, OC13-OC16 0 0 1 1 OC7-OC9 0 0 1 1 OC10-OC12 0 0 1 1  2016-2021 Microchip Technology Inc. 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Output Compare Timerx Timery TMR2 — TMR2 1 — TMR3 TMR3 0 TMR2 — TMR2 1 — TMR2 TMR2 0 TMR4 — TMR4 1 — TMR5 TMR5 0 TMR4 — TMR4 1 — TMR4 TMR4 0 TMR2 — TMR2 1 — TMR3 TMR3 0 TMR2 — TMR2 1 — TMR2 TMR2 0 TMR2 — TMR2 1 — TMR3 TMR3 0 TMR2 — TMR2 1 — TMR2 TMR2 0 TMR2 — TMR2 1 — TMR3 TMR3 0 TMR2 — TMR2 1 — TMR2 TMR2 0 TMR6 — TMR6 1 — TMR7 TMR7 0 TMR6 — TMR6 1 — TMR6 TMR6 0 TMR2 — TMR2 1 — TMR3 TMR3 0 TMR2 — TMR2 1 — TMR2 TMR2 0 TMR8 — TMR8 1 — TMR9 TMR9 0 TMR8 — TMR8 1 — TMR8 TMR8 0 Timer Source DS60001402H-page 309 Output Compare Control Registers TABLE 19-2: 4020 4200 4210 4220 4400 4420 OC3RS 4600 OC4CON 4610 OC4R 4620 OC4RS 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 — ON — — — SIDL — — — — — — — — — — — — — — — OC32 — OCFLT — OCTSEL — — OCM — — — — OC32 — OCFLT — OCTSEL — — OCM — — — — OC32 — OCFLT — OCTSEL — — OCM — — — — OC32 — OCFLT — OCTSEL — — OCM — OC1R OC1RS — ON — — — SIDL — — — — — — — — 31:16 15:0 — — OC2R OC2RS — ON — — — SIDL — — — — — — — — — — — — OC3R 31:16 15:0 31:16 15:0 31:16 15:0 — — OC3RS — ON — — — SIDL — — — — — — — — — — — — OC4R OC4RS 31:16 — — — — — — — — — — — — — — — — 15:0 ON — SIDL — — — — — — — OC32 OCFLT OCTSEL OCM 31:16 4810 OC5R OC5R 15:0 31:16 4820 OC5RS OC5RS 15:0 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. 4800 DS60001402H-page 310 0000 0000 xxxx xxxx xxxx xxxx 0000 0000 xxxx xxxx xxxx xxxx 0000 0000 xxxx xxxx xxxx xxxx 0000 0000 xxxx xxxx xxxx xxxx 0000 0000 xxxx xxxx xxxx xxxx OC5CON PIC32MK GP/MC Family 4410 31:16 15:0 31:16 OC1R 15:0 31:16 OC1RS 15:0 31:16 OC2CON 15:0 31:16 OC2R 15:0 31:16 OC2RS 15:0 31:16 OC3CON 15:0 31:16 OC3R 15:0 31/15 All Resets OC1CON Bit Range Register Name(1) 4000 4010 OUTPUT COMPARE 1 THROUGH OUTPUT COMPARE 9 REGISTER MAP Bits Virtual Address BF82_#  2016-2021 Microchip Technology Inc. 19.1 31:16 15:0 31:16 4A10 OC6R 15:0 31:16 4A20 OC6RS 15:0 31:16 4C00 OC7CON 15:0 31:16 4C10 OC7R 15:0 31:16 4C20 OC7RS 15:0 31:16 4E00 OC8CON 15:0 31:16 4E10 OC8R 15:0 4A00 OC6CON 4E20 OC8RS 31:16 15:0 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 — ON — — — SIDL — — — — — — — — — — — — — — — OC32 — OCFLT — OCTSEL — — OCM — — — — OC32 — OCFLT — OCTSEL — — OCM — — — — OC32 — OCFLT — OCTSEL — — OCM — OC6R OC6RS — ON — — — SIDL — — — — — — — — — — — — OC7R OC7RS — ON — — — SIDL — — — — — — — — — — — — OC8R OC8RS All Resets Bit Range Bits Register Name(1) Virtual Address BF82_# OUTPUT COMPARE 1 THROUGH OUTPUT COMPARE 9 REGISTER MAP (CONTINUED) 0000 0000 xxxx xxxx xxxx xxxx 0000 0000 xxxx xxxx xxxx xxxx 0000 0000 xxxx xxxx xxxx xxxx 0000 0000 xxxx xxxx 31:16 — — — — — — — — — — — — — — — — 15:0 ON — SIDL — — — — — — — OC32 OCFLT OCTSEL OCM 31:16 5010 OC9R OC9R 15:0 31:16 5020 OC9RS OC9RS xxxx 15:0 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. 5000 OC9CON PIC32MK GP/MC Family DS60001402H-page 311 TABLE 19-2:  2016-2021 Microchip Technology Inc. 5210 OC10R OC10RS 5400 OC11CON 5410 OC11R 5600 OC12CON OC12R 28/12 27/11 26/10 25/9 24/8 23/7 22/6 31:16 — 15:0 ON — — — — — — — — — — — SIDL — — — — — — — OC32 31:16 5810 OC13R OC13RS 5A00 OC14CON DS60001402H-page 312 5A10 OC14R OC14RS 21/5 20/4 19/3 18/2 — — — OCFLT OCTSEL 31:16 0000 xxxx xxxx — — — — — — — — — — — — 15:0 ON — SIDL — — — — — — — OC32 OCFLT OCTSEL 31:16 — — — OCM xxxx xxxx xxxx OC11RS xxxx 31:16 — — — — — — — — — — — — — 15:0 ON — SIDL — — — — — — — OC32 OCFLT OCTSEL 31:16 — — — OCM xxxx xxxx xxxx OC12RS xxxx 31:16 — — — — — — — — — — — — — 15:0 ON — SIDL — — — — — — — OC32 OCFLT OCTSEL 31:16 — — — OCM 31:16 xxxx xxxx xxxx OC13RS 15:0 xxxx 31:16 — — — — — — — — — — — — — 15:0 ON — SIDL — — — — — — — OC32 OCFLT OCTSEL OC14R OC14RS 0000 0000 OC13R 15:0 0000 0000 OC12R 15:0 0000 0000 OC11R 15:0 0000 xxxx — 15:0 — xxxx 31:16 31:16 — OCM OC10RS 15:0 15:0 16/0 OC10R 15:0 31:16 17/1 All Resets 29/13 31:16 OC12RS 15:0 5800 OC13CON 5A20 30/14 — — OCM — 0000 0000 xxxx xxxx xxxx xxxx Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family 5610 5820 31/15 31:16 OC11RS 15:0 5420 5620 Bit Range Register Name(1) 5200 OC10CON 5220 OUTPUT COMPARE 10 THROUGH OUTPUT COMPARE 16 REGISTER MAP Bits Virtual Address BF84_#  2016-2021 Microchip Technology Inc. TABLE 19-3: 5C10 OC15R OC15RS 5E00 OC16CON 5E10 5E20 OC16R 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 31:16 — 15:0 ON — — — — — — — — — — — SIDL — — — — — — — OC32 31:16 21/5 20/4 19/3 18/2 — — — OCFLT OCTSEL 31:16 — 0000 xxxx xxxx xxxx — — — — — — — — — — — — — 15:0 ON — SIDL — — — — — — — OC32 OCFLT OCTSEL OC16R OC16RS 0000 xxxx 31:16 31:16 OC16RS 15:0 — OCM OC15RS 15:0 15:0 16/0 OC15R 15:0 31:16 17/1 All Resets Bit Range Register Name(1) Virtual Address BF84_# Bits 5C00 OC15CON 5C20 OUTPUT COMPARE 10 THROUGH OUTPUT COMPARE 16 REGISTER MAP (CONTINUED) — — OCM — 0000 0000 xxxx xxxx xxxx Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family DS60001402H-page 313 TABLE 19-3:  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 19-1: Bit Range 31:24 23:16 15:8 7:0 OCxCON: OUTPUT COMPARE ‘x’ CONTROL REGISTER (‘x’ = 1-16) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 U-0 R/W-0 U-0 U-0 U-0 U-0 U-0 ON — SIDL — — — — — U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 — — OC32 R-0, HS, HC (1) OCFLT OCTSEL(2) OCM Legend: HS = Set in hardware HC = Cleared by hardware 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 31-16 Unimplemented: Read as ‘0’ bit 15 ON: Output Compare Peripheral On bit 1 = Output Compare peripheral is enabled 0 = Output Compare peripheral is disabled bit 14 Unimplemented: Read as ‘0’ bit 13 SIDL: Stop in Idle Mode bit 1 = Discontinue operation when CPU enters Idle mode 0 = Continue operation in Idle mode bit 12-6 Unimplemented: Read as ‘0’ bit 5 OC32: 32-bit Compare Mode bit 1 = OCxR and/or OCxRS are used for comparisons to the 32-bit timer source 0 = OCxR and OCxRS are used for comparisons to the 16-bit timer source bit 4 OCFLT: PWM Fault Condition Status bit(1) 1 = PWM Fault condition has occurred (cleared in HW only) 0 = No PWM Fault condition has occurred bit 3 OCTSEL: Output Compare Timer Select bit(2) 1 = Timery is the clock source for this Output Compare module 0 = Timerx is the clock source for this Output Compare module bit 2-0 OCM: Output Compare Mode Select bits 111 = PWM mode on OCx; Fault pin enabled 110 = PWM mode on OCx; Fault pin disabled 101 = Initialize OCx pin low; generate continuous output pulses on OCx pin 100 = Initialize OCx pin low; generate single output pulse on OCx pin 011 = Compare event toggles OCx pin 010 = Initialize OCx pin high; compare event forces OCx pin low 001 = Initialize OCx pin low; compare event forces OCx pin high 000 = Output compare peripheral is disabled but continues to draw current Note 1: 2: This bit is only used when OCM = ‘111’. It is read as ‘0’ in all other modes. Refer to Table 19-1 for Timerx and Timery selections. DS60001402H-page 314  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family NOTES:  2016-2021 Microchip Technology Inc. DS60001402H-page 315 PIC32MK GP/MC Family The SPI/I2S module is compatible with Motorola® SPI and SIOP interfaces. 20.0 SERIAL PERIPHERAL INTERFACE (SPI) AND INTER-IC SOUND (I2S) Note: The following are some of the key features of the SPI module: This data sheet summarizes the features of the PIC32MK GP/MC family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 23. “Serial Peripheral Interface (SPI)” (DS60001106), which is available from the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). • • • • • Host and Client modes support Four different clock formats Enhanced Framed SPI protocol support User-configurable 32/24/16/8-bit data width Separate SPI FIFO buffers for receive and transmit - FIFO buffers act as 4/8/16-level deep FIFOs based on 32/24/16/8-bit data width • Programmable interrupt event on every 8-bit,  16-bit and 32-bit data transfer • Operation during Sleep and Idle modes • Audio codec support: - I2S protocol - Left-justified - Right-justified - PCM The SPI/I2S module is a synchronous serial interface that is useful for communicating with external peripherals and other microcontroller devices, as well as digital audio devices. These peripheral devices may be Serial EEPROMs, Shift registers, display drivers, analog-to-digital converters (ADC), etc. SPI/I2S MODULE BLOCK DIAGRAM FIGURE 20-1: Internal Data Bus SPIxBUF Read Write SPIxRXB FIFO FIFOs Share Address SPIxBUF SPIxTXB FIFO Transmit Receive SPIxSR SDIx bit 0 SDOx SSx/FSYNC Client Select and Frame Sync Control Shift Control Clock Control MCLKSEL Edge Select SCKx REFCLKO1 Baud Rate Generator PBCLK2 (SPI1-SPI2) PBCLK3 (SPI3-SPI6) MSTEN Note: Access SPIxTXB and SPIxRXB FIFOs via SPIxBUF register. DS60001402H-page 316  2016-2021 Microchip Technology Inc. SPI Control Registers SPI1 AND SPI2 REGISTER MAP 7000 SPI1CON 7010 SPI1STAT 7020 SPI1BUF 7030 SPI1BRG 7040 SPI1CON2 7200 SPI2CON 7210 SPI2STAT 7220 SPI2BUF 7230 SPI2BRG 7240 SPI2CON2 31/15 30/14 29/13 28/12 27/11 31:16 FRMEN FRMSYNC FRMPOL MSSEN FRMSYPW 15:0 ON — SIDL DISSDO MODE32 31:16 — — — 15:0 — — — 26/10 25/9 24/8 FRMCNT MODE16 SMP 23/7 SPIBUSY — — 20/4 — — — SSEN CKP MSTEN DISSDI — — — SRMT SPIROV SPIRBE SPITUR 31:16 21/5 MCLKSEL CKE RXBUFELM FRMERR 22/6 19/3 18/2 17/1 — — SPIFE STXISEL 16/0 ENHBUF 0000 SRXISEL TXBUFELM — SPITBE — 31:16 — — — 15:0 — — — 31:16 — — — — — — — FRM ERREN SPI ROVEN SPI TUREN 31:16 FRMEN FRMSYNC FRMPOL MSSEN FRMSYPW DISSDO MODE32 SPI 15:0 SGNEXT — 15:0 ON — SIDL 31:16 — — — 15:0 — — — — — — — — SPIRBF 0028 0000 0000 — — — — — — — — — — — — — — — — BRG — IGNROV — MODE16 SMP — AUDEN — — — — — — — SSEN CKP MSTEN DISSDI — — — SRMT SPIROV SPIRBE CKE SPIBUSY — — 31:16 SPITUR AUDMOD SPIFE STXISEL SRXISEL TXBUFELM — SPITBE — 31:16 — — — 15:0 — — — 31:16 — — — — — — — FRM ERREN SPI ROVEN SPI TUREN SPI 15:0 SGNEXT — — — — — — — IGNROV — IGNTUR — AUDEN 0C00 0000 0000 SPITBF SPIRBF 0028 0000 0000 — — — — — — — — — — — — — — AUD MONO — BRG — 0000 ENHBUF 0000 DATA 15:0 0000 0000 MCLKSEL RXBUFELM FRMERR — AUD MONO IGNTUR FRMCNT 0000 0000 SPITBF DATA 15:0 All Resets Bit Range Bits Register Name(1) Virtual Address (BF82_#) TABLE 20-1: — — 0000 0000 — AUDMOD 0000 0C00  2016-2021 Microchip Technology Inc. Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table except SPIxBUF have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family DS60001402H-page 317 20.1 SPI3 THROUGH SPI6 REGISTER MAP 7400 SPI3CON 7410 SPI3STAT 7420 SPI3BUF 7430 SPI3BRG 7440 SPI3CON2 7600 SPI4CON 7610 SPI4STAT 7630 SPI4BRG 7640 SPI4CON2 7800 SPI5CON 7810 SPI5STAT 7820 SPI5BUF DS60001402H-page 318 7830 SPI5BRG 7840 SPI5CON2 30/14 29/13 28/12 27/11 31:16 FRMEN FRMSYNC FRMPOL MSSEN FRMSYPW 15:0 ON — SIDL DISSDO MODE32 31:16 — — — 15:0 — — — 26/10 25/9 24/8 FRMCNT MODE16 SMP 23/7 SPIBUSY — — 20/4 — — — SSEN CKP MSTEN DISSDI — — — SRMT SPIROV SPIRBE SPITUR 31:16 21/5 MCLKSEL CKE RXBUFELM FRMERR 22/6 19/3 18/2 17/1 — — SPIFE STXISEL 16/0 ENHBUF 0000 SRXISEL TXBUFELM — SPITBE — 31:16 — — — 15:0 — — — 31:16 — — — — — — — FRM ERREN SPI ROVEN SPI TUREN 31:16 FRMEN FRMSYNC FRMPOL MSSEN FRMSYPW DISSDO MODE32 SPI 15:0 SGNEXT — 15:0 ON — SIDL 31:16 — — — 15:0 — — — — — — — — SPIRBF 0028 0000 0000 — — — — — — — — — — — — — — — — BRG — IGNROV — MODE16 — SMP AUDEN — — — — — — — SSEN CKP MSTEN DISSDI — — — SRMT SPIROV SPIRBE CKE SPIBUSY — — SPITUR 31:16 AUDMOD SPIFE STXISEL SRXISEL TXBUFELM — SPITBE — 31:16 — — — 15:0 — — — 31:16 — — — — — — — FRM ERREN SPI ROVEN SPI TUREN 31:16 FRMEN FRMSYNC FRMPOL MSSEN FRMSYPW 15:0 ON — SIDL DISSDO MODE32 31:16 — — — 15:0 — — — SPI 15:0 SGNEXT — — — — — — IGNROV SPIRBF 0028 0000 — FRMCNT MODE16 SMP — IGNTUR — — — — — — — — — — — — — AUD MONO SPIBUSY — — 31:16 — — — — — — — — SSEN CKP MSTEN DISSDI — — — SRMT SPIROV SPIRBE SPITUR AUDMOD SPIFE STXISEL TXBUFELM — SPITBE — 31:16 — — — — — — — — — 15:0 — — — 31:16 — — — — — — — — — 15:0 SPI SGNEXT — — FRM ERREN SPI ROVEN SPI TUREN IGNROV IGNTUR AUDEN 0000 0C00 ENHBUF 0000 SRXISEL 0000 0000 SPITBF SPIRBF 0028 0000 DATA 15:0 0000 0000 MCLKSEL RXBUFELM FRMERR — AUDEN CKE 0000 0000 — — 0C00 0000 SPITBF BRG — 0000 ENHBUF 0000 DATA 15:0 0000 0000 MCLKSEL RXBUFELM FRMERR — AUD MONO IGNTUR FRMCNT 0000 0000 SPITBF DATA 15:0 All Resets 31/15 0000 — — — — — — — — — — — — — — — — — AUD MONO — BRG 0000 0000 AUDMOD 0000 0C00 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table except SPIxBUF have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family 7620 SPI4BUF Bit Range Bits Register Name(1) Virtual Address (BF84_#)  2016-2021 Microchip Technology Inc. TABLE 20-2: 7A00 SPI6CON 7A10 SPI6STAT 7A20 SPI6BUF 7A30 SPI6BRG 7A40 SPI6CON2 31/15 30/14 29/13 28/12 27/11 31:16 FRMEN FRMSYNC FRMPOL MSSEN FRMSYPW 15:0 ON — SIDL DISSDO MODE32 31:16 — — — 15:0 — — — 26/10 25/9 24/8 FRMCNT MODE16 SMP 23/7 SPIBUSY — — 31:16 21/5 20/4 MCLKSEL — — — SSEN CKP MSTEN DISSDI — — — SRMT SPIROV SPIRBE CKE RXBUFELM FRMERR 22/6 SPITUR 19/3 18/2 17/1 — — SPIFE STXISEL 16/0 ENHBUF 0000 SRXISEL TXBUFELM — SPITBE — 31:16 — — — 15:0 — — — 31:16 — — — — — — — FRM ERREN SPI ROVEN SPI TUREN SPI 15:0 SGNEXT — — — — — — — SPIRBF 0028 0000 0000 — — — — — — — — — — — — — — AUD MONO — BRG — IGNROV — IGNTUR — AUDEN 0000 0000 SPITBF DATA 15:0 All Resets Bit Range Bits Register Name(1) Virtual Address (BF84_#) SPI3 THROUGH SPI6 REGISTER MAP (CONTINUED) — — 0000 0000 — AUDMOD 0000 0C00 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table except SPIxBUF have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family DS60001402H-page 319 TABLE 20-2:  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 20-1: Bit Range 31:24 23:16 15:8 7:0 SPIxCON: SPI CONTROL REGISTER (x=1-6) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 FRMEN FRMSYNC FRMPOL MSSEN FRMSYPW Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 FRMCNT R/W-0 U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0 MCLKSEL(1) — — — — — SPIFE ENHBUF(1) R/W-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 ON — SIDL DISSDO(4) MODE32 MODE16 SMP CKE(2) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 SSEN CKP(3) MSTEN DISSDI(4) Legend: R = Readable bit -n = Value at POR W = Writable bit ‘1’ = Bit is set STXISEL SRXISEL U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31 FRMEN: Framed SPI Support bit 1 = Framed SPI support is enabled (The SSx pin used as FSYNC input/output) 0 = Framed SPI support is disabled bit 30 FRMSYNC: Frame Sync Pulse Direction Control on the SSx pin bit (Framed SPI mode only) 1 = Frame sync pulse input (Client mode) 0 = Frame sync pulse output (Host mode) bit 29 FRMPOL: Frame Sync/Client Select Polarity bit (Framed SPI or Host Transmit modes only) 1 = Frame pulse or the SSx pin is active-high 0 = Frame pulse or the SSx pin is active-low bit 28 MSSEN: Host Mode Client Select Enable bit 1 = Client select SPI support enabled. The SS pin is automatically driven during transmission in  Host mode. Polarity is determined by the FRMPOL bit. 0 = Client select SPI support is disabled. bit 27 FRMSYPW: Frame Sync Pulse Width bit 1 = Frame sync pulse is one character wide 0 = Frame sync pulse is one clock wide bit 26-24 FRMCNT: Frame Sync Pulse Counter bits Controls the number of data characters transmitted per pulse. This bit is only valid in Framed mode. 111 = Reserved 110 = Reserved 101 = Generate a frame sync pulse on every 32 data characters 100 = Generate a frame sync pulse on every 16 data characters 011 = Generate a frame sync pulse on every 8 data characters 010 = Generate a frame sync pulse on every 4 data characters 001 = Generate a frame sync pulse on every 2 data characters 000 = Generate a frame sync pulse on every data character bit 23 MCLKSEL: Host Clock Enable bit(1) 1 = REFCLKO1 is used by the Baud Rate Generator 0 = PBCLK2 is used by the Baud Rate Generator for SPI1 and SPI2 or PBCLK3 if SPI3 through SPI6 bit 22-18 Unimplemented: Read as ‘0’ Note 1: This bit can only be written when the ON bit = 0. Refer to 36.0 “Electrical Characteristics” for maximum clock frequency requirements. 2: This bit is not used in the Framed SPI mode. The user should program this bit to ‘0’ for the Framed SPI mode (FRMEN = 1). 3: When AUDEN = 1, the SPI/I2S module functions as if the CKP bit is equal to ‘1’, regardless of the actual value of the CKP bit. 4: This bit present for legacy compatibility and is superseded by PPS functionality on these devices (see 13.3 “Peripheral Pin Select (PPS)” for more information). DS60001402H-page 320  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 20-1: SPIxCON: SPI CONTROL REGISTER (CONTINUED)(x=1-6) bit 17 SPIFE: Frame Sync Pulse Edge Select bit (Framed SPI mode only) 1 = Frame synchronization pulse coincides with the first bit clock 0 = Frame synchronization pulse precedes the first bit clock bit 16 ENHBUF: Enhanced Buffer Enable bit(1) 1 = Enhanced Buffer mode is enabled 0 = Enhanced Buffer mode is disabled bit 15 ON: SPI/I2S Module On bit 1 = SPI/I2S module is enabled 0 = SPI/I2S module is disabled bit 14 Unimplemented: Read as ‘0’ bit 13 SIDL: Stop in Idle Mode bit 1 = Discontinue operation when CPU enters in Idle mode 0 = Continue operation in Idle mode bit 12 DISSDO: Disable SDOx pin bit(4) 1 = SDOx pin is not used by the module. Pin is controlled by associated PORT register 0 = SDOx pin is controlled by the module bit 11-10 MODE: 32/16-Bit Communication Select bits When AUDEN = 1: MODE32 MODE16 Communication 1 1 24-bit Data, 32-bit FIFO, 32-bit Channel/64-bit Frame 1 0 32-bit Data, 32-bit FIFO, 32-bit Channel/64-bit Frame 0 1 16-bit Data, 16-bit FIFO, 32-bit Channel/64-bit Frame 0 0 16-bit Data, 16-bit FIFO, 16-bit Channel/32-bit Frame When AUDEN = 0: MODE32 MODE16 Communication 1 x 32-bit 0 1 16-bit 0 0 8-bit SMP: SPI Data Input Sample Phase bit Host mode (MSTEN = 1): 1 = Input data sampled at end of data output time 0 = Input data sampled at middle of data output time Client mode (MSTEN = 0): SMP value is ignored when SPI is used in Client mode. The module always uses SMP = 0. CKE: SPI Clock Edge Select bit(2) 1 = Serial output data changes on transition from active clock state to Idle clock state (see CKP bit) 0 = Serial output data changes on transition from Idle clock state to active clock state (see CKP bit) SSEN: Client Select Enable (Client mode) bit 1 = SSx pin used for Client mode 0 = SSx pin not used for Client mode, pin controlled by port function. CKP: Clock Polarity Select bit(3) 1 = Idle state for clock is a high level; active state is a low level 0 = Idle state for clock is a low level; active state is a high level bit 9 bit 8 bit 7 bit 6 Note 1: 2: 3: 4: This bit can only be written when the ON bit = 0. Refer to 36.0 “Electrical Characteristics” for maximum clock frequency requirements. This bit is not used in the Framed SPI mode. The user should program this bit to ‘0’ for the Framed SPI mode (FRMEN = 1). When AUDEN = 1, the SPI/I2S module functions as if the CKP bit is equal to ‘1’, regardless of the actual value of the CKP bit. This bit present for legacy compatibility and is superseded by PPS functionality on these devices (see 13.3 “Peripheral Pin Select (PPS)” for more information).  2016-2021 Microchip Technology Inc. DS60001402H-page 321 PIC32MK GP/MC Family REGISTER 20-1: bit 5 SPIxCON: SPI CONTROL REGISTER (CONTINUED)(x=1-6) MSTEN: Host Mode Enable bit 1 = Host mode 0 = Client mode DISSDI: Disable SDI bit(4) 1 = SDI pin is not used by the SPI module (pin is controlled by PORT function) 0 = SDI pin is controlled by the SPI module STXISEL: SPI Transmit Buffer Empty Interrupt Mode bits 11 = Interrupt is generated when the buffer is not full (has one or more empty elements) 10 = Interrupt is generated when the buffer is empty by one-half or more 01 = Interrupt is generated when the buffer is completely empty 00 = Interrupt is generated when the last transfer is shifted out of SPISR and transmit operations are  complete SRXISEL: SPI Receive Buffer Full Interrupt Mode bits 11 = Interrupt is generated when the buffer is full 10 = Interrupt is generated when the buffer is full by one-half or more 01 = Interrupt is generated when the buffer is not empty 00 = Interrupt is generated when the last word in the receive buffer is read (i.e., buffer is empty) bit 4 bit 3-2 bit 1-0 Note 1: 2: 3: 4: This bit can only be written when the ON bit = 0. Refer to 36.0 “Electrical Characteristics” for maximum clock frequency requirements. This bit is not used in the Framed SPI mode. The user should program this bit to ‘0’ for the Framed SPI mode (FRMEN = 1). When AUDEN = 1, the SPI/I2S module functions as if the CKP bit is equal to ‘1’, regardless of the actual value of the CKP bit. This bit present for legacy compatibility and is superseded by PPS functionality on these devices (see 13.3 “Peripheral Pin Select (PPS)” for more information). DS60001402H-page 322  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 20-2: Bit Range 31:24 23:16 15:8 7:0 SPIxCON2: SPI CONTROL REGISTER 2 (x=1-6) Bit 31/23/15/7 Bit Bit 30/22/14/6 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit Bit Bit 26/18/10/2 25/17/9/1 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — U-0 — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 U-0 U-0 R/W-0 R/W-1 R/W-1 R/W-0 R/W-0 SPISGNEXT — — FRMERREN SPIROVEN R/W-0 U-0 U-0 U-0 R/W-0 U-0 AUDEN(1) — — — AUDMONO(1,2) — Legend: R = Readable bit -n = Value at POR W = Writable bit ‘1’ = Bit is set SPITUREN IGNROV R/W-0 IGNTUR R/W-0 AUDMOD(1,2) U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31-16 Unimplemented: Read as ‘0’ bit 15 SPISGNEXT: Sign Extend Read Data from the RX FIFO bit 1 = Data from RX FIFO is sign extended 0 = Data from RX FIFO is not sign extended bit 14-13 Unimplemented: Read as ‘0’ bit 12 FRMERREN: Enable Interrupt Events via FRMERR bit 1 = Frame Error overflow generates error events 0 = Frame Error does not generate error events bit 11 SPIROVEN: Enable Interrupt Events via SPIROV bit 1 = Receive overflow generates error events 0 = Receive overflow does not generate error events bit 10 SPITUREN: Enable Interrupt Events via SPITUR bit 1 = Transmit Underrun Generates Error Events 0 = Transmit Underrun Does Not Generates Error Events bit 9 IGNROV: Ignore Receive Overflow bit (for Audio Data Transmissions) 1 = A ROV is not a critical error; during ROV data in the FIFO is not overwritten by receive data 0 = A ROV is a critical error which stop SPI operation bit 8 IGNTUR: Ignore Transmit Underrun bit (for Audio Data Transmissions) 1 = A TUR is not a critical error and zeros are transmitted until the SPIxTXB is not empty 0 = A TUR is a critical error which stop SPI operation bit 7 AUDEN: Enable Audio CODEC Support bit(1) 1 = Audio protocol enabled 0 = Audio protocol disabled bit 6-5 Unimplemented: Read as ‘0’ bit 3 AUDMONO: Transmit Audio Data Format bit(1,2) 1 = Audio data is mono (Each data word is transmitted on both left and right channels) 0 = Audio data is stereo bit 2 Unimplemented: Read as ‘0’ bit 1-0 AUDMOD: Audio Protocol Mode bit(1,2) 11 = PCM/DSP mode 10 = Right Justified mode 01 = Left Justified mode 00 = I2S mode Note 1: 2: This bit can only be written when the ON bit = 0. This bit is only valid for AUDEN = 1.  2016-2021 Microchip Technology Inc. DS60001402H-page 323 PIC32MK GP/MC Family REGISTER 20-3: Bit Range 31:24 23:16 15:8 7:0 SPIxSTAT: SPI STATUS REGISTER (x=1-6) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 R-0, HS, HC R-0, HS, HC R-0, HS, HC R-0, HS, HC R-0, HS, HC — — — U-0 U-0 U-0 — — — U-0 U-0 U-0 R/C-0, HS R-0, HS, HC U-0 U-0 R-0 — — — FRMERR SPIBUSY — — SPITUR R-0, HS, HC R/C-0, HS R-1, HS, HC U-0 R-1, HS, HC U-0 R-0, HS, HC R-0, HS, HC SRMT SPIROV SPIRBE — SPITBE — SPITBF SPIRBF Legend: RXBUFELM R-0, HS, HC R-0, HS, HC R-0, HS, HC R-0, HS, HC R-0, HS, HC TXBUFELM HC = Cleared in hardware HS = Set in hardware C = Clearable 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 31-29 Unimplemented: Read as ‘0’ bit 28-24 RXBUFELM: Receive Buffer Element Count bits (valid only when ENHBUF = 1) bit 23-21 Unimplemented: Read as ‘0’ bit 20-16 TXBUFELM: Transmit Buffer Element Count bits (valid only when ENHBUF = 1) bit 15-13 Unimplemented: Read as ‘0’ bit 12 FRMERR: SPI Frame Error status bit 1 = Frame error detected 0 = No Frame error detected This bit is only valid when FRMEN = 1. bit 11 SPIBUSY: SPI Activity Status bit 1 = SPI peripheral is currently busy with some transactions 0 = SPI peripheral is currently idle bit 10-9 Unimplemented: Read as ‘0’ bit 8 SPITUR: Transmit Under Run bit 1 = Transmit buffer has encountered an underrun condition 0 = Transmit buffer has no underrun condition This bit is only valid in Framed Sync mode; the underrun condition must be cleared by disabling/re-enabling the module. bit 7 SRMT: Shift Register Empty bit (valid only when ENHBUF = 1) 1 = When SPI module shift register is empty 0 = When SPI module shift register is not empty bit 6 SPIROV: Receive Overflow Flag bit 1 = A new data is completely received and discarded. The user software has not read the previous data in the SPIxBUF register. 0 = No overflow has occurred This bit is set in hardware; can only be cleared (= 0) in software. bit 5 SPIRBE: RX FIFO Empty bit (valid only when ENHBUF = 1) 1 = RX FIFO is empty (CRPTR = SWPTR) 0 = RX FIFO is not empty (CRPTR SWPTR) bit 4 Unimplemented: Read as ‘0’ DS60001402H-page 324  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 20-3: SPIxSTAT: SPI STATUS REGISTER (CONTINUED)(x=1-6) bit 3 SPITBE: SPI Transmit Buffer Empty Status bit 1 = Transmit buffer, SPIxTXB is empty 0 = Transmit buffer, SPIxTXB is not empty Automatically set in hardware when SPI transfers data from SPIxTXB to SPIxSR. Automatically cleared in hardware when SPIxBUF is written to, loading SPIxTXB. bit 2 Unimplemented: Read as ‘0’ bit 1 SPITBF: SPI Transmit Buffer Full Status bit 1 = Transmit not yet started, SPITXB is full 0 = Transmit buffer is not full Standard Buffer Mode: Automatically set in hardware when the core writes to the SPIBUF location, loading SPITXB. Automatically cleared in hardware when the SPI module transfers data from SPITXB to SPISR. Enhanced Buffer Mode: Set when CWPTR + 1 = SRPTR; cleared otherwise bit 0 SPIRBF: SPI Receive Buffer Full Status bit 1 = Receive buffer, SPIxRXB is full 0 = Receive buffer, SPIxRXB is not full Standard Buffer Mode: Automatically set in hardware when the SPI module transfers data from SPIxSR to SPIxRXB. Automatically cleared in hardware when SPIxBUF is read from, reading SPIxRXB. Enhanced Buffer Mode: Set when SWPTR + 1 = CRPTR; cleared otherwise  2016-2021 Microchip Technology Inc. DS60001402H-page 325 PIC32MK GP/MC Family REGISTER 20-4: Bit Range SPIxBUF: SPIx BUFFER REGISTER (‘x’ = 1-6) Bit 31/23/15/7 Bit 30/22/14/6 R/W-0 R/W-0 31:24 Bit Bit Bit Bit 29/21/13/5 28/20/12/4 27/19/11/3 26/18/10/2 R/W-0 R/W-0 R/W-0 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 DATA R/W-0 23:16 R/W-0 R/W-0 R/W-0 R/W-0 DATA R/W-0 15:8 R/W-0 R/W-0 R/W-0 R/W-0 DATA R/W-0 7:0 R/W-0 R/W-0 R/W-0 R/W-0 DATA 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 bit 31-0 DATA FIFO Data bits When MODE32 or MODE16 selects 32-bit data, the SPI uses DATA. When MODE32 or MODE16 selects 24-bit data, the SPI only uses DATA. When MODE32 or MODE16 selects 16-bit data, the SPI only uses DATA. When MODE32 or MODE16 selects 8-bit data, the SPI only uses DATA. REGISTER 20-5: Bit Range x = Bit is unknown SPIxBRG: SPIx BAUD RATE GENERATOR REGISTER (‘x’ = 1-6) Bit 31/23/15/7 Bit 30/22/14/6 U-0 U-0 31:24 23:16 15:8 7:0 Bit Bit Bit Bit 29/21/13/5 28/20/12/4 27/19/11/3 26/18/10/2 U-0 U-0 U-0 U-0 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 — — — R/W-0 R/W-0 R/W-0 BRG R/W-0 BRG 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 bit 31-13 Unimplemented: Read as ‘0’ bit 12-0 BRG Baud Rate Generator Divisor bits Baud Rate = FPBCLKx / (2 * (SPIxBRG + 1)), where x = 2 and 3, (FPBCLK2 for SPI1-SPI2, FPBCLK3 for SPI3-SPI6.) Therefore, the maximum baud rate possible is FPBCLKx / 2 (SPIXBRG = 0) and the minimum baud rate possible is FPBCLKx / 16384. Note: DS60001402H-page 326 Changing the BRG value when the ON bit is equal to ‘1’ causes undefined behavior.  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family NOTES:  2016-2021 Microchip Technology Inc. DS60001402H-page 327 PIC32MK GP/MC Family 21.0 INTER-INTEGRATED CIRCUIT (I2C) The I2C software library is available in MPLAB Harmony. If the user application is to implement I2C, for future device pin compatibility, it is recommended to assign software I2C functions according to the details provided in the device pin tables (Table 3 through Table 6): • For 64-pin packages, refer to Notes 6 and 7 in Table 3 and Table 4. • For 100-lead packages, refer to Notes 5 and 6 in Table 5 and Table 6. 21.1 Software I2C Performance Table 21-1 provides the performance details of the I2C. TABLE 21-1: I2C Baud Rate I2C PERFORMANCE I2C Transactions/ Second I2C CPU Utilization 22070 (continuous) 50.76% 16841 38.73% 4079 9.38% 400 kHz 429 0.99% 5581 (continuous) 12.84% 4077 9.38% 429 0.99% 100 kHz DS60001402H-page 328  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family NOTES:  2016-2021 Microchip Technology Inc. DS60001402H-page 329 PIC32MK GP/MC Family 22.0 UNIVERSAL ASYNCHRONOUS RECEIVER TRANSMITTER (UART) Note: This data sheet summarizes the features of the PIC32MK GP/MC family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 21. “Universal Asynchronous Receiver Transmitter (UART)” (DS60001107), which is available from the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). The UART module is one of the serial I/O modules available in PIC32MK GP/MC family devices. The UART is a full-duplex, asynchronous communication channel that communicates with peripheral devices and personal computers through protocols, such as RS-232, RS-485, LIN, and IrDA®. The module also supports the hardware flow control option, with UxCTS and UxRTS pins, and also includes an IrDA encoder and decoder. The following are key features of the UART module: • Ability to receive data during Sleep mode • Full-duplex, 8-bit or 9-bit data transmission • Even, Odd or No Parity options (for 8-bit data) • One or two Stop bits • Auto-baud support • Four clock source inputs for asynchronous clocking • Transmit and Receive (TX/RX) polarity control • Hardware flow control option • Fully integrated Baud Rate Generator (BRG) with 16-bit prescaler • Baud rates up to 30 Mbps • 8-level deep First-In-First-Out (FIFO) transmit data buffer • 8-level deep FIFO receive data buffer • Parity, framing and buffer overrun error detection • Support for interrupt-only on address detect  (9th bit = 1) • Separate transmit and receive interrupts • Loopback mode for diagnostic support • LIN Protocol support • IrDA encoder and decoder with 16x baud clock output for external IrDA encoder/decoder support Figure 22-1 illustrates a simplified block diagram of the UART module. FIGURE 22-1: UART SIMPLIFIED BLOCK DIAGRAM REFCLK1 11 FRC SYSCLK 10 01 PBCLKx(1) 00 Baud Rate Generator IrDA® CLKSEL (UxMODE) Hardware Flow Control UxRTS/BCLKx UxCTS UxRX UARTx Receiver UARTx Transmitter Note 1: UxTX ‘x’ = 2 for UART1 and UART2; ‘x’ = 3 for UART3 through UART6. DS60001402H-page 330  2016-2021 Microchip Technology Inc. UART Control Registers Virtual Address BF82_# TABLE 22-1: 8010 U1STA (1) 29/13 31:16 — — — 15:0 ON — SIDL 31:16 28/12 27/11 26/10 25/9 24/8 23/7 — — — — — SLPEN CKRDY — — — CLKSEL RUNOV 0000 IREN RTSMD — WAKE LPBACK ABAUD RXINV BRGH PDSEL STSEL UEN UTXISEL UTXINV URXEN UTXBRK UTXEN UTXBF TRMT — — — — — — — — — — — — — — — TX8 31:16 — — — — — — — — 15:0 — — — — — — — RX8 31:16 U1BRG(1) 15:0 — — — — — — — — 31:16 15:0 — — — ON — SIDL 8210 U2STA(1) 8220 U2TXREG 8230 U2RXREG U2BRG(1) Legend: — — — IREN RTSMD — — — URXISEL — — ADDEN — 19/3 18/2 17/1 16/0 — — — PERR FERR OERR — — — — — — — — — — URXDA 0110 UEN UTXISEL URXEN UTXBRK UTXEN UTXBF TRMT — — — — — — — — 15:0 — — — — — — — TX8 31:16 — — — — — — — — 15:0 — — — — — — — RX8 31:16 — — — — — — — — 0000 0000 — — — U1BRG SLPEN CKRDY — — — CLKSEL RUNOV 0000 WAKE LPBACK ABAUD RXINV BRGH PDSEL STSEL 0000 0000 ADDR UTXINV 0000 0000 Receive Register — 0000 0000 RIDLE Transmit Register ADDRMSK 31:16 15:0 20/4 U1BRG 31:16 15:0 21/5 ADDR 15:0 8200 U2MODE 22/6 ADDRMSK 31:16 U1TXREG (1) 8240 30/14 15:0 8030 U1RXREG 8040 31/15 All Resets Register Name Bit Range Bits 8000 U1MODE(1) 8020 UART1 AND UART2 REGISTER MAP URXISEL — — ADDEN — 0000 RIDLE PERR FERR OERR URXDA 0110 — — — — — — — — Transmit Register — — — — — — — — 0000 0000 Receive Register — 0000 0000 0000 BRG BRG x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal.  2016-2021 Microchip Technology Inc. Note 1:This register has corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. 0000 0000 PIC32MK GP/MC Family DS60001402H-page 331 22.1 Virtual Address BF84_# 8410 U3STA (1) — — SIDL 26/10 25/9 24/8 23/7 — — — — — SLPEN CKRDY — — — CLKSEL RUNOV 0000 IREN RTSMD — WAKE LPBACK ABAUD RXINV BRGH PDSEL STSEL UEN URXEN UTXBRK UTXEN UTXBF TRMT — — — — — 15:0 — — — — — — — TX8 31:16 — — — — — — — — 15:0 — — — — — — — RX8 31:16 U3BRG(1) 15:0 — — — — — — — — U4STA(1) U4TXREG 8810 U5STA (1) UTXISEL — — — — — — ON — SIDL IREN RTSMD — — — UEN UTXISEL UTXINV URXEN UTXBRK UTXEN UTXBF TRMT — — — — — — — 15:0 — — — — — — — TX8 31:16 — — — — — — — — 15:0 — — — — — — — RX8 31:16 — — — — — — — — 15:0 — — — — — — ON — SIDL IREN RTSMD — 31:16 — — UEN UTXINV URXEN UTXBRK UTXEN UTXBF TRMT — — — — — — 15:0 — — — — — — — TX8 31:16 — — — — — — — — 15:0 — — — — — — — RX8 31:16 U5BRG(1) 15:0 — — — — — — — — DS60001402H-page 332 8A10 Legend: U6STA(1) 31:16 15:0 UTXISEL — — — — — — — ON — SIDL IREN RTSMD — — — UEN ADDEN RIDLE PERR FERR OERR — — — — — URXDA 0110 — 0000 — — — 0000 Transmit Register — — — — — — — — 0000 Receive Register — 0000 BRG 0000 0000 SLPEN CKRDY — — — CLKSEL RUNOV 0000 WAKE LPBACK ABAUD RXINV BRGH PDSEL STSEL URXISEL — — UTXINV URXEN UTXBRK RIDLE PERR FERR OERR — — — — — URXDA 0110 — 0000 — — — 0000 Transmit Register — — — — — — — — 0000 Receive Register — 0000 BRG 0000 0000 SLPEN CKRDY — — — CLKSEL RUNOV 0000 WAKE LPBACK ABAUD RXINV BRGH PDSEL STSEL URXISEL — — UTXBF TRMT 0000 0000 ADDEN RIDLE PERR FERR OERR — — — — — URXDA 0110 — 0000 — — — 0000 Transmit Register — — — — — — — — 0000 Receive Register — 0000 BRG 0000 0000 SLPEN CKRDY — — — CLKSEL RUNOV 0000 WAKE LPBACK ABAUD RXINV BRGH PDSEL STSEL ADDR UTXEN 0000 0000 ADDEN MASK UTXISEL 0000 0000 BRG 31:16 15:0 16/0 ADDR — 8A00 U6MODE(1) — MASK — 8830 U5RXREG 17/1 BRG 31:16 U5TXREG 18/2 ADDR — 15:0 URXISEL MASK 31:16 31:16 15:0 19/3 BRG 31:16 15:0 20/4 URXISEL ADDEN RIDLE PERR 0000 0000 FERR OERR URXDA 0110 x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1:This register has corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family U4BRG (1) 31:16 15:0 21/5 ADDR — U3TXREG 22/6 ADDRMSK UTXINV 8800 U5MODE(1) 8840 — 27/11 — 8630 U4RXREG 8820 — ON 28/12 — 8610 8640 29/13 31:16 15:0 8600 U4MODE(1) 8620 30/14 31:16 8430 U3RXREG 8440 31:16 15:0 31/15 All Resets Bit Range 8400 U3MODE(1) 8420 UART3 THROUGH UART6 REGISTER MAP Bits Register Name  2016-2021 Microchip Technology Inc. TABLE 22-2: Virtual Address BF84_# 31/15 30/14 29/13 28/12 27/11 26/10 25/9 31:16 — — — — — — 15:0 — — — — — — 31:16 — — — — — 15:0 — — — — 31:16 U6BRG(1) 15:0 — — — — 8A30 U6RXREG Legend: 24/8 23/7 22/6 21/5 — — — — — — TX8 — — — — — — RX8 — — — — 20/4 19/3 18/2 17/1 16/0 — — — — — 0000 — — — 0000 Transmit Register — — — — — — All Resets Bit Range Register Name Bits 8A20 U6TXREG 8A40 UART3 THROUGH UART6 REGISTER MAP (CONTINUED) — — 0000 Receive Register — 0000 BRG BRG x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1:This register has corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. 0000 0000 PIC32MK GP/MC Family DS60001402H-page 333 TABLE 22-2:  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 22-1: Bit Range 31:24 23:16 15:8 7:0 UxMODE: UARTx MODE REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R-0, HS, HC U-0 U-0 U-0 SLPEN CLKRDY — — — R/W-0 U-0 R/W-0 R/W-0 R/W-0 U-0 ON — SIDL IREN RTSMD — R-0, HC R/W-0 R/W-0, HC R/W-0 R/W-0 R/W-0 WAKE LPBACK ABAUD RXINV BRGH Legend: CLKSEL(1) R/W-0 R/W-0 RUNOV R/W-0 UEN(2) R/W-0 PDSEL HS = Set by hardware HC = cleared by hardware R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’ -n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared R/W-0 STSEL x = Bit is unknown bit 31-24 Unimplemented: Read as ‘0’ bit 23 SLPEN: Run During Sleep Enable bit 1 = BRG clock runs during Sleep mode 0 = BRG clock is turned off during Sleep mode Note: bit 22 SLPEN = 1 only applies if CLKSEL = FRC, or in some cases, REFCLK depending on the selected REFCLK input source if running while in Sleep mode. All clocks, as well as the UART are disabled in Deep Sleep mode. CLKRDY: USART Clock Status bit 1 = UART clock is ready (User software should not update the UxMODE register) 0 = UART clock is not ready (User software can update the UxMODE register) bit 21-19 Unimplemented: Read as ‘0’ bit 18-17 CLKSEL: UART Baud Rate Generator Clock Selection bits(1) 11 = BRG clock is REFCLK1 10 = BRG clock is FRC 01 = BRG clock is SYSCLK (off in Sleep mode) 00 = BRG clock is PBCLKx (off in Sleep mode) bit 16 RUNOV: Run During Overflow Mode bit 1 = Shift register continues to run when Overflow (OERR) condition is detected 0 = Shift register stops accepting new data when Overflow (OERR) condition is detected bit 15 ON: UARTx Enable bit 1 = UARTx is enabled. UARTx pins are controlled by UARTx as defined by UEN and UTXEN  control bits 0 = UARTx is disabled. All UARTx pins are controlled by corresponding bits in the PORTx, TRISx and LATx registers; UARTx power consumption is minimal bit 14 Unimplemented: Read as ‘0’ bit 13 SIDL: Stop in Idle Mode bit 1 = Discontinue operation when device enters Idle mode 0 = Continue operation in Idle mode bit 12 IREN: IrDA Encoder and Decoder Enable bit 1 = IrDA is enabled 0 = IrDA is disabled Note 1: 2: These bits can be changed only when the ON bit (UxMODE) is set to ‘0’. These bits are present for legacy compatibility, and are superseded by PPS functionality on these devices (see 13.3 “Peripheral Pin Select (PPS)” for more information). DS60001402H-page 334  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 22-1: UxMODE: UARTx MODE REGISTER (CONTINUED) bit 11 RTSMD: Mode Selection for UxRTS Pin bit 1 = UxRTS pin is in Simplex mode 0 = UxRTS pin is in Flow Control mode bit 10 Unimplemented: Read as ‘0’ bit 9-8 UEN: UARTx Enable bits(2) 11 = UxTX, UxRX and UxBCLK pins are enabled and used; UxCTS pin is controlled by corresponding bits in the PORTx register 10 = UxTX, UxRX, UxCTS and UxRTS pins are enabled and used 01 = UxTX, UxRX and UxRTS pins are enabled and used; UxCTS pin is controlled by corresponding bits in the PORTx register 00 = UxTX and UxRX pins are enabled and used; UxCTS and UxRTS/UxBCLK pins are controlled by corresponding bits in the PORTx register bit 7 WAKE: Enable Wake-up on Start bit Detect During Sleep Mode bit 1 = Wake-up is enabled 0 = Wake-up is disabled bit 6 LPBACK: UARTx Loopback Mode Select bit 1 = Loopback mode is enabled 0 = Loopback mode is disabled bit 5 ABAUD: Auto-Baud Enable bit 1 = Enable baud rate measurement on the next reception of Sync character (0x55); cleared by hardware upon completion 0 = Baud rate measurement disabled or completed bit 4 RXINV: Receive Polarity Inversion bit 1 = UxRX Idle state is ‘0’ 0 = UxRX Idle state is ‘1’ bit 3 BRGH: High Baud Rate Enable bit 1 = High-Speed mode – 4x baud clock enabled 0 = Standard Speed mode – 16x baud clock enabled bit 2-1 PDSEL: Parity and Data Selection bits 11 = 9-bit data, no parity 10 = 8-bit data, odd parity 01 = 8-bit data, even parity 00 = 8-bit data, no parity bit 0 STSEL: Stop Selection bit 1 = 2 Stop bits 0 = 1 Stop bit Note 1: 2: These bits can be changed only when the ON bit (UxMODE) is set to ‘0’. These bits are present for legacy compatibility, and are superseded by PPS functionality on these devices (see 13.3 “Peripheral Pin Select (PPS)” for more information).  2016-2021 Microchip Technology Inc. DS60001402H-page 335 PIC32MK GP/MC Family REGISTER 22-2: Bit Range 31:24 23:16 15:8 7:0 UxSTA: UARTx STATUS AND CONTROL REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 MASK R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 ADDR R/W-0 R/W-0 UTXISEL R/W-0 R/W-0 URXISEL R/W-0 R/W-0 R/W-0, HC R/W-0 R-0 R-1 UTXINV URXEN UTXBRK UTXEN(1) UTXBF TRMT R/W-0 R-1 R-0 R-0 R/W-0, HS R-0 ADDEN RIDLE PERR FERR OERR URXDA Legend: HS = Set by hardware HC = cleared by hardware 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 31-24 MASK: Address Match Mask bits These bits are used to mask the ADDR bits. 11111111 = Corresponding matching ADDR bits are used to detect the address match Note: This setting allows the user to assign individual address as well as a group broadcast address to a UART. 00000000 = Corresponding ADDRx bits are not used to detect the address match. See 22.2 “UART Broadcast Mode Example” for additional information. bit 23-16 ADDR: Automatic Address Mask bits 1 = Corresponding MASKx bits are used to detect the address match. Note: This setting allows the user to assign individual address as well as a group broadcast address to a UART. 0 = Corresponding MASKx bits are not used to detect the address match. See 22.2 “UART Broadcast Mode Example” for additional information. bit 15-14 UTXISEL: TX Interrupt Mode Selection bits 11 = Reserved, do not use 10 = Interrupt is generated and asserted while the transmit buffer is empty 01 = Interrupt is generated and asserted when all characters have been transmitted 00 = Interrupt is generated and asserted while the transmit buffer contains at least one empty space bit 13 UTXINV: Transmit Polarity Inversion bit If IrDA mode is disabled (i.e., IREN (UxMODE) is ‘0’): 1 = UxTX Idle state is ‘0’ 0 = UxTX Idle state is ‘1’ If IrDA mode is enabled (i.e., IREN (UxMODE) is ‘1’): 1 = IrDA encoded UxTX Idle state is ‘1’ 0 = IrDA encoded UxTX Idle state is ‘0’ bit 12 URXEN: Receiver Enable bit 1 = UARTx receiver is enabled. UxRX pin is controlled by UARTx (if ON bit (UxMODE) = 1) 0 = UARTx receiver is disabled. UxRX pin is ignored by the UARTx module and released to the PORT Note: Note 1: The event of disabling an enabled receiver will release the RX pin to the PORT function; however, the receive buffers will not be reset. Disabling the receiver has no effect on the receive status flags. This bit should not be enabled until after the ON bit (UxMODE) = 1. If TX interrupts are enabled, setting this bit will immediately cause a TX interrupt based on the value of the UTXISEL bit. DS60001402H-page 336  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 22-2: UxSTA: UARTx STATUS AND CONTROL REGISTER (CONTINUED) bit 11 UTXBRK: Transmit Break bit 1 = Send Break on next transmission. Start bit followed by twelve ‘0’ bits, followed by Stop bit; cleared by hardware upon completion 0 = Break transmission is disabled or completed bit 10 UTXEN: Transmit Enable bit(1) 1 = UARTx transmitter is enabled. UxTX pin is controlled by UARTx (if ON bit (UxMODE) = 1) 0 = UARTx transmitter is disabled The event of disabling an enabled transmitter will release the TX pin to the PORT function and reset the transmit buffers to empty. Any pending transmission is aborted and data characters in the transmit buffers are lost. All transmit status flags are cleared and the TRMT bit is set. bit 9 UTXBF: Transmit Buffer Full Status bit (read-only) 1 = Transmit buffer is full 0 = Transmit buffer is not full, at least one more character can be written bit 8 TRMT: Transmit Shift Register is Empty bit (read-only) 1 = Transmit shift register is empty and transmit buffer is empty (the last transmission has completed) 0 = Transmit shift register is not empty, a transmission is in progress or queued in the transmit buffer bit 7-6 URXISEL: Receive Interrupt Mode Selection bit 11 = Reserved 10 = Interrupt flag bit is asserted while receive buffer is 3/4 or more full 01 = Interrupt flag bit is asserted while receive buffer is 1/2 or more full 00 = Interrupt flag bit is asserted while receive buffer is not empty (i.e., has at least 1 data character) bit 5 ADDEN: Address Character Detect bit (bit 8 of received data = 1) 1 = Address Detect mode is enabled. If 9-bit mode is not selected, this control bit has no effect 0 = Address Detect mode is disabled bit 4 RIDLE: Receiver Idle bit (read-only) 1 = Receiver is Idle 0 = Data is being received bit 3 PERR: Parity Error Status bit (read-only) 1 = Parity error has been detected for the current character 0 = Parity error has not been detected bit 2 FERR: Framing Error Status bit (read-only) 1 = Framing error has been detected for the current character 0 = Framing error has not been detected bit 1 OERR: Receive Buffer Overrun Error Status bit. When RUNOV = 0, clearing a previously set OERR bit will clear and reset the receive buffer and shift register. When RUNOV = 1, Clearing a previously set OERR bit will not reset the receive buffer and shift register 1 = Receive buffer has overflowed 0 = Receive buffer has not overflowed bit 0 URXDA: Receive Buffer Data Available bit (read-only) 1 = Receive buffer has data, at least one more character can be read 0 = Receive buffer is empty Note 1: This bit should not be enabled until after the ON bit (UxMODE) = 1. If TX interrupts are enabled, setting this bit will immediately cause a TX interrupt based on the value of the UTXISEL bit.  2016-2021 Microchip Technology Inc. DS60001402H-page 337 PIC32MK GP/MC Family REGISTER 22-3: Bit Range 31:24 23:16 15:8 7:0 UxRXREG: UARTx RECEIVE REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 R-0 — — — — — — — RX R-x R-x R-x R-x R-x R-x R-x R-x RX 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 bit 31-9 Unimplemented: Read as ‘0’ bit 8 RX: Data bit 8 of the received character (in 9-bit mode) bit 7-0 RX: Data bits 7-0 of the received character REGISTER 22-4: Bit Range 31:24 23:16 15:8 7:0 x = Bit is unknown UxTXREG: UARTx TRANSMIT REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-x U-x U-x U-x U-x U-x U-x U-x — — — — — — — — U-x U-x U-x U-x U-x U-x U-x U-x — — — — — — — — U-x U-x U-x U-x U-x U-x U-x W-x — — — — — — — TX W-0 W-0 W-0 W-0 W-0 W-0 W-0 W-0 TX 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 bit 31-9 Unimplemented: Read as initialized data bit 8 TX: Data bit 8 of the transmitted character (in 9-bit mode) bit 7-0 TX: Data bits 7-0 of the transmitted character DS60001402H-page 338 x = Bit is unknown  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 22-5: Bit Range UxBRG: UARTx BAUD RATE GENERATOR REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 — — — — R/W-0 R/W-0 R/W-0 R/W-0 31:24 23:16 15:8 BRG R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 BRG R/W-0 7:0 R/W-0 R/W-0 R/W-0 R/W-0 BRG 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 bit 31-20 Unimplemented: Read as ‘0’ bit 19-0 BRG: Baud Rate Generator Divisor bits Note: TABLE 22-3: The UxBRG register cannot be changed while UARTx is enabled (ON bit (UxMODE) = 1)). UART BAUD RATE CALCULATIONS UART Baud Rate With UxBRG Equals BRGH = 0 UxBRG = ((CLKSEL Frequency / (16 * Desired Baud Rate)) – 1) BRGH = 1 UxBRG = ((CLKSEL Frequency / (4 * Desired Baud Rate)) – 1) Note: UART1 and UART2 on PBCLK2; UART3 through UART6 on PBCLK3.  2016-2021 Microchip Technology Inc. DS60001402H-page 339 PIC32MK GP/MC Family 22.2 UART Broadcast Mode Example To send a broadcast message to all UARTs in the group identified by bit 7 = 1, send UxTXREG = (0x190), address bit 9 set. All the UARTs in that group, bit 7 = 1, would generate an interrupt for an address match because of the bit , match, Logic AND of MASK and ADDR registers equal “true”. User software would check if bit 4 = 1, and if true, the RX bits register value is valid for all UARTS. As shown in Table 22-4, the group hardware address identifier bit was arbitrarily chosen as bit 7 with bit 4 chosen as the software group or individual UART target ID. Therefore, the collective group address assigned for all UARTs (i.e, [w, x, y, z]) is ‘0b100100xx, while the individual addresses are ‘0b10000000 through ‘0b10000011, respectively. To send a specific message to UARTy within the group, the user would send UxTXREG = (0x182), address bit 9 set. All of the UARTs in that group identified with bit 7 = 1 would still generate an interrupt for an address match because of the bit , address match, Logic AND of MASK and ADDR registers equal True. In this case, user software would check if bit 4 = 0, and if true, the RX bits register value would be intended only for UARTy, with all others ignored. Any MASK register bit = 0 means the corresponding ADDR bit is a “don't care” from a hardware address matching point of view. Using this scheme, multiple UART subnet groups could be created within a network. If not using address match with a broadcast mode, set the ADDRMSK bits (UxSTAT Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). The PMP is a parallel 8-bit/16-bit input/output module specifically designed to communicate with a wide variety of parallel devices, such as communications peripherals, LCDs, external memory devices and microcontrollers. Because the interface to parallel peripherals varies significantly, the PMP module is highly configurable. The following are key features of the PMP module: • • • • • • • • • • • • • • 8-bit or 16-bit data interface 14/22 address lines with two Chip Selects 15/23 address lines with one Chip Select 16/24 address lines without Chip Select Address auto-increment/auto-decrement Selectable address bus width for resource limited I/O Individual read and write strobes or read/write strobe with enable strobe Partially multiplexed address/data mode (eight bits of address) with an address latch strobe Fully multiplexed address/data mode (16 bits of address) with address latch high and low strobes Programmable wait states Programmable polarity on selected control signals Interrupt on cycle end, busy flag for polling Persistent Interrupt capability for DMA access Little and Big-Endian Compatible addressing styles DS60001402H-page 344 • Extended address mode with addresses up to 24 bits • Dual (4) word buffer mode with separate read and write registers. • Operate during CPU Sleep and Idle modes • Fast bit manipulation using CLR, SET, and INV registers • Freeze option for in-circuit debugging Note: On 64-pin devices, data pins PMD and PMA are not available. TABLE 23-1: PMP SUPPORTED CONFIGURATIONS Pins Alternate PMP Pin Functions 100-pin 64-pin Devices Devices PMD Multiplexed PMA and PMA X X PMD Multiplexed PMA and PMA X — PMA PMALL X X PMA PMALH X X PMA — X X PMA PMCS1 or PMCS X X PMA PMCS2 X X PMA — X — PMA PMCS1A X — PMA PMCS2A X — PMRD PMWR X X PMWR PMENB X X ADRMUX bits: 11 = All 16 bits of address are multiplexed with the 16 bits of data (PMA/PMD) using two phases. 10 = All 16 bits of address are multiplexed with the lower 8 bits of data (PMA/PMA/ PMD) using three phases 01 = Lower 8 bits of address are multiplexed with lower 8 bits of data (PMA/PMD) 00 = Address and data pins are not multiplexed  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family FIGURE 23-1: PMP MODULE PINOUT AND CONNECTIONS TO EXTERNAL DEVICES Address Bus Data Bus Parallel Host Port Control Lines PMA PMALL PMA PMALH Flash EEPROM SRAM Up to 24-bit Address PMA PMA PMCS1 PMA PMCS2 PMRD PMRD/PMWR PMWR PMENB PMD PMD(1) Note: Microcontroller LCD FIFO Buffer 8-bit/16-bit Data (with or without multiplexed addressing) On 64-pin devices, data pins PMD and PMA are not available.  2016-2021 Microchip Technology Inc. DS60001402H-page 345 Control Registers Register Name(1) TABLE 23-2: Virtual Address (BF82_#) E000 PMCON 31/15 30/14 31:16 — — — 15:0 ON — SIDL 31:16 — — — 15:0 BUSY 31:16 — — — — — — — — PMCS2A PMCS1A — — — — — — — — ADDR23 ADDR22 CS2 CS1 ADDR15 ADDR14 — — PMADDR 15:0 E030 PMDOUT E040 PMDIN E050 PMSTAT 31:16 — — ADRMUX — — INCM 26/10 25/9 24/8 23/7 22/6 — — — RDSTART — PMPTTL PTWREN PTRDEN — MODE16 — 31:16 CSF — — MODE — 21/5 20/4 19/3 18/2 17/1 16/0 DUALBUF EXADR — — — — — — — — CS2P CS1P — WRSP RDSP 0000 — — — — — — 0000 WAITE 0000 WAITB — — WAITM ADDR — — — — 0000 — — — — — — — — — 0000 — — — — — — — — — — — — — — — — — — — — 15:0 0000 0000 — 0000 0000 DATAIN — 0000 0000 DATAOUT — 0000 — ALP ADDR 15:0 — PTEN 0000 0000 PTEN 31:16 — — — — — — — — — — — — — — — — 0000 15:0 IBF IBOV — — IB3F IB2F IB1F IB0F OBE OBUF — — OB3E OB2E OB1E OB0E 008F 31:16 — — — — — — — — WCS2A WCS1A — — — — — — — — WCS2 WCS1 — — — — — — 15:0 31:16 E080 PMRADDR 15:0 PMRDIN 27/11 15:0 E070 PMWADDR E090 IRQM 28/12 WADDR23 WADDR22 — WADDR15 WADDR14 — — — — — — — — — — — — — — — RCS2 RCS1 — — — — — — RCS2A 15:0 15:0 — — — — — — 0000 — — — — — — 0000 0000 RCS1A RADDR 0000 RADDR23 RADDR22 — RADDR15 RADDR14 31:16 0000 — WADDR — 31:16 — WADDR — 0000 — — — — — — — — — — — — — — — — — — — RDATAIN — 0000 0000 RADDR 0000 0000 DS60001402H-page 346 Legend: x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. Note 1: All registers in this table have corresponding CLR, SET, and INV registers at their virtual addresses, plus offsets of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family E060 PMAEN 31:16 29/13 All Resets Bits E010 PMMODE E020 PARALLEL HOST PORT REGISTER MAP Bit Range  2016-2021 Microchip Technology Inc. 23.1 PIC32MK GP/MC Family REGISTER 23-1: Bit Range 31:24 23:16 15:8 7:0 PMCON: PARALLEL PORT CONTROL REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 R/W-0 R/W-0 EXADR — — — — — — DUALBUF R/W-0 (1) U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 — SIDL PMPTTL PTWREN PTRDEN R/W-0 R/W-0 ON CSF(2) Legend: R = Readable bit -n = Value at POR ADRMUX R/W-0 R/W-0 R/W-0 U-0 R/W-0 R/W-0 ALP(2) CS2P(2) CS1P(2) — WRSP RDSP W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31-24 Unimplemented: Read as ‘0’ bit 23 RDSTART: Start Read Cycle on PMP Bus bit 1 = Start a ready cycle on the PMP bus 0 = No effect Note: This bit is cleared by hardware at the end of the read cycle when the BUSY bit (PMMODE) is equal to ‘0’. bit 22-18 Unimplemented: Read as ‘0’ bit 17 DUALBUF: Parallel Host Port Dual Read/Write Buffer Enable bit This bit is only valid in Host mode. 1 = PMP uses separate registers for reads and writes Reads: PMRADDR and PMRDIN Writes: PMRWADDR and PMDOUT 0 = PMP uses legacy registers for reads and writes Reads/Writes: PMADDR and PMRDIN bit 16 EXADR: Parallel Host Port Extended 24-bit Addressing bit (Host mode only) 1 = PMP 24-bit addressing is enabled 0 = PMP 24-bit addressing is disabled bit 15 ON: Parallel Host Port Enable bit(1) 1 = PMP is enabled 0 = PMP is disabled, no off-chip access performed bit 14 Unimplemented: Read as ‘0’ bit 13 SIDL: Stop in Idle Mode bit 1 = Discontinue module operation when device enters Idle mode 0 = Continue module operation in Idle mode Note 1: When using 1:1 PBCLK divisor, the user software should not read/write the peripheral’s SFRs in the SYSCLK cycle immediately following the instruction that clears the module’s ON control bit. 2: These bits have no effect when their corresponding pins are used as address lines.  2016-2021 Microchip Technology Inc. DS60001402H-page 347 PIC32MK GP/MC Family REGISTER 23-1: PMCON: PARALLEL PORT CONTROL REGISTER (CONTINUED) bit 12-11 ADRMUX: Address/Data Multiplexing Selection bits 11 = All 16-bit of address are multiplexed with the 16-bits of data (PMA or PMD) using two phases 10 = All 16-bit of address are multiplexed with the lower 8-bits of data (PMA, PMA, or PMD) using three phases 01 = Lower 8-bits of address are multiplexed with lower 8-bits of data (PMA or PMD) 00 = Address and data pins are not multiplexed Note: bit 10 bit 9 bit 8 bit 7-6 bit 5 The ADRMUX bits are independent of the MODE16 bit. Therefore, if ADDRMUX = 11 and MODE16 = 0, only the lower 8 bits of the address will be driven out. Additionally, if ADDRMUX = 10 and MODE16 = 1, the upper 8 bits of the data will be driven out on PMD. PMPTTL: PMP Module TTL Input Buffer Select bit 1 = PMP module uses TTL input buffers 0 = PMP module uses Schmitt Trigger input buffer PTWREN: Write Enable Strobe Port Enable bit 1 = PMWR/PMENB port is enabled 0 = PMWR/PMENB port is disabled PTRDEN: Read/Write Strobe Port Enable bit 1 = PMRD/PMWR port is enabled 0 = PMRD/PMWR port is disabled CSF: Chip Select Function bits(2) 11 = Reserved 10 = PMCS2/(a) and PMCS1/(a) used as Chip Select 01 = PMCS2/(a) used as Chip Select, PMCS1/(a) used as address bit 14 or (22 when EXADR = 1) 00 = PMCS2/(a) and PMCS1/(a) used as address bits (15 and 14) or (23 and 22 when EXADR = 1) Note: When the CSx bit is used as an address, it is subject to auto-increment/decrement. ALP: Address Latch Polarity bit(2) 1 = Active-high (PMCS2) / (PMPCS2a) 0 = Active-low (PMCS2) / (PMPCS2a) Note: bit 4 When the PMCS2/(a) pin is used as an address pin, the setting of the CS2P bit does not affect the polarity. CS2P: Chip Select 1 Polarity bit(2) 1 = Active-high (PMCS2) / (PMPCS2a) 0 = Active-low (PMCS2) / (PMPCS2a) bit 3 When the PMCS2/PMPCS2a pin is used as an address pin, the setting of the CS2P bit does not affect the polarity. CS1P: Chip Select 0 Polarity bit(2) 1 = Active-high (PMCS1) / (PMPCS1a) 0 = Active-low (PMCS1) / (PMPCS1a) Note: bit 2 When the PMCS1/PMPCS1a pin is used as an address pin, the setting of the CS1P bit does not affect the polarity. Unimplemented: Read as ‘0’ Note 1: When using 1:1 PBCLK divisor, the user software should not read/write the peripheral’s SFRs in the SYSCLK cycle immediately following the instruction that clears the module’s ON control bit. 2: These bits have no effect when their corresponding pins are used as address lines. DS60001402H-page 348  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 23-1: bit 1 bit 0 PMCON: PARALLEL PORT CONTROL REGISTER (CONTINUED) WRSP: Write Strobe Polarity bit For Client Modes and Host mode 2 (MODE = 00,01,10): 1 = Write strobe active-high (PMWR) 0 = Write strobe active-low (PMWR) For Host mode 1 (MODE = 11): 1 = Enable strobe active-high (PMENB) 0 = Enable strobe active-low (PMENB) RDSP: Read Strobe Polarity bit For Client modes and Host mode 2 (MODE = 00,01,10): 1 = Read Strobe active-high (PMRD) 0 = Read Strobe active-low (PMRD) For Host mode 1 (MODE = 11): 1 = Read/write strobe active-high (PMRD/PMWR) 0 = Read/write strobe active-low (PMRD/PMWR) Note 1: When using 1:1 PBCLK divisor, the user software should not read/write the peripheral’s SFRs in the SYSCLK cycle immediately following the instruction that clears the module’s ON control bit. 2: These bits have no effect when their corresponding pins are used as address lines.  2016-2021 Microchip Technology Inc. DS60001402H-page 349 PIC32MK GP/MC Family REGISTER 23-2: Bit Range 31:24 23:16 15:8 PMMODE: PARALLEL PORT MODE REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 BUSY R/W-0 7:0 IRQM R/W-0 R/W-0 WAITB(1) INCM R/W-0 R/W-0 MODE16 MODE R/W-0 R/W-0 WAITM(1) R/W-0 WAITE(1) 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 bit 31-16 Unimplemented: Read as ‘0’ bit 15 BUSY: Busy bit (Host mode only) 1 = Port is busy 0 = Port is not busy bit 14-13 IRQM: Interrupt Request Mode bits 11 = Reserved, do not use 10 = Interrupt generated when Read Buffer 3 is read or Write Buffer 3 is written (Buffered PSP mode) or on a read or write operation when PMA =11 (Addressable Client mode only) 01 = Interrupt generated at the end of the read/write cycle 00 = No Interrupt generated Note: This bit only controls the generation of the PMP – Parallel Host Port interrupt. The PMPE – Parallel Host Port Error is ALWAYS generated. bit 12-11 INCM: Increment Mode bits 11 = Client mode read and write buffers auto-increment (MODE = 00 only) 10 = Decrement ADDR by 1 every read/write cycle(2) 01 = Increment ADDR by 1 every read/write cycle(2) 00 = No increment or decrement of address bit 10 MODE16: 8-bit/16-bit Data Mode bit 1 = 16-bit mode: a read or write to the data register invokes a single 16-bit transfer 0 = 8-bit mode: a read or write to the data register invokes a single 8-bit transfer bit 9-8 MODE: Parallel Port Mode Select bits 11 = PMP mode, control signals (PMA, PMD, PMCS2(a), PMCS1(a), PMPRD/PMWR, PMENB) 10 = PMP mode, control signals (PMA, PMD, PMCS2(a), PMCS1(a), PMPRD, PMWR (byte_enable)) 01 = Enhanced PSP mode, control signals (PMPRD, PMWR, PMCS1, PMD, and PMA) 00 = Legacy Parallel Client Port mode, control signals (PMPRD, PMWR, PMCS1, and PMD) Note 1: Whenever WAITM = 0000, WAITB and WAITE bits are ignored and forced to 1 TPBCLK cycle for a write operation; WAITB = 1 TPBCLK cycle, WAITE = 0 TPBCLK cycles for a read operation. 2: Address bits, A15 and A14, are not subject to automatic increment/decrement if configured as Chip Select CS2 and CS1. 3: These pins are active when MODE16 = 1 (16-bit mode). DS60001402H-page 350  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 23-2: PMMODE: PARALLEL PORT MODE REGISTER (CONTINUED) bit 7-6 WAITB: Data Setup to Read/Write Strobe Wait States bits(1) 11 = Data wait of 4 TPB; multiplexed address phase of 4 TPB 10 = Data wait of 3 TPB; multiplexed address phase of 3 TPB 01 = Data wait of 2 TPB; multiplexed address phase of 2 TPB 00 = Data wait of 1 TPB; multiplexed address phase of 1 TPB (default) bit 5-2 WAITM: Data Read/Write Strobe Wait States bits(1) 1111 = Wait of 16 TPB • • • 0001 = Wait of 2 TPB 0000 = Wait of 1 TPB (default) bit 1-0 WAITE: Data Hold After Read/Write Strobe Wait States bits(1) 11 = Wait of 4 TPB 10 = Wait of 3 TPB 01 = Wait of 2 TPB 00 = Wait of 1 TPB (default) For Read operations: 11 = Wait of 3 TPB 10 = Wait of 2 TPB 01 = Wait of 1 TPB 00 = Wait of 0 TPB (default) Note 1: Whenever WAITM = 0000, WAITB and WAITE bits are ignored and forced to 1 TPBCLK cycle for a write operation; WAITB = 1 TPBCLK cycle, WAITE = 0 TPBCLK cycles for a read operation. 2: Address bits, A15 and A14, are not subject to automatic increment/decrement if configured as Chip Select CS2 and CS1. 3: These pins are active when MODE16 = 1 (16-bit mode).  2016-2021 Microchip Technology Inc. DS60001402H-page 351 PIC32MK GP/MC Family REGISTER 23-3: Bit Range 31:24 23:16 PMADDR: PARALLEL PORT ADDRESS REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CS2a WADDR23 CS1a WADDR22 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 15:8 CS2 ADDR15 CS1 ADDR14 7:0 R/W-0 R/W-0 ADDR R/W-0 R/W-0 R/W-0 R/W-0 ADDR R/W-0 R/W-0 R/W-0 R/W-0 ADDR Legend: R = Readable bit -n = Value at POR W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31-24 Unimplemented: Read as ‘0’ bit 23 CS2a: Chip Select 2a bit This bit is only valid when the CSF bits = 10 or 01. 1 = Chip Select 2a is enabled 0 = Chip Select 2a is disabled bit 23 WADDR23: Address bits This bit is only valid when the CSF bits = 00 and the EXADR bit = 1 and the DUALBUF bit = 0. bit 22 CS1a: Chip Select 1a bit This bit is only valid when the CSF bits = 10. 1 = Chip Select 1a is enabled 0 = Chip Select 1a is disabled bit 22 WADDR22: Address bits This bit is only valid when the CSF bits = 00 and the EXADR bit = 1 and the DUALBUF bit = 0. bit 21-16 ADDR: Address bits These bits are only valid when the EXADR bit = 1 and the DUALBUF bit = 0. bit 15 CS2: Chip Select 2 bit This bit is only valid when the CSF bits = 10 or 01 and the EXADR bit = 0. 1 = Chip Select 2 is enabled 0 = Chip Select 2 is disabled bit 15 ADDR: Target Address bit 15 This bit is only valid when the CSF bits = 10 or 01 and the EXADDR bit = 0. bit 14 CS1: Chip Select 1 bit This bit is only valid when the CSF bits = 10 or 01 or EXADR bit = 0. 1 = Chip Select 1 is enabled 0 = Chip Select 1 is disabled bit 14 ADDR: Target Address bit 14 This bit is only valid when the CSF bits = 01 or 00 or EXADR bit = 1. bit 13-0 ADDR: Address bits Note: If the DUALBUF bit (PMCON) = 0, the bits in this register control both read and write target addressing. If the DUALBUF bit = 1, the bits in this register are not used. In this instance, use the PMRADDR register for Read operations and the PMWADDR register for Write operations. DS60001402H-page 352  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 23-4: Bit Range 31:24 23:16 15:8 7:0 PMDOUT: PARALLEL PORT OUTPUT DATA REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 DATAOUT R/W-0 R/W-0 DATAOUT Legend: R = Readable bit -n = Value at POR W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31-16 Unimplemented: Read as ‘0’ bit 15-0 DATAOUT: Port Data Output bits This register is used for Read operations in the Enhanced Parallel Client mode and Write operations for Dual Buffer Host mode. In Dual Buffer Host mode, the DUALBUF bit (PMPCON) = 1, a write to the MSB triggers the transaction on the PMP port. When MODE16 = 1, MSB = DATAOUT. When MODE16 = 0, MSB = DATAOUT. Note: In Host mode, a read will return the last value written to the register. In Client mode, a read will return indeterminate results. REGISTER 23-5: Bit Range 31:24 23:16 15:8 7:0 PMDIN: PARALLEL PORT INPUT DATA REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 DATAIN R/W-0 R/W-0 DATAIN Legend: R = Readable bit -n = Value at POR W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31-16 Unimplemented: Read as ‘0’ bit 15-0 DATAIN: Port Data Input bits This register is used for both Parallel Host Port mode and Enhanced Parallel Client mode. In Parallel Host mode, a write to the MSB triggers the write transaction on the PMP port. Similarly, a read to the MSB triggers the read transaction on the PMP port. When MODE16 = 1, MSB = DATAIN. When MODE16 = 0, MSB = DATAIN. Note: This register is not used in Dual Buffer Host mode (i.e., DUALBUF bit (PMPCON) = 1).  2016-2021 Microchip Technology Inc. DS60001402H-page 353 PIC32MK GP/MC Family REGISTER 23-6: Bit Range 31:24 23:16 15:8 7:0 PMAEN: PARALLEL PORT PIN ENABLE REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PTEN R/W-0 R/W-0 PTEN R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 (1) R/W-0 PTEN R/W-0 PTEN(2) PTEN 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 bit 31-24 Unimplemented: Write ‘0’; ignore read bit 23-16 PTEN: Port Enable bits Valid if the EXADR bit is enabled in Host mode only. PAD enables for PMPCS2a, PMPCS1a, and ADDR. bit 15-14 PTEN: PMCSx Address Port Enable bits 1 = PMA15 and PMA14 function as either PMA or PMCS2 and PMCS1(1) 0 = PMA15 and PMA14 function as port I/O bit 13-2 PTEN: PMP Address Port Enable bits 1 = PMA function as PMP address lines 0 = PMA function as port I/O bit 1-0 PTEN: PMALH/PMALL Address Port Enable bits 1 = PMA1 and PMA0 function as either PMA or PMALH and PMALL(2) 0 = PMA1 and PMA0 pads function as port I/O Note 1: 2: The use of these pins as PMA15/PMA14 or CS2/CS1 is selected by the CSF bits (PMCON). The use of these pins as PMA1/PMA0 or PMALH/PMALL depends on the Address/Data Multiplex mode selected by the ADRMUX bits in the PMCON register. DS60001402H-page 354  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 23-7: Bit Range 31:24 23:16 15:8 7:0 PMSTAT: PARALLEL PORT STATUS REGISTER (CLIENT MODES ONLY) Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R-0 R/W-0, HS, SC U-0 U-0 R-0 R-0 R-0 R-0 IBF IBOV — — IB3F IB2F IB1F IB0F R-1 R/W-0, HS, SC U-0 U-0 R-1 R-1 R-1 R-1 OBE OBUF — — OB3E OB2E OB1E OB0E Legend: HS = Hardware Set SC = Software Cleared 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 31-16 Unimplemented: Read as ‘0’ bit 15 IBF: Input Buffer Full Status bit 1 = All writable input buffer registers are full 0 = Some or all of the writable input buffer registers are empty bit 14 IBOV: Input Buffer Overflow Status bit 1 = A write attempt to a full input byte buffer occurred (must be cleared in software) Note: This will generate a PMPE – Parallel Host Port Error interrupt. 0 = No overflow occurred bit 13-12 Unimplemented: Read as ‘0’ bit 11-8 IBxF: Input Buffer ‘x’ Status Full bits 1 = Input Buffer contains data that has not been read (reading buffer will clear this bit) 0 = Input Buffer does not contain any unread data bit 7 OBE: Output Buffer Empty Status bit 1 = All readable output buffer registers are empty 0 = Some or all of the readable output buffer registers are full bit 6 OBUF: Output Buffer Underflow Status bit 1 = A read occurred from an empty output byte buffer (must be cleared in software) Note: This will generate a PMPE – Parallel Host Port Error interrupt. 0 = No underflow occurred bit 5-4 Unimplemented: Read as ‘0’ bit 3-0 OBxE: Output Buffer ‘x’ Status Empty bits 1 = Output buffer is empty (writing data to the buffer will clear this bit) 0 = Output buffer contains data that has not been transmitted  2016-2021 Microchip Technology Inc. DS60001402H-page 355 PIC32MK GP/MC Family REGISTER 23-8: Bit Range 31:24 23:16 15:8 7:0 PMWADDR: PARALLEL PORT WRITE ADDRESS REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CS2a CS1a WADDR23 WADDR22 R/W-0 R/W-0 WCS2 WCS1 WADDR15 WADDR14 R/W-0 R/W-0 WADDR R/W-0 R/W-0 R/W-0 R/W-0 WADDR R/W-0 R/W-0 R/W-0 R/W-0 WADDR 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 bit 31-24 Unimplemented: Read as ‘0’ bit 23 CS2a: Chip Select 2a bit This bit is only valid when the CSF bits = 10 or 01. 1 = Chip Select 2a is active 0 = Chip Select 2a is inactive bit 23 WADDR: Target Address bit 23 This bit is only valid when the CSF bits = 00 and the EXADR bit = 1 and the DUALBUF bit = 1. bit 22 CS1a: Chip Select 1a bit This bit is only valid when the CSF bits = 10. 1 = Chip Select 1a is active 0 = Chip Select 1a is inactive bit 22 WADDR: Target Address bit 22 This bit is only valid when the CSF bits = 00 and the EXADR bit = 1 and the DUALBUF bit = 1. bit 21-16 WADDR: Address bits This bit is only valid when the EXADR bit = 1 and the DUALBUF bit = 1. bit 15 WCS2: Chip Select 2 bit This bit is only valid when the CSF bits = 10 or 01. 1 = Chip Select 2 is active 0 = Chip Select 2 is inactive bit 15 WADDR: Target Address bit 15 This bit is only valid when the CSF bits = 00. bit 14 WCS1: Chip Select 1 bit This bit is only valid when the CSF bits = 10. 1 = Chip Select 1 is active 0 = Chip Select 1 is inactive bit 14 WADDR: Target Address bit 14 This bit is only valid when the CSF bits = 00 or 01. bit 13-0 WADDR: Address bits Note: This register is only used when the DUALBUF bit (PMCON) is set to ‘1’. DS60001402H-page 356  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 23-9: Bit Range 31:24 23:16 15:8 7:0 PMRADDR: PARALLEL PORT READ ADDRESS REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CS2a CS1a RADDR23 RADDR22 R/W-0 R/W-0 RCS2 RCS1 RADDR15 RADDR14 R/W-0 R/W-0 RADDR R/W-0 R/W-0 R/W-0 R/W-0 RADDR R/W-0 R/W-0 R/W-0 R/W-0 RADDR 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 bit 31-24 Unimplemented: Read as ‘0’ bit 23 CS2a: Chip Select 2a bit This bit is only valid when the CSF bits = 10 or 01. 1 = Chip Select 2a is active 0 =Chip Select 2a is inactive bit 23 RADDR: Target Address bit 23 This bit is only valid when the CSF bits = 00 and the EXADR bit = 1 and the DUALBUF bit = 1. bit 22 CS1a: Chip Select 1a bit This bit is only valid when the CSF bits = 10. 1 = Chip Select 1a is active 0 = Chip Select 1a is inactive bit 22 RADDR: Target Address bit 22 This bit is only valid when the CSF bits = 00 and the EXADR bit = 1 and the DUALBUF bit = 1. bit 21-16 RADDR: Address bits This bit is only valid when the EXADR bit = 1 and the DUALBUF bit = 1. bit 15 RCS2: Chip Select 2 bit This bit is only valid when the CSF bits = 10 or 01. 1 = Chip Select 2 is active 0 = Chip Select 2 is inactive (RADDR15 function is selected) bit 15 RADDR: Target Address bit 15 This bit is only valid when the CSF bits = 00. bit 14 RCS1: Chip Select 1 bit This bit is only valid when the CSF bits = 10. 1 = Chip Select 1 is active 0 = Chip Select 1 is inactive (RADDR14 function is selected) bit 14 RADDR: Target Address bit 14 This bit is only valid when the CSF bits = 00 or 01. bit 13-0 RADDR: Address bits Note: This register is only used when the DUALBUF bit (PMCON) is set to ‘1’.  2016-2021 Microchip Technology Inc. DS60001402H-page 357 PIC32MK GP/MC Family REGISTER 23-10: PMRDIN: PARALLEL PORT READ INPUT DATA REGISTER Bit Range 31:24 23:16 15:8 7:0 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 RDATAIN R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 RDATAIN 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 bit 31-16 Unimplemented: Read as ‘0’ bit 15-8 RDATAIN: Port Data Input bits Only valid when MODE16 = 1. Used for read operations in Dual Buffer Host mode only. bit 7-0 RDATAIN: Port Data Input bits Used for read operations in Dual Buffer Host mode only. Note: This register is only used when the DUALBUF bit (PMCON) is set to ‘1’ and exclusively for reads. If the DUALBUF bit is ‘0’, the PMDIN register (Register 23-5) is used for reads instead of PMRDIN. DS60001402H-page 358  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family 24.0 Note: REAL-TIME CLOCK AND CALENDAR (RTCC) • Provides calendar: Weekday, date, month and year • Alarm intervals are configurable for half of a second, one second, 10 seconds, one minute, 10 minutes, one hour, one day, one week, one month, and one year • Alarm repeat with decrementing counter • Alarm with indefinite repeat: Chime • Year range: 2000 to 2099 • Leap year correction • BCD format for smaller firmware overhead • Optimized for long-term battery operation • Fractional second synchronization • User calibration of the clock crystal frequency with auto-adjust • Calibration range: ±0.66 seconds error per month • Calibrates up to 260 ppm of crystal error • Uses external 32.768 kHz crystal or 32 kHz internal oscillator • Alarm pulse, seconds clock, or internal clock output on RTCC pin (not in VBAT power domain, requires VDD) This data sheet summarizes the features of the PIC32MK GP/MC family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 29. “Real-Time Clock and Calendar (RTCC)” (DS60001125), which is available from the Documentation > Reference Manual section of the Microchip PIC32 web site (www.microchip.com/pic32). The RTCC module is intended for applications in which accurate time must be maintained for extended periods of time with minimal or no CPU intervention. Lowpower optimization provides extended battery lifetime while keeping track of time. The following are key features of the RTCC module: • Time: hours, minutes and seconds • 24-hour format (military time) • Visibility of one-half second period FIGURE 24-1: RTCC BLOCK DIAGRAM RTCCLKSEL 32.768 kHz Input from Secondary Oscillator (SOSC) 32 kHz Input from Internal Oscillator (LPRC) TRTC RTCC Prescalers 0.5 seconds YEAR, MTH, DAY RTCVAL RTCC Timer Alarm Event WKDAY HR, MIN, SEC Comparator MTH, DAY Compare Registers with Masks ALRMVAL WKDAY HR, MIN, SEC Repeat Counter RTCC Interrupt RTCC Interrupt Logic Alarm Pulse Seconds Pulse TRTC RTCC Pin RTCOE RTCOUTSEL  2016-2021 Microchip Technology Inc. DS60001402H-page 359 RTCC Control Registers Virtual Address (BF8C_#) Register Name(1) TABLE 24-1: 0000 RTCCON RTCC REGISTER MAP 0010 RTCALRM 0020 RTCTIME 0030 RTCDATE 0040 ALRMTIME 0050 ALRMDATE Legend: Note 1: 31/15 30/14 31:16 — 15:0 ON 31:16 — 15:0 ALRMEN 29/13 28/12 27/11 — — — — — SIDL — — — — — — CHIME PIV ALRMSYNC 26/10 25/9 — — SEC10 SEC01 31:16 YEAR10 YEAR01 15:0 DAY10 DAY01 31:16 HR10 HR01 15:0 SEC10 SEC01 15:0 DAY10 — — — 20/4 — — — — — — — AMASK 15:0 — 21/5 19/3 18/2 17/1 16/0 CAL HR01 — 22/6 — HR10 — 23/7 RTCCLKSEL RTCOUTSEL RTCCLKON 31:16 31:16 24/8 — DAY01 0000 RTCWREN RTCSYNC HALFSEC RTCOE — — — — ARPT MIN10 — — — — MONTH10 — — — — MIN10 — — — — MONTH10 — — — — — — — 0000 xxxx — xx00 MONTH01 xxxx WDAY01 xx00 MIN01 — 0000 0000 MIN01 — All Resets Bit Range Bits — — xxxx — xx00 MONTH01 00xx WDAY01 xx0x x = unknown value on Reset; — = unimplemented, read as ‘0’. Reset values are shown in hexadecimal. All registers in this table have corresponding CLR, SET, and INV registers at its virtual address, plus an offset of 0x4, 0x8, and 0xC, respectively. See 13.2 “CLR, SET, and INV Registers” for more information. PIC32MK GP/MC Family DS60001402H-page 360 24.1  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 24-1: Bit Range Bit 31/23/15/7 31:24 23:16 Bit Bit Bit Bit Bit 30/22/14/6 29/21/13/5 28/20/12/4 27/19/11/3 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-0 R/W-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 CAL CAL 15:8 7:0 RTCCON: REAL-TIME CLOCK AND CALENDAR CONTROL REGISTER R/W-0 U-0 R/W-0 U-0 U-0 R/W-0 ON(1) — SIDL — — RTCCLKSEL R/W-0 R-0 U-0 U-0 R/W-0 R-0 R-0 R/W-0 — — RTC WREN(3) RTC SYNC HALFSEC(4) RTCOE RTC RTC OUTSEL(2) CLKON(5) RTC OUTSEL(2) 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 bit 31-26 Unimplemented: Read as ‘0’ bit 25-16 CAL: Real-Time Clock Drift Calibration bits, which contain a signed 10-bit integer value 0111111111 = Maximum positive adjustment, adds 511 real-time clock pulses every one minute • • • 0000000001 = Minimum positive adjustment, adds 1 real-time clock pulse every one minute 0000000000 = No adjustment 1111111111 = Minimum negative adjustment, subtracts 1 real-time clock pulse every one minute • • • 1000000000 = Maximum negative adjustment, subtracts 512 real-time clock pulses every one minute bit 15 ON: RTCC On bit(1) 1 = RTCC module is enabled 0 = RTCC module is disabled bit 14 Unimplemented: Read as ‘0’ bit 13 SIDL: Stop in Idle Mode bit 1 = Disables RTCC operation when CPU enters Idle mode 0 = Continue normal operation when CPU enters Idle mode bit 12-11 Unimplemented: Read as ‘0’ Note 1: 2: 3: 4: 5: Note: The ON bit is only writable when RTCWREN = 1. Requires RTCOE = 1 (RTCCON) for the output to be active. The RTCWREN bit can be set only when the write sequence is enabled. This bit is read-only. It is cleared to ‘0’ on a write to the seconds bit fields (RTCTIME). This bit is undefined when RTCCLKSEL = 00 (LPRC is the clock source). This register is reset only on a POR.  2016-2021 Microchip Technology Inc. DS60001402H-page 361 PIC32MK GP/MC Family REGISTER 24-1: RTCCON: REAL-TIME CLOCK AND CALENDAR CONTROL REGISTER bit 10-9 RTCCLKSEL: RTCC Clock Select bits When a new value is written to these bits, the Seconds Value register should also be written to properly reset the clock prescalers in the RTCC. 11 = Reserved 10 = Reserved 01 = RTCC uses the external 32.768 kHz Secondary Oscillator (SOSC) 00 = RTCC uses the internal 32 kHz oscillator (LPRC) bit 8-7 RTCOUTSEL: RTCC Output Data Select bits(2) 11 = Reserved 10 = RTCC Clock is presented on the RTCC pin 01 = Seconds Clock is presented on the RTCC pin 00 = Alarm Pulse is presented on the RTCC pin when the alarm interrupt is triggered bit 6 RTCCLKON: RTCC Clock Enable Status bit(5) 1 = RTCC Clock is actively running 0 = RTCC Clock is not running bit 5-4 Unimplemented: Read as ‘0’ bit 3 RTCWREN: Real-Time Clock Value Registers Write Enable bit(3) 1 = Real-Time Clock Value registers can be written to by the user 0 = Real-Time Clock Value registers are locked out from being written to by the user bit 2 RTCSYNC: Real-Time Clock Value Registers Read Synchronization bit 1 = Real-time clock value registers can change while reading (due to a rollover ripple that results in an invalid data read). If the register is read twice and results in the same data, the data can be assumed to be valid. 0 = Real-time clock value registers can be read without concern about a rollover ripple bit 1 HALFSEC: Half-Second Status bit(4) 1 = Second half period of a second 0 = First half period of a second bit 0 RTCOE: RTCC Output Enable bit 1 = RTCC output is enabled 0 = RTCC output is not enabled Note 1: 2: 3: 4: 5: The ON bit is only writable when RTCWREN = 1. Requires RTCOE = 1 (RTCCON) for the output to be active. The RTCWREN bit can be set only when the write sequence is enabled. This bit is read-only. It is cleared to ‘0’ on a write to the seconds bit fields (RTCTIME). This bit is undefined when RTCCLKSEL = 00 (LPRC is the clock source). Note: This register is reset only on a POR. DS60001402H-page 362  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 24-2: Bit Range 31:24 23:16 15:8 7:0 RTCALRM: REAL-TIME CLOCK ALARM CONTROL REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit Bit 27/19/11/3 26/18/10/2 U-0 U-0 U-0 U-0 U-0 — — — — — U-0 U-0 U-0 U-0 U-0 Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 — — — U-0 U-0 U-0 — — — — — — — — R/W-0 R/W-0 R-0 R/W-0 R/W-0 CHIME(2) R/W-0 (2) R/W-0 ALRMEN(1,2) R/W-0 (2) R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PIV ALRMSYNC R/W-0 AMASK R/W-0 ARPT(2) Legend: R = Readable bit -n = Value at POR W = Writable bit ‘1’ = Bit is set U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown bit 31-16 Unimplemented: Read as ‘0’ bit 15 ALRMEN: Alarm Enable bit(1,2) 1 = Alarm is enabled 0 = Alarm is disabled bit 14 CHIME: Chime Enable bit(2) 1 = Chime is enabled – ARPT is allowed to rollover from 0x00 to 0xFF 0 = Chime is disabled – ARPT stops once it reaches 0x00 bit 13 PIV: Alarm Pulse Initial Value bit(2) When ALRMEN = 0, PIV is writable and determines the initial value of the Alarm Pulse. When ALRMEN = 1, PIV is read-only and returns the state of the Alarm Pulse. bit 12 ALRMSYNC: Alarm Sync bit 1 = ARPT and ALRMEN may change as a result of a half second rollover during a read.  The ARPT must be read repeatedly until the same value is read twice. This must be done since multiple bits may be changing. 0 = ARPT and ALRMEN can be read without concerns of rollover because the prescaler is more than 32 real-time clocks away from a half-second rollover bit 11-8 AMASK: Alarm Mask Configuration bits(2) 0000 = Every half-second 0001 = Every second 0010 = Every 10 seconds 0011 = Every minute 0100 = Every 10 minutes 0101 = Every hour 0110 = Once a day 0111 = Once a week 1000 = Once a month 1001 = Once a year (except when configured for February 29, once every four years) 1010 = Reserved 1011 = Reserved 11xx = Reserved Note 1: 2: Note: Hardware clears the ALRMEN bit anytime the alarm event occurs, when ARPT = 00 and CHIME = 0. This field should not be written when the RTCC ON bit = ‘1’ (RTCCON) and ALRMSYNC = 1. The RTCALRM register is reset on a MCLR, Power-on Reset (POR), or any time on an exit from Deep Sleep or VBAT mode.  2016-2021 Microchip Technology Inc. DS60001402H-page 363 PIC32MK GP/MC Family REGISTER 24-2: RTCALRM: REAL-TIME CLOCK ALARM CONTROL REGISTER (CONTINUED) ARPT: Alarm Repeat Counter Value bits(2) 11111111 = Alarm will trigger 256 times bit 7-0 • • • 00000000 = Alarm will trigger one time The counter decrements on any alarm event. The counter only rolls over from 0x00 to 0xFF if CHIME = 1. Note 1: 2: Note: Hardware clears the ALRMEN bit anytime the alarm event occurs, when ARPT = 00 and CHIME = 0. This field should not be written when the RTCC ON bit = ‘1’ (RTCCON) and ALRMSYNC = 1. The RTCALRM register is reset on a MCLR, Power-on Reset (POR), or any time on an exit from Deep Sleep or VBAT mode. DS60001402H-page 364  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 24-3: Bit Range 31:24 23:16 15:8 7:0 RTCTIME: REAL-TIME CLOCK TIME VALUE REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x HR10 R/W-x R/W-x HR01 R/W-x R/W-x R/W-x R/W-x MIN10 R/W-x R/W-x R/W-x R/W-x R/W-x MIN01 R/W-x R/W-x R/W-x SEC10 R/W-x R/W-x SEC01 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — 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 bit 31-28 HR10: Binary-Coded Decimal Value of Hours bits, 10 digits; contains a value from 0 to 2 bit 27-24 HR01: Binary-Coded Decimal Value of Hours bits, 1 digit; contains a value from 0 to 9 bit 23-20 MIN10: Binary-Coded Decimal Value of Minutes bits, 10 digits; contains a value from 0 to 5 bit 19-16 MIN01: Binary-Coded Decimal Value of Minutes bits, 1 digit; contains a value from 0 to 9 bit 15-12 SEC10: Binary-Coded Decimal Value of Seconds bits, 10 digits; contains a value from 0 to 5 bit 11-8 SEC01: Binary-Coded Decimal Value of Seconds bits, 1 digit; contains a value from 0 to 9 bit 7-0 Unimplemented: Read as ‘0’ Note: This register is only writable when RTCWREN = 1 (RTCCON).  2016-2021 Microchip Technology Inc. DS60001402H-page 365 PIC32MK GP/MC Family REGISTER 24-4: Bit Range 31:24 23:16 15:8 7:0 RTCDATE: REAL-TIME CLOCK DATE VALUE REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x YEAR10 R/W-x R/W-x R/W-x YEAR01 R/W-x R/W-x MONTH10 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x MONTH01 R/W-x R/W-x R/W-x DAY10 R/W-x R/W-x DAY01 U-0 U-0 U-0 U-0 — — — — R/W-x R/W-x R/W-x R/W-x WDAY01 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 bit 31-28 YEAR10: Binary-Coded Decimal Value of Years bits, 10 digits bit 27-24 YEAR01: Binary-Coded Decimal Value of Years bits, 1 digit bit 23-20 MONTH10: Binary-Coded Decimal Value of Months bits, 10 digits; contains a value from 0 to 1 bit 19-16 MONTH01: Binary-Coded Decimal Value of Months bits, 1 digit; contains a value from 0 to 9 bit 15-12 DAY10: Binary-Coded Decimal Value of Days bits, 10 digits; contains a value from 0 to 3 bit 11-8 DAY01: Binary-Coded Decimal Value of Days bits, 1 digit; contains a value from 0 to 9 bit 7-4 Unimplemented: Read as ‘0’ bit 3-0 WDAY01: Binary-Coded Decimal Value of Weekdays bits,1 digit; contains a value from 0 to 6 Note: This register is only writable when RTCWREN = 1 (RTCCON). DS60001402H-page 366  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 24-5: Bit Range 31:24 23:16 15:8 7:0 ALRMTIME: ALARM TIME VALUE REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit 27/19/11/3 Bit 26/18/10/2 Bit 25/17/9/1 Bit 24/16/8/0 R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x HR10 R/W-x R/W-x HR01 R/W-x R/W-x R/W-x R/W-x MIN10 R/W-x R/W-x R/W-x R/W-x R/W-x MIN01 R/W-x R/W-x R/W-x SEC10 R/W-x R/W-x SEC01 U-0 U-0 U-0 U-0 U-0 U-0 U-0 U-0 — — — — — — — — 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 bit 31-28 HR10: Binary Coded Decimal value of hours bits, 10 digits; contains a value from 0 to 2 bit 27-24 HR01: Binary Coded Decimal value of hours bits, 1 digit; contains a value from 0 to 9 bit 23-20 MIN10: Binary Coded Decimal value of minutes bits, 10 digits; contains a value from 0 to 5 bit 19-16 MIN01: Binary Coded Decimal value of minutes bits, 1 digit; contains a value from 0 to 9 bit 15-12 SEC10: Binary Coded Decimal value of seconds bits, 10 digits; contains a value from 0 to 5 bit 11-8 SEC01: Binary Coded Decimal value of seconds bits, 1 digit; contains a value from 0 to 9 bit 7-0 Unimplemented: Read as ‘0’  2016-2021 Microchip Technology Inc. DS60001402H-page 367 PIC32MK GP/MC Family REGISTER 24-6: Bit Range 31:24 23:16 15:8 7:0 ALRMDATE: ALARM DATE VALUE REGISTER Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 Bit 28/20/12/4 Bit Bit 27/19/11/3 26/18/10/2 U-0 U-0 U-0 U-0 U-0 — — — — — R/W-x R/W-x R/W-x R/W-x R/W-x MONTH10 R/W-x R/W-x R/W-x Bit 25/17/9/1 Bit 24/16/8/0 U-0 U-0 U-0 — — — R/W-x R/W-x R/W-x MONTH01 R/W-x R/W-x R/W-x DAY10 R/W-x R/W-x DAY01 U-0 U-0 U-0 U-0 — — — — R/W-x R/W-x R/W-x R/W-x WDAY01 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 bit 31-24 Unimplemented: Read as ‘0’ bit 23-20 MONTH10: Binary Coded Decimal value of months bits, 10 digits; contains a value from 0 to 1 bit 19-16 MONTH01: Binary Coded Decimal value of months bits, 1 digit; contains a value from 0 to 9 bit 15-12 DAY10: Binary Coded Decimal value of days bits, 10 digits; contains a value from 0 to 3 bit 11-8 DAY01: Binary Coded Decimal value of days bits, 1 digit; contains a value from 0 to 9 bit 7-4 Unimplemented: Read as ‘0’ bit 3-0 WDAY01: Binary Coded Decimal value of weekdays bits, 1 digit; contains a value from 0 to 6 DS60001402H-page 368  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family 25.0 Note: 12-BIT HIGH-SPEED SUCCESSIVE APPROXIMATION REGISTER (SAR) ANALOG-TO-DIGITAL CONVERTER (ADC) This data sheet summarizes the features of the PIC32MK GP/MC family of devices. It is not intended to be a comprehensive reference source. To complement the information in this data sheet, refer to Section 22. “12-bit High-Speed Successive Approximation Register (SAR) Analog-to-Digital Converter (ADC)” (DS60001344) in the “PIC32 Family Reference Manual”, which is available from the Microchip web site (www.microchip.com/PIC32). The 12-bit High-Speed Successive Approximation Register (SAR) analog-to-digital converter (ADC) includes the following features: • 12-bit resolution • Seven ADC modules with dedicated Sample and Hold (S&H) circuits • Two dedicated ADC modules can be combined in Turbo mode to provide double conversion rate • Up to 45 analog input sources, in addition to the internal CTMU, VBAT, internal voltage reference and internal temperature sensor • Single-ended and/or differential inputs • Supports touch sense applications • Four digital comparators • Four digital filters supporting two modes: - Oversampling mode - Averaging mode • Early interrupt generation resulting in faster processing of converted data • Designed for power conversion and general purpose applications • Operation during Sleep and Idle modes A simplified block diagram of the ADC module is illustrated in Figure 25-1. The 12-bit HS SAR ADC has up to six dedicated ADC modules (ADC0-ADC5) and one shared ADC module (ADC7). The dedicated ADC modules use a single input (or its alternate) and are intended for high-speed and precise sampling of time-sensitive or transient inputs. The shared ADC module incorporates a multiplexer on the input to facilitate a larger group of inputs, with slower sampling, and provides flexible automated scanning option through the input scan logic.  2016-2021 Microchip Technology Inc. For each ADC module, the analog inputs are connected to the S&H capacitor. The clock, sampling time, and output data resolution for each ADC module can be set independently. The ADC module performs the conversion of the input analog signal based on the configurations set in the registers. When conversion is complete, the final result is stored in the result buffer for the specific analog input and is passed to the digital filter and digital comparator if configured to use data from this particular sample. Input to ADCx mapping is illustrated in Figure 25-2. 25.1 Activation Sequence The following ADCx activation sequence is to be followed at all times: Step 1: Initialize the ADC calibration values by copying them from the factory programmed DEVADCx Flash locations starting at 0xBFC45000 into the ADCxCFG registers starting at 0xBF887D00, respectively. Then, configure the AICPMPEN bit (ADCCON1 and the IOANCPEN bit (CFGCON) = 1 if and only if VDD is less than 2.5V. The default is ‘0’, which assumes VDD is greater than or equal to 2.5V. Step 2: The user writes all the essential ADC configuration SFRs including the ADC control clock and all ADC core clocks setup: • ADCCON1, keeping the ON bit = 0 • ADCCON2, especially paying attention to ADCDIV and SAMC • ADCANCON, keeping all analog enables ANENx bit = 0 • ADCCON3, keeping all DIGEN5x = 0, especially paying attention to ADCSEL, CONCLKDIV , and VREFSEL • ADCxTIME, especially paying attention to ADCDIVx and SAMCx • ADCTRGMODE, ADCIMCONx, ADCTRGSNS, ADCCSSx, ADCGIRQENx, ADCTRGx, ADCBASE • Comparators, Filters, etc. Step 3: The user sets the ON bit to ‘1’, which enables the ADC control clock. Step 4: The user waits for the interrupt/polls the status bit BGVRRDY = 1, which signals that the device analog environment (band gap and VREF) is ready. Step 5: The user sets the ANENx bit to ‘1’ for the ADC SAR Cores needed (which internally in the ADC module enables the control clock to generate by division the core clocks for the desired ADC SAR Cores, which in turn enables the bias circuitry for these ADC SAR Cores). DS60001402H-page 369 PIC32MK GP/MC Family Step 6: The user waits for the interrupt/polls the warm-up ready bits WKRDYx = 1, which signals that the respective ADC SAR Cores are ready to operate. Step 7: The user sets the DIGENx bit to ‘1’, which enables the digital circuitry to immediately begin processing incoming triggers to perform data conversions. Note: For the best optimized CPU and ISR performance, refer to TABLE 8-1: “ISR Latency Information”. To complete the optimization, the user application should define ISRs that use the ‘at vector’ attribute (see Table 8-1). The CPU interrupt latency is ~43 SYSCLK cycles if no other interrupts are pending. If not using ADC DMA, and the ADC combined sum throughput rate of all the ADC modules in use is greater than (SYSCLK/ 43) = 2.8 Msps, it is recommended to use the ADC CPU early interrupt generation, defined in the ADCxTIME and ADCEIENx registers (see Register 25-33, Register 25-34, and Register 25-35). This will reduce the probability of the ADC results being overwritten by the next conversion before the CPU can read the previous ADC results. Do not use the early interrupts if using the ADC in the DMA module. TABLE 25-1: PIC32MKXXX BASED ON A 60 MHz TAD CLOCK (16.667 ns) Number of Class 1 Interleaved ADC Modules (12-bit mode) TAD Trigger Spacing and Sampling time (SAMC) Max. effective sampling rate 2 8 7.50 Msps 3 6 10.00 Msps 4 4 15.00 Msps 5 4 15.00 Msps 6 3 20.00 Msps Note 1: Interleaved ADCs in this context means connecting the same analog source signal to multiple dedicated Class_1 ADCs (that is, ADC0-ADC5), and using independent staggered trigger sources accordingly for each interleaved ADC. Do not activate ADC triggers sources until after ADC has been completely initialized, enabled, and warm up time complete. NOTE: If using ADC DMA, ADC source clock must be SYSCLK only. Dedicated Class 1 ADCx Throughput rate = 1/((Sample time + Conversion time)(TAD)) = 1 / ((SAMC+# bit resolution+1)(TAD)) Example: SAMC = 3 TAD, 12-bit mode, TAD = 16.667 ns = 60 MHz: Throughput rate = 1 / ((3+12+1)(16.667 ns)) = 1/(16 * 16.667 ns) = 3.75 Msps DS60001402H-page 370  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family FIGURE 25-1: AN0 AN3 AN5 AN24 ADC BLOCK DIAGRAM SH0ALT (ADCTRGMODE) AN VREFL 3% 00 01 10 11 AVSS AVDD VREF+ VREF- 1 ADCSEL 1 .  TCLK CONCLKDIV VREFSEL   VREFH DIFF0 (ADCIMCON1) VREFL TAD0-TAD ADCDIV (ADCxTIME) TQ ADC0 TAD7 AN AN $1 $1 10 &/ ADCDIV (ADCCON2) 00 01 10 11 SH4ALT (ADCTRGMODE) AN VREFL   ADC DIFF4 (ADCIMCON1) AN CTMUB7HPS VBAT/2 AN38 IVREF (1.2V) AN9 ADC7 AN1 VREFL   DIFFx x =  to 4 ADCDATA0 …... ADCDATA Digital Comparator Data Interrupt/Event Triggers, Turbo Channel, Scan Control Logic Trigger Capacitive Voltage Divider (CVD) Status and Control Registers  2016-2021 Microchip Technology Inc. Interrupt/Event System Bus Digital Filter Interrupt DS60001402H-page 371 PIC32MK GP/MC Family FIGURE 25-2: S&H BLOCK DIAGRAM AN3 00 AN0 01 AN8 10 AN26 11 SH3ALT AN0 00 AN3 01 AN5 10 AN24 11 SH0ALT AN27 1 AN6 1 VREFL 0 VREFL 0 DIFF DIFF Dedicated ADC3 AN4 00 AN1 00 AN1 01 AN4 01 AN9 10 AN7 10 AN0 11 AN0 11 SH4ALT SH1ALT AN10 1 AN7 1 VREFL 0 VREFL 0 DIFF DIFF Dedicated ADC4 AN5 00 AN2 00 AN2 01 AN5 01 AN6 10 AN6 10 AN25 11 AN25 11 SH5ALT 1 AN8 1 VREFL 0 VREFL 0 AN6 AN7 AN8 AN9 Dedicated ADC1 SH2ALT AN11 DIFF Dedicated ADC0 DIFF Dedicated ADC5 Dedicated ADC2 AN46 AN47 AN48 AN49 IVREF (1.2V) Note 1: VBAT/2 AN53(1) AN52(1) AN50(1) CTMU_IOUT ADC Party Line CTMU Temperature Sensor AN1 1 VREFL 0 DIFF Shared ADC7 AN50 through AN53 are internal analog input sources. DS60001402H-page 372  2016-2021 Microchip Technology Inc. ADC Control Registers 7000 ADCCON1 7010 ADCCON2 Bits 31/15 30/14 31:16 TRBEN TRBERR 15:0 ON — SIDL REFFLT EOSRDY 31:16 BGVRRDY 29/13 31:16 EOSIEN AICPMPEN 26/10 25/9 24/8 TRBSLV CVDEN FSSCLKEN FSPBCLKEN FRACT — 22/6 ADCEIOVR TRGSUSP — UPDIEN 21/5 20/4 19/3 SELRES — 18/2 17/1 16/0 — — STRGSRC IRQVS STRGLVL — 0600 SAMC ADCEIS UPDRDY SAMP ADCDIV — DIGEN5 DIGEN4 RQCNVRT GLSWTRG GSWTRG DIGEN1 DIGEN0 ADINSEL — 15:0 — — STRGEN5 STRGEN4 STRGEN3 STRGEN2 STRGEN1 STRGEN0 — — 31:16 DIFF15 SIGN15 DIFF14 SIGN14 DIFF13 SIGN13 DIFF12 SIGN12 DIFF11 SIGN11 DIFF10 SIGN10 DIFF9 SIGN9 DIFF8 SIGN8 0000 15:0 DIFF7 SIGN7 DIFF6 SIGN6 DIFF5 SIGN5 DIFF4 SIGN4 DIFF3 SIGN3 DIFF2 SIGN2 DIFF1 SIGN1 DIFF0 SIGN0 0000 31:16 — — — — — — — — DIFF27 SIGN27 DIFF26 SIGN26 DIFF25 SIGN25 DIFF24 SIGN24 0000 15:0 DIFF23(1) SIGN23(1) DIFF22(1) SIGN22(1) DIFF21(1) SIGN21(1) DIFF20(1) SIGN20(1) DIFF19 SIGN19 DIFF18 SIGN18 DIFF17 SIGN17 DIFF16 SIGN16 0000 7060 ADCIMCON3 31:16 DIFF47(1) SIGN47(1) DIFF46(1) SIGN46(1) DIFF45(1) SIGN45(1) — — — — — — DIFF41(1) SIGN41(1) DIFF40(1) 15:0 DIFF39(1) SIGN39(1) DIFF38(1) SIGN38(1) DIFF37(1) SIGN37(1) DIFF36(1) SIGN36(1) DIFF35(1) SIGN35(1) DIFF34(1) SIGN34(1) DIFF33(1) SIGN33(1) — — 0000 7070 ADCIMCON4 31:16 — — — — — — — — — — — — — — — — 0000 15:0 — — — — — — — — — — — — DIFF49 SIGN49 DIFF48 SIGN48 0000 7080 ADCGIRQEN1 31:16 — — — — AGIEN27 AGIEN26 AGIEN25 AGIEN24 AGIEN19 AGIEN18 AGIEN17 15:0 AGIEN15 AGIEN14 AGIEN13 AGIEN12 AGIEN11 AGIEN10 AGIEN9 AGIEN8 AGIEN7 AGIEN6 AGIEN3 AGIEN2 AGIEN1 7090 ADCGIRQEN2 31:16 — — — — — — — — — — — — — 70C0 ADCDSTAT1 70D0 ADCDSTAT2 SH0ALT 0000 SSAMPEN5 SSAMPEN4 SSAMPEN3 SSAMPEN2 SSAMPEN1 SSAMPEN0 0000 AGIEN23(1) AGIEN22(1) AGIEN21(1) AGIEN20(1) AGIEN5 AGIEN4 AGIEN53(3) AGIEN52(3) AGIEN51(3) AGIEN50(3) AGIEN49 SIGN40(1) 0000 AGIEN16 0000 AGIEN0 0000 AGIEN48 0000 AGIEN41(1) AGIEN40(1) AGIEN39(1) AGIEN38(1) AGIEN37(1) AGIEN36(1) AGIEN35(1) AGIEN34(1) AGIEN33(1) AGIEN32(1) 0000 DS60001402H-page 373 31:16 — — — — CSS27 CSS26 CSS25 CSS24 CSS23(1) CSS22(1) CSS21(1) CSS20(1) CSS19 CSS18 CSS17 CSS16 0000 15:0 CSS15 CSS14 CSS13 CSS12 CSS11 CSS10 CSS9 CSS8 CSS7 CSS6 CSS5 CSS4 CSS3 CSS2 CSS1 CSS0 0000 31:16 — — — — — — — — — — CSS53 CSS52 — CSS50 CSS49 CSS48 0000 15:0 CSS47(1) CSS46(1) CSS45(1) — — — CSS41(1) CSS40(1) CSS39(1) CSS38(1) CSS37(1) CSS36(1) CSS35(1) CSS34(1) CSS33(1) — 0000 31:16 — — — — ARDY27 ARDY26 ARDY25 ARDY24 ARDY21(1) ARDY20(1) ARDY19 ARDY18 ARDY17 ARDY16 0000 15:0 ARDY15 ARDY14 ARDY13 ARDY12 ARDY11 ARDY10 ARDY9 ARDY8 ARDY7 ARDY6 ARDY5 ARDY4 ARDY3 ARDY2 ARDY1 ARDY0 0000 31:16 — — — — — — — — — — ARDY53 ARDY52 — ARDY50 ARDY49 ARDY48 0000 ARDY45(1) — — — ARDY41(1) ARDY40(1) ARDY39(1) ARDY38(1) ARDY37(1) ARDY36(1) — 0000 CMPE23(1) CMPE22(1) CMPE21(1) CMPE20(1) CMPE19 CMPE18 CMPE17 CMPE16 0000 CMPE5 CMPE4 CMPE3 CMPE2 CMPE1 CMPE0 15:0 ARDY47(1) ARDY46(1) ARDY23(1) ARDY22(1) ARDY35(1) ARDY34(1) ARDY33(1) 70E0 ADCCMPEN1 31:16 — — — — CMPE27 CMPE26 CMPE25 CMPE24 15:0 CMPE15 CMPE14 CMPE13 CMPE12 CMPE11 CMPE10 CMPE9 CMPE8 70F0 ADCCMP1 31:16 DCMPHI 0000 15:0 DCMPLO 0000 Note 1: 2: 3: CMPE7 CMPE6 This bit or register is not available on 64-pin devices. This register is for internal ADC input sources (i.e., VBAT, and CTMU Temperature Sensor. Before enabling the ADC, the user application must initialize the ADC calibration values by copying them from the factory programmed DEVADCx Flash locations starting at 0xBFC45000 into the ADCxCFG registers starting at 0xBF887D00, respectively. 0000 PIC32MK GP/MC Family 70B0 ADCCSS2 SH1ALT 0000 — 70A0 ADCCSS1 SH2ALT 0000 — 15:0 AGIEN47(1) AGIEN46(1) AGIEN45(1) SH3ALT 0000 DIGEN2 — 7050 ADCIMCON2 SH4ALT DIGEN3 7030 ADCTRGMODE 31:16 7040 ADCIMCON1 SH5ALT DIGEN7 0000 0000 — CONCLKDIV VREFSEL 23/7 CVDCPL ADCSEL 15:0 27/11 TRBMST 15:0 BGVRIEN REFFLTIEN 7020 ADCCON3 28/12 All Resets Register Name ADC REGISTER MAP Bit Range TABLE 25-2: Virtual Address  2016-2021 Microchip Technology Inc. 25.2 7100 ADCCMPEN2 7110 ADCCMP2 Bits 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 31:16 — — — — CMPE27 CMPE26 CMPE25 CMPE24 15:0 CMPE15 CMPE14 CMPE13 CMPE12 CMPE11 CMPE10 CMPE9 CMPE8 23/7 CMPE23(1) CMPE22(1) CMPE7 31:16 DCMPHI 15:0 DCMPLO 31:16 — — — — CMPE27 CMPE26 CMPE25 CMPE24 15:0 CMPE15 CMPE14 CMPE13 CMPE12 CMPE11 CMPE10 CMPE9 CMPE8 7130 ADCCMP3 31:16 DCMPHI 15:0 DCMPLO CMPE7 31:16 — — — — CMPE27 CMPE26 CMPE25 CMPE24 15:0 CMPE15 CMPE14 CMPE13 CMPE12 CMPE11 CMPE10 CMPE9 CMPE8 7150 ADCCMP4 31:16 DCMPHI 15:0 DCMPLO AFEN DATA16EN DFMODE OVRSAM AFGIEN 15:0 71B0 ADCFLTR2 31:16 31:16 AFEN DATA16EN DFMODE OVRSAM AFGIEN 31:16 AFEN DATA16EN DFMODE OVRSAM AFGIEN 7210 ADCTRG2  2016-2021 Microchip Technology Inc. 7220 ADCTRG3 7230 ADCTRG4 7240 ADCTRG5 7250 ADCTRG6(1) 7260 ADCTRG7 Note 1: 2: 3: 18/2 17/1 16/0 CMPE21(1) CMPE20(1) CMPE19 CMPE18 CMPE17 CMPE16 0000 CMPE5 CMPE4 CMPE3 CMPE2 CMPE1 CMPE0 AFRDY — AFRDY — AFEN DATA16EN DFMODE OVRSAM AFGIEN AFRDY — 0000 0000 CMPE6 CMPE21(1) CMPE20(1) CMPE19 CMPE18 CMPE17 CMPE16 0000 CMPE5 CMPE4 CMPE3 CMPE2 CMPE1 CMPE0 0000 0000 0000 CMPE6 CMPE21(1) CMPE20(1) CMPE19 CMPE18 CMPE17 CMPE16 0000 CMPE5 CMPE4 CMPE3 CMPE2 CMPE1 CMPE0 0000 0000 0000 — — CHNLID — — CHNLID — — CHNLID — — CHNLID 0000 0000 0000 0000 FLTRDATA 15:0 7200 ADCTRG1 19/3 FLTRDATA 15:0 71D0 ADCFLTR4 — 20/4 FLTRDATA 15:0 71C0 ADCFLTR3 AFRDY CMPE7 21/5 0000 CMPE23(1) CMPE22(1) 7140 ADCCMPEN4 31:16 CMPE6 CMPE23(1) CMPE22(1) 7120 ADCCMPEN3 71A0 ADCFLTR1 22/6 All Resets Bit Range Virtual Address Register Name ADC REGISTER MAP (CONTINUED) 0000 0000 FLTRDATA 0000 0000 31:16 — — — TRGSRC3 — — — TRGSRC2 0000 15:0 — — — TRGSRC1 — — — TRGSRC0 0000 31:16 — — — TRGSRC7 — — — TRGSRC6 0000 15:0 — — — TRGSRC5 — — — TRGSRC4 0000 31:16 — — — TRGSRC11 — — — TRGSRC10 0000 15:0 — — — TRGSRC9 — — — TRGSRC8 0000 31:16 — — — TRGSRC15 — — — TRGSRC14 0000 15:0 — — — TRGSRC13 — — — TRGSRC12 0000 31:16 — — — TRGSRC19(1) — — — TRGSRC18 0000 15:0 — — — TRGSRC17 — — — TRGSRC16 0000 31:16 — — — TRGSRC23 — — — TRGSRC22 0000 15:0 — — — TRGSRC21 — — — TRGSRC20 0000 31:16 — — — TRGSRC27 — — — TRGSRC26 0000 15:0 — — — TRGSRC25 — — — TRGSRC24 0000 This bit or register is not available on 64-pin devices. This register is for internal ADC input sources (i.e., VBAT, and CTMU Temperature Sensor. Before enabling the ADC, the user application must initialize the ADC calibration values by copying them from the factory programmed DEVADCx Flash locations starting at 0xBFC45000 into the ADCxCFG registers starting at 0xBF887D00, respectively. PIC32MK GP/MC Family DS60001402H-page 374 TABLE 25-2: Bits 31/15 30/14 29/13 15:0 — — 7290 ADCCMPCON2 31:16 — — — 15:0 — — — 72A0 ADCCMPCON3 31:16 — — — 15:0 — — — 72B0 ADCCMPCON4 31:16 — — — 15:0 — — — 31:16 — — — 28/12 27/11 26/10 25/9 7280 ADCCMPCON1 31:16 7300 ADCBASE 7320 ADCCNTB 7330 ADCDMAB 7350 ADC0TIME 7360 ADC1TIME 7370 ADC2TIME 7380 ADC3TIME 7390 ADC4TIME 73A0 ADC5TIME DS60001402H-page 375 73C0 ADCEIEN1 73D0 ADCEIEN2 1: 2: 3: 21/5 20/4 19/3 18/2 17/1 16/0 DCMPED IEBTWN IEHIHI IEHILO IELOHI IELOLO — — — 0000 — — — — — — 0000 DCMPED IEBTWN IEHIHI IEHILO IELOHI IELOLO — — AINID — — — 0000 — — — — — — 0000 DCMPED IEBTWN IEHIHI IEHILO IELOHI IELOLO — — — — 0000 — — — — — — 0000 DCMPED IEBTWN IEHIHI IEHILO IELOHI IELOLO — — 0000 — — — — — — — 0000 — — — ENDCMP DCMPGIEN — — AINID — — ENDCMP DCMPGIEN AINID — 0000 ENDCMP DCMPGIEN — — ENDCMP DCMPGIEN — — — ADCBASE 0000 31:16 DMAEN — RBFIEN5 RBFIEN4 RBFIEN3 RBFIEN2 RBFIEN1 RBFIEN0 WOVERR — RBF5 RBF4 RBF3 RBF2 RBF1 RBF0 0000 15:0 DMACEN — RAFIEN5 RAFIEN4 RAFIEN3 RAFIEN2 RAFIEN1 RAFIEN0 — — RAF5 RAF4 RAF3 RAF2 RAF1 RAF0 0000 31:16 ADCCNTB 0000 15:0 ADCCNTB 0000 31:16 ADCDMAB 0000 15:0 ADCDMAB 0000 31:16 — — — — LVL27 LVL26 LVL25 LVL24 LVL23(1) LVL22(1) LVL21(1) LVL20(1) LVL19 LVL18 LVL17 LVL16 0000 15:0 LVL15 LVL14 LVL13 LVL12 LVL11 LVL10 LVL9 LVL8 LVL7 LVL6 LVL5 LVL4 LVL3 LVL2 LVL1 LVL0 0000 31:16 — — — 15:0 — — — 31:16 — — — 15:0 — — — 31:16 — — — 15:0 — — — 31:16 — — — 15:0 — — — 31:16 — — — 15:0 — — — 31:16 — — — 15:0 — — — — — — 31:16 — — — — EIEN27 EIEN26 EIEN25 EIEN24 EIEN23(1) EIEN22(1) EIEN21(1) EIEN20(1) EIEN19 EIEN18 EIEN17 EIEN16 0000 15:0 EIEN15 EIEN14 EIEN13 EIEN12 EIEN11 EIEN10 EIEN9 EIEN8 EIEN7 EIEN6 EIEN5 EIEN4 EIEN3 EIEN2 EIEN1 EIEN0 0000 31:16 — — — — — — — — — — EIRDY53 EIRDY52 — EIRDY50 EIRDY49 — — — EIEN41(1) EIEN40(1) EIEN39(1) EIEN38(1) EIEN37(1) EIEN36(1) EIEN35(1) EIEN34(1) EIEN33(1) 15:0 EIRDY47(1) EIRDY46(1) EIRDY45(1) Note 22/6 ADCEIS — — SELRES — — — — — BCHEN 0300 0000 ADCDIV — 0300 SAMC SELRES BCHEN 0000 ADCDIV — 0300 SAMC SELRES BCHEN 0000 ADCDIV — ADCEIS 0000 ADCDIV SAMC SELRES ADCEIS — BCHEN — ADCEIS 0300 SAMC SELRES ADCEIS — ADCDIV — ADCEIS — BCHEN 0300 SAMC SELRES BCHEN 0000 ADCDIV 0300 SAMC 0000 EIRDY48 0000 — This bit or register is not available on 64-pin devices. This register is for internal ADC input sources (i.e., VBAT, and CTMU Temperature Sensor. Before enabling the ADC, the user application must initialize the ADC calibration values by copying them from the factory programmed DEVADCx Flash locations starting at 0xBFC45000 into the ADCxCFG registers starting at 0xBF887D00, respectively. 0000 PIC32MK GP/MC Family 7340 ADCTRGSNS 23/7 CVDDATA AINID 15:0 7310 ADCDSTAT 24/8 All Resets Register Name ADC REGISTER MAP (CONTINUED) Bit Range Virtual Address  2016-2021 Microchip Technology Inc. TABLE 25-2: 73E0 ADCEISTAT1 Bits 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 EIRDY23(1) EIRDY22(1) EIRDY21(1) EIRDY20(1) 19/3 18/2 17/1 16/0 All Resets Bit Range Virtual Address Register Name ADC REGISTER MAP (CONTINUED) 31:16 — — — — EIRDY27 EIRDY26 EIRDY25 EIRDY24 EIRDY19 EIRDY18 EIRDY17 15:0 EIRDY15 EIRDY14 EIRDY13 EIRDY12 EIRDY11 EIRDY10 EIRDY9 EIRDY8 EIRDY7 EIRDY6 EIRDY5 EIRDY4 EIRDY3 EIRDY2 EIRDY1 EIRDY0 73F0 ADCEISTAT2 31:16 — — — — — — — — — — EIRDY53 EIRDY52 — EIRDY50 EIRDY49 EIRDY48 0000 15:0 EIRDY47(1) EIRDY46(1) EIRDY45(1) — — 7400 ADCANCON 31:16 — — — — 15:0 WKRDY7 — WKRDY5 WKRDY4 7600 ADCDATA0 7610 ADCDATA1 7620 ADCDATA2 7630 ADCDATA3 7640 ADCDATA4 7650 ADCDATA5 7660 ADCDATA6 7670 ADCDATA7 7680 ADCDATA8  2016-2021 Microchip Technology Inc. 7690 ADCDATA9 76A0 ADCDATA10 76B0 ADCDATA11 76C0 ADCDATA12 76D0 ADCDATA13 Note 1: 2: 3: — EIRDY41(1) EIRDY40(1) EIRDY39(1) EIRDY38(1) EIRDY37(1) EIRDY36(1) EIRDY35(1) EIRDY34(1) EIRDY33(1) WKUPCLKCNT WKRDY3 WKRDY2 WKRDY1 WKRDY0 EIRDY16 0000 0000 — 0000 WKIEN7 — WKIEN5 WKIEN4 WKIEN3 WKIEN2 WKIEN1 WKIEN0 0000 ANEN7 — ANEN5 ANEN4 ANEN3 ANEN2 ANEN1 ANEN0 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 This bit or register is not available on 64-pin devices. This register is for internal ADC input sources (i.e., VBAT, and CTMU Temperature Sensor. Before enabling the ADC, the user application must initialize the ADC calibration values by copying them from the factory programmed DEVADCx Flash locations starting at 0xBFC45000 into the ADCxCFG registers starting at 0xBF887D00, respectively. PIC32MK GP/MC Family DS60001402H-page 376 TABLE 25-2: 76E0 ADCDATA14 Bits 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 All Resets Register Name ADC REGISTER MAP (CONTINUED) Bit Range Virtual Address  2016-2021 Microchip Technology Inc. TABLE 25-2: DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 7740 ADCDATA20(1) 31:16 DATA 0000 15:0 DATA 0000 7750 ADCDATA21(1) 31:16 DATA 0000 15:0 DATA 0000 7760 ADCDATA22(1) 31:16 DATA 0000 15:0 DATA 0000 7770 ADCDATA23(1) 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 7810 ADCDATA33(1) 31:16 DATA 0000 15:0 DATA 0000 7820 ADCDATA34(1) 31:16 DATA 0000 15:0 DATA 0000 7830 ADCDATA35(1) 31:16 DATA 0000 15:0 DATA 0000 76F0 ADCDATA15 7700 ADCDATA16 7710 ADCDATA17 7720 ADCDATA18 7730 ADCDATA19 7780 ADCDATA24 7790 ADCDATA25 77A0 ADCDATA26 77B0 ADCDATA27 DS60001402H-page 377 Note 1: 2: 3: This bit or register is not available on 64-pin devices. This register is for internal ADC input sources (i.e., VBAT, and CTMU Temperature Sensor. Before enabling the ADC, the user application must initialize the ADC calibration values by copying them from the factory programmed DEVADCx Flash locations starting at 0xBFC45000 into the ADCxCFG registers starting at 0xBF887D00, respectively. PIC32MK GP/MC Family 31:16 Bits 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 All Resets Bit Range Virtual Address Register Name ADC REGISTER MAP (CONTINUED) 7840 ADCDATA36(1) 31:16 DATA 0000 15:0 DATA 0000 7850 ADCDATA37(1) 31:16 DATA 0000 15:0 DATA 0000 7860 ADCDATA38(1) 31:16 DATA 0000 15:0 DATA 0000 7870 ADCDATA39(1) 31:16 DATA 0000 15:0 DATA 0000 7880 ADCDATA40(1) 31:16 DATA 0000 15:0 DATA 0000 7890 ADCDATA41(1) 31:16 DATA 0000 15:0 DATA 0000 78D0 ADCDATA45(1) 31:16 DATA 0000 15:0 DATA 0000 78E0 ADCDATA46(1) 31:16 DATA 0000 15:0 DATA 0000 78F0 ADCDATA47(1) 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 31:16 DATA 0000 15:0 DATA 0000 7920 ADCDATA50(2) 31:16 DATA 0000 15:0 DATA 0000 7940 ADCDATA52(2) 31:16 DATA 0000 15:0 DATA 0000 7950 ADCDATA53(2) 31:16 DATA 0000 15:0 DATA 7900 ADCDATA48 7910 ADCDATA49  2016-2021 Microchip Technology Inc. 7E00 ADCSYSCFG0 31:16 15:0 7E10 ADCSYSCFG1 31:16 15:0 7D00 ADC0CFG(3) Note 1: 2: 3: 0000 — — — — AN27 AN26 AN25 AN24 AN23(1) AN22(1) AN21(1) AN20(1) AN19 AN18 AN17 AN16 0FxF AN15 AN14 AN13 AN12 AN11 AN10 AN9 AN8 AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0 FFFF — — — — — — — — — — AN53(1) AN52(1) — AN50(1) AN49 AN48 00xx AN47(1) AN46(1) AN45(1) — — — AN41(1) AN40(1) AN39(1) AN38(1) AN37(1) AN36(1) AN35(1) AN34(1) AN33(1) — xxxx 31:16 ADCCFG 0000 15:0 ADCCFG 0000 This bit or register is not available on 64-pin devices. This register is for internal ADC input sources (i.e., VBAT, and CTMU Temperature Sensor. Before enabling the ADC, the user application must initialize the ADC calibration values by copying them from the factory programmed DEVADCx Flash locations starting at 0xBFC45000 into the ADCxCFG registers starting at 0xBF887D00, respectively. PIC32MK GP/MC Family DS60001402H-page 378 TABLE 25-2: 7D10 ADC1CFG(3) 7D20 ADC2CFG(3) 7D30 ADC3CFG(3) 7D40 ADC4CFG(3) 7D50 ADC5CFG(3) 7D70 ADC7CFG(3) Note 1: 2: 3: Bits 31/15 30/14 29/13 28/12 27/11 26/10 25/9 24/8 23/7 22/6 21/5 20/4 19/3 18/2 17/1 16/0 All Resets Register Name ADC REGISTER MAP (CONTINUED) Bit Range Virtual Address  2016-2021 Microchip Technology Inc. TABLE 25-2: 31:16 ADCCFG 0000 15:0 ADCCFG 0000 31:16 ADCCFG 0000 15:0 ADCCFG 0000 31:16 ADCCFG 0000 15:0 ADCCFG 0000 31:16 ADCCFG 0000 15:0 ADCCFG 0000 31:16 ADCCFG 0000 15:0 ADCCFG 0000 31:16 ADCCFG 0000 15:0 ADCCFG 0000 This bit or register is not available on 64-pin devices. This register is for internal ADC input sources (i.e., VBAT, and CTMU Temperature Sensor. Before enabling the ADC, the user application must initialize the ADC calibration values by copying them from the factory programmed DEVADCx Flash locations starting at 0xBFC45000 into the ADCxCFG registers starting at 0xBF887D00, respectively. PIC32MK GP/MC Family DS60001402H-page 379 PIC32MK GP/MC Family REGISTER 25-1: Bit Range 31:24 23:16 15:8 7:0 Bit 31/23/15/7 Bit 30/22/14/6 Bit 29/21/13/5 R/W-0 R/W-0 R-0, HS, HC TRBEN TRBERR R/W-0 R/W-1 FRACT R/W-0 U-0 — bit 30 Bit Bit Bit 28/20/12/4 27/19/11/3 26/18/10/2 R/W-0 R/W-0 R/W-1 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 SIDL AICPMPEN CVDEN R/W-0 R/W-0 R/W-0 HC = Hardware Set W = Writable bit ‘1’ = Bit is set Bit 24/16/8/0 R/W-0 R/W-0 TRBSLV R/W-0 IRQVS Bit 25/17/9/1 R/W-0 TRBMST SELRES U-0 ON Legend: R = Readable bit -n = Value at POR bit 31 ADCCON1: ADC CONTROL REGISTER 1 R/W-0 R/W-0 R/W-0 R/W-0 U-0 STRGSRC R/W-0 FSSCLKEN FSPBCLKEN R/W-0 STRGLVL R/W-0 — R/W-0 DMABL HS = Hardware Cleared U = Unimplemented bit, read as ‘0’ ‘0’ = Bit is cleared x = Bit is unknown TRBEN: Turbo Channel Enable bit 1 = Enable the Turbo channel 0 = Disable the Turbo channel TRBERR: Turbo Channel Error Status bit 1 = An error occurred while setting the Turbo channel and Turbo channel function to be disabled regardless of the TRBEN bit being set to ‘1’. 0 = Turbo channel error did not occur Note: The status of this bit is valid only after the TRBEN bit is set. bit 29-27 TRBMST: Turbo Host ADCx bits 111 = Reserved 110 = Reserved 101 = ADC5 100 = ADC4 011 = ADC3 010 = ADC2 001 = ADC1 000 = ADC0 bit 26-24 TRBSLV: Turbo Client ADCx bits 111 = Reserved 110 = Reserved 101 = ADC5 100 = ADC4 011 = ADC3 010 = ADC2 001 = ADC1 000 = ADC0 bit 23 FRACT: Fractional Data Output Format bit 1 = Fractional 0 = Integer bit 22-21 SELRES: Shared ADC7 (i.e., AN6-AN53) Resolution bits 11 = 12 bits (default) 10 = 10 bits 01 = 8 bits 00 = 6 bits DS60001402H-page 380  2016-2021 Microchip Technology Inc. PIC32MK GP/MC Family REGISTER 25-1: ADCCON1: ADC CONTROL REGISTER 1 (CONTINUED) bit 20-16 STRGSRC: Scan Trigger Source Select bits 11111 = Reserved 11110 = Reserved 11101 = PWM Generator 6 Current-Limit (Motor Control only) 11100 = PWM Generator 5 Current-Limit (Motor Control only) 11011 = PWM Generator 4 Current-Limit (Motor Control only) 11010 = PWM Generator 3 Current-Limit (Motor Control only) 11001 = PWM Generator 2 Current-Limit (Motor Control only) 11000 = PWM Generator 1 Current-Limit (Motor Control only) 10111 = Reserved 10110 = Reserved 10101 = Reserved 10100 = CTMU trip 10011 = Output Compare 4 period end 10010 = Output Compare 3 period end 10001 = Output Compare 2 period end 10000 = Output Compare 1 period end 01111 = PWM Generator 6 trigger (Motor Control only) 01110 = PWM Generator 5 trigger (Motor Control only) 01101 = PWM Generator 4 trigger (Motor Control only) 01100 = PWM Generator 3 trigger (Motor Control only) 01011 = PWM Generator 2 trigger (Motor Control only) 01010 = PWM Generator 1 trigger (Motor Control only) 01001 = Secondary PWM time base (Motor Control only) 01000 = Primary PWM time base (Motor Control only) 00111 = General Purpose Timer5 00110 = General Purpose Timer3 00101 = General Purpose Timer1 00100 = INT0 00011 = Scan trigger 00010 = Software level trigger 00001 = Software edge trigger 00000 = No Trigger Note: bit 15 bit 14 bit 13 These triggers only apply to implemented analog inputs AN32-AN53. For AN0-AN27 refer to ADCTRG1-ADCTRG7. ON: ADC Module Enable bit 1 = ADC module is enabled 0 = ADC module is disabled Note: The ON bit should be set only after the ADC module has been configured. Unimplemented: Read as ‘0’ SIDL: Stop in Idle Mode bit 1 = Discontinue module operation when device enters Idle mode 0 = Continue module operation in Idle mode  2016-2021 Microchip Technology Inc. DS60001402H-page 381 PIC32MK GP/MC Family REGISTER 25-1: bit 12 ADCCON1: ADC CONTROL REGISTER 1 (CONTINUED) AICPMPEN: Analog Input Charge Pump Enable bit 1 = Analog input charge pump is enabled 0 = Analog input charge pump is disabled (default) Note 1: For proper analog operation at VDD less than 2.5V, the AICPMPEN bit must be = 1, and the IOANCPEN bit in the CFGCON register must be set to ‘1’. This bit must not be set if VDD is greater than 2.5V. 2: ADC throughput rate performance is reduced, as defined in the following table, if AICPMPEN = 1 or IOANCPEN (CFGCON
PIC32MK1024GPE100T-I/PT 价格&库存

很抱歉,暂时无法提供与“PIC32MK1024GPE100T-I/PT”相匹配的价格&库存,您可以联系我们找货

免费人工找货