Silicon Errata Issues

The following errata issues apply to the PIC32CX-BZ2 family of devices.

Note:
  • Cells with an ‘X’ indicate the issue is present in this revision of the silicon.
  • Cells with a dash (‘—’) indicate this silicon revision does not exist for this issue.
  • Blank cells indicate the issue was corrected or does not exist in this revision of the silicon.
  • Traditional Inter-Integrated Circuit (I2C) and Serial Peripheral Interface (SPI) documentation use the terminology “Master” and “Slave”. The equivalent Microchip terminology used in this document is “Host” and “Client”, respectively.

Analog-to-Digital Converter (ADC)

Level Trigger

The ADC level trigger does not perform burst conversions in Debug mode.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Scan

The scan list conversions defined in the ADCCSS1 register will restart without finishing the current scan list and does not generate an EOSRDY bit (ADCCON2[29]) end of scan interrupt status if a new trigger event from the STRGSRC[4:0]bits (ADCCON1[20:16]) trigger source occurs before the scan list completion on the shared ADC core.

Work Around:

Ensure that the STRGSRC[4:0] bits trigger source repetition rate.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Analog Comparator (AC)

Disabling Analog Comparator

AC_CMPx output is not gated either by COMPCTRLx.ENABLE or PMD1.ACMD.

Work Around:

Write the CFGCON1.CMPx_OE register bit to ‘0’ to disable the AC_CMPx output.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Incorrect VDD Scaler Reference for AC_CMP0

AC_CMP0 is supposed to use a fixed VDD/2 reference when the VDD scaler option is used. But the observed reference voltage is not equal to VDD/2.

Work Around:

For A0, use the following equation to get the VScale for AC_CMP0.

VScale = VDDx(598.5/900)

If VDD is 3.3, then:

VScale = 3.3x598.5/900 = 2.1945V

Note:

This workaround is only applicable to A0 revision and does not work in A2 revision.

For A2, AC_CMP0 uses VDD/2.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X
PIC32CX1012BZ24032/WBZ450
A2

Wrong VDD Scaler Reference with CMP0 and CMP1 Enabled Concurrently

The wrong VDD scaler reference voltage is observed when AC_CMP0 and AC_CMP1 are enabled concurrently with VDD scaler as the reference for both the comparators. Both the comparators will see the same VDD scaler reference.

Work Around:

For A0, use the following equation to get the VScale for AC_CMP0 and AC_CMP1.

R_Bottom = R_Bottom of configured SCALER1.VALUE[3:0]

R_Total = 900 – abs([598.5 - R_Bottom])

VScale = VDD. (598.5)/R_Total if R_bottom >= 598.5

VScale = VDD.(R_Bottom/R_Total) if R_bottom < 598.5

Note:

This workaround is only applicable to A0 revision and does not work in A2 revision. In A2, CMP0 and CMP1 uses independent scaler references as per the data sheet.

CMP0 uses a fixed reference VDD/2. CMP1 uses a variable reference configured using SCALER1.VALUE[3:0].

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X
PIC32CX1012BZ24032/WBZ450
A2

Clock Reset Unit (CRU)

Peripheral Bus Clocks

The Power-on Reset value of the PB3 clock is not correct.

Work Around:

Use Microchip-provided SDK and bootloader. This software will initialize the CRU.PB3DIV register to the data sheet-specified default value. If using third-party tools and other custom developed software, set this register to the data sheet default value of 0x0000_8809.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Configurable Custom Logic (CCL)

Enable Protected Registers

The SEQCTRLx and LUCTRLx registers are enable-protected by the CTRL.ENABLE bit; however, they must be enable-protected by the LUTCTRLx.ENABLE bits.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Sequential Logic

LUT output is corrupted after enabling CCL when sequential logic is used.

Work Around:

Write the CTRL register twice when enabling the CCL.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Device

VIL Input Low Voltage

There is degraded VIL/VIH performance when the GPIO pull-up/pull-down resistors are enabled on PB0, PB1, PB2, PB3,PB4, PB5, PB6, PB8 or PB9. These pins may not be able to recognize a logic low level if the pull-up on that pad is enabled.

Work Around:

If using PB0, PB1, PB2, PB3,PB4, PB5, PB6, PB8 or PB9 for GPIO, do not enable pull-up or pull-down; use external resistors.

Note:

The work around is working in A2 and newer versions.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X
PIC32CX1012BZ24032/WBZ450
A2

Device Service Unit (DSU)

Programming or Debugging

Device debugging or programming can only be supported using ICD4 at room temperature. When programming or debugging, the device’s supply voltage can only range between 1.9 (min) and 3.0 (max) V, including the min and max voltages.

Work Around:

Use A2 silicon.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X
PIC32CX1012BZ24032/WBZ450
A2

CRC32

The DSU CRC32 will not complete when targeting NVM memory space while the NVM cache is disabled.

Work Around:

Be sure to always enable the NVM cache when performing a DSU CRC32 request targeting the NVM memory space.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Direct Memory Access Controller (DMAC)

DMAC in Debug Mode

In Debug mode, DMAC does not restart after a debug halt when DBGCTRL.DBGRUN = 0.

Work Around:

Set DBGCTRL.DBGRUN to '1' so that the DMAC continues normal operation when the CPU is halted by an external debugger.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Occurrence of Fetch Error

When at least one channel using linked descriptors is already active, a channel Fetch Error (FERR) may occur on enabling a channel with no linked descriptor or when one of the already active channels using linked descriptors may fetch the enabled second descriptor (index 1) of the channel. These errors can occur when a channel is enabled during the link request of another channel and if the channel number of the enabled channel is lower than the already active channel.

Work Around:

When enabling a channel while other channels using linked descriptors are already active, the channel number of the new channel to enable must be greater than the other channel numbers.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

External Interrupt Controller (EIC)

Edge Detection

When enabling EIC, the SYNCBUSY.ENABLE bit resets before EIC is fully enabled. Edge detection can be done only after three cycles of the selected GCLK (GCLK_EIC or CLK_ULP32K).

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Asynchronous Edge Detection

When the asynchronous edge detection is enabled and the system is in Standby mode, only the first edge will be detected. The following edges are ignored until the system wakes up.

Work Around:

Use the asynchronous edge detection with debouncer enabled. It is recommended to set the DPRESCALER.PRESCALER and DPRESCALER.TICKON to have the lowest frequency possible. To reduce the power consumption, set the EIC GCLK frequency as low as possible or select the ULP32K clock (EIC CTRLA.CKSEL set).

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Event System (EVSYS)

Software Event

BUSYCH flag never resets upon software events in synchronous/resynchronized path modes with event detection on falling edges.

If a software event occurs when the EVSYS is set in synchronous/resynchronized path modes (CHANNELn.PATH=0x0/0x1) with event detection set on falling edges (CHANNELn.EDGSEL=0x2), the CHSTATUS.BUSYCHn flag will be set but will never come back to 0. It is, then, impossible to know if the event user for this channel is ready to accept new events or not.

Work Around:

Generate software events for this user through a dedicated channel configured with event detection set on rising edges (CHANNELn.EDGSEL=0x1).

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Spurious Overrun

Overrun interrupt flag may be incorrectly set upon software events in synchronous/resynchronized path modes with event detection on both rising and falling edges.

If a software event occurs when the EVSYS is set in synchronous/resynchronized path modes (CHANNELn.PATH=0x0/0x1) with event detection set on both rising and falling edges (CHANNELn.EDGSEL=0x3), spurious overrun interrupts may occur (INTFLAG.OVRn).

Work Around:

Generate software events for the event user through a dedicated channel configured with event detection set on rising edges (CHANNELn.EDGSEL=0x1).

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Frequency Meter (FREQM)

Measurement Clock Stalls

During a measurement slot, the measurement clock stalls (or is very slow), the STATUS.BUSY will never de-assert and the DONE interrupt will not be raised.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

General Purpose Input/Output (GPIO)

GPIO Output Configuration in Deep Sleep and Extreme Deep Sleep

In Deep Sleep and Extreme Deep Sleep Mode, do not set GPIO to output state of pin high.

Configuring the GPIO state to pin high during Deep Sleep and Extreme Deep Sleep Mode will cause leakage current and potential reliability issues on the silicon.

This issue is only applicable when the system is in Deep Sleep or Extreme Deep Sleep Mode and when GPIO is configured as output state pin high.

Work Around:

Set the state of GPIOs to low before entering DS/XDS for the least current consumption, either by output state or by pull-down.

Note:

The work around is working in A2 and newer versions.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X
PIC32CX1012BZ24032/WBZ450
A2

Peripheral Access Controller (PAC)

PAC Protection Error in FREQM

FREQM reads on the Control B register (FREQM.CTRLB) generate a PAC protection error.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

PAC Protection Error in CCL

Writing the Software Reset bit in the Control A register (CTRLASWRST) will trigger a PAC protection error.

Work Around:

Clear the CCL PAC error each time a CCL software reset is executed.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Prefetch Cache

CPU Hang Configuration Switch

CHECON.ADRWS is not hard wired to ‘0’ and is configurable to ‘1’ or ‘0’, with the reset/default value being ‘1’. The CPU hangs when the CHECON.ADRWS configuration switches from ‘1’ to ‘0’ and a Flash read access occurs. While CHECON.ADRWS is switching to ‘0’ (default is ‘1’), the ADRWS will be latched at the next clock, and, if a Flash read access happens at the same clock, the system hangs waiting for an internal ack due to the PFM cache miss.

Work Around:

To configure ADRWS from ‘1’ to ‘0’, execute the CHECON configuration from SRAM until the configuration is done, then resume the execution from Flash after the configuration is set. The Microchip-generated initialization code already takes care of this with the above scheme.

Note:
  • The work around is working in A2 and newer versions.
  • The ADRWS bit behavior is modified in the PIC32CX-BZ2 and WBZ45 Family Data Sheet (DS70005504-B)

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X
PIC32CX1012BZ24032/WBZ450
A2

RAM Error Correction Code (ECC)

ERRADDR Register may Read as ‘0’ when PB-Bridge-B (PB2_CLK) is Not Equal to System Clock (SYS_CLK)

If PB2_CLK is not equal to System Clock (sys_clk), ERRADDR register read will not return the failing address (caused by Single Bit Error/Dual Bit Error); instead it may return ‘0’.

Work Around:

When using RAM ECC in application, configure PB2_CLK to be equal to SYS_CLK without any divisions.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Real-Time Counter (RTC)

False Tamper Detection

False tamper detections may occur when configuring the RTC INn and OUTn pins.

Work Around:

First, configure the different RTC registers. Then, select the RTC INn and OUTn peripheral function(s) on the PORT peripheral (PMUX registers).

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Reset of General Purpose Registers on Tamper Detection

General Purpose Registers n (GPn) are Reset on tamper detection even if GPTRST = 0.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Reset of INTFLAG.TAMPER Bit Fails

When DMA is enabled (CTRLB.DMAEN = 1), the INTFLAG.TAMPER bit is not reset by reading the TIMESTAMP register.

Work Around:

Clear the INTFLAG.TAMPER bit by writing a ‘1’ to this bit when the Timestamp value is read by the DMA.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

RTC SYNCBUSY Register Bits Not Cleared

Entering the Deep Sleep mode without waiting for SYNCBUSY.ENABLE and SYNCBUSY.COUNTSYNC synchronization completion may freeze these bits’ statuses.

Work Around:

The RTC must always be configured and enabled before enabling the Battery Backup mode.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Write Corruption

An 8-bit or 16-bit write access for a 32-bit register, or 8-bit write access for a 16-bit register can fail for the following registers:
  • COUNT register in COUNT32 mode
  • COUNT register in COUNT16 mode
  • CLOCK register in CLOCK mode

Work Around:

Write the registers with:
  • A 32-bit write access for COUNT register in COUNT32 mode, CLOCK register in CLOCK mode
  • A 16-bit write access for the COUNT register in COUNT16 mode

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

COUNTSYNC

When COUNTSYNC is enabled, the first COUNT value is not correctly synchronized and, thus, it is an incorrect value.

Work Around:

After enabling COUNTSYNC, read the COUNT register until its value is changed when compared to its first value read. After this, all subsequent values read from the COUNT register are valid.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Tamper Input Filter

Majority debouncing, as part of RTC tamper detection, does not work when enabled by setting the Debouncer Majority Enable bit, CTRLB.DEBMAJ.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Tamper Detection

Upon enabling the RTC tamper detection feature, a false tamper detection can be reported by the RTC.

Work Around:

Use any one of the following work arounds:
  1. Configure tamper detection to only falling edge.
  2. If the user software has to use tamper detection as rising edge, it must ignore the first tamper interrupt generated after enabling the RTC tamper detection.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Tamper Detection Timestamp

If an external reset occurs during a tamper detection, the timestamp register will not be updated when the next tamper detection is triggered.

Work Around:

Enable RTC tamper interrupt and copy the timestamp from the RTC CLOCK COUNT register to one of the following destinations:
  • SRAM
  • GPx register in RTC
  • BKUPx register in RTC
Note: This work around does not apply for Battery Backup mode. In Battery Backup mode, the RTC Timestamp capture feature is not functional.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Unwanted Event and Interrupt Generation

When CTRLA.PRESCALER is set to OFF and either CTRLB.RTCOUT is set or one of the TAMCTRL.DEBNCn bits is set, the RTC prescaler behaves like CTRLA.PRESCALER = DIV1. The periodic events and periodic interrupts will be generated.

Work Around:

When the above conditions are met, clear the EVTCTRL.PEROEn bits to avoid unwanted event generation and clear the INTENCLR.PERn bits to avoid unwanted interrupt generation.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Serial Communication Interface (SERCOM)

SERCOM-USART: INTFLAG.TXC being Set Incorrectly

When the USART is used in the 32-bit mode with hardware handshaking (CTS/RTS), the TXC flag may be set before transmission has completed. TXC may incorrectly be set regardless of whether Data Length Enable (LENGTH.LENEN) is set to ‘0’ or ‘1’.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

SERCOM-USART: Over Consumption in Standby Mode

When the SERCOM USART configured as CTRLA.RUNSTDBY = 0 and the Receiver is disabled (CTRLB.RXEN = 0), the clock request to the SERCOM generic clock generator feeding the SERCOM will stay asserted during the Standby Sleep mode, leading to unexpected overconsumption.

Work Around:

Configure CTRLA.RXPO and CTRLA.TXPO to use the same SERCOM PAD for RX and TX or add an external pull-up on the RX pin.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

SERCOM-USART: Auto-Baud Mode

In USART Auto-Baud mode, missing stop bits are not recognized as inconsistent sync (ISF) or framing (FERR) errors.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

SERCOM-USART: Collision Detection

In USART operating mode with Collision Detection enabled (CTRLB.COLDEN = 1), the SERCOM will not abort the current transfer as expected if a collision is detected and if the SERCOM APB Clock is lower than the SERCOM Generic Clock.

Work Around:

The SERCOM APB clock must always be higher than the SERCOM Generic Clock to support collision detection.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

SERCOM-USART: Debug Mode

In USART operating mode, if DBGCTRL.DBGSTOP = 1, data transmission is not halted after entering Debug mode.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

SERCOM-USART: Wake-up from Standby Sleep Mode

The SERCOM USART does not wake from the Standby Sleep mode for ERROR interrupts FERR and PERR.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

SERCOM-USART: 32-bit Extension Mode

When the 32-bit Extension mode is enabled and data to be sent are not in multiples of 4 bytes, which means the length counter must be enabled, additional bytes will be sent over the line.

Work Around:

Use any one of the following work arounds:
  1. Write the Inter-Character Spacing bits (CTRLC.ICSPACE) to a non-zero-value.
  2. Do not use the length counter in firmware by keeping the data to be sent in multiples of 4 bytes.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

SERCOM-UART: TXINV and RXINV Bits

The TXINV and RXINV bits in CTRLA are interchanged. TXINV controls the RX signal inversion and RXINV controls the TX signal inversion.

Work Around:

In software, interpret the TXINV bit as a functionality of RXINV, and, conversely, interpret the RXINV bit as a functionality of TXINV.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

STATUS.CLKHOLD Bit in Host and Client Modes

The STATUS.CLKHOLD bit in host and client modes can be written even though it is specified as a read-only status bit.

Work Around:

Do not clear the STATUS.CLKHOLD bit to preserve the current clock hold state.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

SERCOM-I2C: Automatic Acknowledge Feature Not Usable

The I2C client AACKEN feature is not usable when doing a repeated start.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

SERCOM-I2C: Error Interrupt after Unexpected STOP

When an unexpected STOP occurs on the I2C bus, the STATUS.BUSERR and INTFLAG.ERROR bits are set but may not wake the system from the Standby Sleep mode. An unexpected START will not produce this issue.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

SERCOM-I2C: Repeated Start Not Issued Correctly

For the Host Write operations (excluding the High-Speed mode), in 10-bit addressing mode, writing CTRLB.CMD = 0x1 does not issue a Repeated Start command correctly.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

SERCOM-I2C: I2C in Client Mode

In I2C mode, LENERR, SEXTOUT, LOWTOUT, COLL and BUSERR bits are not cleared when INTFLAG.AMATCH is cleared.

Work Around:

Manually clear status bits LENERR, SEXTOUT, LOWTOUT, COLL and BUSERR by writing these bits to ‘1’ when set.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

SERCOM-I2C: Client Mode with DMA

In I2C Client Transmitter mode, at the reception of a NACK, if there is still data to be sent in the DMA buffer, the DMA will push a data to the DATA register. Because a NACK was received, the transfer on the I 2C bus will not occur, causing the loss of this data.

Work Around:

Configure the DMA transfer size to the number of data to be received by the I2C host. DMA cannot be used if the number of data to be received by the host is not known..

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

SERCOM-I2C: I2C Client in DATA32B Mode

When SERCOM is configured as an I2C client in 32-bit Data mode (DATA32B = 1) and the I2C host reads from the I2C client (client transmitter) and outputs its NACK (indicating no more data is needed), the I2C client still receives a DRDY interrupt.

If the CPU does not write new data to the I2C client DATA register, I2C client will pull the SDA line, which will result in stalling the bus permanently.

Work Around:

  1. Write dummy data to the data register when a NACK is received from the host.
  2. Use command #2 (SERCOMx->I2CS.CTRLB.bit.CMD = 2) when a NACK is received from the host.
Important: Because STATUS.RXNACK always indicates the last received ACK, to determine when a NACK is received from the I2C host, the I2C client software needs to consider I2CS.STATUS.RXNACK only on the second DRDY interrupt after receiving the AMATCH interrupt.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

SERCOM-I2C: 10-bit Addressing in I2C Client Mode

The 10-bit addressing in I2C Client mode is not functional.

Work Around:

Use Quick Command mode (CTRLB.QCEN = 1) only if SCL Stretch mode is CTRLA.SCLSM = 0.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

SERCOM-I2C: Repeated Start

When the quick command is enabled (CTRLB.QCEN = 1), software can issue a repeated start by writing either CTRLB.CMD or ADDR.ADDR bit fields. If, in these conditions, SCL Stretch mode is CTRLA.SCLSM = 1, a bus error will be generated.

Work Around:

Use Quick Command mode (CTRLB.QCEN = 1) only if SCL Stretch mode is CTRLA.SCLSM = 0.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

SERCOM-SPI: Data Preload

In SPI Client mode and with Client Data Preload Enabled (CTRLB.PLOADEN = 1), the first data sent from the client will be a dummy byte if the host cannot keep the client select (SS) line low until the end of transmission.

Work Around:

In SPI Client mode, the client select (SS) pin must be kept low by the host until the end of the transmission if the client data preload feature is used (CTRLB.PLOADEN = 1).

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

SERCOM-SPI: Client Data Preload

Preloading new SPI data (CTRLB.PLOADEN = 1) before going into Standby Sleep mode may lead to extra power consumption.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

SERCOM-SPI: Hardware Client Select Control

When hardware client select control is enabled (CTRLB.MSSEN = 1), the client select (SS) pin goes high after each byte transfer even if new data is ready to be sent.

Work Around:

Set CTRLB.MSSEN = 0, and handle the client select (SS) pin by software.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

System Bus

Bus Error Address Checks

When accessing peripherals on the PB-PIC bus, an access beyond the implemented memory region 0x4401_FFFF causes the CPU to hang, waiting for a bus error signal.

Work Around:

Use the Microchip-provided peripheral drivers from Harmony 3 and the Microchip-provided SDK. This software will not generate addresses outside the implemented regions. If using third-party tools and other custom developed software, do not create accesses outside this region or an MCU reset will be required to recover.

Note:

The work around is working in A2 and newer versions.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X
PIC32CX1012BZ24032/WBZ450
A2

System Configuration Registers

CFGCON0 Registers

CFGCON0.SWOEN is non-functional, which makes PB7 function as SWO during debugging only. PB7 works normally when not doing debug.

Work Around:

Do not use PB7 as GPIO while debugging.

Note:

The work around is working in A2 and newer versions.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X
PIC32CX1012BZ24032/WBZ450
A2

System Bus QoS

The Power-on Reset values of the CFGPGQOS register sets all bus host QoS values to zero (Background) instead of the required Power-on Reset values.

Work Around:

Use the Microchip-provided SDK and bootloader. This software will initialize the CFGPGQOS register to the data sheet-specified default value. If using third-party tools and other custom developed software, set this register to the data sheet default value of 0xE040_004C.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Timer/Counter for Control Applications (TCC)

Counting-down Mode Not Supported in RAMP2

The Timer/Counter counting-down mode (CTRLBCLR.DIR = CTRLBSET.DIR = 1) is not supported in RAMP2 operations (RAMP2, RAMP2A, RAMP2C, RAMP2CS).

Work Around:

Use Timer/Counter counting up mode (CTRLBCLR.DIR = CTRLBSET.DIR = 0).

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Hi-resolution in 2RAMP Mode

In 2RAMP mode with Hi-resolution, multiple restarts can be observed when a fault occurs.

Work Around:

Do not use high resolution in two ramp mode when a trigger can occur at the overflow time of ramp.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

LUPD in Descendent Mode

When the TCC is used in the Down-Counting mode, transfer of the PERBUF register value to the PER register is delayed by one counter cycle, and, therefore, the LUPD feature must not be used with the PER register.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Re-trigger in RAMP2 Operations

Re-trigger in RAMP2 operations (RAMP2, RAMP2A, RAMP2C) is not supported if a prescaler is used (CTRLA.PRESCALER != 0) and the re-trig of the counter is done on the next GCLK (CTRLA.PRESCSYNC = GCLK or CTRLA.PRESCSYNC = RESYNC).

Work Around:

Configure the re-trigger of the counter on the next prescaler clock (CTRLA.PRESCSYNC = PRESC).

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Re-trigger

If a Re-trigger event (EVCTRL.EVACTn = 0x1, RETRIGGER) occurs at the Channel Compare Match [n] time, the next Waveform Output [n] is corrupted.

Work Around:

Use two channels to store their two successive (n and n+1) CC register values and combine their related waveform outputs to make signal redundancy.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

TCC in Dithering Mode

Using the TCC in the Dithering mode with external retrigger events can lead to an unexpected stretch of right-aligned pulses or shrink of left-aligned pulses.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

TCC in SYNC or RESYNC Mode

The TCC peripheral is not compatible with an EVSYS channel in the SYNC or RESYNC mode.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

TCC Outputs

The TCC0/TCC1 output is not working as expected with PPS; output signals are not visible on output pins via PPS even though the TCC is working correctly. TCC2 cannot be used to drive external pins.

Work Around:

Use the CCL module to output up to 2 TCCx_WO[n] signals on CCL0_OUT and CCL1_OUT using PPS to the desired pins.

The required configuration in CCL1/2:
  • CCL.CTRL.ENABLE = 1 – To enable CCL
  • CCL.LUTCTRLx.ENABLE = 1 – To enable LUT in CCL
  • CCL.LUTCTRLx.INSELx = 8 – To select TCC as input source
  • CCL.LUTCTRLx.TRUTH – To match the toggle of TCC
    • CCL.LUTCTRLx.TRUTH = 0xAA – To match toggle on WO[0]
    • CCL.LUTCTRLx.TRUTH = 0xCC – To match toggle on WO[1]
    • CCL.LUTCTRLx.TRUTH = 0xF0 – To match toggle on WO[2]
  • CFGCON1.CCL_OE = 1 – To enable CCL output onto PADs
Then, configure PPS for CCL output to desired pin.
Note:

CCL0_OUT allows one instance of TCC0_WO[n], and CCL1_OUT allows one instance of TCC1_WO[n].

The work around is working in A2 and newer version.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X
PIC32CX1012BZ24032/WBZ450
A2

DMA Request is Not Set on Overflow Condition in One-shot DMA Trigger Mode of RAMP2C Operation

TCC Overflow (OVF) will not trigger a DMA request in the One-shot DMA trigger (DMAOS) mode of RAMP2C operation.

DMA triggers are not applicable for the RAMP2C mode.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Timer/Counter (TC)

Issues After Clearing STATUS.PERBUFV/STATUS.CCBUFx flag

When clearing the STATUS.PERBUFV/STATUS.CCBUFx flag, the SYNCBUSY flag is released before the PERBUF/CCBUFx register is restored to its appropriate value.

Work Around:

Clear successively twice the STATUS.PERBUFV/STATUS.CCBUFVx flag to ensure that the PERBUF/CCBUFx register value is properly restored before updating it.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

TC.PER not updated properly

In the 8-bit mode, the PER register updates using the DMA are not possible in the Standby mode.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

TC Outputs

The TC0/1/2/3 output is not working as expected with PPS; output signals are not visible on output pins via PPS even though the TC is working correctly.

Work Around:

Set COPENx and CAPTENx before enabling/re-enabling the Timer Counter.

Set TC.CTRLA.COPENx = 1 and TC.CTRLA.CAPTENx = 1 before enabling/re-enabling the timer counter.

  • Configure PPS for output to the desired pin.
  • Initialize the timer counter.
  • TC.CTRLA.COPENx = 1
  • TC.CTRLA.CAPTENx = 1
  • Start/enable the timer counter.
Note:

This workaround is only applicable to A0 revision and does not work in A2 revision.

For A2, TC0/1/2/3 are working as expected with PPS.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X
PIC32CX1012BZ24032/WBZ450
A2

ALOCK Feature

ALOCK feature is not functional.

Work Around:

None

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X

Watchdog Timer (WDT)

Watchdog Counter

When the interval between clearing the watchdog timer (in other words, clearing the Run mode watchdog counter) and the sleep instruction is less than 1 WDT clock cycle, the “Run Mode” watchdog counter is not cleared. When using LPRC as clock source, the interval is 1 LPRC clock. Because the watchdog timer is in LPRC domain, which is much slower than CPU clock, the sleep instruction is executed even before the “Run mode” watchdog counter is cleared. Hence, the “Run mode” watchdog counter remains frozen to its last count instead of clearing to 0.

While in Sleep mode, the “Sleep mode” watchdog counter is incrementing, and at the end of the WDTPS, it generates an NMI which causes the CPU to wake-up.

After wake-up, the user would expect that, because they cleared the WDT just before going to sleep, they have an entire WDT period available to them before they have to clear WDT again. But because the “Run mode” counter was not cleared before going into sleep, the WDT reset occurs earlier than expected.

Work Around (either or both can be used):

  1. Add a delay of more than 1 WDT Clock (LPRC clock), between clearing of the WDT and execution of sleep instruction.
  2. Execute the WDT clear instruction as soon as the CPU wakes-up.

Affected Silicon Revisions

PIC32CX1012BZ25048/WBZ451
A0 A2
X X
PIC32CX1012BZ24032/WBZ450
A2
X