MCP25050-I/SL
I/O Expander, 8bit, 4 MHz, Serial, 2.7 V, 5.5 V, SOIC
- Manufacturer: MICROCHIP
- Product type: I/O Expanders
- No. of Pins: 14Pins
- No. of I/O's: 8I/O's
- Bus Frequency: 4MHz
- IC Interface Type: Serial
- Chip Configuration: 8bit
- Supply Voltage Max: 5.5V
- Supply Voltage Min: 2.7V
- Interface Case Style: SOIC
| Delivery and price | |
|---|---|
| Units per pack | 100 |
| Price | 3.85 € |
| Current stock | 10+ |
| Lead time | 30 days |
## **MCP2502X/5X**
## **CAN I/O Expander Family**
## **Features**
- Implements CAN V2.0B
- Programmable bit rate up to 1 Mb/s
- One programmable mask
- Two programmable filters
- Three auto-transmit buffers
- Two message reception buffers
- Does not require synchronization or configuration messages
- Hardware Features
- Non-volatile memory for user configuration
- User configuration automatically loaded on power-up
- Eight general-purpose I/O lines individually selectable as inputs or outputs
- Individually selectable transmit-on-pinchange for each input
- Four 10-bit, analog input channels with programmable conversion clock and VREF sources (MCP2505X devices only)
- Message scheduling capability
- Two 10-bit PWM outputs with independently programmable frequencies
- Device configuration can be modified via CAN bus messages
- In-Circuit Serial Programming™ (ICSP™) of default configuration memory
- Optional 1-wire CAN bus operation
- Low-power CMOS technology
- Operates from 2.7V to 5.5V
## **Description**
The MCP2502X/5X devices operate as I/O expanders for a Controller Area Network (CAN) system, supporting CAN V2.0B active, with bus rates up to 1 Mb/s. The MCP2502X/5X allows a simple CAN node to be implemented without the need for a microcontroller.
The devices are identical, with the following exceptions:
|**Device**|**A/D**|**One Wire**<br>**Digital**<br>**CANbus**|
|---|---|---|
|MCP25020|No|No|
|MCP25025|No|Yes|
|MCP25050|Yes|No|
|MCP25055|Yes|Yes|
The MCP2502X/5X devices feature a number of peripherals, including digital I/Os, four-channel 10-bit A/D (MCP2505X) and PWM outputs with automatic message transmission on change-of-input state. This includes an analog input exceeding a preset threshold.
One mask and two acceptance filters are provided to give maximum flexibility during system design with respect to identifiers that the device will respond to. The device can also be configured to automatically transmit a unique message whenever any of several error conditions occur.
The device is pre-programmed in non-volatile memory so that the part defaults to a specific configuration at power-up.
- 10 mA active current, typical
- 30 µA standby current (CAN Sleep mode)
- 14-pin PDIP (300 mil) and SOIC (150 mil) packages
- Available temperature ranges:
- Industrial (I): -40°C to +85°C
- Extended (E): -40°C to +125°C
DS21664D-page 1
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **Package Types**
|GP0/AN0<br>GP1/AN1<br>GP5/VREF+<br>GP4/VREF-<br>GP3/AN3/PWM2<br>GP2/AN2/PWM1<br>VSS<br>**PDIP/SOIC**||VDD<br>TXCAN/TXRXCAN*****<br>RXCAN/NC*****<br>1<br>2<br>3<br>4<br>GP6/CLKOUT<br>14<br>13<br>12<br>11<br>10<br>OSC1/CLKIN<br>5<br>6<br>7<br>8<br>9<br>OSC2<br>GP7/RST<br>/VPP|VDD<br>TXCAN/TXRXCAN*****<br>RXCAN/NC*****<br>1<br>2<br>3<br>4<br>GP6/CLKOUT<br>14<br>13<br>12<br>11<br>10<br>OSC1/CLKIN<br>5<br>6<br>7<br>8<br>9<br>OSC2<br>GP7/RST<br>/VPP|
|---|---|---|---|
|||1<br>2<br>3<br>4<br>14<br>13<br>12<br>11||
|||||
|||||
|||||
|||||
|||||
|||||
|||||
|||||
|||10<br>5||
|||||
|||6<br>9||
|||||
|||7<br>8||
|||||
**Threshold Detection** - refers to the MCP2502X/5X’s ability to automatically transmit a message when a predefined analog threshold is reached.
***** One-wire option available on MCP250X5 devices.
## **Definition of Terms**
The following terms are used throughout this document:
**I/O Expander** - refers to the integrated circuit (IC) device being described (MCP2502X/5X).
**Input Message** - term given to messages that are received by the MCP2502X/5X and cause the internal registers to be modified. Once the register modification has been performed, the MCP2502X/5X transmits a Command Acknowledge message to indicate that the command was received and processed.
**Command Acknowledge Message** - term given to the message that is automatically transmitted by the MCP2502X/5X after receiving and processing an input message.
**Information Request Message** - term given to Remote Request messages that are received by the MCP2502X/5X that subsequently generate an output message (data frame) in response.
**Output Message** - term given to the message that the MCP2502X/5X sends in response to an Information Request message.
**On Bus Message** - term given to the message that the MCP2502X/5X transmits after completing the power-on/ self-configuration sequence at timed intervals, if enabled.
**Self-Configuration** - term used to describe the process of transferring the contents of the EPROM memory array to the SRAM memory array.
**On Bus** - term used to describe the condition when the MCP2502X/5X is fully-configured and ready to transmit, or receive, on the bus. This is the only state in which the MCP2502X/5X can transmit on the bus.
**Edge Detection** - refers to the MCP2502X/5X’s ability to automatically transmit a message based upon the occurance of a predefined edge on any digital input.
DS21664D-page 2
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **1.0 DEVICE OVERVIEW**
This document contains device-specific information on the MCP2502X/5X family of CAN I/O expanders. The CAN protocol is not discussed in depth in this document. Additional information on the CAN protocol can be found in the CAN specification, as defined by Robert Bosch GmbH.
Figure 1-1 is the block diagram of the MCP2502X/5X and Table 1-1 is the pinout description.
The following sections detail the modules as listed in Figure 1-1.
## **FIGURE 1-1: MCP2502X/5X BLOCK DIAGRAM**
**==> picture [456 x 232] intentionally omitted <==**
**----- Start of picture text -----**<br>
GPIO<br>GP0/AN0<br>GP1/AN1<br>GP2/AN2/PWM1<br>GP3/AN3/PWM2<br>GP4/VREF-<br>GP5/VREF+<br>User GP6/CLKOUT<br>Memory GP7RST/VPP<br>State Machine<br>and<br>Control Logic<br>TXCAN/<br>OSC1/CLKIN Timing CAN TXRXCAN<br>OSC2/CLKOUT Generation Protocol<br>Engine<br>RXCAN<br>PWM2 PWM1 A/D *<br>**----- End of picture text -----**<br>
- Only the MCP2505X devices have the A/D module.
## **TABLE 1-1: PINOUT DESCRIPTION**
|**Pin**<br>**Name**|**Pin**<br>**Number**|**Standard**<br>**Function**|**Alternate**<br>**Function**|**Programming**<br>**Mode Function**|
|---|---|---|---|---|
|GP0/AN0*****|1|Bidirectional I/O pin, TTL input buffer|Analog input channel|None|
|GP1/AN1*****|2|Bidirectional I/O pin, TTL input buffer|Analog input channel|None|
|GP2/AN2/PWM2*****|3|Bidirectional I/Opin, TTL input buffer|Analoginput/PWM output|None|
|GP3/AN3/PWM3*****|4|Bidirectional I/O pin, TTL input buffer|Analog input/PWM output|None|
|GP4/VREF-|5|Bidirectional I/O pin, TTL input buffer|External VREF-|Data|
|GP5/VREF+|6|Bidirectional I/Opin, TTL input buffer|External VREFinput|Clock|
|VSS|7|Ground|None|Ground|
|OSC1/CLKIN|8|External oscillator input|External clock input|None|
|OSC2|9|External oscillator output|None|None|
|GP6/CLKOUT|10|Bidirectional I/O pin, TTL input buffer|CLKOUT output|None|
|GP7/RST<br>/VPP|11|Inputpin, TTL input buffer|External Reset input|Vpp|
|RXCAN|12|CAN data receive input|Not connected for 1-wire|None|
|TXCAN/TXRXCAN|13|CAN data transmit output|CAN TX and RX for 1-wire<br>operation(MCP250X5)|None|
|VDD|14|Power|None|Power|
- Only the MCP2505X devices have the A/D module.
DS21664D-page 3
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **NOTES:**
DS21664D-page 4
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **2.0 CAN MODULE**
The CAN module is a protocol controller that converts between raw digital data and CAN message packets. The main functional block of the CAN module is shown in Figure 2-1 and consists of:
- CAN protocol engine
- Buffers, masks and filters
The module features include:
- Implementation of the CAN protocol
- Double-buffered receiver with two separate receive buffers
- One full-acceptance mask (standard and extended)
- Two full-acceptance filters (standard and extended)
- One filter for each receive buffer
- Three prioritized transmit buffers for transmitting predefined message types
- Automatic wake-up on bus traffic function
- Error management logic for transmit and receive error states
- Low-power SLEEP mode
## **FIGURE 2-1: CAN MODULE**
## **BUFFERS**
**==> picture [458 x 432] intentionally omitted <==**
**----- Start of picture text -----**<br>
TXB0 TXB1 TXB2<br>A Acceptance Mask A<br>c RXM c<br>c c<br>e e<br>p Acceptance Filter Acceptance Filter p<br>t RXF0 RXF1 t<br>R R<br>M<br>Message X Identifier Identifier X<br>A<br>Queue B B<br>B<br>Control 0 1<br>Transmit Byte Sequencer Data Field Data Field<br>Receive REC<br>Error<br>PROTOCOL Counter TEC<br>ENGINE<br>Transmit ErrPas<br>Error BusOff<br>Counter<br>Transmit<7:0> Receive<7:0><br>Shift<14:0><br>{Transmit<5:0>, Receive<8:0>}<br>Comparator<br>Protocol<br>Finite<br>State<br>CRC<14:0> Machine<br>Bit<br>Transmit<br>Timing Clock<br>Logic<br>Logic Generator<br>TXCAN/TXRXCAN RXCAN<br>Configuration<br>Registers<br>TXREQ ABTF MLOA TXERR MESSAGE TXREQ ABTF MLOA TXERR MESSAGE TXREQ ABTF MLOA TXERR MESSAGE<br>**----- End of picture text -----**<br>
DS21664D-page 5
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **2.1 CAN Protocol Finite State Machine**
The heart of the engine is the Finite State Machine (FSM). This state machine sequences through messages on a bit-by-bit basis, changing states as the fields of the various frame types are transmitted or received. The FSM is a sequencer controlling the sequential data stream between the TX/RX Shift register, the CRC register and the bus line. The FSM also controls the Error Management Logic (EML) and the parallel data stream between the TX/RX Shift registers and the buffers. The FSM insures that the processes of reception, arbitration, transmission and error signaling are performed according to the CAN protocol. The automatic retransmission of messages on the bus line is also handled.
## **2.2 Cyclic Redundancy Check (CRC)**
The Cyclic Redundancy Check register generates the Cyclic Redundancy Check (CRC) code that is transmitted after either the Control field (for messages with 0 data bytes) or the Data field and is used to check the CRC field of incoming messages.
## **2.3 Error Management Logic**
The error management logic is responsible for the fault confinement of the CAN device. Its two counters (the Receive Error Counter (REC) and the Transmit Error Counter (TEC)) are incremented and decremented by commands from the Bit Stream processor. According to the values of the error counters, the MCP2502X/5X is set into the states error-active, error-passive or bus-off.
**Error-active:** Both error counters are below the errorpassive limit of 128.
**Error-passive:** At least one of the error counters (TEC or REC) equals or exceeds 128.
**Bus-off:** The transmit error counter (TEC) equals or exceeds the bus-off limit of 256. The device remains in this state until the bus-off recovery sequence is received. The bus-off recovery sequence consists of 128 occurrences of 11 consecutive recessive bits.
**Note:** The MCP2502X/5X, after going bus-off, will recover back to error-active automatically if the bus remains idle for 128 x 11 bits. OPTREG2.ERRE must be set to force the MCP2502X/5X to enter Listen-only mode instead of Normal mode during bus recovery. The current error mode (except for bus-off) of the MCP2502X/5X can be determined by reading the EFLG register via the Read CAN error message.
**==> picture [252 x 8] intentionally omitted <==**
**----- Start of picture text -----**<br>
FIGURE 2-2: ERROR MODES STATE DIAGRAM<br>**----- End of picture text -----**<br>
**==> picture [316 x 198] intentionally omitted <==**
**----- Start of picture text -----**<br>
RESET<br>Error-Active<br>REC < 127 or<br>TEC < 127<br>128 occurrences of<br>11 consecutive<br>“recessive” bits<br>REC > 127 or<br>TEC > 127<br>Error-Passive<br>TEC > 255<br>Bus-Off<br>**----- End of picture text -----**<br>
DS21664D-page 6
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **REGISTER 2-1: TEC - TRANSMITTER ERROR COUNTER**
|**TEC - TRANSMITTER ERROR COUNTER **|**TEC - TRANSMITTER ERROR COUNTER **|**TEC - TRANSMITTER ERROR COUNTER **|**TEC - TRANSMITTER ERROR COUNTER **|**TEC - TRANSMITTER ERROR COUNTER **|**TEC - TRANSMITTER ERROR COUNTER **|**TEC - TRANSMITTER ERROR COUNTER **|**TEC - TRANSMITTER ERROR COUNTER **|
|---|---|---|---|---|---|---|---|
|R-0<br>R-0<br>R-0<br>R-0<br>R-0<br>R-0<br>R-0<br>R-0||||||||
|TEC7|TEC6|TEC5|TEC4|TEC3|TEC2|TEC1|TEC0|
|bit 7<br>bit 0||||||||
bit 7-0 **TEC7:TEC0:** Transmit Error Counter bits
**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
## **REGISTER 2-2: REC - RECEIVER ERROR COUNTER**
|**REC - RECEIVER ERROR COUNTER **|**REC - RECEIVER ERROR COUNTER **|**REC - RECEIVER ERROR COUNTER **|**REC - RECEIVER ERROR COUNTER **|**REC - RECEIVER ERROR COUNTER **|**REC - RECEIVER ERROR COUNTER **|**REC - RECEIVER ERROR COUNTER **|**REC - RECEIVER ERROR COUNTER **|
|---|---|---|---|---|---|---|---|
|R-0<br>R-0<br>R-0<br>R-0<br>R-0<br>R-0<br>R-0<br>R-0||||||||
|REC7|REC6|REC5|REC4|REC3|REC2|REC1|REC0|
|bit 7<br>bit 0||||||||
bit 7-0 **REC7:REC0:** Receive Error Counter bits
**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
## **FIGURE 2-3: BIT TIME PARTITIONING**
**==> picture [401 x 113] intentionally omitted <==**
**----- Start of picture text -----**<br>
Input Signal<br>Prop Phase Phase<br>Sync<br>Segment Segment 1 Segment 2<br>Sample Point<br>TQ<br>**----- End of picture text -----**<br>
## **2.4 Bit Timing Logic**
The Bit Timing Logic (BTL) monitors the bus line input and handles the bus-related bit timing based on the CAN protocol. The BTL synchronizes on a recessiveto-dominant bus transition at Start-of-Frame (hard synchronization) and on any further recessive-todominant bus line transition if the CAN controller itself does not transmit a dominant bit (resynchronization). The BTL also provides programmable time segments to compensate for the propagation delay time, phase shifts and to define the position of the sample point within the bit time. These programmable segments are made up of integer units called Time Quanta (TQ). The
nominal bit time is calculated by programming the TQ length and the number of TQ in each time segment, as discussed below.
## 2.4.1 TIME QUANTUM (TQ)
Time Quantum is a fixed unit of time derived from the oscillator period. There is a programmable baud rate prescaler (BRP) (with integral values ranging from 1 to 64) as well as a fixed division by two for clock generation.
DS21664D-page 7
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
The base TQ is defined as twice the oscillator period. Adding the BRP into the equation yields:
**==> picture [169 x 38] intentionally omitted <==**
By definition, the nominal bit time is programmable from a minimum of 8 TQ to 25 TQ. Also, the minimum nominal bit time is 1 µs, which corresponds to 1 Mb/s.
## 2.4.2 TIME SEGMENTS
Time segments make up the nominal bit time. The nominal bit time can be thought of as being divided into separate non-overlapping time segments. These segments are shown in Figure 2-3.
- Synchronization Segment (SyncSeg)
- Propagation Segment (PropSeg)
- Phase Buffer Segment 1 (PS1)
- Phase Buffer Segment 2 (PS2)
_Nominal Bit Time = TQ*_ ( _Sync_Seg + PropSeg + Phase_Seg1 + Phase_Seg2_ )
## Rules for Programming the Segments
There are a few rules to follow when programming the time segments:
- PropSeg + PS1 ≥ PS2
- PS2 > Sync Jump Width
- PS2 ≥ Information Processing Time
## 2.4.2.1 Synchronization Segment
This part of the bit time is used to synchronize the various CAN nodes on the bus. The edge of the input signal is expected to occur during the SyncSeg. The duration is fixed at 1 TQ.
## 2.4.2.2 Propagation Segment
This part of the bit time is used to compensate for physical delay times within the network. These delay times consist of the signal propagation time on the bus line and the internal delay time of the nodes. The delay is calculated as being the round-trip time from transmitter to receiver (twice the signal's propagation time on the bus line), the input comparator delay and the output driver delay. The length of the Propagation Segment can be programmed from 1 TQ to 8 TQ by setting the PRSEG2:PRSEG0 bits of the CNF2 register.
## 2.4.2.3 Phase Buffer Segments
The Phase Buffer Segments are used to optimally locate the sampling point of the received bit within the nominal bit time. The sampling point occurs between PS1 and PS2. These segments can be automatically lengthened or shortened by the resynchronization process. Thus, the variation of the values of the phase buffer segments represent the DPLL functionality.
**Phase Segment 1 (PS1):** The end of PS1 determines the sampling point within a bit time. PS1 is programmable from 1 TQ - 8 TQ in duration.
**Phase Segment 2 (PS2):** PS2 provides delay before the next transmitted data transition and is also programmable from 1 TQ - 8 TQ in duration. However, due to IPT requirements, the actual minimum length of phase segment 2 is 2 TQ. It may also be defined to be equal to the greater of PS1 or the information processing time (IPT).
## 2.4.3 SAMPLE POINT
The sample point is the point of time at which the bus level is read and the value of the received bit is determined. The sampling point occurs at the end of PS1. If desired, it is possible to specify multiple sampling of the bus line at the sample point. The value of the received bit is determined to be the value of the majority decision of three values. The three samples are taken at the sample point, and twice before, with a time of TQ/2 between each sample.
## 2.4.4 INFORMATION PROCESSING TIME
The Information Processing Time (IPT) is the time segment (starting at the sample point) that is reserved for calculation of the subsequent bit level. The CAN specification defines this time to be less than or equal to 2 TQ. The MCP2502X/5X defines this time to be 2 TQ. Thus, PS2 must be at least 2 TQ long.
## 2.4.5 SYNCHRONIZATION JUMP WIDTH
To compensate for phase shifts and oscillator tolerances between the nodes in the system, each CAN controller must be able to synchronize to the relevant signal edge of the incoming signal. When a recessive-to-dominant edge in the transmitted data is detected, the logic will compare the location of the edge to the expected time (SyncSeg). The circuit will then adjust the values of PS1 and PS2, as necessary, using the programmed Synchronization Jump Width (SJW). This adjustment is made for resynchronization during a message and not hard synchronization, which occurs only at the message Start-of-Frame (SOF).
DS21664D-page 8
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
As a result of resynchronization, PS1 may be lengthened or PS2 may be shortened. The amount of lengthening or shortening of the phase buffer segments has an upper-bound given by the SJW. The SJW is programmable between 1 TQ and 4 TQ. The value of the SJW will be added to PS1 (or subtracted from PS2) depending on the phase error (e) of the edge in relation to the receiver’s SyncSeg. The phase error is defined as follows:
- e = 0 if the edge lies within SYNCESEG
- No resynchronization is required.
- e > 0 if the edge lies before the sample point
- PS1 will be lengthened by the amount of the SJW.
- e < 0 if the edge lies after the sample point of the previous bit and before the SyncSeg of the current bit
- PS2 will be shortened by the amount of the SJW.
## 2.4.6 CONFIGURATION REGISTERS
There are three registers (in the configuration register module) associated with the CAN bit timing logic that controls the bit timing for the CAN bus interface.
## 2.4.6.1 CNF1
The BRP<5:0> bits control the baud rate prescaler. These bits set the length of TQ relative to the OSC1 input frequency, with the minimum length of TQ being 2 TOSC in length (when BRP<5:0> are set to 000000 ). The SJW<1:0> bits select the synchronization jump width in terms of number of TQ’s.
## 2.4.6.2 CNF2
The PRSEG<2:0> bits set the length (in TQ’s) of the propagation segment. The PS1<2:0> bits set the length (in TQ’s) of phase segment 1. The SAM bit controls how many times the RXCAN pin is sampled. Setting this bit to a ‘ 1 ’ causes the bus to be sampled three times. Twice at TQ/2 before the sample point and once at the normal sample point (which is at the end of PS1). The value of the bus is determined to be the value read during at least two of the samples. If the SAM bit is set to a ‘0’, the RXCAN pin is sampled only once at the sample point. The BTLMODE bit controls how the length of PS2 is determined. If this bit is set to a ‘ 1 ’, the length of PS2 is determined by the PS2<2:0> bits of CNF3. If the BTLMODE bit is set to a ‘0’ then the length of PS2 is the greater of PS1 and the information processing time (which is fixed at 2 TQ for the MCP2502X/5X).
## 2.4.6.3 CNF3
The PS2<2:0> bits set the length, in TQ’s, of PS2, if the CNF2.BTLMODE bit is set to a ‘ 1 ’. If the BTLMODE bit is set to a ‘0’, the PS2<2:0> bits have no effect.
Additionally, the wake-up filter (CNF3.WAKFIL) is implemented in the CNF3 register. This filter is a lowpass filter that can be used to prevent the MCP2502X/ 5X from waking up due to short glitches on the CAN bus.
## **REGISTER 2-3: CNF1 - CAN CONFIGURATION REGISTER 1**
|**CNF1 - CAN CONFIGURATION REGISTER 1 **|**CNF1 - CAN CONFIGURATION REGISTER 1 **|**CNF1 - CAN CONFIGURATION REGISTER 1 **|**CNF1 - CAN CONFIGURATION REGISTER 1 **|**CNF1 - CAN CONFIGURATION REGISTER 1 **|**CNF1 - CAN CONFIGURATION REGISTER 1 **|**CNF1 - CAN CONFIGURATION REGISTER 1 **|**CNF1 - CAN CONFIGURATION REGISTER 1 **|
|---|---|---|---|---|---|---|---|
|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0||||||||
|SJW1|SJW0|BRP5|BRP4|BRP3|BRP2|BRP1|BRP0|
|bit 7<br>bit 0||||||||
bit 7-6 **SJW1:SJW0:** Synchronized Jump Width bits 11 = Length = 4 x TQ 10 = Length = 3 x TQ 01 = Length = 2 x TQ 00 = Length = 1 x TQ bit 5-0 **BRP5:BRP0:** Baud Rate Prescaler bits 111111 =TQ = 2 x 64 x 1/FOSC - -
000000 =TQ = 2 x 1 x 1/FOSC
**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
DS21664D-page 9
© 2007 Microchip Technology Inc.
## **MCP2502X/5X**
## **REGISTER 2-4: CNF2 - CAN CONFIGURATION REGISTER 2**
|**REGISTER 2-5:**<br>**CNF3 - CAN CONFIGURATION REGISTER 3 **<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>BTLMODE<br>SAM<br>PHSEG12<br>PHSEG11<br>PHSEG10<br>PRSEG2<br>PRSEG1<br>PRSEG0<br>bit 7<br>bit 0<br>bit 7<br>**BTL MODE:**Length determination of PHSEG2 bit<br>1= Length of Phase_Seg2 determined by bits 2:0 of CNF3<br>0= Length of Phase_Seg2 is the greater of Phase_Seg1 or IPT(2Tq)<br>bit 6<br>**SAM:**Sample of the CAN bus line bit<br>1= Bus line is sampled three times at the sample point<br>0= Bus line is sampled once at the sample point<br>bit 5-3<br>**PHSEG12:PHSEG10:**Phase Buffer Segment1 bits<br>111= length = 8 x TQ<br>-<br>-<br>-<br>000= length = 1 x TQ<br>bit 2-0<br>**PRSEG2:PRSEG0: **Propagation Time Segment bits<br>111= length = 8 x TQ<br>-<br>-<br>-<br>000= length = 1 x TΘ<br>**Legend:**<br>R = Readable bit<br>W = Writable bit<br>U = Unimplemented bit, read as ‘0’<br>- n = Value at POR<br>‘1’ = Bit is set<br>‘0’ = Bit is cleared<br>x = Bit is unknown<br>U-0<br>R/W-0<br>U-0<br>U-0<br>U-0<br>R/W-0<br>R/W-0<br>R/W-0<br>—<br>WAKFIL<br>—<br>—<br>—<br>PHSEG22<br>PHSEG21<br>PHSEG20<br>bit 7<br>bit 0<br>bit 7<br>**Unimplemented:**(Reads as 0)<br>bit 6<br>**WAKFIL:**Wake-up filter bit<br>1= Wake-up filter enabled<br>0= Wake-up filter disabled<br>bit 5-3<br>**Unimplemented:**(Reads as 0)<br>bit 2-0<br>**PHSEG22:PHSEG20:**Phase Buffer Segment2 bits<br>111= length = 8 x TQ<br>-<br>-<br>-<br>001= length = 2 x TQ<br>000= Invalid<br>**Legend:**<br>R = Readable bit<br>W = Writable bit<br>U = Unimplemented bit, read as ‘0’<br>- n = Value at POR<br>‘1’ = Bit is set<br>‘0’ = Bit is cleared<br>x = Bit is unknown|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|
|---|---|---|---|---|---|---|---|---|---|---|
||BTLMODE|SAM|PHSEG12|PHSEG11|PHSEG10|||PRSEG2|PRSEG1|PRSEG0|
||bit 7<br>bit 0<br>**BTL MODE:**Length determination of PHSEG2 bit<br>1= Length of Phase_Seg2 determined by bits 2:0 of CNF3<br>0= Length of Phase_Seg2 is the greater of Phase_Seg1 or IPT(2Tq)<br>**SAM:**Sample of the CAN bus line bit<br>1= Bus line is sampled three times at the sample point<br>0= Bus line is sampled once at the sample point<br>**PHSEG12:PHSEG10:**Phase Buffer Segment1 bits<br>111= length = 8 x TQ<br>-<br>-<br>-<br>000= length = 1 x TQ<br>**PRSEG2:PRSEG0: **Propagation Time Segment bits<br>111= length = 8 x TQ<br>-<br>-<br>-<br>000= length = 1 x TΘ||||||||||
||**Legend:**<br>R = Readable bit<br>W = Writable bit<br>U = Unimplemented bit, read as ‘0’<br>- n = Value at POR<br>‘1’ = Bit is set<br>‘0’ = Bit is cleared<br>x = Bit is unknown||||||||||
||—|WAKFIL|—|—||—|PHSEG22||PHSEG21|PHSEG20|
||bit 7<br>bit 0<br>**Unimplemented:**(Reads as 0)<br>**WAKFIL:**Wake-up filter bit<br>1= Wake-up filter enabled<br>0= Wake-up filter disabled<br>**Unimplemented:**(Reads as 0)<br>**PHSEG22:PHSEG20:**Phase Buffer Segment2 bits<br>111= length = 8 x TQ<br>-<br>-<br>-<br>001= length = 2 x TQ<br>000= Invalid||||||||||
||**Legend:**<br>R = Readable bit<br>W = Writable bit<br>U = Unimplemented bit, read as ‘0’<br>- n = Value at POR<br>‘1’ = Bit is set<br>‘0’ = Bit is cleared<br>x = Bit is unknown||||||||||
DS21664D-page 10
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **2.5 Buffers, Masks, and Filters**
This part of the CAN module supports the transmitting, receiving and acceptance of CAN messages.
Three transmit buffers are used for the three transmit message IDs, as discussed later in this section. Two receive buffers store the CAN message’s arbitration field, control field and the data field.
One mask defines which bits are to be applied to either filter. The mask can be regarded as defining “don’t care” bits for the filter.
Each of the two filters define a bit pattern that will be compared to all incoming messages. All filter bits that have not been defined as “don’t care” by the mask are applied to the message.
## 2.5.1 TRANSMIT MESSAGE ID’S
The MCP2502X/5X device contains three separate transmit message ID’s: TXID0, TXID1 and TXID2. The data length code is predefined for each of the various output messages, with the data that is transmitted coming directly from the contents of the device’s peripheral registers.
## 2.5.1.1 Transmit Message ID0 (TXID0)
TXID0 contains the identifier that is used when transmitting the On Bus message. If enabled (STCON.STEN = 1 ), the On Bus message will be transmitted at predefined intervals. Depending on the message-select bit (STCON.STMS = 1 ), the CAN message will send GPIO and A/D data.
Transmit Message ID0 will not automatically be sent when the device is brought out of sleep.
## 2.5.1.2 Transmit Message ID1 (TXID1)
TXID1 contains the identifier that is used when the MCP2502X/5X sends the Command Acknowledge message, the Receive Overflow message and/or the Error Condition message. All message types use the same identifier.
The CAEN bit, in the OPTREG2 register, selects between the Command Acknowledge and Receive Overflow operation. These message types have a DLC of 0 and do not contain any data. The Error Condition message can occur anytime, has a DLC of 3 and contains the EFLG, TEC and REC data values.
**Note:** A zero data length On Bus message will be transmitted once after power-up, regardless of scheduled transmissionenable status.
**Command Acknowledge** : TXID1 sends a Command Acknowledge message when the MCP2502X/5X receives an Input Message and processes the instruction (and OPTREG2.CAEN = 1 ). This message is used as a hand shake for the node requesting the modification of the MCP2502X/5X. There is no data associated with this message.
**Receive Overflow** : TXID1 sends a Receive Overflow message if there is a Receive Overflow condition (and OPTREG2.CAEN = 0 ). This only occurs if the device has received a valid message before processing the previous valid message from the same receive buffer. There is no data associated with this message.
**Error Condition** : An Error Condition message is transmitted if the TEC or REC counters reach error warning (> 95) or error passive (> 127). This message contains the TXID1 identifier and the TEC, REC and EFLG counters.
A hysteresis is implemented in hardware that prevents messages from repeatedly being transmitted due to error counts changing by one or two bits. Once a message is sent for an error warning (TEC or REC > 95), the message will not trigger again until the error counter ≤ 79 and back to > 95 (hysteresis = 17 counts). Similarly, an error passive message is sent at TEC or REC > 127 and is not sent again until the error counter ≤ 111 and back to >127 (hysteresis = 17 counts).
## 2.5.1.3 Transmit Message ID2 (TXID2)
Transmit ID2 contains the identifier that is used when transmitting auto-conversion-initiated messages, including digital input edge detection and/or analog input exceeding a threshold. This message will also be sent when the device wakes up from sleep due to a digital input change-of-state condition (i.e., change-ofstate occurs on input configured to transmit on change-of-state).
## **2.6 Receive Buffers**
The MCP2505X contains two receive buffers, each with their own filter. There is also a Message Assembly Buffer (MAB) that acts as a third receive buffer (see Figure 2-1).
The two receive buffers, combined with the MAB help, insure that received messages will be processed while minimizing the chances of receive buffer overrun due to maximum bus loading of messages destined for the MCP2502X/5X.
**Note:** The receive buffers are used by the MCP2502X/5X to implement the command messages and are not externally accessible.
DS21664D-page 11
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **2.7 Acceptance Mask**
The acceptance mask is used to define which bits in the CAN ID are to be compared against the programmable filters. Individual bits within the mask correspond to bits in the CAN ID that, in turn, correspond to bits in the acceptance filters. Any bit in the mask that is set to a ‘ 1 ’ will cause the corresponding CAN ID bit to be compared against the associated filter bit. Any bit in the mask that is set to a ‘ 0 ’ is not compared and effectively sets the associated CAN ID bit to ‘don’t care’.
**Message with an extended ID** - the three least significant bits of the standard identifier (RXMSIDL.SID2:SID0) are configurable and the three least significant bits of the extended identifier (RXMEID0.EID2:EID0) are always ‘don’t cares’ and effectively becomes ‘ 0 ’.
**Note:** The EXIDE bit in the Mask register (RXMSIDL) can be used to mask the IDE bit in the corresponding Receive buffer register (RXBnSIDL).
## 2.7.1 MASKS AND STANDARD/ EXTENDED IDS
To insure proper operation of the information request and input messages, some mask bits (as configured in the mask registers) may be ignored as explained:
**Message with a standard ID** - the three least significant bits of a standard identifier (RXMSIDL.SID2:SID0) are ‘don’t care’ for the mask registers and effectively become ‘ 0 ’.
## **2.8 Acceptance Filters**
There are two separate acceptance filters defined for the MCP2502X/5X: RXF0 and RXF1. RXF0 is used for Information Request messages and RXF1 is used for input messages (see Table 4-2 and Table 4-3). Each bit in the filters corresponds to a bit in the CAN ID. Every bit in the CAN ID, for which the corresponding Mask bit is set, must match the associated filter bit in order for the message to be accepted. Messages that fail to meet the mask/fIlter criteria are ignored.
## **REGISTER 2-6:**
## **TXIDNSIDH - TRANSMIT IDENTIFIER N STANDARD IDENTIFIER HIGH**
|**TXIDNSIDH - TRANSMIT IDENTIFIER N STANDARD IDENTIFIER HIGH **|**TXIDNSIDH - TRANSMIT IDENTIFIER N STANDARD IDENTIFIER HIGH **|**TXIDNSIDH - TRANSMIT IDENTIFIER N STANDARD IDENTIFIER HIGH **|**TXIDNSIDH - TRANSMIT IDENTIFIER N STANDARD IDENTIFIER HIGH **|**TXIDNSIDH - TRANSMIT IDENTIFIER N STANDARD IDENTIFIER HIGH **|**TXIDNSIDH - TRANSMIT IDENTIFIER N STANDARD IDENTIFIER HIGH **|**TXIDNSIDH - TRANSMIT IDENTIFIER N STANDARD IDENTIFIER HIGH **|**TXIDNSIDH - TRANSMIT IDENTIFIER N STANDARD IDENTIFIER HIGH **|
|---|---|---|---|---|---|---|---|
|R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x||||||||
|SID10|SID9|SID8|SID7|SID6|SID5|SID4|SID3|
|bit 7<br>bit 0||||||||
bit 7-0 **SID10:SID3:** Standard Identifier bits
**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
DS21664D-page 12
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **REGISTER 2-7: TXIDNSIDL - TRANSMIT IDENTIFIER N STANDARD IDENTIFIER LOW**
R/W-x R/W-x R/W-x U-0 R/W-x U-0 R/W-x R/W-x SID2 SID1 SID0 — EXIDE — EID17 EID16 bit 7 bit 0 bit 7-5 **SID2:SID0** : Standard Identifier bits bit 4 **Unimplemented** : Read as ' 0 ’ bit 3 **EXIDE** : Extended Identifier Enable bit 1 = Message will transmit extended identifier 0 = Message will transmit standard identifier bit 2 **Unimplemented** : Read as ' 0 ’ bit 1-0 **EID17:EID16** : Extended Identifier bits **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
## **REGISTER 2-8: TXIDNEID8 - TRANSMIT IDENTIFIER N EXTENDED IDENTIFIER HIGH**
|**TXIDNEID8 - TRANSMIT IDENTIFIER N EXTENDED IDENTIFIER HIGH**|**TXIDNEID8 - TRANSMIT IDENTIFIER N EXTENDED IDENTIFIER HIGH**|**TXIDNEID8 - TRANSMIT IDENTIFIER N EXTENDED IDENTIFIER HIGH**|**TXIDNEID8 - TRANSMIT IDENTIFIER N EXTENDED IDENTIFIER HIGH**|**TXIDNEID8 - TRANSMIT IDENTIFIER N EXTENDED IDENTIFIER HIGH**|**TXIDNEID8 - TRANSMIT IDENTIFIER N EXTENDED IDENTIFIER HIGH**|**TXIDNEID8 - TRANSMIT IDENTIFIER N EXTENDED IDENTIFIER HIGH**|**TXIDNEID8 - TRANSMIT IDENTIFIER N EXTENDED IDENTIFIER HIGH**|
|---|---|---|---|---|---|---|---|
|R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x||||||||
|EID15|EID14|EID13|EID12|EID11|EID10|EID9|EID8|
|bit 7<br>bit 0||||||||
bit 7-0 **EID15:EID8** : Extended Identifier bits **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
**REGISTER 2-9: TXIDNEID0 - TRANSMIT IDENTIFIER N EXTENDED IDENTIFIER LOW** R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x R/W-x EID7 EID6 EID5 EID4 EID3 EID2 EID1 bit 7 bit 7-0 **EID7:EID0** : Extended Identifier bits
|R/W-x|R/W-x|R/W-x|R/W-x|R/W-x|R/W-x|R/W-x|R/W-x|
|---|---|---|---|---|---|---|---|
|EID7|EID6|EID5|EID4|EID3|EID2|EID1|EID0|
|bit 7|||||||bit 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
DS21664D-page 13
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **REGISTER 2-10: RXMSIDH - ACCEPTANCE FILTER MASK STANDARD IDENTIFIER HIGH**
|**RXMSIDH - ACCEPTANCE FILTER MASK STANDARD IDENTIFIER HIGH **|**RXMSIDH - ACCEPTANCE FILTER MASK STANDARD IDENTIFIER HIGH **|**RXMSIDH - ACCEPTANCE FILTER MASK STANDARD IDENTIFIER HIGH **|**RXMSIDH - ACCEPTANCE FILTER MASK STANDARD IDENTIFIER HIGH **|**RXMSIDH - ACCEPTANCE FILTER MASK STANDARD IDENTIFIER HIGH **|**RXMSIDH - ACCEPTANCE FILTER MASK STANDARD IDENTIFIER HIGH **|**RXMSIDH - ACCEPTANCE FILTER MASK STANDARD IDENTIFIER HIGH **|**RXMSIDH - ACCEPTANCE FILTER MASK STANDARD IDENTIFIER HIGH **|
|---|---|---|---|---|---|---|---|
|R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x||||||||
|SID10|SID9|SID8|SID7|SID6|SID5|SID4|SID3*|
|bit 7<br>bit 0||||||||
bit 7-0 **SID10:SID3** : Standard Identifier bits
- If OPTREG2.MTYPE = 1 , then SID3 is forced to zero.
**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
## **REGISTER 2-11: RXMSIDL - ACCEPTANCE FILTER MASK STANDARD IDENTIFIER LOW**
|**RXMSIDL - ACCEPTANCE FILTER MASK STANDARD IDENTIFIER LOW **|**RXMSIDL - ACCEPTANCE FILTER MASK STANDARD IDENTIFIER LOW **|**RXMSIDL - ACCEPTANCE FILTER MASK STANDARD IDENTIFIER LOW **|**RXMSIDL - ACCEPTANCE FILTER MASK STANDARD IDENTIFIER LOW **|**RXMSIDL - ACCEPTANCE FILTER MASK STANDARD IDENTIFIER LOW **|**RXMSIDL - ACCEPTANCE FILTER MASK STANDARD IDENTIFIER LOW **|**RXMSIDL - ACCEPTANCE FILTER MASK STANDARD IDENTIFIER LOW **|**RXMSIDL - ACCEPTANCE FILTER MASK STANDARD IDENTIFIER LOW **|
|---|---|---|---|---|---|---|---|
|R/W-x<br>R/W-x<br>R/W-x<br>U-0<br>R/W-x<br>U-0<br>R/W-x<br>R/W-x||||||||
|SID2|SID1|SID0|—|EXIDE|—|EID17|EID16|
|bit 7<br>bit 0||||||||
bit 7-5 **SID2:SID0** : Standard Identifier bits Standard messages, bits = b ’ 000 ’ Extended messages, bits = SID2:SID0 bit 4 **Unimplemented:** Read as ' 0 ’ bit 3 **EXIDE** : Extended Identifier Enable bit
- 1 = Apply filter to RXFnSIDL.EXIDE (filter applies to standard **or** extended message frames depending on filter bit)
0 = Do not apply filter to RXFnSIDL.EXIDE (filter will be applied to both standard **and** extended message frames) bit 2 **Unimplemented:** Read as ' 0 ’
bit 1-0 **EID17:EID16:** Extended Identifier bits
|**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|
## **REGISTER 2-12: RXMEID8 - ACCEPTANCE FILTER MASK EXTENDED IDENTIFIER MID**
|**RXMEID8 - ACCEPTANCE FILTER MASK EXTENDED IDENTIFIER MID **|**RXMEID8 - ACCEPTANCE FILTER MASK EXTENDED IDENTIFIER MID **|**RXMEID8 - ACCEPTANCE FILTER MASK EXTENDED IDENTIFIER MID **|**RXMEID8 - ACCEPTANCE FILTER MASK EXTENDED IDENTIFIER MID **|**RXMEID8 - ACCEPTANCE FILTER MASK EXTENDED IDENTIFIER MID **|**RXMEID8 - ACCEPTANCE FILTER MASK EXTENDED IDENTIFIER MID **|**RXMEID8 - ACCEPTANCE FILTER MASK EXTENDED IDENTIFIER MID **|**RXMEID8 - ACCEPTANCE FILTER MASK EXTENDED IDENTIFIER MID **|
|---|---|---|---|---|---|---|---|
|R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x||||||||
|EID15|EID14|EID13|EID12|EID11|EID10|EID9|EID8|
|bit 7<br>bit 0||||||||
bit 7-0 **EID15:EID8** : Extended Identifier bits
|**Legend:**<br>R = Readable bit<br>W = Writable bit<br>U = Unimplemented bit, read as ‘0’<br>- n = Value at POR<br>‘1’ = Bit is set<br>‘0’ = Bit is cleared<br>x = Bit is unknown||
|---|---|
DS21664D-page 14
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
|**REGISTER 2-13:**<br> <br>bit 7-3<br>bit 2-0|**RXMEID0 - ACCEPTANCE FILTER MASK EXTENDED IDENTIFIER LOW **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**RXMEID0 - ACCEPTANCE FILTER MASK EXTENDED IDENTIFIER LOW **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**RXMEID0 - ACCEPTANCE FILTER MASK EXTENDED IDENTIFIER LOW **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**RXMEID0 - ACCEPTANCE FILTER MASK EXTENDED IDENTIFIER LOW **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**RXMEID0 - ACCEPTANCE FILTER MASK EXTENDED IDENTIFIER LOW **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**RXMEID0 - ACCEPTANCE FILTER MASK EXTENDED IDENTIFIER LOW **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**RXMEID0 - ACCEPTANCE FILTER MASK EXTENDED IDENTIFIER LOW **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**RXMEID0 - ACCEPTANCE FILTER MASK EXTENDED IDENTIFIER LOW **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|
|---|---|---|---|---|---|---|---|---|
||EID7|EID6|EID5|EID4|EID3|EID2|EID1|EID0|
||bit 7<br>bit 0<br>**EID7:EID3**: Extended Identifier bits<br>**EID2:EID0**: Extended Identifier bits (always reads as ‘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
|**REGISTER 2-14:**<br> <br>bit 7-0|**RXFNSIDH - ACCEPTANCE FILTER N STANDARD IDENTIFIER HIGH **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**RXFNSIDH - ACCEPTANCE FILTER N STANDARD IDENTIFIER HIGH **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**RXFNSIDH - ACCEPTANCE FILTER N STANDARD IDENTIFIER HIGH **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**RXFNSIDH - ACCEPTANCE FILTER N STANDARD IDENTIFIER HIGH **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**RXFNSIDH - ACCEPTANCE FILTER N STANDARD IDENTIFIER HIGH **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**RXFNSIDH - ACCEPTANCE FILTER N STANDARD IDENTIFIER HIGH **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**RXFNSIDH - ACCEPTANCE FILTER N STANDARD IDENTIFIER HIGH **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**RXFNSIDH - ACCEPTANCE FILTER N STANDARD IDENTIFIER HIGH **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|
|---|---|---|---|---|---|---|---|---|
||SID10|SID9|SID8|SID7|SID6|SID5|SID4|SID3*|
||bit 7<br>bit 0<br>**SID10:SID3**: Standard Identifier bits<br>* If OPTREG2.MTYPE =1, then SID3 = X||||||||
|**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|
## **REGISTER 2-15: RXFNSIDL - ACCEPTANCE FILTER N STANDARD IDENTIFIER LOW**
R/W-x R/W-x R/W-x U-0 R/W-x U-0 R/W-x R/W-x SID2 SID1 SID0 — EXIDE — EID17 EID16 bit 7 bit 0 bit 7-5 **SID2:SID0** : Standard Identifier bits 1 = When EXIDE = 1 , SID2:SID0 = b’xxx’ 0 = When EXIDE = 0 , SID2:SID0 = as configured bit 4 **Unimplemented:** Read as ‘ 0 ’ bit 3 **EXIDE** : Extended Identifier Enable bit 1 = Filter will apply to extended identifier 0 = Filter will apply to standard identifier bit 2 **Unimplemented:** Read as ‘ 0 ’ bit 1-0 **EID17:EID16** : Extended Identifier bits
**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
DS21664D-page 15
© 2007 Microchip Technology Inc.
## **MCP2502X/5X**
## **REGISTER 2-16: RXFNEID8 - ACCEPTANCE FILTER N EXTENDED IDENTIFIER MID**
|**RXFNEID8 - ACCEPTANCE FILTER N EXTENDED IDENTIFIER MID **|**RXFNEID8 - ACCEPTANCE FILTER N EXTENDED IDENTIFIER MID **|**RXFNEID8 - ACCEPTANCE FILTER N EXTENDED IDENTIFIER MID **|**RXFNEID8 - ACCEPTANCE FILTER N EXTENDED IDENTIFIER MID **|**RXFNEID8 - ACCEPTANCE FILTER N EXTENDED IDENTIFIER MID **|**RXFNEID8 - ACCEPTANCE FILTER N EXTENDED IDENTIFIER MID **|**RXFNEID8 - ACCEPTANCE FILTER N EXTENDED IDENTIFIER MID **|**RXFNEID8 - ACCEPTANCE FILTER N EXTENDED IDENTIFIER MID **|
|---|---|---|---|---|---|---|---|
|R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x||||||||
|EID15|EID14|EID13|EID12|EID11|EID10|EID9|EID8|
|bit 7<br>bit 0||||||||
bit 7-0 **EID15:EID8** : Extended Identifier Bit
**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
## **REGISTER 2-17: RXFNEID0 - ACCEPTANCE FILTER N EXTENDED IDENTIFIER LOW**
|**RXFNEID0 - ACCEPTANCE FILTER N EXTENDED IDENTIFIER LOW **|**RXFNEID0 - ACCEPTANCE FILTER N EXTENDED IDENTIFIER LOW **|**RXFNEID0 - ACCEPTANCE FILTER N EXTENDED IDENTIFIER LOW **|**RXFNEID0 - ACCEPTANCE FILTER N EXTENDED IDENTIFIER LOW **|**RXFNEID0 - ACCEPTANCE FILTER N EXTENDED IDENTIFIER LOW **|**RXFNEID0 - ACCEPTANCE FILTER N EXTENDED IDENTIFIER LOW **|**RXFNEID0 - ACCEPTANCE FILTER N EXTENDED IDENTIFIER LOW **|**RXFNEID0 - ACCEPTANCE FILTER N EXTENDED IDENTIFIER LOW **|
|---|---|---|---|---|---|---|---|
|R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x||||||||
|EID7|EID6|EID5|EID4|EID3|EID2|EID1|EID0|
|bit 7<br>bit 0||||||||
bit 7-0 **EID7:EID0** : Extended Identifier Bit (always = b’ xxx ’)
**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
DS21664D-page 16
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **REGISTER 2-18: EFLG - ERROR FLAG REGISTER**
R-0 R-0 R-0 R-0 R-0 R-0 R-0 R-0 ESCF RBO TXBO TXEP RXEP TXWAR RXWAR EWARN bit 7 bit 0 bit 7 **ESCF** : Error State Change (for sending Error state message) 1 = An error state change occurred 0 = No error state change bit 6 **RBO** : Receive Buffer Overflow 1 = Overflow occurred 0 = No overflow occurred bit 5 **TXBO** : Transmitter in Bus Off Error State bit 1 = TEC reaches 256 0 = Indicates a successful bus recovery sequence bit 4 **TXEP** : Transmitter in Error Passive State bit 1 = TEC is equal to or greater than 128 0 = TEC is less than 128 bit 3 **RXEP** : Receiver in Error Passive State bit 1 = REC is equal to or greater than 128 0 = REC is less than 128 bit 2 **TXWAR** : Transmitter in Error Warning State bit 1 = TEC is equal to or greater than 96 0 = TEC is less than 96 bit 1 **RXWAR** : Receiver in Error Warning State bit 1 = REC is equal to or greater than 96 0 = REC is less than 96 bit 0 **EWARN** ; Either the Receive Error counter or Transmit error counter has reached or exceeded 96 errors 1 = TEC or REC is equal to or greater than 96 (TXWAR or RXWAR = 1 ) 0 = Both REC and TEC are less than 96
|**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|
DS21664D-page 17
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **NOTES:**
DS21664D-page 18
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **3.0 USER REGISTERS**
## **3.1 Description**
The MCP2502X/5X allows the user to pre-program registers pertaining to CAN module and device configuration into non-volatile EPROM memory. In this way, the device is initialized to a default state after power-up. The user registers are transferred to SRAM during the power-up sequence and many of the registers are able to be accessed via the CAN bus once the device establishes a connection with the bus. Additionally, there are 16 user-defined registers that can be used to store information about the part (e.g., serial number, node identifier, etc.). The registers are summarized in Table 3-1.
- **Note 1:** When transferred to RAM, the register addresses are offset by 1Ch. Accessing individual registers using the “Write Register” or “Read Register command requires use of the offset address. Also, see Table 3-2 for information on accessible registers not contained in user EPROM.
- **2:** Do not address locations outside of the user memory map or unexpected results may occur.
## **TABLE 3-1: USER MEMORY MAP**
|**Address**|**Name**|**Description**|**Address**|**Name**|**Description**|
|---|---|---|---|---|---|
|00h|IOINTEN|Enable inputs for Transmit-On-Change<br>feature|1Bh|RXF0EID0|Acceptance Filter 0, Extended ID<br>LSB|
|01h|IOINTPO|Defines polarity for I/O or greater than/<br>less than operator for A/D Transmit-On-<br>Change inputs|1Ch|RXF1SIDH|Acceptance Filter 1, Standard ID<br>MSB|
|02h|GPLAT|General Purpose I/O (GPIO) Register|1Dh|RXF1SIDL|Acceptance Filter 1, Standard ID<br>LSB, Extended ID USB, and<br>Extended ID enable|
|03h|0xFF|Reserved|1Eh|RXF1EID8|Acceptance Filter 1, Extended ID<br>MSB|
|04h|OPTREG1|Configuration options, including GPIO<br>pull-up enable, clockout enable and<br>prescaler|1Fh|RXF1EID0|Acceptance Filter 1, Extended ID<br>LSB|
|05h|T1CON|PWM1 Timer Control Register; contains<br>enable bit, clockprescale and DC LSBs|20h|TXID0SIDH|Transmit Buffer 0, Standard ID MSB|
|06h|T2CON|PWM2 Timer Control Register; contains<br>enable bits, clock prescale and DC LSBs|21h|TXID0SIDL|Transmit Buffer 0, Standard ID LSB,<br>Extended ID USB, and Extended ID<br>enable|
|07h|PR1|PWM1 Period Register|22h|TXID0EID8|Transmit Buffer 0, Extended ID MSB|
|08h|PR2|PWM2 Period Register|23h|TXID0EID0|Transmit Buffer 0, Extended ID LSB|
|09h|PWM1DCH|PWM1 DutyCycle(DC)MSBs|24h|TXID1SIDH|Transmit Buffer 1, Standard ID MSB|
|0Ah|PWM2DCH|PWM2 Duty Cycle (DC) MSBs|25h|TXID1SIDL|Transmit Buffer 1, Standard ID LSB,<br>Extended ID USB, and Extended ID<br>enable|
|0Bh|CNF1**3**|CAN module register configures<br>synchronization jump width and baud rate<br>prescaler|26h|TXID1EID8|Transmit Buffer 1, Extended ID MSB|
|0Ch|CNF2**3**|CAN module register configures<br>propagation segment, phase segment 1,<br>and determines number of samplepoints|27h|TXID1EID0|Transmit Buffer 1, Extended ID LSB|
|0Dh|CNF3**3**|CAN module register configures phase<br>buffer segment 2, Sleepmode|28h|TXID2SIDH|Transmit Buffer 2, Standard ID MSB|
- **Note 1:** GPDDR is mapped to 1Fh is SRAM and not offset by 1Ch.
- **2:** User memory ( 35h-44h ) is not transferred to RAM on power-up and can only be accessed via “Read User Mem” commands.
- **3:** Cannot be modified from initial programmed values.
- **4:** Unimplemented on MCP2502X devices and read 0x00 (exception, ADCON1 = 0x0F ).
DS21664D-page 19
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **TABLE 3-1: USER MEMORY MAP (CONTINUED)**
|**Address**|**Name**|**Description**|**Address**|**Name**|**Description**|
|---|---|---|---|---|---|
|0Eh|ADCON0**4**|A/D Control Register; contains enable,<br>conversion rate, channel select bits|29h|TXID2SIDL|Transmit Buffer 2, Standard ID LSB,<br>Extended ID USB, and Extended ID<br>enable|
|0Fh|ADCON1**4**|A/D Control Register; contains voltage<br>reference source, conversion rate and<br>A/D input enable bits|2Ah|TXID2EID8|Transmit Buffer 2, Extended ID MSB|
|10h|STCON|Scheduled Transmission Control Register|2Bh|TXID2EID0|Transmit Buffer 2, Extended ID LSB|
|11h|OPTREG2|Configuration options, including Sleep<br>mode, RTR message and error recovery<br>enables|2Ch|ADCMP3H**4**|Analog Channel 3 Compare Value<br>MSB|
|12h|—|Reserved|2Dh|ADCMP3L**4**|Analog Channel 3 Compare Value<br>LSb’s|
|13h|—|Reserved|2Eh|ADCMP2H**4**|Analog Channel 2 Compare Value<br>MSB|
|14h|RXMSIDH|Acceptance Filter Mask, Standard ID MSB|2Fh|ADCMP2L**4**|Analog Channel 2 Compare Value<br>LSb’s|
|15h|RXMSIDL|Acceptance Filter Mask, Standard ID LSB<br>and Extended ID USB|30h|ADCMP1H**4**|Analog Channel 1 Compare Value<br>MSB|
|16h|RXMEID8|Acceptance Filter Mask, Extended ID<br>MSB|31h|ADCMP1L**4**|Analog Channel 1 Compare Value<br>LSb’s|
|17h|RXMEID0|Acceptance Filter Mask, Extended ID LSB|32h|ADCMP0H**4**|Analog Channel 0 Compare Value<br>MSB|
|18h|RXF0SIDH|Acceptance Filter 0, Standard ID MSB|33h|ADCMP0L**4**|Analog Channel 0 Compare Value<br>LSb’s|
|19h|RXF0SIDL|Acceptance Filter 0, Standard ID LSB,<br>Extended ID USB, and Extended ID<br>enable|34h|GPDDR**1**|General Purpose I/O Data Direction<br>Register|
|1Ah|RXF0EID8|Acceptance Filter 0, Extended ID MSB|35-44h|USER[0:F]**2**|User Defined Bytes (0-15)|
- **Note 1:** GPDDR is mapped to 1Fh is SRAM and not offset by 1Ch.
- **2:** User memory ( 35h-44h ) is not transferred to RAM on power-up and can only be accessed via “Read User Mem” commands.
- **3:** Cannot be modified from initial programmed values.
- **4:** Unimplemented on MCP2502X devices and read 0x00 (exception, ADCON1 = 0x0F ).
**TABLE 3-2: ACCESSIBLE RAM REGISTERS NOT IN THE EPROM MAP**
|**Addr***|**Name**|**bit7**|**bit6**|**bit5**|**bit4**|**bit3**|**bit2**|**bit1**|**bit0**|**Value on**<br>**POR**|**Value on **<br>**RST**|
|---|---|---|---|---|---|---|---|---|---|---|---|
|1Fh******|GPDDR|—|DDR6|DDR4|DDR4|DDR3|DDR2|DDR1|DDR0|-111 1111|-111 1111|
|18h|EFLG|ESCF|RBO|TXEP|TXEP|RXEP|TXWAR|RXWAR|EWARN|0000 0000|0000 0000|
|19h|TEC|Transmit Error Counters||||||||0000 0000|0000 0000|
|1Ah|REC|Receive Error Counters||||||||0000 0000|0000 0000|
|50h|ADRES3H|AN3.9|AN3.8|AN3.6|AN3.6|AN3.5|AN3.4|AN3.3|AN3.2|xxxx xxxx|uuuu uuuu|
|51h|ADRES3L|AN3.1|AN3.0|—|—|—|—|—|—|xx-- ----|uu-- ----|
|52h|ADRES2H|AN2.9|AN2.8|AN2.6|AN2.6|AN2.5|AN2.4|AN2.3|AN2.2|xxxx xxxx|uuuu uuuu|
|53h|ADRES2L|AN2.1|AN2.0|—|—|—|—|—|—|xx-- ----|uu-- ----|
|54h|ADRES1H|AN1.9|AN1.8|AN1.6|AN1.6|AN1.5|AN1.4|AN1.3|AN1.2|xxxx xxxx|uuuu uuuu|
|55h|ADRES1L|AN1.1|AN1.0|—|—|—|—|—|—|xx-- ----|uu-- ----|
|56h|ADRES0H|AN0.9|AN0.8|AN0.6|AN0.6|AN0.5|AN0.4|AN0.3|AN0.2|xxxx xxxx|uuuu uuuu|
|57h|ADRES0L|AN0.1|AN0.0|—|—|—|—|—|—|xx-- ----|uu-- ----|
- These addresses are used when using the “Write Register” or “Read Register” command
- ** The GPDDR register is not offset to RAM the same as the other registers in the EPROM
DS21664D-page 20
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **4.0 DEVICE OPERATION**
## **4.1 Power-Up Sequence**
The following sections describe the events/actions of the MCP2502X/5X during normal power-up and operation.
## 4.1.1 POWER-ON RESET
The MCP2502X/5X goes through a sequence of events at power-on reset (POR) in order to load the programmed configuration and insure that errors are not introduced on the bus. During this time, the device is prevented from generating a low condition on the TXCAN pin. The TXCAN pin must remain high from power-on until the device goes on bus.
## _Operational Mode at Power-On_
The MCP2502X/5X initially powers up in Configuration mode. While in this mode, the MCP2502X/5X will be prevented from sending or receiving messages via the CAN interface. The ADC and PWM peripherals are disabled while in this mode.
## _Self-Configuration_
Once the MCP2502X/5X is out of reset, it will perform a self-configuration. This is accomplished by transferring the contents of the EPROM array to the corresponding locations within the SRAM array. In addition, the checksum of the data written to SRAM will be compared to a pre-programmed value as a test of valid data.
## _Going On Bus_
Once the self-configuration cycle has successfully completed, the MCP2502X/5X switches to Listen-only mode. It will remain in this mode until an error-free CAN message is detected. This is done to ensure that the device is at the correct bus rate for the system.
Once the device detects an error-free message, it waits for CAN bus idle before switching to Normal mode. This prevents it from going on bus in the middle of another node’s transmission and generating an error frame.
Alternately, the MCP2505X may directly enter Normal mode (without first entering Listen-only Mode) after completing its self-configuration. This is configured by the user via a control bit (OPTREG2.PUNRM).
Once the MCP2502X/5X enters Normal mode, it is ready to send/receive messages via the CAN interface. At this point the ADC and PWM peripherals are operational, if enabled.
## _Scheduled Transmissions_
Once the MCP2502X/5X has gone on bus it will transmit the On Bus message once, regardless of whether enabled or not. This message notifies the network of the MCP2502X/5X’s presence. The On Bus message will (if enabled STCON.STEN) repeat at a frequency determined by the STCON register (Register 4-1).
This message can also be configured to send the “Read A/D Register” data bytes along with the predefined identifier in TXID2 by setting STCON.STMS = 1 .
**Note:** The first On Bus message sent after power-up will NOT send the “Read A/D Register” data bytes, regardless of the STCON.STMS value.
**Note:** If the MCP2502X/5X enters SLEEP mode, the scheduled transmissions will cease until the device wakes up again. This implies that SLEEP mode has priority over scheduled transmissions.
## **4.2 Message Functions**
The MCP2502X/5X uses the global mask (RXMASK), two filters (RXF0 and RXF1) and two receive buffers (RB0 and RB1) to determine if a received message should be acted upon. There are 16 functions that can be performed by the MCP2502X/5X based on received messages (see Table 4-1).These functions allow the device to not only be accessed for Information Request/Input/Output operations, but also to be reconfigured via the CAN bus, if necessary.
## **4.3 Message Types**
There are three types of messages that are used to implement the functions of Table 4-1.
1. Information Request Messages (IRM) - Received by the MCP2502X/5X.
2. Output Messages - Transmitted from the MCP2502X/5X as a response to IRMs.
3. Input Messages - Received by the MCP2502X/ 5X and used to modify registers.
**Note:** Information Request Messages (IRMs) and Input messages are both input messages to the MCP2502X/5X. IRMs are received into receive buffer 0 and input messages are received into receive buffer 1. This must be taken into account while configuring the acceptance filters.
DS21664D-page 21
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## 4.3.1 INFORMATION REQUEST MESSAGES
Information Request Messages (IRM) are messages that the MCP2502X/5X receives into Receive Buffer 0 (matches Filter 0) and then responds to by transmitting a message (output message) containing the requested data.
IRMs can be implemented as either a Remote Transfer Request (RTR) or a Data Frame message by configuring the MTYPE bit in the OPTREG2 register.
## **TABLE 4-1: MESSAGE FUNCTION**
|**Name**|**Description**|
|---|---|
|Read A/D<br>Registers|Transmits a single message containing<br>the current state of the analog and I/O<br>registers, includingthe configuration|
|Read Control<br>Registers|Transmits several control registers not<br>included in other messages|
|Read Configura-<br>tion Registers|Transmits the contents of many of the<br>configuration registers|
|Read CAN<br>error states|Transmits the error flag register and<br>the error counts|
|Read PWM<br>Configuration|Transmits the registers associated with<br>the PWM modules|
|Read User<br>Registers 1|Transmits the values in bytes 0 - 7 of<br>the user memory|
|Read User<br>Registers 2|Transmits the values in bytes 8 -15 of<br>the user memory|
|Read Register*****|Transmits a single byte containing the<br>value in an addressed user memory<br>register|
|Write Register|Uses a mask to write a value to an<br>addressed register|
|Write TX Message<br>ID0 (TXID0)|Writes the identifiers to a specified<br>value|
|Write TX Message<br>ID1(TXID1)|Writes the identifiers to a specified<br>value|
|Write TX Message<br>ID2 (TXID2)|Writes the identifiers to a specified<br>value|
|Write I/O<br>Configuration<br>Registers|Writes specified values to the three<br>IOCON registers|
|Write RX Mask|Changes the receive mask to the<br>specified value|
|Write RX Filter0|Changes the specified filter to the<br>specified value|
|Write RX Filter1|Changes the specified filter to the<br>specified value|
- The Read Register command is available when using extended message format only. Not available with standard message format.
## 4.3.1.1 RTR Message Type
When RTR message types are selected (OPTREG2.MTYPE) and a node in the system wants information from the MCP2502X/5X, it has to send a remote frame on the bus. The identifier for the remote frame must be such that it will be accepted through the MCP2502X/5X’s mask/filter process (using RXF0). The RTR message type (remote frames) is the default configuration (MTYPE bit = 0 ). Information Request “RTR” messages must not only meet the RXMASK/RXF0 criteria but must also have the RTR bit of the CAN ID set (since the filter registers do not contain an explicit RTR bit). If a message passes the mask/filter process and the RTR bit is a ‘ 0 ’, that message will be ignored.
Once the MCP2502X/5X has received a remote frame, it will determine the function to be performed based upon the three LSb’s (RXB0SIDL.SID2:SID0 for standard messages and RXB0EID0.EID2:EID0 for extended messages) of the received remote frame.
Additionally, a predefined Data Length Code (DLC) must be sent to signify the number of data bytes that the MCP2502X/5X must return in it’s output message (see Table 4-2 and Table 4-3).
## 4.3.1.2 Data Frame Message Type
When a non-RTR (or data frame) message type is selected and a node in the system wants information from the MCP2502X/5X, it sends an Information Request in the form of a data frame. The identifier for this request must be such that it will be accepted through the MCP2502X/5X’s mask/filter process (using RXF0).
Information request messages in the data frame format must not only meet the RXMASK/RXF0 criteria, but must also have the RTR bit of the CAN ID cleared (since the filter registers do not contain an explicit RTR bit). If a message passes the mask/filter process and the RTR bit is a ‘ 1 ’, that message will be ignored.
Once the MCP2502X/5X has received a data frame information request, it will determine the function to be performed based upon the three LSb’s (RXB0SIDL.SID2:SID0 for standard messages and RXB0EID0.EID2:EID0 for extended messages) of the received data frame. Also, Bit 3 of the received message ID must be set to a ‘ 1 ’. In addition, the data length code (DLC) must be set to a zero. Refer to Table 4-2 and Table 4-3 for more information.
Regardless of the message format, all messages except the Read Register message can use either standard or extended identifiers. The Read Register message has one additional requirement; it must be an extended identifier. This is discussed in more detail in Table 4-1 and Table 4-3 for more information.
DS21664D-page 22
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## 4.3.2 OUTPUT MESSAGES
The data frame sent in response to the information request message is defined as an output message.
If the data fame is in response to a remote frame, it will have the same identifier (standard or extended) and contain the same number of data bytes specified by the DLC of the remote frame (per the CAN 2.0B specification).
**Note:** If the DLC of the incoming remote frame differs from the message definitions summarized in Table 4-2 and Table 4-3, the resulting output message will limit itself to the erroneous DLC that was received (to maintain compliance with the Bosch CAN specification). The output message will concatenate the number of data bytes for an erroneous DLC that is less than the defined number. For an erroneous DLC that is greater than the defined number, the MCP2502X/5X will extend the number of data bytes, with the data value of the last defined data byte being repeated in the extra bytes in the data field.
If the output message is in response to a data frame, the lower-three LSb’s of the identifier (standard or extended) must be the same as the received message, as well as the upper-seven MSb’s in the case of a standard identifier, or the upper 25 MSb’s in the case of an extended identifier. Bit 3 of a standard or extended identifier of the output message will differ from the received information request message in that the value equals ‘ 1 ’ for an IRM and equals ‘ 0 ’ for the resulting output message.
Output messages contain the requested data (in the data field). **Example:** The information request message Read CAN error is a remote transmit request received by the MCP2502X/5X with a DLC of 3. The responding output message will return a data frame that contains the same identifier (standard or extended) as the receive message. The accompanying data bytes will contain the values of the predefined GPIO registers and related control/status registers, as shown in Table 4-2 and 4-3.
## 4.3.3 INPUT MESSAGES
Input messages are received into receive buffer 1 and are used to change the values of the pre-defined groups of registers. There is also an input message that can change a single register’s contents. The primary purpose of input messages are to reconfigure MCP2502X/5X parameters (if needed) while in an operating CAN system and are, therefore, optional in system implementation. These messages are in the form of standard (or extended) data frames (per the CAN 2.0B specification) that have identifiers which pass the MCP2502X/5X’s mask/filter process (using RXF1). After passing the mask and filter, the lower-
three bits of the standard identifier (RXF1SIDL.SID2:SID0) will indicate which register(s) are to be written. The values for the register(s) are contained in the data byte registers as defined in Table 4-2.
**Note:** If using more than one controlling node, the MCP2502X/5X must be set up to accept input messages with different identifiers in order to avoid possible message collisions in the DLC or data bytes if transmitted at the same time.
**Note 1:** IRMs can theoretically be sent by more than one controlling node because the message is a predefined constant and destructive collisions will not occur.
- **2:** The number of data bytes in an input message must match the DLC number as defined in Table 4-2 and Table 4-3. If the user specifies and transmits an input message with a DLC that is less than the required number of data bytes, the MCP25020 will operate on corrupted data for the bytes that it did not receive and unknown results will occur.
## **4.4 Dynamic Message Handling**
The design insures that transmit and receive messages are handled properly for variable bus-loading conditions and different transmit/receive combinations.
## 4.4.1 MESSAGE ACCEPTANCE/ REJECTION
Messages received that meet the Mask/RXFn criteria are then compared to the requirements for input messages or IRMs, as determined by the filter used to accept the message. If the message meets the requirements of one of the associated input or information request messages, the appropriate actions for that message function are taken.
## 4.4.2 RECEIVING MULTIPLE MESSAGES
The MCP2502X/5X can only receive and process one message at a time. While the MCP2502X/5X should have ample time to process any received message before another is completely received, a second message received before the first message is finished processing will be lost.
However, the MCP2502X/5X has the ability to notify the network if a message is lost. TXID1 can be configured to transmit a message if a receive overflow occurs (OPTREG2.CAEN = 0 ).
DS21664D-page 23
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## 4.4.3 TRANSMIT MESSAGE PRIORITY
There is a priority for all transmit messages, including TXIDn and all “Output” messages.
The transmit message priority is as follows:
1. Output messages have the highest priority. Prioritization of the individual output message types is determined by the three bits that determine message type, with the lowest value having the highest priority (e.g., Read A/D Regs is a higher priority than Read Control Regs).
2. TXID2 (Transmit auto-converted messages) has the second-highest priority.
3. TXID1 (Command acknowledge) has the thirdhighest priority.
4. TXID0 (On Bus message) has the lowest priority.
In the event two or more messages are pending transmission, transmit-message-prioritization will occur and the highest message type will be sent first. Messages that are currently transmitting will not be prioritized.
DS21664D-page 24
© 2007 Microchip Technology Inc.
## **TABLE 4-2: COMMAND MESSAGES (STANDARD IDENTIFIER)**
|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|**TABLE 4-2:**<br>**COMMAND MESSAGES (STANDARD IDENTIFIER)**|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|**Information Request Messages (to MCP2502X/5X)**||||||||||||||||||||||||||||||||||
||Standard ID|||||||||||||||||||||||||Data Bytes||||||||
||1<br>0|9|8|7|6||5||4||3||2|1|0|R<br>T<br>R||I<br>D<br>E||DLC||||||||||||||
|Read A/D Regs|x|x|x|x|x||x||x||*||0|0|0|1*||0||1|0|0|0|8*||n/a|n/a|n/a|n/a|n/a|n/a|n/a|n/a|
|<br>Read Control Regs|x|x|x|x|x||x||x||*||0|0|1|1*||0||0|1|1|1|7*||n/a|n/a|n/a|n/a|n/a|n/a|n/a|n/a|
|<br>Read Config Regs|x|x|x|x|x||x||x||*||0|1|0|1*||0||0|1|0|1|5*||n/a|n/a|n/a|n/a|n/a|n/a|n/a|n/a|
|<br>Read CAN Error|x|x|x|x|x||x||x||*||0|1|1|1*||0||0|0|1|1|3*||n/a|n/a|n/a|n/a|n/a|n/a|n/a|n/a|
|Read PWM Config|x|x|x|x|x||x||x||*||1|0|0|1*||0||0|1|1|0|6*||n/a|n/a|n/a|n/a|n/a|n/a|n/a|n/a|
|<br>Read User Mem (bank1)|x|x|x|x|x||x||x||*||1|0|1|1*||0||1|0|0|0|8*||n/a|n/a|n/a|n/a|n/a|n/a|n/a|n/a|
|<br>Read User Mem (bank 2)|x|x|x|x|x||x||x||*||1|1|0|1*||0||1|0|0|0|8*||n/a|n/a|n/a|n/a|n/a|n/a|n/a|n/a|
|||||||||||||||||||||||||||||||||||
|**Output Messages (from MCP2502X/5X)**||||||||||||||||||||||||||||||||||
||Standard ID|||||||||||||||||||||||||Data Bytes||||||||
||1<br>0|9|8|7||6||5||4||3||2|1|0|R<br>T<br>R||I<br>D<br>E||DLC|||||||||||||
|Read A/D Regs|x|x|x|x||x||x||x||*||0|0|0|0||0||1|0|0|0|8|IOINTFL|GPIO|AN0H|AN1H|AN10L|AN2H|AN3H|AN32L|
|<br>Read Control Regs|x|x|x|x||x||x||x||*||0|0|1|0||0||0|1|1|1|7|ADCON0|ADCON1|OPTREG|OPTREG|STCON|IOINTEN|IOINTPO|n/a|
|<br>Read Config Regs|x|x|x|x||x||x||x||*||0|1|0|0||0||0|1|0|1|5|DDR|GPIO|CNF1|CNF2|CNF3|n/a|n/a|n/a|
|<br>Read CAN Error|x|x|x|x||x||x||x||*||0|1|1|0||0||0|0|1|1|3|EFLG|TEC|REC|n/a|n/a|n/a|n/a|n/a|
|Read PWM Config|x|x|x|x||x||x||x||*||1|0|0|0||0||0|1|1|0|6|PR1|PR2|T1CON|T2CON|PWM1DC|PWM2DC|n/a|n/a|
|<br>Read User Mem (bank1)|x|x|x|x||x||x||x||*||1|0|1|0||0||1|0|0|0|8|USERID0|USERID1|USERID2|USERID3|USERID4|USERID5|USERID6|USERID7|
|<br>Read User Mem (bank 2)|x|x|x|x||x||x||x||*||1|1|0|0||0||1|0|0|0|8|USERID8|USERID9|USERID1|USERID1|USERID1|USERID1|USERID1|USERID1|
|||||||||||||||||||||||||||||||||||
|**Input Messages** (to MCP2502X/5X)**||||||||||||||||||||||||||||||||||
||Standard ID|||||||||||||||||||||||||Data Bytes||||||||
||1<br>0|9|8|7||6||5||4||3||2|1|0|R<br>T<br>R||I<br>D<br>E||DLC|||||||||||||
|Write Register|x|x|x|x||x||x||x||x||0|0|0|0||0||0|0|1|1|3|addr|mask|value|n/a|n/a|n/a|n/a|n/a|
|<br>Write TX Message ID 0|x|x|x|x||x||x||x||x||0|0|1|0||0||0|1|0|0|4|TX0SIDH|TX0SIDL|TX0EID8|TX0EID0|n/a|n/a|n/a|n/a|
|<br>Write TX Message ID 1|x|x|x|x||x||x||x||x||0|1|0|0||0||0|1|0|0|4|TX1SIDH|TX1SIDL|TX1EID8|TX1EID0|n/a|n/a|n/a|n/a|
|<br>Write TX Message ID 2|x|x|x|x||x||x||x||x||0|1|1|0||0||0|1|0|0|4|TX2SIDH|TX2SIDL|TX2EID8|TX2EID0|n/a|n/a|n/a|n/a|
|<br>Write I/O Configuration|x|x|x|x||x||x||x||x||1|0|0|0||0||0|1|0|1|5|IOINTEN|IOINTPO|DDR|OPTREG|ADCON1|n/a|n/a|n/a|
|<br>Write RX Mask|x|x|x|x||x||x||x||x||1|0|1|0||0||0|1|0|0|4|RXMSIDH|RXMSIDL|RXMEID8|RXMEID0|n/a|n/a|n/a|n/a|
|Write RX Filter0|x|x|x|x||x||x||x||x||1|1|0|0||0||0|1|0|0|4|RXF0SID|RXF0SID|RXF0EID|RXF0EID|n/a|n/a|n/a|n/a|
|Write RX Filter1|x|x|x|x||x||x||x||x||1|1|1|0||0||0|1|0|0|4|RXF1SID|RXF1SID|RXF1EID|RXF1EID|n/a|n/a|n/a|n/a|
* If using non-RTR messages for information request messages (IRM), the RTR bit = 0 , DLC bit field = 0 , and bit 3 of the IRM ID = 1 . Also, bit 3 of the output message ID = 0 . If using RTR messages for IRMs, the RTR bit = 1 , DLC bit field = number of bytes in corresponding output message, and bit three of the IRM ID = x (don’t care), also, bit 3 of the output message = x (don’t care). ** User-defined IRM IDs must be different from input message IDs to avoid message contention between the corresponding output message and the input message.
## **TABLE 4-3: COMMAND MESSAGES (EXTENDED IDENTIFIER)**
|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|**TABLE 4-3:**<br>**COMMAND MESSAGES(EXTENDED IDENTIFIER)**|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|**Information Request Messages (to MCP2502X/5X)**||||||||||||||||||||||||||||||
||Standard ID|||||||||||||||||Extended ID||||Data Bytes||||||||
||1<br>0|9|8|7|6|5|4|3|2|1|0|R<br>T<br>R|I<br>D<br>E|DLC||||1<br>7|1<br>6|RXBEID8<br>(8 bits)|RXBEID0<br>(8 bits)|||||||||
|Read A/D Regs|x|x|x|x|x|x|x|x|x|x|x|1|1|1<br>0|0|0|8*|x|x|xxxx xxxx|xxxx*000|n/a|n/a|n/a|n/a|n/a|n/a|n/a|n/a|
|<br>Read Control Regs|x|x|x|x|x|x|x|x|x|x|x|1|1|0<br>1|1|1|7*|x|x|xxxx xxxx|xxxx*001|n/a|n/a|n/a|n/a|n/a|n/a|n/a|n/a|
|<br>Read Config Regs|x|x|x|x|x|x|x|x|x|x|x|1|1|0<br>1|0|1|5*|x|x|xxxx xxxx|xxxx*010|n/a|n/a|n/a|n/a|n/a|n/a|n/a|n/a|
|<br>Read CAN Error|x|x|x|x|x|x|x|x|x|x|x|1|1|0<br>0|1|1|3*|x|x|xxxx xxxx|xxxx*011|n/a|n/a|n/a|n/a|n/a|n/a|n/a|n/a|
|Read PWM Config|x|x|x|x|x|x|x|x|x|x|x|1|1|0<br>1|1|0|6*|x|x|xxxx xxxx|xxxx*100|n/a|n/a|n/a|n/a|n/a|n/a|n/a|n/a|
|<br>Read User Mem|x|x|x|x|x|x|x|x|x|x|x|1|1|1<br>0|0|0|8*|x|x|xxxx xxxx|xxxx*101|n/a|n/a|n/a|n/a|n/a|n/a|n/a|n/a|
|Read User Mem|x|x|x|x|x|x|x|x|x|x|x|1|1|1<br>0|0|0|8*|x|x|xxxx xxxx|xxxx*110|n/a|n/a|n/a|n/a|n/a|n/a|n/a|n/a|
|Read Register|x|x|x|x|x|x|x|x|x|x|x|1|1|0<br>0|0|0|1*|x|x|addr|xxxx*111|n/a|n/a|n/a|n/a|n/a|n/a|n/a|n/a|
|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|**Output Messages (from MCP2502X/5X)**|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
||Standard ID|||||||||||||||Extended ID||||Data Bytes||||||||
||1<br>0|9|8|7|6|5|4|3|2|1|0 R<br>T<br>R<br>I<br><br>|D<br>E<br>DLC||||1<br>7|1<br>6|RXBEID8<br>(8 bits)|RXBEID0<br>(8 bits)|||||||||
|Read A/D Regs|x|x|x|x|x|x|x|x|x|x|x<br>0|1<br>1|0|0<br>|0<br>8|x|x|xxxx xxxx|xxxx*000|IOINTFL|GPIO|AN0H|AN1H|AN10L|AN2H|AN3H|AN32L|
|<br>Read Control Regs|x|x|x|x|x|x|x|x|x|x|x<br>0|1<br>0|1|1<br>|1<br>7|x|x|xxxx xxxx|xxxx*001|ADCON0|ADCON1|OPTREG|OPTREG|STCON|IOINTEN|IOINTPO|n/a|
|<br>Read Config Regs|x|x|x|x|x|x|x|x|x|x|x<br>0|1<br>0|1|0<br>|1<br>5|x|x|xxxx xxxx|xxxx*010|DDR|GPIO|CNF1|CNF2|CNF3|n/a|n/a|n/a|
|<br>Read CAN Error|x|x|x|x|x|x|x|x|x|x|x<br>0|1<br>0|0|1<br>|1<br>3|x|x|xxxx xxxx|xxxx*011|EFLG|TEC|REC|n/a|n/a|n/a|n/a|n/a|
|Read PWM Config|x|x|x|x|x|x|x|x|x|x|x<br>0|1<br>0|1|1<br>|0<br>6|x|x|xxxx xxxx|xxxx*100|PR1|PR2|T1CON|T2CON|PWM1D|PWM2D|n/a|n/a|
|<br>Read User Mem|x|x|x|x|x|x|x|x|x|x|x<br>0|1<br>1|0|0<br>|0<br>8|x|x|xxxx xxxx|xxxx*101|USERID0|USERID1|USERID2|USERID3|USERID4|USERID5|USERID6|USERID7|
|Read User Mem|x|x|x|x|x|x|x|x|x|x|x<br>0|1<br>1|0|0<br>|0<br>8|x|x|xxxx xxxx|xxxx*110|USERID8|USERID9|USERID1|USERID1|USERID1|USERID1|USERID1|USERID1|
|Read Register|x|x|x|x|x|x|x|x|x|x|x<br>0<br>|1<br>0|0|0<br>|0<br>1|x|x|addr|xxxx*111|value|n/a|n/a|n/a|n/a|n/a|n/a|n/a|
|||||||||||||||||||||||||||||
|**Input Messages (to MCP2502X/5X)**||||||||||||||||||||||||||||
||Standard ID|||||||||||||||Extended ID||||Data Bytes||||||||
||1<br>0|9|8|7|6|5|4|3|2|1|0 R<br>T<br>R<br>I<br><br>|D<br>E<br>DLC||||1<br>7|1<br>6|RXBEID8<br>(8 bits)|RXBEID0<br>(8 bits)|||||||||
|Write Register|x|x|x|x|x|x|x|x|x|x|x 0|1<br>0|0|1<br>|1<br>3|x|x|xxxx xxxx|xxxx x000|addr|mask|value|n/a|n/a|n/a|n/a|n/a|
|<br>Write TX Message|x|x|x|x|x|x|x|x|x|x|x 0|1<br>0|1|0<br>|0<br>4|x|x|xxxx xxxx|xxxx x001|TX0SIDH|TX0SIDL|TX0EID8|TX0EID0|n/a|n/a|n/a|n/a|
|<br>Write TX Message|x|x|x|x|x|x|x|x|x|x|x 0|1<br>0|1|0<br>|0<br>4|x|x|xxxx xxxx|xxxx x010|TX1SIDH|TX1SIDL|TX1EID8|TX1EID0|n/a|n/a|n/a|n/a|
|<br>Write TX Message|x|x|x|x|x|x|x|x|x|x|x 0|1<br>0|1|0<br>|0<br>4|x|x|xxxx xxxx|xxxx x011|TX2SIDH|TX2SIDL|TX2EID8|TX2EID0|n/a|n/a|n/a|n/a|
|<br>Write I/O Configura-|x|x|x|x|x|x|x|x|x|x|x 0|1<br>0|1|0<br>|1<br>5|x|x|xxxx xxxx|xxxx x100|IOINTEN|IOINTPO|DDR|OPTREG|ADCON1|n/a|n/a|n/a|
|<br>Write RX Mask|x|x|x|x|x|x|x|x|x|x|x 0|1<br>0|1|0<br>|0<br>4|x|x|xxxx xxxx|xxxx x101|RXM-|RXMSIDL|RXMEID8|RXMEID0|n/a|n/a|n/a|n/a|
|Write RX Filter0|x|x|x|x|x|x|x|x|x|x|x 0|1<br>0|1|0<br>|0<br>4|x|x|xxxx xxxx|xxxx x110|RXF0SID|RXF0SID|RXF0EID|RXF0EID|n/a|n/a|n/a|n/a|
|Write RX Filter1|x|x|x|x|x|x|x|x|x|x|x 0|1<br>0|1|0<br>|0<br>4|x|x|xxxx xxxx|xxxx x111|RXF1SID|RXF1SID|RXF1EID|RXF1EID|n/a|n/a|n/a|n/a|
|* If using non-RTR messages for information request messages (IRM), the RTR bit =0, DLC bit field =0, and bit 3 of the IRM ID =1. Also, bit 3 of the output message ID =0.<br>If using RTR messages for IRMs, the RTR bit =1, DLC bit field = number of bytes in corresponding output message, and bit three of the IRM ID = x (don’t care), also, bit 3 of the<br>output message = x (don’t care).<br>** User-defined IRM IDs must be different from input message IDs to avoid message contention between the corresponding output message and the input message.||||||||||||||||||||||||||||
**MCP2502X/5X**
## **4.5 Automatic Transmission**
The MCP2502X/5X can automatically initiate four different message types to indicate the following situations:
- Edge detected on a digital input (TXID2).
- Threshold exceeded on an analog input (TXID2).
- Error condition (Read Error output message).
- Scheduled transmissions (TXID0).
The buffers have an implied transmit priority, where buffer 2 is the highest and buffer 0 is the lowest. Therefore, multiple message buffers can be requested for transmission and each one will be sent in order of priority.
## 4.5.1 DIGITAL INPUT EDGE DETECTION
Each GPIO pin configured as a digital input can be individually configured to automatically transmit a message when a defined edge occurs, as explained in the GPIO module section. When transmitting this message, the MCP2502X/5X uses TXID2. The DLC is set to two and the first two bytes of the Read A/D registers (IOINTFL and GPIO) are sent.
## 4.5.2 ANALOG INPUT THRESHOLD DETECTION
Each GPIO pin that has been configured as an analog input can be individually configured to automatically transmit a message when a threshold is exceeded as described in the Analog-to-Digital Converter Module section. The MCP2502X/5X sends TXID2 when transmitting this message. The DLC is set to eight and the eight bytes of the ‘Read A/D Registers’ are sent.
**Note:** The GPIO register that is sent with the message (data byte 2) can be ignored if there are no digital inputs enabled for change-of-state, as it contains no useful information for the Analog Input Threshold Detect function.
## 4.5.2.1 Hysteresis Function
This function is automatic and will insure that an analog value that is on the compare edge (i.e., toggling LSb) does not fill the CAN bus with continuous A/D message transmissions.
The hysteresis uses the two LSb’s of the compare register. These two bits are forced and are not configurable by the user. They will be forced to either b’00’ or b’11’ , depending on the compare polarity. If configured for A/D result > compare register, the automatic transmission will occur when the A/D value is greater than or equal to b’nnnn nnnn 11’ and reset when less than or equal to b’nnnn nnnn 00’ . The opposite conditions must occur if the compare polarity is set for A/D result < compare register.
A hysteresis example:
- The user sets the upper-eight bits of the 10-bit compare register (ADCMP0H). The lower-two bits of the compare register are not configurable by the user and are forced to either b’11’ or b’00’ depending on the polarity of the compare threshold (i.e., transmit is triggered above or below the compare value via the IOINTPO register).
- The user sets the polarity of the compare threshold (IOINTPO). In this example, the threshold is set for triggering a message on an A/D > compare register. The two LSb’s are forced to b’11’ .
- When the A/D conversion exceeds the compare register ( b’nnnn nnnn 11’ ), an automatic transmission will occur once.
- In order for the automatic transmission to occur again, the A/D value must first drop below the compare register b’nnnn nnnn 00’ and then back above the compare register b’nnnn nnnn 11’ .
## **FIGURE 4-1: HYSTERESIS FUNCTION**
**==> picture [206 x 92] intentionally omitted <==**
**----- Start of picture text -----**<br>
Set to Trigger when A/D>Compare Register<br>LSbs = b’11’<br>LSbs = b’00’<br>A/D above compare, A/D above compare,<br>Message sent Message sent<br>A/D below compare,<br>Reset<br>**----- End of picture text -----**<br>
## **Set to Trigger when A/D<Compare Register**
**==> picture [208 x 89] intentionally omitted <==**
**----- Start of picture text -----**<br>
LSbs = b’11’<br>LSbs = b’00’<br>A/D above compare,<br>Reset<br>A/D below compare,<br>Message sent<br>A/D below compare,<br>Message sent<br>**----- End of picture text -----**<br>
## 4.5.3 ERROR CONDITION
The MCP2502X/5X can be configured to automatically transmit a message whenever one or more of the following error conditions occur:
- Receiver has entered error-warning state
- Receiver has entered error-passive state
- Transmitter has entered error-warning state
- Transmitter has entered error-passive state
- A Receive buffer has overflowed
DS21664D-page 27
© 2007 Microchip Technology Inc.
## **MCP2502X/5X**
If the Error Condition message is enabled (OPTREG2.TXONE = 1 ) and one of the above conditions occur, the MCP2502X/5X sends TXID1 identifier with output message Read CAN Error States data field (three data bytes).
## 4.5.4 SCHEDULED TRANSMISSIONS
The MCP2502X/5X has the capability of sending scheduled transmissions (On Bus message), if enabled.
The scheduled transmission control register (STCON) enables and configures the occurrence of the scheduled message. Setting the STEN bit in the STCON register enables the scheduled message. The STBF1:STBF0 and STM3:STM0 bits allow a scheduled transmission to be initiated from a minimum of 256 µs to a maximum of 16.8 seconds (using a 16 MHz FOSC) and the following equation:
Scheduled Transmission = STBF1:STBF0(STM3:STM0)
**Message Type** - The message sent for scheduled transmissions consists of either TXID0 with zero data bytes or TXID0 with eight data bytes containing the Read A/D Regs message, depending on STMS bit in the STCON register.
**Note:** The actual scheduled transmission intervals may vary slightly due to the internal event que of the control module.
## **REGISTER 4-1: STCON - SCHEDULED TRANSMISSION CONTROL REGISTER**
**==> picture [425 x 339] intentionally omitted <==**
**----- Start of picture text -----**<br>
R/W-0 R/W-0 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1<br>STEN STMS STBF1 STBF0 STM3 STM2 STM1 STM0<br>bit 7 bit 0<br>bit 7 STEN: Scheduled Transmission Enable bits<br>1 = Enabled<br>0 = Disabled<br>bit 6 STMS: Scheduled Transmission Message Select<br>1 = Sends Transmit ID 0 (TXID0) with the “Read A/D Regs” data (DLC = 8 )<br>0 = Sends Transmit ID 0 (TXID0) with no data (DLC = 0 )<br>bit 5-4 STBF1:STBF0 : Base Transmission Frequency bits<br>00 = 4096TOSC<br>01 = 16 • (4096TOSC)<br>10 = 256 • (4096TOSC)<br>10 = 4096 • (4096TOSC)<br>(e.g., STBF1:STBF0 => 00 => 256 µs for a 16 MHz FOSC)<br>bit 3-0 STM3:STM0: Scheduled Transmission Multiplier bits<br>0000 = 1<br>0001 = 2<br>-<br>-<br>1110 = 15<br>1111 = 16<br>Legend:<br>R = Readable bit W = Writable bit U = Unimplemented bit, read as ‘0’<br>- n = Value at POR ‘1’ = Bit is set ‘0’ = Bit is cleared x = Bit is unknown<br>**----- End of picture text -----**<br>
DS21664D-page 28
© 2007 Microchip Technology Inc.
## **MCP2502X/5X**
## **TABLE 4-4: REGISTERS ASSOCIATED WITH THE CAN MODULE**
**==> picture [471 x 352] intentionally omitted <==**
**----- Start of picture text -----**<br>
Value on Value on<br>Addr Name bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0<br>POR RST<br>0Bh CNF1 SJW1 SJW0 BRP5 BRP4 BRP3 BRP2 BRP1 BRP0 xxxx xxxx uuuu uuuu<br>0Ch CNF2 BTLM- SAM PHSEG12 PHSEG11 PHSEG10 PRSEG2 PRSEG1 PRSEG0 xxxx xxxx uuuu uuuu<br>ODE<br>0Dh CNF3 — WAKF — — — PHSEG22 PHSEG21 PHSEG20 -x-- xxxx -u-- uuuu<br>10h STCON STEM STMS STBF1 STBF0 STM3 STM2 STM1 STM0 0xxx xxxx 0uuu uuuu<br>11h OPTREG2 CAEN ERRE TXONE SLPEN MTYPE PDEFEN PUSLP PUNRM 0000 0000 uuuu uuuu<br>14h RXMSIDH SID10 SID9 SID8 SID7 SID6 SID5 SID4 SID3 xxxx xxxx uuuu uuuu<br>15h RXMSIDL SID2 SID1 SID0 — — — EID17 EID16 xxx- --xx uuu- --uu<br>16h RXMEID8 EID15 EID14 EID13 EID12 EID11 EID10 EID9 EID8 xxxx xxxx uuuu uuuu<br>17h RXMEID0 EID7 EID6 EID5 EID4 EID3 EID2 EID1 EID0 xxxx xxxx uuuu uuuu<br>18h RXF0SIDH SID10 SID9 SID8 SID7 SID6 SID5 SID4 SID3 xxxx xxxx uuuu uuuu<br>19h RXF0SIDL SID2 SID1 SID0 — — — EID17 EID16 xxx- --xx uuu- --uu<br>1Ah RXF0EID8 EID15 EID14 EID13 EID12 EID11 EID10 EID9 EID8 xxxx xxxx uuuu uuuu<br>1Bh RXF0EID0 EID7 EID6 EID5 EID4 EID3 EID2 EID1 EID0 xxxx xxxx uuuu uuuu<br>1Ch RXF1SIDH SID10 SID9 SID8 SID7 SID6 SID5 SID4 SID3 xxxx xxxx uuuu uuuu<br>1Dh RXF1SIDL SID2 SID1 SID0 — — — EID17 EID16 xxx- --xx uuu- --uu<br>1Eh RXF1EID8 EID15 EID14 EID13 EID12 EID11 EID10 EID9 EID8 xxxx xxxx uuuu uuuu<br>1Fh RXF1EID0 EID7 EID6 EID5 EID4 EID3 EID2 EID1 EID0 xxxx xxxx uuuu uuuu<br>20h TXB0SIDH SID10 SID9 SID8 SID7 SID6 SID5 SID4 SID3 xxxx xxxx uuuu uuuu<br>21h TXB0SIDL SID2 SID1 SID0 — EXIDE — EID17 EID16 xxx- x-xx uuu- u-uu<br>22h TXB0EID8 EID15 EID14 EID13 EID12 EID11 EID10 EID9 EID8 xxxx xxxx uuuu uuuu<br>23h TXB0EID0 EID7 EID6 EID5 EID4 EID3 EID2 EID1 EID0 xxxx xxxx uuuu uuuu<br>24h TXB1SIDH SID10 SID9 SID8 SID7 SID6 SID5 SID4 SID3 xxxx xxxx uuuu uuuu<br>25h TXB1SIDL SID2 SID1 SID0 — EXIDE — EID17 EID16 xxx- x-xx uuu- u-uu<br>26h TXB1EID8 EID15 EID14 EID13 EID12 EID11 EID10 EID9 EID8 xxxx xxxx uuuu uuuu<br>27h TXB1EID0 EID7 EID6 EID5 EID4 EID3 EID2 EID1 EID0 xxxx xxxx uuuu uuuu<br>28h TXB2SIDH SID10 SID9 SID8 SID7 SID6 SID5 SID4 SID3 xxxx xxxx uuuu uuuu<br>29h TXB2SIDL SID2 SID1 SID0 — EXIDE — EID17 EID16 xxx- x-xx uuu- u-uu<br>2Ah TXB2EID8 EID15 EID14 EID13 EID12 EID11 EID10 EID9 EID8 xxxx xxxx uuuu uuuu<br>2Bh TXB2EID0 EID7 EID6 EID5 EID4 EID3 EID2 EID1 EID0 xxxx xxxx uuuu uuuu<br>**----- End of picture text -----**<br>
DS21664D-page 29
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **NOTES:**
DS21664D-page 30
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **5.0 GPIO MODULE**
## **5.1 Description**
The MCP2502X/5X has eight general-purpose input/ output pins (GP0 to GP7), collectively labeled GPIO. All GPIO port pins have TTL input levels and full CMOS output drivers, with the exception of GP7, which is input only. Pins GP6:GP0 can be individually configured as input or output via the GPDDR register.
**Note:** The GPDDR register controls the direction of the GPIO pins, even when they are being used as analog inputs. The user must ensure that the bits in the GPDDR register are maintained set (input) when using them as analog inputs.
Each of the GPIO pins has a weak internal pull-up resistor. A single control bit (OPTREG.GPPU) can turn on/off all the pull-ups. The weak pull-up is automatically turned off when the port pin is configured as an output. The pull-ups are disabled during a Power-on Reset.
All pins are multiplexed with an alternate function, including analog-to-digital conversion on up to four of the GPIO pins, analog VREF inputs up to two pins, PWM outputs up to two pins, clock-out function and external reset. The operation of each pin is selected by clearing, or setting, control bits in various control registers. GPIO pin functions are summarized in Table 5-1.
## **TABLE 5-1: GPIO FUNCTIONS**
|**Name**|**Bit**<br>**#**|**Function**|
|---|---|---|
|GP0/AN0|bit0|I/O or analoginput|
|GP1/AN1|bit1|I/O or analoginput|
|GP2/AN2/PWM2|bit2|I/O, analog input<br>or PWM out|
|GP3/AN3/PWM3|bit3|I/O, analog input<br>or PWM out|
|GP4/VREF-|bit4|I/O or analog voltage<br>reference|
|GP5/VREF+|bit5|I/O or analog voltage<br>reference|
|GP6/CLKOUT|bit6|I/O or Clock output|
|GP7/nRST/VPP|bit7|Input, external reset input<br>or programming voltage<br>input|
## **5.2 Digital Input Edge Detection**
All GPIO pins have a digital input edge detection feature that will automatically transmit a message when an edge with the proper polarity occurs on any of the digital inputs. Only pins configured as inputs and enabled for this function via control register IOINTPO will perform this operation.
**Note:** Refer to **Section 7.4 “A/D Threshold Detection”** for information regarding A/D channels.
Three control registers are associated with this function. An enable pin for each GPIO pin resides in the IOINTEN register. When a bit is set to a ' 1 ', the corresponding GPIO pin is enabled to generate a transmit-on-change message (TXID2) when an edge of specified polarity occurs.
The digital edge detection function on a GPIO pin configured as a digital input is edge triggered. A risingedge will generate a transmission if the corresponding bit in the IOINTPO register is set. A falling-edge will generate a transmission if the bit is cleared. When a valid edge appears on the enabled GPIO pin, CAN message TXID2 is initiated.
The edge-detection function on any given GPIO pin (configured as a digital input) can wake up the processor from SLEEP if the corresponding interrupt enable bit in the IOINTEN register was set prior to going into SLEEP mode. If a wake-up from SLEEP is caused in this manner, the device will immediately initiate a transmit message (TXID2).
DS21664D-page 31
© 2007 Microchip Technology Inc.
## **MCP2502X/5X**
## **REGISTER 5-1: GPDDR - DATA DIRECTION REGISTER**
|**GPDDR - DATA DIRECTION REGISTER **|**GPDDR - DATA DIRECTION REGISTER **|**GPDDR - DATA DIRECTION REGISTER **|**GPDDR - DATA DIRECTION REGISTER **|**GPDDR - DATA DIRECTION REGISTER **|**GPDDR - DATA DIRECTION REGISTER **|**GPDDR - DATA DIRECTION REGISTER **|**GPDDR - DATA DIRECTION REGISTER **|
|---|---|---|---|---|---|---|---|
|U-0<br>R/W-1<br>R/W-1<br>R/W-1<br>R/W-1<br>R/W-1<br>R/W-1<br>R/W-1||||||||
|—|DDR6|DDR5|DDR4|DDR3|DDR2|DDR1|DDR0|
|bit 7<br>bit 0||||||||
bit 7 **Unimplemented:** Read as ‘0’
bit 6-0 **DDR6:DDR0** : Data Direction Register* bits
- 1 = corresponding GPIO pin is configured as an input
- 0 = corresponding GPIO pin is configured as an output
- must bet set if corresponding analog channel is enabled (see ADCON1)
**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
## **REGISTER 5-2: GPLAT - GPIO OUTPUT REGISTER**
|U-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|U-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|U-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|U-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|U-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|U-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|U-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|U-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|
|---|---|---|---|---|---|---|---|
|—|GP6|GP5|GP4|GP3|GP2|GP1|GP0|
|bit 7<br>bit 0||||||||
bit 7 **Unimplemented:** Read as ' 0 ’ bit 6-0 **GP6:GP0** : GPIO Bits
- 1 = corresponding GPIO pin output latch is a ‘ 1 ’
- ’
- 0 = corresponding GPIO pin output latch is a ‘ 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
## **REGISTER 5-3: IOINTEN REGISTER**
|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|
|---|---|---|---|---|---|---|---|
|GP7TXC|GP6TXC|GP5TXC|GP4TXC|GP3TXC|GP2TXC|GP1TXC|GP0TXC|
|bit 7<br>bit 0||||||||
bit 7-0 **GP7TXC:GP0TXC** : Transmit-on-change Enable bits
- 1 = Enable Transmit-On-Change/Compare For Corresponding GPIO/AN Channel
- 0 = Disable Transmit-On-Change/Compare For Corresponding GPIO/AN Channel
## **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
DS21664D-page 32
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **REGISTER 5-4: IOINTPO REGISTER**
|**IOINTPO REGISTER **|**IOINTPO REGISTER **|**IOINTPO REGISTER **|**IOINTPO REGISTER **|**IOINTPO REGISTER **|**IOINTPO REGISTER **|**IOINTPO REGISTER **|**IOINTPO REGISTER **|
|---|---|---|---|---|---|---|---|
|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0||||||||
|GP7POL|GP6POL|GP5POL|GP4POL|GP3POL|GP2POL|GP1POL|GP0POL|
|bit 7<br>bit 0||||||||
bit 7-0 **GP7POL:GP0POL** : Transmit-on-change Polarity bits
- 1 = Digital Inputs: Low-to-High Transition On Corresponding GPIO Input Pin Generates a transmit message Analog Inputs: A/D result above compare value generates a transmit message
- 0 = Digital Inputs: High-to-Low Transition On Corresponding GPIO Input Generates transmit message
Analog Inputs: A/D result below compare value generates a transmit message
**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
## **REGISTER 5-5:**
## **IOINTFL REGISTER**
|**IOINTFL REGISTER **|**IOINTFL REGISTER **|**IOINTFL REGISTER **|**IOINTFL REGISTER **|**IOINTFL REGISTER **|**IOINTFL REGISTER **|**IOINTFL REGISTER **|**IOINTFL REGISTER **|
|---|---|---|---|---|---|---|---|
|R-0<br>R-0<br>R-0<br>R-0<br>R-0<br>R-0<br>R-0<br>R-0||||||||
|GP7TXF|GP6TXF|GP5TXF|GP4TXF|GP3TXF|GP2TXF|GP1TXF|GP0TXF|
|bit 7<br>bit 0||||||||
bit 7-0 **GP7TXF:GP0TXF** : Transmit-on-change Polarity bits
- 1 = Digital Inputs: A valid edge has occurred on the digital input Analog Inputs: A/D result does exceed the compare threshold
- 0 = Digital Inputs: A valid edge has not occurred on the digital input Analog Inputs: A/D result does not exceed the compare threshold
**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
DS21664D-page 33
© 2007 Microchip Technology Inc.
## **MCP2502X/5X**
## **REGISTER 5-6:**
**OPTREG1 REGISTER** R/W-1 R/W-1 R/W-1 R/W-1 U-0 R/W-0 R/W-0 R/W-0 GPPU CLKEN CLKPS1 CLKPS0 — CMREQ AQT1 AQT0 bit 7 bit 0 bit 7 **GPPU:** Weak pull-up enabled 1 = Weak pull-ups disabled 0 = Weak pull-ups enabled (GP7:GP0) bit 6 **CLKEN:** 1 = Clock Out Function disabled 0 = Clock Out Function enabled bit 5-4 **CLKPS1:CLKPS0:** CLKOUT Prescaler bits 00 = FOSC/1 01 = FOSC/2 10 = FOSC/4 11 = FOSC/8 bit 3 **Reserved** : bit 2 **CMREQ** : Requests mode of operation (allows mode changes via the CAN bus) 1 = Requests Listen-only mode 0 = Requests Normal mode * * CMREQ must be cleared as default to avoid device entering Listen-only mode on first “Input” message. bit 1-0 **AQT1:AQT0** : Analog Acquisition Time bits 00 = 64TOSC 01 = 2 • (64TOSC) 10 = 4 • (64TOSC) 11 = 8 • (64TOSC) (e.g., AQT1:AQT0 => 00 => 2.56 µs for a 25 MHz FOSC)
## **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
DS21664D-page 34
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **REGISTER 5-7: OPTREG2 REGISTER**
|bit 7<br>bit 6<br>bit 5<br>bit 4<br>bit 3<br>bit 2<br>bit 1<br>bit 0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0|
|---|---|---|---|---|---|---|---|---|
||CAEN|ERREN|TXONEN|SLPEN|MTYPE|PDEFEN|PUSLP|PUNRM|
||bit 7<br>bit 0<br>**CAEN**: Command Acknowledge Enable bit<br>1= Enables the command acknowledge message (TXID1)<br>0= Enables the receive overflow message (TXID1)<br>**ERREN**: Error Recovery Enable bit<br>1= MCP2502X/5X will recover into Listen-only mode from bus off<br>0= MCP2502X/5X will recover into Normal mode from bus-off<br>**TXONEN:**Transmit on Error Condition bit(REC or TEC)<br>1= Enable, will send message if error counter(s) go high enough<br>0= Disable, will NOT send message regardless of error counter values<br>**SLPEN:**Low power SLEEP mode enable/disable<br>1= Device will enter Sleep if bus is idle for at least 1408 bit times<br>0= SLEEP mode is disabled<br>**MTYPE**: Determines if information request messages use RTR or not<br>1= RTR is NOT used for IRM (Data Frame)<br>0= RTR is used for IRM (Remote Frame)<br>**PDEFEN**: Enables PWM outputs to return to POR default values when CAN bus communication<br>is lost<br>1= Enables PWM output default values<br>0= Disables PWM output default values<br>**PUSLP**: Allows device to enter SLEEP while in Listen-only mode during power-up sequence<br>1= Enables SLEEP when in Listen-only mode during power-up sequence<br>0= Disables SLEEP when in Listen-only mode during power-up sequence<br>**PUNRM**: Enters Normal mode after completing self-configuration during power-up sequence<br>1= Enters “Normal” mode after completing self-configuration during power-up sequence<br>0= Enables “Listen-only” mode after completing self-configuration during power-up sequence<br>and waits for an error-free message before switching to Normal mode||||||||
## **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
## **TABLE 5-2: SUMMARY OF REGISTERS ASSOCIATED WITH GPIO MODULE**
|**Addr**|**Name**|**bit7**|**bit6**|**bit5**|**bit4**|**bit3**|**bit2**|**bit1**|**bit0**|**Value on**<br>**POR**|**Value on **<br>**RST**|
|---|---|---|---|---|---|---|---|---|---|---|---|
|**Bank 0**||||||||||||
|34h|GPDDR|—|DDR6|DDR5|DDR4|DDR3|DDR2|DDR1|DDR0|-111 1111|-111 1111|
|00h|IOINTEN|GP7TXC|GP6TXC|GP5TXC|GP4TXC|GP3TXC|GP2TXC|GP1TXC|GP0TXC|0000 0000|0000 0000|
|01h|IOINTPO|GP7POL|GP6POL|GP5POL|GP4POL|GP3POL|GP2POL|GP1POL|GP0POL|0000 0000|0000 0000|
|04h|OPTREG1|GPPU|CLKEN|CLKPS1|CLKPS0|—|CMREQ|AQT1|AQT0|0000 ----|0000 ----|
**Legend:** x = unknown, U = unchanged, - = unimplemented read as ‘0’. Shaded cells are not used by module.
DS21664D-page 35
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **NOTES:**
DS21664D-page 36
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **6.0 PWM MODULE**
## **6.1 Description**
There are two Pulse Width Modulation (PWM) modules (PWM1 and PWM2) that generate up to a 10-bit resolution output signal on GP2 and GP3, respectively. Each of these outputs can be separately enabled, with each having its own associated timer, duty cycle and period registers for controlling the PWM output shape.
Each PWM module contains a set of master/slave duty cycle registers, providing up to a 10-bit resolution PWM output. Figure 6-1 shows a simplified block diagram of the PWM module. A PWM output has a time base (period) and a time that the output stays high (duty cycle), as shown in Figure 6-2. The frequency of the PWM is the inverse of the period (1/period).
At power-on, the PWM outputs are not enabled until after the self-configuration sequence has been completed (i.e., all SRAM registers have been loaded with their default values) to prevent invalid signals from occurring on the PWM outputs.
**FIGURE 6-1: SIMPLIFIED BLOCK DIAGRAM**
**==> picture [208 x 253] intentionally omitted <==**
**----- Start of picture text -----**<br>
Duty cycle TnCON<br>registers (2 LSB)<br>PWMnDCH<br>PWMnDBH<br>Comparator R Q<br>GP<Y><br>S (PWMn)<br>Note DDR<Y><br>TMRn<br>1<br>Comparator<br>Prn<br>Note 1: 8-bit timer is concatenated with 2-bit internal<br>Q clock or 2 bits of the prescaler to create<br>10-bit time base<br>**----- End of picture text -----**<br>
The PWM outputs can be forced to their default POR conditions if CAN bus communication is lost and is enabled via OPTREG2.PDEFEN. The system designer must implement a hand-shaking protocol, such that the MCP2505X will receive a valid message into one of the receive buffers before four successive scheduled transmissions occur. If a valid message is not received, the PWM outputs GP2 and GP3 will automatically
reconfigure to their default conditions. This includes the PWM module itself being disabled and the GPIO being forced low, high or tri-state.
**FIGURE 6-2:**
**PWM OUTPUT**
**==> picture [202 x 76] intentionally omitted <==**
**----- Start of picture text -----**<br>
Period<br>Duty Cycle TMRn = PRn<br>TMRn=Duty Cycle<br>TMRn = PRn<br>**----- End of picture text -----**<br>
## **6.2 PWM Timer Modules**
There are two 8-bit timers supporting the two PWM outputs. Both timers have a prescaler only. The timers are readable and writable and are cleared on any device reset or when the timer is turned off.
The input clock (FOSC/4) has a prescale option of 1:1, 1:4 or 1:16, selected by control bits TnCKPS[1:0] in register TnCON<5:4> (where n corresponds to the appropriate timer).
Each timer module has an 8-bit period register, PRn. PRn is a readable and writable register. The timer module increments from 00h until it matches PRn and then resets to 00h on the next increment cycle. The PRn register is set when the device is reset.
Each timer can be shut off by clearing control bit TMRnON (TnCON<7>).
## 6.2.1 TIMER MODULE PRESCALER
The prescaler counters are cleared when a write to the TnCON or TMRn register or any device reset (RST reset or Power-on reset) occurs.
## **6.3 PWM Modules**
Each PWM module contains a set of master/slave duty cycle registers, providing up to a 10-bit resolution PWM output. Figure 6-2 shows a simplified block diagram of the PWM module.
## 6.3.1 PWM PERIOD
The PWM period is specified by writing to the PRn register. The PWM period can be calculated using the following formula:
PWM period = [( _PRn_ ) + 1]*4 _TOSC_ *(TMRn prescale value)
PWM frequency = 1 ⁄ (PWM period)
When TMRn is equal to PRn, the following two events occur on the next cycle:
- TMRn is cleared
- The PWM duty cycle is latched from PWMnDCH into PWMnDBH
DS21664D-page 37
© 2007 Microchip Technology Inc.
## **MCP2502X/5X**
## 6.3.2 PWM DUTY CYCLE
The PWM duty cycle is specified by writing to the PWMnDCH and TnCON registers. Up to 10-bit resolution is available. The PWMnDCH contains the eight MSb’s, while the TnCON register contains the two LSb’s. This 10-bit value is represented by PWM1DCH:T1CON<1:0> for PWM Module 1 and PWM2DCH:T2CON<1:0> for PWM Module 2.
The following equation is used to calculate the PMW duty cycle:
_PWMDC =_ ( _PWMnDC_ ) _*TOSC*TMRn (prescale)_
PWMnDCH can be written to at any time, but the duty cycle value is not latched into PWMnDBH until after a match between PRn and TMRn occurs (i.e., the period is complete).
The PWMnDBH register and 2-bit internal latch are used to double-buffer the PWM duty cycle. This double-buffering is essential for glitchless PWM operation.
When the PWMnDBH and 2-bit latch match TMRn concatenated with an internal 2-bit Q clock or 2 bits of the TMRn prescaler, the PWM output pin is cleared.
Maximum PWM resolution (bits) for a given PWM frequency is equal to:
log(( _FOSC_ ) ⁄ ( _Fpwm_ )) ⁄ (log(2) _bits_ )
**Note:** If the PWM duty cycle value is longer than the PWM period (PWM duty cycle = 100%), the PWM output pin will not be cleared.
In order to achieve higher resolution, the PWM frequency must be decreased. In order to achieve higher PWM frequency, the resolution must be decreased. Table 6-1 lists example PWM frequencies and resolutions for FOSC = 20 MHz. TMRn prescaler and PRn values are also shown.
## **TABLE 6-1: PWM FREQUENCIES AND RESOLUTIONS AT 20 MHZ**
|**PWM Frequency**|**1.22 kHz**|**4.88 kHz**|**19.53 kHz**|**78.12 kHz**|**156.30 kHz **|**208.30 kHz**|
|---|---|---|---|---|---|---|
|Timer Prescaler(1, 4, 16)|16|4|1|1|1|1|
|PRn Value|0xFF|0xFF|0xFF|0x3F|0x1F|0x17|
|Maximum Resolution(bits)|10|10|10|8|7|5.5|
## **REGISTER 6-1: PWM1 DUTY CYCLE REGISTER MSB (PWM1DCH)**
|**PWM1 DUTY CYCLE REGISTER MSB (PWM1DCH) **|**PWM1 DUTY CYCLE REGISTER MSB (PWM1DCH) **|**PWM1 DUTY CYCLE REGISTER MSB (PWM1DCH) **|**PWM1 DUTY CYCLE REGISTER MSB (PWM1DCH) **|**PWM1 DUTY CYCLE REGISTER MSB (PWM1DCH) **|**PWM1 DUTY CYCLE REGISTER MSB (PWM1DCH) **|**PWM1 DUTY CYCLE REGISTER MSB (PWM1DCH) **|**PWM1 DUTY CYCLE REGISTER MSB (PWM1DCH) **|
|---|---|---|---|---|---|---|---|
|R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x||||||||
|DC1B9|DC1B8|DC1B7|DC1B6|DC1B5|DC1B4|DC1B3|DC1B2|
|bit 7<br>bit 0||||||||
bit 7-0 **DC1B9:DC1B2** : Most Significant PWM0 Duty Cycle bits
**Legend:**
|**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|
## **REGISTER 6-2: PWM2 DUTY CYCLE REGISTER MSB (PWM2DCH)**
|**PWM2 DUTY CYCLE REGISTER MSB (PWM2DCH) **|**PWM2 DUTY CYCLE REGISTER MSB (PWM2DCH) **|**PWM2 DUTY CYCLE REGISTER MSB (PWM2DCH) **|**PWM2 DUTY CYCLE REGISTER MSB (PWM2DCH) **|**PWM2 DUTY CYCLE REGISTER MSB (PWM2DCH) **|**PWM2 DUTY CYCLE REGISTER MSB (PWM2DCH) **|**PWM2 DUTY CYCLE REGISTER MSB (PWM2DCH) **|**PWM2 DUTY CYCLE REGISTER MSB (PWM2DCH) **|
|---|---|---|---|---|---|---|---|
|R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x||||||||
|DC2B9|DC2B8|DC2B7|DC2B6|DC2B5|DC2B4|DC2B3|DC2B2|
|bit 7<br>bit 0||||||||
bit 7-0 **DC2B9:DC2B2** : Most Significant PWM2 Duty Cycle bits
**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
DS21664D-page 38
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
|**REGISTER 6-3:**<br>**REGISTER 6-4:**<br>bit 7<br>bit 6<br>bit 5-4<br>bit 3-2<br>bit 1-0<br>bit 7<br>bit 6<br>bit 5-4<br>bit 3-2<br>bit 1-0|**T1CON: TIMER1 CONTROL REGISTER **<br>R/W-0<br>U-0<br>R/W-0<br>R/W-0<br>U-0<br>U-0<br>R/W-x<br>R/W-x|**T1CON: TIMER1 CONTROL REGISTER **<br>R/W-0<br>U-0<br>R/W-0<br>R/W-0<br>U-0<br>U-0<br>R/W-x<br>R/W-x|**T1CON: TIMER1 CONTROL REGISTER **<br>R/W-0<br>U-0<br>R/W-0<br>R/W-0<br>U-0<br>U-0<br>R/W-x<br>R/W-x|**T1CON: TIMER1 CONTROL REGISTER **<br>R/W-0<br>U-0<br>R/W-0<br>R/W-0<br>U-0<br>U-0<br>R/W-x<br>R/W-x|**T1CON: TIMER1 CONTROL REGISTER **<br>R/W-0<br>U-0<br>R/W-0<br>R/W-0<br>U-0<br>U-0<br>R/W-x<br>R/W-x|**T1CON: TIMER1 CONTROL REGISTER **<br>R/W-0<br>U-0<br>R/W-0<br>R/W-0<br>U-0<br>U-0<br>R/W-x<br>R/W-x|**T1CON: TIMER1 CONTROL REGISTER **<br>R/W-0<br>U-0<br>R/W-0<br>R/W-0<br>U-0<br>U-0<br>R/W-x<br>R/W-x|**T1CON: TIMER1 CONTROL REGISTER **<br>R/W-0<br>U-0<br>R/W-0<br>R/W-0<br>U-0<br>U-0<br>R/W-x<br>R/W-x|
|---|---|---|---|---|---|---|---|---|
||TMR1ON|—|T1CKPS1|T1CKPS0|—|—|DC1B1|DC1B0|
||bit 7<br>bit 0<br>**TMR1ON**: Timer1 On bit<br>1= Enables Timer1<br>0= Disables Timer1<br>**Unimplemented**: Read as '0'<br>**T1CKPS1:T1CKPS0**: Timer1 Clock Prescale Select bits<br>00= Prescaler is 1<br>01= Prescaler is 4<br>1x= Prescaler is 16<br>**Unimplemented**: Read as '0'<br>**DC1B1:DC1B0**: Least Significant PWM1 Duty Cycle bits||||||||
||**Legend:**<br>R = Readable bit<br>W = Writable bit<br>U = Unimplemented bit, read as ‘0’<br>- n = Value at POR<br>‘1’ = Bit is set<br>‘0’ = Bit is cleared<br>x = Bit is unknown||||||||
||**T2CON: TIMER2 CONTROL REGISTER **<br>R/W-0<br>U-0<br>R/W-0<br>R/W-0<br>U-0<br>U-0<br>R/W-x<br>R/W-x||||||||
||TMR2ON|—|T2CKPS1|T2CKPS0|—|—|DC2B1|DC2B0|
||bit 7<br>bit 0<br>**TMR2ON**: Timer2 On bit<br>1= Enables Timer2<br>0= Disables Timer2<br>**Unimplemented**: Read as '0'<br>**T2CKPS1:T2CKPS0**: Timer2 Clock Prescale Select bits<br>00= Prescaler is 1<br>01= Prescaler is 4<br>1x= Prescaler is 16<br>**Unimplemented**: Read as '0'<br>**DC2B1:DC2B0**: Least Significant PWM2 Duty Cycle bits||||||||
**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
DS21664D-page 39
© 2007 Microchip Technology Inc.
## **MCP2502X/5X**
|**REGISTER 6-5:**<br>|**PR1: PERIOD REGISTER **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**PR1: PERIOD REGISTER **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**PR1: PERIOD REGISTER **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**PR1: PERIOD REGISTER **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**PR1: PERIOD REGISTER **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**PR1: PERIOD REGISTER **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**PR1: PERIOD REGISTER **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|**PR1: PERIOD REGISTER **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x|
|---|---|---|---|---|---|---|---|---|
||PR1B7|PR1B6|PR1B5|PR1B4|PR1B3|PR1B2|PR1B1|PR1B0|
||bit 7<br>bit 0||||||||
bit 7-0 **PR1B7:PR1B0** : PWM1 Period Register bits
|**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|
## **REGISTER 6-6: PR2: PERIOD REGISTER**
|**PR2: PERIOD REGISTER **|**PR2: PERIOD REGISTER **|**PR2: PERIOD REGISTER **|**PR2: PERIOD REGISTER **|**PR2: PERIOD REGISTER **|**PR2: PERIOD REGISTER **|**PR2: PERIOD REGISTER **|**PR2: PERIOD REGISTER **|
|---|---|---|---|---|---|---|---|
|R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x||||||||
|PR2B7|PR2B6|PR2B5|PR2B4|PR2B3|PR2B2|PR2B1|PR2B0|
|bit 7<br>bit 0||||||||
bit 7-0 **PR2B7:PR2B0** : PWM2 Period Register bits
**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
## **TABLE 6-2: REGISTERS ASSOCIATED WITH THE PWM MODULE**
|**Addr**|**Name**|**bit7**|**bit6**|**bit5**|**bit4**|**bit3**|**bit2**|**bit1**|**bit0**|**Value on**<br>**POR**|**Value on **<br>**RST**|
|---|---|---|---|---|---|---|---|---|---|---|---|
|34h|GPDDR|—|DDR6|DDR5|DDR4|DDR3|DDR2|DDR1|DDR0|-111 1111|-111 1111|
|05h|T1CON|TMR1ON|—|T1CKPS1|T1CKPS0|—|—|DC1B1|DC1B0|0-00 --xx|0-00 --uu|
|06h|T2CON|TMR2ON|—|T2CKPS1|T2CKPS0|—|—|DC2B1|DC2B0|0-00 --xx|0-00 --uu|
|07h|PR1|Timer 1 Module’s Period Register||||||||1111 1111|1111 1111|
|08h|PR2|Timer 2 Module’s Period Register||||||||1111 1111|1111 1111|
|09h|PWM1DCH|DC1B9|DC1B8|DC1B7|DC1B6|DC1B5|DC1B4|DC1B3|DC1B2|xxxx xxxx|uuuu uuuu|
|0Ah|PWM2DCH|DC2B9|DC2B8|DC2B7|DC2B6|DC2B5|DC2B4|DC2B3|DC2B2|xxxx xxxx|uuuu uuuu|
**Legend:** x = unknown, U = unchanged, - = unimplemented read as ‘0’. Shaded cells are not used by module.
DS21664D-page 40
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **7.0 ANALOG-TO-DIGITAL CONVERTER (A/D) MODULE**
## **7.1 Description**
The Analog-to-Digital (A/D) module is a four-channel, 10-bit successive approximation type of A/D. The A/D allows conversion of an analog input signal to a corresponding 10-bit number. The four channels are multiplexed on the GP[3:0] pins. The converter is turned off/on via the ADCON0 register and each channel is individually enabled via the ADCON1 control register. The VREF+ and VREF- sources are userselectable as internal or external. Each channel can be set to one of two conversion modes:
1. Auto-conversion
2. Convert-on-request.
## **7.2 A/D Module Registers**
The A/D module itself has several registers. The registers are:
- A/D Control Register 0 (ADCON0)
- A/D Control Register 1 (ADCON1)
- Transmit-on-Change Register (IOINTEN)
- Compare and Polarity Register (ADCMPnL)
- A/D Result Registers (ADRESnL, ADRESnH)
The ADCON0 register controls the operation of the A/D module, including auto-conversion rate and enable bit. The ADCON1 register enables the A/D function on port pins GP3:GP0, A/D conversion rate and selects the voltage reference source. The IOINTEN register’s four least significant bits enable/disable the transmiton-change function. The ADCMPnL.ADPOL bit sets the polarity (above or below threshold) for the transmiton-change function.
The result of an A/D conversion is made available to the user within the data field of the Read A/D Registers output message via the CAN bus. This message can be directly requested by another CAN node or be automatically transmitted (TXIDO), as has been described previously.
Additionally, the individual channel results may be read using the “Read Register” command as described in **Section 4.3.1 “Information Request Messages”** and as shown in Table 3-2 by addressing the appropriate A/D result register (ADRESnL and ADRESnH).
## **7.3 A/D Conversion Modes**
There are two modes of conversion that can be individually selected for each analog channel that has been enabled. These are auto-conversion and conversion-on-request.
## 7.3.1 AUTO-CONVERSION MODE
If the Auto-conversion mode is selected (STCON), an A/D conversion is performed sequentially for each channel that has been set to Analog Input mode and has been configured for Auto-conversion mode. Conversion starts with AN0 and is immediately followed by AN1, etc. Once the conversion has completed, the value is stored in the analog channel registers for the respective channel.
The rate of the auto-conversion is determined by a timer and prescaler. The formula for determining conversion rates is:
( _TOSC_ )(1024)(Prescaler rate)
Typical conversion rates with a 20 MHz oscillator input are shown in Table 7-1.
## **TABLE 7-1: AUTO-CONVERSION RATES FOR GIVEN PRESCALE RATES AT 20 MHZ**
|**TOPS[2:0]**|**Prescale**<br>**Rate**|**Auto-Conversion**<br>**Rate**|
|---|---|---|
|000|1:1|51µs|
|001|1:8|410µs|
|010|1:32|2 ms|
|011|1:128|7 ms|
|100|1:512|26 ms|
|101|1:1024|52 ms|
|110|1:2048|105 ms|
|111|1:4096|210 ms|
The timer is turned on if one of the GPnTXC bits are set in the IOINTEN register and configured as analog input.
The prescaler counter is cleared when the device is reset (RST reset or Power-on reset).
**Note:** The GPDDR register controls the direction of the GPIO pins, even when they are being used as analog inputs. The user must ensure that the bits in the GPDDR register are maintained set (input) when using them as analog inputs.
DS21664D-page 41
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## 7.3.2 CONVERSION-ON-REQUEST MODE
If the Conversion-on-request mode is selected, the device performs an A/D conversion only after receiving a Read A/D Registers or Read Register Receive message (IRM). In the case of the Read A/D Registers command, all of the GPIO pins that have been configured as analog input channels will have an A/D conversion done before the data frame is sent. When a Read Register Receive message is initiated (extended message format only), the A/D conversion is performed when the MSB of the analog channel is requested, with the MSB result being transferred. A subsequent read of the LSB will transmit the value latched when the MSB was requested (it is recommended that the Read A/D Registers receive message is used to obtain complete analog channel values in one message).
## **7.4 A/D Threshold Detection**
Once an A/D auto-conversion has been completed, the A/D channel result(s) can be compared to a value stored in the associated A/D channel comparator registers.
If the value in the analog channel result registers (i.e., AN0L and AN10H registers for analog channel 0) is lower or higher than the value in the A/D comparator registers (as specified by a corresponding polarity bit), a transmit-on-change message will be sent (TXID2). The threshold-detection function for all analog channels is bit-selectable.
If the A/D channel has been configured for transmit-onchange mode, the MCP2505 will send a transmit message with the appropriate data. It is possible that more than one A/D channel has a change-of-state condition. This does not pose a problem since all analog channel data is provided in the transmit message.
## **REGISTER 7-1: A/D MODULE RESULT REGISTER MSB (ADRESNH)**
|**A/D MODULE RESULT REGISTER MSB (ADRESNH) **|**A/D MODULE RESULT REGISTER MSB (ADRESNH) **|**A/D MODULE RESULT REGISTER MSB (ADRESNH) **|**A/D MODULE RESULT REGISTER MSB (ADRESNH) **|**A/D MODULE RESULT REGISTER MSB (ADRESNH) **|**A/D MODULE RESULT REGISTER MSB (ADRESNH) **|**A/D MODULE RESULT REGISTER MSB (ADRESNH) **|**A/D MODULE RESULT REGISTER MSB (ADRESNH) **|
|---|---|---|---|---|---|---|---|
|R-x<br>R-x<br>R-x<br>R-x<br>R-x<br>R-x<br>R-x<br>R-x||||||||
|AD9|AD8|AD7|AD6|AD5|AD4|AD3|AD2|
|bit 7<br>bit 0||||||||
bit 7-0 **AD9:AD2** : Most Significant A/D Result bits
|**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|
## **REGISTER 7-2: A/D MODULE RESULT REGISTER LSB (ADRESNL)**
|**A/D MODULE RESULT REGISTER LSB (ADRESNL) **|**A/D MODULE RESULT REGISTER LSB (ADRESNL) **|**A/D MODULE RESULT REGISTER LSB (ADRESNL) **|**A/D MODULE RESULT REGISTER LSB (ADRESNL) **|**A/D MODULE RESULT REGISTER LSB (ADRESNL) **|**A/D MODULE RESULT REGISTER LSB (ADRESNL) **|**A/D MODULE RESULT REGISTER LSB (ADRESNL) **|**A/D MODULE RESULT REGISTER LSB (ADRESNL) **|
|---|---|---|---|---|---|---|---|
|R-x<br>R-x<br>U-0<br>U-0<br>U-0<br>U-0<br>U-0<br>U-0||||||||
|AD1|AD0|—|—|—|—|—|—|
|bit 7<br>bit 0||||||||
bit 7-6 **AD1:AD0** : Least significant A/D Result bits
bit 5-0 **Unimplemented** : Reads as ‘ 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
DS21664D-page 42
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
|**REGISTER 7-3:**<br>**A/D MODULE COMPARE REGISTER MSB (ADCMPNH) **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>ANnCMP9<br>ANnCMP8<br>ANnCMP7 ANnCMP6<br>ANnCMP5<br>ANnCMP4<br>ANnCMP3<br>ANnCMP2<br>bit 7<br>bit 0|**REGISTER 7-3:**<br>**A/D MODULE COMPARE REGISTER MSB (ADCMPNH) **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>ANnCMP9<br>ANnCMP8<br>ANnCMP7 ANnCMP6<br>ANnCMP5<br>ANnCMP4<br>ANnCMP3<br>ANnCMP2<br>bit 7<br>bit 0|**REGISTER 7-3:**<br>**A/D MODULE COMPARE REGISTER MSB (ADCMPNH) **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>ANnCMP9<br>ANnCMP8<br>ANnCMP7 ANnCMP6<br>ANnCMP5<br>ANnCMP4<br>ANnCMP3<br>ANnCMP2<br>bit 7<br>bit 0|**REGISTER 7-3:**<br>**A/D MODULE COMPARE REGISTER MSB (ADCMPNH) **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>ANnCMP9<br>ANnCMP8<br>ANnCMP7 ANnCMP6<br>ANnCMP5<br>ANnCMP4<br>ANnCMP3<br>ANnCMP2<br>bit 7<br>bit 0|**REGISTER 7-3:**<br>**A/D MODULE COMPARE REGISTER MSB (ADCMPNH) **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>ANnCMP9<br>ANnCMP8<br>ANnCMP7 ANnCMP6<br>ANnCMP5<br>ANnCMP4<br>ANnCMP3<br>ANnCMP2<br>bit 7<br>bit 0|**REGISTER 7-3:**<br>**A/D MODULE COMPARE REGISTER MSB (ADCMPNH) **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>ANnCMP9<br>ANnCMP8<br>ANnCMP7 ANnCMP6<br>ANnCMP5<br>ANnCMP4<br>ANnCMP3<br>ANnCMP2<br>bit 7<br>bit 0|**REGISTER 7-3:**<br>**A/D MODULE COMPARE REGISTER MSB (ADCMPNH) **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>ANnCMP9<br>ANnCMP8<br>ANnCMP7 ANnCMP6<br>ANnCMP5<br>ANnCMP4<br>ANnCMP3<br>ANnCMP2<br>bit 7<br>bit 0|**REGISTER 7-3:**<br>**A/D MODULE COMPARE REGISTER MSB (ADCMPNH) **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>ANnCMP9<br>ANnCMP8<br>ANnCMP7 ANnCMP6<br>ANnCMP5<br>ANnCMP4<br>ANnCMP3<br>ANnCMP2<br>bit 7<br>bit 0|**REGISTER 7-3:**<br>**A/D MODULE COMPARE REGISTER MSB (ADCMPNH) **<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>ANnCMP9<br>ANnCMP8<br>ANnCMP7 ANnCMP6<br>ANnCMP5<br>ANnCMP4<br>ANnCMP3<br>ANnCMP2<br>bit 7<br>bit 0|
|---|---|---|---|---|---|---|---|---|
||ANnCMP9|ANnCMP8|ANnCMP7|ANnCMP6|ANnCMP5|ANnCMP4|ANnCMP3|ANnCMP2|
||bit 7<br>bit 0||||||||
bit 7-0 **ANnCMP9:ANnCMP2** : Most Significant A/D Compare bits
|**Legend:**<br>R = Readable bit<br>W = Writable bit<br>U = Unimplemented bit, read as ‘0’<br>- n = Value at POR<br>‘1’ = Bit is set<br>‘0’ = Bit is cleared<br>x = Bit is unknown|**Legend:**<br>R = Readable bit<br>W = Writable bit<br>U = Unimplemented bit, read as ‘0’<br>- n = Value at POR<br>‘1’ = Bit is set<br>‘0’ = Bit is cleared<br>x = Bit is unknown|**Legend:**<br>R = Readable bit<br>W = Writable bit<br>U = Unimplemented bit, read as ‘0’<br>- n = Value at POR<br>‘1’ = Bit is set<br>‘0’ = Bit is cleared<br>x = Bit is unknown|**Legend:**<br>R = Readable bit<br>W = Writable bit<br>U = Unimplemented bit, read as ‘0’<br>- n = Value at POR<br>‘1’ = Bit is set<br>‘0’ = Bit is cleared<br>x = Bit is unknown|**Legend:**<br>R = Readable bit<br>W = Writable bit<br>U = Unimplemented bit, read as ‘0’<br>- n = Value at POR<br>‘1’ = Bit is set<br>‘0’ = Bit is cleared<br>x = Bit is unknown|**Legend:**<br>R = Readable bit<br>W = Writable bit<br>U = Unimplemented bit, read as ‘0’<br>- n = Value at POR<br>‘1’ = Bit is set<br>‘0’ = Bit is cleared<br>x = Bit is unknown|**Legend:**<br>R = Readable bit<br>W = Writable bit<br>U = Unimplemented bit, read as ‘0’<br>- n = Value at POR<br>‘1’ = Bit is set<br>‘0’ = Bit is cleared<br>x = Bit is unknown|**Legend:**<br>R = Readable bit<br>W = Writable bit<br>U = Unimplemented bit, read as ‘0’<br>- n = Value at POR<br>‘1’ = Bit is set<br>‘0’ = Bit is cleared<br>x = Bit is unknown|
|---|---|---|---|---|---|---|---|
|**-4:**<br>**A/D MODULE COMPARE REGISTER LSB (ADCMPNL) **<br>R/W-x<br>R/W-x<br>U-0<br>U-0<br>U-0<br>U-0<br>U-0<br>U-0||||||||
|ANnCMP1|ANnCMP0|—|—|—|—|—|—|
|bit 7<br>bit 0||||||||
## **REGISTER 7-4: A/D MODULE COMPARE REGISTER LSB (ADCMPNL)**
bit 7-6 **ANnCMP1:ANnCMP0** : Least Significant A/D Compare bits
bit 5-0 **Unimplemented** : Reads as ‘0’
|**Legend:**<br>R = Readable bit<br>W = Writable bit<br>U = Unimplemented bit, read as ‘0’<br>- n = Value at POR<br>‘1’ = Bit is set<br>‘0’ = Bit is cleared<br>x = Bit is unknown||
|---|---|
## **REGISTER 7-5: ADCON0 REGISTER**
|**ADCON0 REGISTER **|**ADCON0 REGISTER **|**ADCON0 REGISTER **|**ADCON0 REGISTER **|**ADCON0 REGISTER **|**ADCON0 REGISTER **|**ADCON0 REGISTER **|**ADCON0 REGISTER **|
|---|---|---|---|---|---|---|---|
|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>U-x<br>U-0<br>U-x<br>U-x||||||||
|ADON|T0PS2|T0PS1|T0PS0|—|—|—|—|
|bit 7<br>bit 0||||||||
bit 7 **ADON** : A/D On Bit 1 = A/D converter module is operating 0 = A/D converter module is shut off and consumes no operating current bit 6-4 **T0PS2:T0PS0** : Timer0 Prescaler Rate Select bits (used for auto-conversions) 000 = 1:1 Prescaller Rate 001 = 1:8 Prescaller Rate 010 = 1:32 Prescaller Rate 011 = 1:128 Prescaller Rate 100 = 1:512 Prescaller Rate 101 = 1:1024 Prescaller Rate 110 = 1:2048 Prescaller Rate 111 = 1:4096 Prescaller Rate Formula: (TOSC)(1024) (Prescaler Rate)
bit 3 **Reserved** bit 2 **Unimplemented** : Reads as ‘ 0 ’ bit 1-0 **Reserved**
**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
DS21664D-page 43
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **REGISTER 7-6: ADCON1 REGISTER**
|**ADCON1 REGISTER **|**ADCON1 REGISTER **|**ADCON1 REGISTER **|**ADCON1 REGISTER **|**ADCON1 REGISTER **|**ADCON1 REGISTER **|**ADCON1 REGISTER **|**ADCON1 REGISTER **|
|---|---|---|---|---|---|---|---|
|R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0<br>R/W-0||||||||
|ADCS1|ADCS0|VCFG1|VCFG0|PCFG3|PCFG2|PCFG1|PCFG0|
|bit 7<br>bit 0||||||||
bit 7-6 **ADCS1:ADCS0** : A/D Conversion Select bits 00 = FOSC/2
01 = FOSC/8 10 = FOSC/32
11 = Reserved
bit 5-4 **VCFG1:VCFG0** : Voltage Reference Configuration bits
|**VCFG1:VCFG0**|**A/D VREF+**|**A/D VREF-**|
|---|---|---|
|00|VDD|VSS|
|01|External VREF+|VSS|
|10|VDD|External VREF-|
|11|External VREF+|External VREF-|
bit 3-0 **PCFG3:PCFG0** : A/D Port Configuration Control bits*
- 1 = Corresponding GPIO pin configured as Digital I/O
- 0 = Corresponding GPIO pin configured as A/D Input
- corresponding data direction bit (GPDDR register) must be set for each enabled analog channel.
|**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|
DS21664D-page 44
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **7.5 Read A/D Registers Output Message**
When the MCP2502X/5X responds to a Read A/D Regs IRM with an OM, the analog values are contained in Register 7-7, Register 7-8 and Register 7-9.
## **REGISTER 7-7: A/D OM RESULT REGISTER (ANnH)**
|**A/D OM RESULT REGISTER (ANnH) **|**A/D OM RESULT REGISTER (ANnH) **|**A/D OM RESULT REGISTER (ANnH) **|**A/D OM RESULT REGISTER (ANnH) **|**A/D OM RESULT REGISTER (ANnH) **|**A/D OM RESULT REGISTER (ANnH) **|**A/D OM RESULT REGISTER (ANnH) **|**A/D OM RESULT REGISTER (ANnH) **|
|---|---|---|---|---|---|---|---|
|R-x<br>R-x<br>R-x<br>R-x<br>R-x<br>R-x<br>R-x<br>R-x||||||||
|ANnR9|ANnR8|ANnR7|ANnR6|ANnR5|ANnR4|ANnR3|ANnR2|
|bit 7<br>bit 0||||||||
bit 7-0 **ANnR9:ANnR2** : Bits 9-2 of channel ‘n’ results
|**Legend:**<br>R = Readable bit<br>W = Writable bit<br>- n = Value at POR<br>‘1’ = Bit is set|**Legend:**<br>R = Readable bit<br>W = Writable bit<br>- n = Value at POR<br>‘1’ = Bit is set|**Legend:**<br>R = Readable bit<br>W = Writable bit<br>- n = Value at POR<br>‘1’ = Bit is set|**Legend:**<br>R = Readable bit<br>W = Writable bit<br>- n = Value at POR<br>‘1’ = Bit is set|U = Unimplemented bit, read as ‘0’<br>‘0’ = Bit is cleared<br>x = Bit is unknown|U = Unimplemented bit, read as ‘0’<br>‘0’ = Bit is cleared<br>x = Bit is unknown|U = Unimplemented bit, read as ‘0’<br>‘0’ = Bit is cleared<br>x = Bit is unknown|U = Unimplemented bit, read as ‘0’<br>‘0’ = Bit is cleared<br>x = Bit is unknown|
|---|---|---|---|---|---|---|---|
|**A/D OM RESULT REGISTER (AN32L) **<br>R-x<br>R-x<br>U-x<br>U-x||||R-x<br>R-x||U-x<br>U-x||
|AN3R.1|AN3R.0|—|—|AN2R.1|AN2R.0|—|—|
|bit 7||||||bit 0||
## **REGISTER 7-8: A/D OM RESULT REGISTER (AN32L)**
bit 7-6 **AN3R.1:AN3R.0:** A/D Channel 3, bits 1:0 results
- bit 5-4 **Unimplemented** : Reads as ‘ 0 ’ bit 3-2 **AN2R.1:AN2R.0:** A/D Channel 2, bits 1:0 results
bit 1-0 **Unimplemented** : Reads as ‘ 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|
DS21664D-page 45
© 2007 Microchip Technology Inc.
## **MCP2502X/5X**
## **REGISTER 7-9:**
## **A/D OM RESULT REGISTER (AN10L)**
|R-x<br>R-x|R-x<br>R-x|U-x<br>U-x|U-x<br>U-x|R-x<br>R-x|R-x<br>R-x|U-x<br>U-x|U-x<br>U-x|
|---|---|---|---|---|---|---|---|
|AN1R.1|AN1R.0|—|—|AN0R.1|AN0R.0|—|—|
|bit 7||||||bit 0||
bit 7-6 **AN1R.1:AN1R.0:** A/D Channel 1, bits 1:0 results bit 5-4 **Unimplemented** : Reads as ‘ 0 ’ bit 3-2 **AN0R.1:AN0R.0:** A/D Channel 0, bits 1:0 results bit 1-0 **Unimplemented** : Reads as ‘ 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
## **TABLE 7-2: REGISTERS ASSOCIATED WITH THE A/D MODULE**
|**Addr**|**Name**|**bit7**|**bit6**|**bit5**|**bit4**|**bit3**|**bit2**|**bit1**|**bit0**|**Value on**<br>**POR**|**Value on **<br>**RST**|
|---|---|---|---|---|---|---|---|---|---|---|---|
|1Eh|GPPIN|GP7|GP6|GP5|GP4|GP3|GP2|GP1|GP0|0000 0000|0000 0000|
|34h|GPDDR *|—|DDR6|DDR5|DDR4|DDR3|DDR2|DDR1|DDR0|-111 1111|-111 1111|
|00h|IOINTEN|GP7TXC|GP6TXC|GP5TXC|GP4TXC|GP3TXC|GP2TXC|GP1TXC|GP0TXC|0000 0000|0000 0000|
|01h|IOINTPO|GP7POL|GP6POL|GP5POL|GP4POL|GP3POL|GP2POL|GP1POL|GP0POL|0000 0000|0000 0000|
|0Eh|ADCON0|ADON|T0PS2|T0PS1|T0PS0|GO/DONE|—|CHS1|CHS0|0000 0-00|0000 0-00|
|0Fh|ADCON1|ADCS1|ADCS0|VCFG1|VCFG0|PCFG3|PCFG2|PCFG1|PCFG0|0000 0000|0000 0000|
|2Ch|ADCMP3|AN3CM|AN3CMP.|AN3CMP.|AN3CMP.|AN3CMP.5|AN3CMP.4|AN3CMP.|AN3CMP2|xxxx xxxx|uuuu uuuu|
|2Dh|ADCMP3|AN3CM|AN3CMP.|—|—|Reserved|||ADPOL|xx-- ----|uu-- ----|
|2Eh|ADCMP2|AN2CM|AN2CMP.|AN2CMP.|AN2CMP.|AN2CMP.5|AN2CMP.4|AN2CMP.|AN2CMP2|xxxx xxxx|uuuu uuuu|
|2Fh|ADCMP2|AN2CM|AN2CMP.|—|—|Reserved|||ADPOL|xx-- ----|uu-- ----|
|30h|ADCMP1|AN1CM|AN1CMP.|AN1CMP.|AN1CMP.|AN1CMP.5|AN1CMP.4|AN1CMP.|AN1CMP2|xxxx xxxx|uuuu uuuu|
|31h|ADCMP1|AN1CM|AN1CMP.|—|—|Reserved|||ADPOL|xx-- ----|uu-- ----|
|32h|ADCMP0|AN0CM|AN0CMP.|AN0CMP.|AN0CMP.|AN0CMP.5|AN0CMP.4|AN0CMP.|AN0CMP2|xxxx xxxx|uuuu uuuu|
|33h|ADCMP0|AN0CM|AN0CMP.|—|—|Reserved|||—|xx-- ----|uu-- ----|
|10h|STCON|STEM|STMS|STBF1|STBF0|STM3|STM2|STM1|STM0|0xxx xxxx|0uuu uuuu|
* The GPDDR register controls the direction of the GPIO pins, even when they are being used as analog inputs. The user must ensure that the bits in the GPDDR register are maintained _**set**_ (input) when using them as analog inputs.
DS21664D-page 46
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **8.0 SPECIAL FEATURES OF THE MCP2502X/5X**
## **8.1 Description**
There are a number of special circuits in the MCP2502X/5X that deal with the needs of real-time applications. These features are intended to maximize system reliability, minimize cost through elimination of external components and provide power-saving operating modes. These are:
## **FIGURE 8-2: EXTERNAL CLOCK INPUT OPERATION**
**==> picture [174 x 70] intentionally omitted <==**
**----- Start of picture text -----**<br>
Clock from<br>OSC 1<br>ext. System<br>MCP2505X<br>Open OSC2<br>**----- End of picture text -----**<br>
- Oscillator selection
- Reset
- Power-on Reset (POR)
- Power-up Timer (PWRT)
- Oscillator Start-up Timer (OST)
- SLEEP
- In-Circuit Serial Programming
Several oscillator options are offered to allow the device to fit the application. XT and HS modes allow the device to support a wide range of crystal frequencies while the LP crystal option saves power.
Two timers are implemented to offer necessary delays on power-up. One is the Oscillator Start-up Timer (OST), intended to keep the device in reset until the crystal oscillator is stable. The other is the Power-up Timer (PWRT), which provides a fixed delay of 72 ms (nominal) on power-up only, designed to keep the part in reset while the power supply stabilizes. With these two timers on-chip, most applications need no external reset circuitry.
SLEEP mode is designed to offer a very low current power-down mode. The user can wake-up from SLEEP through external reset, transmit-on-change or CAN bus activity.
A set of configuration bits are used to select various options.
## **FIGURE 8-1: CRYSTAL/CERAMIC RESONATOR OPERATION**
## **8.2 Configuration Bits**
The configuration bits can be either programmed (read as ‘ 0 ’) or unprogrammed (read as ‘ 1 ’) to select various device configurations. These bits are mapped in program memory location 2007h . The configuration register is actually beyond program memory space and belongs to the special test/configuration memory space ( 2000h-3FFFh ) that can be accessed only during programming.
## **8.3 Oscillator Configurations**
Four different oscillator modes may be selected. The user can program two configuration bits (FOSC1:FOSC0) in the CONFIG register to select one of these modes:
- LP = Low-Power Crystal
- XT = Crystal/Resonator
- HS = High-speed Crystal Resonator
In all modes, a crystal or ceramic resonator is connected to the OSC1/CLKIN and OSC2/CLKOUT pins to establish oscillation (Figure 8-1). The oscillator design requires the use of a parallel-cut crystal. The device can also have an external clock source to drive the OSC1/CLKIN pin (Figure 8-2).
The device will default to HS mode if the CONFIG register is not programmed.
**==> picture [192 x 75] intentionally omitted <==**
**----- Start of picture text -----**<br>
OSC1<br>TO INTERNAL<br>LOGIC<br>C1<br>XTAL RF SLEEP<br>OSC2<br>MCP2505X<br>C2<br>**----- End of picture text -----**<br>
DS21664D-page 47
© 2007 Microchip Technology Inc.
## **MCP2502X/5X**
## **REGISTER 8-1: CONFIGURATION REGISTER**
|**REGISTER 8-1:**|**REGISTER 8-1:**|**CONFIGURATION REGISTER **|**CONFIGURATION REGISTER **|**CONFIGURATION REGISTER **|**CONFIGURATION REGISTER **|**CONFIGURATION REGISTER **|**CONFIGURATION REGISTER **|**CONFIGURATION REGISTER **|**CONFIGURATION REGISTER **|**CONFIGURATION REGISTER **|**CONFIGURATION REGISTER **|**CONFIGURATION REGISTER **|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
|U-0<br>U-0||R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R<br>R<br>R<br>R<br>bit 8|||||||||||
|—|—|R||R||R||R|||||
|bit 13|||||||||||||
|||R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W-x<br>R/W<br>R/W<br>R/W|||||||||||
|||R|R||R||R||R|RSTEN|FOSC1|FOSC0|
|||bit 7<br>bit 0|||||||||||
bit 13-11 **Unimplemented** : Read as ' 0 ' bit 10-3 **Reserved:** do not attempt to modify bit 2 **RSTEN** : Enable RST input on GP7 1 = RST input Enabled 0 = RST input Disabled bit 1-0 **FOSC1:FOSC0** : Oscillator Selection bits 11 = HS oscillator 10 = Reserved for Test (EC oscillator) 01 = XT oscillator 00 = LP oscillator
**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
## **8.4 Reset**
The MCP2502X/5X differentiates between two kinds of reset:
- Power-on Reset (POR)
- External RST reset
Some registers are not affected in any reset condition. Their status is unknown on POR and unchanged in any other reset. Most other registers are reset to a reset state on Power-on Reset (POR), on RST and on RST during SLEEP. They are not affected by a wake-up from SLEEP, which is viewed as the resumption of normal operation. A simplified block diagram of the on-chip reset circuit is shown in Figure 8-3. The MCP2502X/5X has a RST noise filter in the RST reset path. The filter will detect and ignore small pulses.
## 8.4.1 POWER-ON RESET
A Power-on Reset pulse is generated on-chip when VDD rise is detected (in the range of 1.5V to 2.1V). If the RST input on the GP7 pin is selected, the RST pin may be tied through a series resistor to VDD, eliminating the need for external RC components usually required for a Power-on Reset. A maximum rise time for VDD is specified in **Section 9.0 “Electrical Characteristics”** of this document.
When the device starts normal operation (exits the reset condition), device operating parameters (voltage, frequency, temperature, etc.) must be met to ensure proper operation. For additional information, refer to AN607, “Power-up Troubleshooting”, DS00607).
DS21664D-page 48
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **FIGURE 8-3: SIMPLIFIED BLOCK DIAGRAM OF ON-CHIP RESET CIRCUIT**
**==> picture [412 x 173] intentionally omitted <==**
**----- Start of picture text -----**<br>
RST<br>VDD Rise<br>Detect Power-on Reset<br>S<br>VDD<br>OST<br>10-bit Ripple Counter Q Chip Reset<br>OSC1<br>PWRT<br>On-chip<br>RC OSC 10-bit Ripple Counter<br>Enable PWRT<br>Enable OST<br>**----- End of picture text -----**<br>
## 8.4.2 POWER-UP TIMER
The Power-up Timer (PWRT) provides a fixed, 72 ms nominal time-out, on power-up only, from the POR. The Power-up Timer operates on an internal RC oscillator, with the device being kept in reset as long as the PWRT is active. The PWRT's time delay allows VDD to rise to an acceptable level. The power-up time delay will vary from device to device due to VDD, temperature and process variation. For more information, please see **Section 9.2 “DC Characteristics”** .
as a valid message before entering Normal mode. This feature is enabled via the PUSLP bit in the OPTREG2 register.
While in SLEEP, the I/O ports maintain the status they had before the SLEEP instruction was executed (driving high, low or hi-impedance).
The following operations will not function while the device is in SLEEP:
- A/D Module data conversion
- Auto-conversion mode
## **8.5 Oscillator Start-up Timer**
The Oscillator Start-up Timer (OST) provides a 512 oscillator cycle (TOSC) delay after the PWRT delay is complete. This ensures that the crystal oscillator has started and stabilized and must be less than the total time it takes (704 oscillator cycles or 44 TQ) for the minimum standard data frame or remote transmit message to be completed on the CAN bus once a wake-up from SLEEP occurs. The OST time-out is invoked only on Power-on Reset or wake-up from SLEEP.
## **8.6 Power-down Mode (SLEEP)**
Power-down mode (or SLEEP) is enabled via the SLPEN bit in the OPTREG2 register. When enabled, the MCP2502X/5X will enter SLEEP once the CAN bus has been idle for a minimum 1408 bit times while in Normal mode.
- Auto-messaging
- PWM module and outputs
- Clock output
## 8.6.1 WAKE-UP FROM SLEEP
The MCP2502X/5X can wake-up from SLEEP through one of the following events:
- External reset input on RST pin
- Transmit-on-change due to edge detected on GPIO pin
- Activity detected on CAN bus
For the device to wake-up due to a GPIO transmit-onchange, the corresponding interrupt enable bit must be set (enabled). Wake-up occurs regardless of the state of the GIE bit.
If a wake-up from SLEEP is caused by activity on the CAN bus, the message that caused the wake-up will not be received or acknowledged by the MCP2502X/5X.
Additionally, the device may be configured to enter SLEEP while in Listen-only mode immediately after power-up if there is no activity on the CAN bus. Subsequent CAN bus activity will wake the device up from SLEEP and the NEXT message will be confirmed
DS21664D-page 49
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **8.7 In-Circuit Serial Programming**
The MCP2502X/5X can be serially programmed while in the end application circuit. This is simply done with two lines for clock and data, and three other lines for power, ground and the programming voltage. This allows customers to manufacture boards with unprogrammed devices and then program the device just before shipping the product, also allowing the most recent firmware (or a custom firmware) to be programmed.
The device is placed into a program/verify mode by holding the GP4 and GP5 pins low while raising GP7 (VPP) pin from VIL to VIH (see the MCP2502X/5X programming specification, “MCP250XX In-Circuit Serial Programming™ (ICSP)”, DS20072, for more information). GP4 becomes the programming data and GP5 becomes the programming clock. Both GP4 and GP5 are Schmitt Trigger inputs in this mode. The signal definitions are summarized in Table 8-1
## **TABLE 8-1: IN-CIRCUIT SERIAL PROGRAMMING PIN FUNCTIONS**
|**Pin Name**|**Pin**<br>**Number**|**Programming Mode**<br>**Function**|
|---|---|---|
|VSS|7|Ground|
|GP4|5|Data|
|GP5|6|Clock|
|GP7|11|VPP|
|VDD|14|Power|
DS21664D-page 50
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **9.0 ELECTRICAL CHARACTERISTICS**
## **9.1 Absolute Maximum Ratings†**
|Ambient temperature under bias.............................................................................................................-55°C to +125°C|
|---|
|Storage temperature ...............................................................................................................................-65°C to +150°C|
|Voltage on any pin with respect to Vss (except VDDand RST<br>)....................................................... -0.3V to (VDD+ 0.6V)|
|VDD................................................................................................................................................................... 0V to 7.0V|
|Voltage on RST<br>with respect to Vss.................................................................................................................. 0V to 14V|
|Total power dissipation (**Note 1**) ..............................................................................................................................1.0 W|
|Maximum source current out of VSSpin ...............................................................................................................300 mA|
|Maximum sink current into VDDpin.......................................................................................................................250 mA|
|Input clamp current, Iik (Vi < 0 or Vi > VDD) ..........................................................................................................±20 mA|
|Output clamp current, Iok (VO< 0 or VO> VDD)....................................................................................................±20 mA|
|Maximum current sunk by any I/O pin.....................................................................................................................25 mA|
|Maximum current sourced by any input pin ............................................................................................................25 mA|
|Maximum current sunk by GPIO port....................................................................................................................200 mA|
|Maximum current sourced by GPIO port ..............................................................................................................200 mA|
|Soldering temperature of leads (10 seconds) ....................................................................................................... +300°C|
|ESD protection on all pins.................................................................................................................................................. ≥3.5 kV|
**Note 1:** Power dissipation is calculated as follows: Pdis = VDD x {IDD - ∑ IOH} + ∑ {(VDD-VOH) x IOH} + ∑(VOL x IOL)
**† NOTICE:** Stresses above those listed under “Absolute Maximum Ratings” may cause permanent damage to the device. This is a stress rating only and functional operation of the device at those or any other conditions above those indicated in the operation listings of this specification is not implied. Exposure to maximum rating conditions for extended periods may affect device reliability.
**FIGURE 9-1: MCP2505X VOLTAGE-FREQUENCY GRAPH**
**==> picture [333 x 222] intentionally omitted <==**
**----- Start of picture text -----**<br>
6.0V<br>5.5V<br>5.0V<br>4.5V MCP2505X 4.5V<br>4.0V<br>3.5V<br>3.0V<br>2.7V<br>2.0V<br>8 MHz 25 MHz<br>Frequency<br>Voltage<br>**----- End of picture text -----**<br>
Fmax = (9.44 MHz/V) (VDDAPPMIN - 2.7V) + 8 MHz
**Note:** VDDAPPMIN is the minimum voltage of the **MCP2505X** device in the application. Characterized and not 100% tested.
DS21664D-page 51
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **9.2 DC Characteristics**
|**9.2**<br>**DC Characteristics**|**9.2**<br>**DC Characteristics**|**9.2**<br>**DC Characteristics**|||||
|---|---|---|---|---|---|---|
|**DC Characteristics**|||Industrial (I):<br>TAMB= -40°C to +85°C<br>VCC= 2.7V to 5.5V<br>Automotive(E): TAMB= -40°C to +125°C VCC= 4.5V to 5.5V||||
|**Param.**<br>**No.**|**Sym**|**Characteristics**|**Min**|**Max**|**Units**|**Test Conditions**|
||VDD|Supply Voltage|2.7<br>4.5|5.5<br>5.5|V<br>V|XT and LP OSC configuration<br>HS OSC configuration**(Note 2)**|
||SVDD|VDDRise Rate to ensure<br>internal power-on reset signal|0.05|—|V/ms|**(Note 3)**|
||VIH<br>VIH<br>VIL<br>VIL|**High-level input voltage**<br>GPIO pins<br>RXCAN (Schmitt Trigger)<br>OSC1<br>**Low-level input voltage**<br>RXCAN (Schmitt Trigger)<br>GPIO pins<br>OSC1|2<br>.7 VDD<br>.85 VDD<br>VSS<br>-0.3<br>VSS|VDD+0.3<br>VDD<br>VDD<br>—<br>0.2 VDD<br>0.5V<br>0.2 VDD|V<br>V<br>V<br>V<br>V<br>V||
||VOL<br>VOH<br>ILI|**Low-level output voltage**<br>TXCAN GPIO pins<br>**High-level output voltage**<br>TXCAN, GPIO pins<br>**Input leakage current**<br>All I/O except OSC1, GP7<br>OSC1, GP7pin|—<br>VDD-0.7<br>-1<br>-5|0.6<br>—<br>+1<br>+5|V<br>V<br>V<br>µA<br>µA|IOL= 8.5 mA, VDD= 4.5V<br>IOH=-3.0 mA, VDD= 4.5V,<br>I-temp|
||CINT|Internal Capacitance<br>(all inputs and outputs, except<br>GP7)<br>GP7|—<br>—|7<br>15|pF<br>pF|TAMB= 25°C, fC= 1.0 MHz,<br>VDD= 5.0V**(Note 3)**|
||IDD|Operating Current|—|20|mA|XT OSC VDD= 5.5V;<br>FOSC= 25 MHz|
||IDDS|Standby Current<br>(CAN SleepMode)|—|30|µA|Inputs tied to VDDor VSS|
- **Note 1:** This is the limit to which VDD can be lowered in SLEEP mode without losing RAM data.
- **2:** Refer to **Figure 9-1** .
- **3:** This parameter is periodically sampled and not 100% tested.
DS21664D-page 52
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **9.3 AC Characteristics**
|**9.3**<br>**AC Characteristics**|**9.3**<br>**AC Characteristics**|**9.3**<br>**AC Characteristics**|||||
|---|---|---|---|---|---|---|
|**AC Characteristics**|||Industrial (I):<br>TAMB= -40°C to +85°C<br>VCC= 2.7V to 5.5V<br>Automotive(E): TAMB= -40°C to +125°C VCC= 4.5V to 5.5V||||
|**Param.**<br>**No.**|**Sym**|**Characteristics**|**Min**|**Max**|**Units**|**Test Conditions**|
||FOS|CLKIN Frequency|DC<br>DC<br>DC|4<br>25<br>200|MHz<br>MHz<br>kHz|XT osc mode<br>HS osc mode**(Note 3)**<br>LP osc mode|
||FOS|Oscillator Frequency|0.1<br>4<br>5|4<br>25<br>200|MHz<br>MHz<br>kHz|XT osc mode<br>HS osc mode**(Note 3)**<br>LP osc mode|
|1|TOSC|CLKIN Period<br>Oscillator Period|250<br>40<br>5<br>0.25<br>40<br>5|—<br>—<br>—<br>10<br>250<br>—|ns<br>ns<br>µs<br>µs<br>ns<br>µs|XT osc mode<br>HS osc mode<br>LP osc mode|
|||||||XT osc mode<br>HS osc mode<br>LP osc mode|
|3|TOSL<br>TOSH|CLKIN High or Low Time|100|—|ns<br>ns<br>µs|XT osc mode<br>HS osc mode<br>LP osc mode|
||||15<br>2.5|—<br>—|||
|4|Tosr|CLKIN Rise or Fall Time|—<br>—<br>—|25<br>50<br>15|ns<br>ns<br>ns|XT osc mode**(Note 1)**<br>HS osc mode**(Note 1)**<br>LP osc mode**(Note 1)**|
|10|TDCLKOUT|CLKOUT Propagation Delay|—|60|ns|VDD= 4.5 V**(Note 2)**|
|12|TCKR|CLKOUT Rise Time|—|100|ns|**Note 2**|
|13|TCKR|CLKOUT Fall Time|—|200|ns|**Note 2**|
|20|TIOR|Port output rise time|—|40|ns|**Note 1**|
|21|TIOF|Port output fall time|—|40|ns|**Note 1**|
|30|TMCL|RST Pulse Low|2|—|µs|VDD= 5V|
|32|TOST|Oscillation Start-upTimer|512|—|Tosc|TOSC= OSC1period|
|33|TPWRT|Power-upTimer|28|132|ms|VDD= 5V|
|34|TIOZ|I/O Hi-impedance from RST<br>low|—|2.1|µs|**Note 1**|
||TPWMR|PWM output rise time|—|25|ns|**Note 1**|
||TPWMF|PWM output fall time|—|25|ns|**Note 1**|
||TAD|A/D clock period|1.6|—|µs|VREFΔ ≥2.5V|
||||3.0|—|µs|VREFfull range|
||TCNV|Conversion Time (not<br>includingacquisition time)|—|13|TAD||
- **Note 1:** This parameter is periodically sampled and not 100% tested.
- **2:** Measurements are taken with CLKOUT output configured as 4 x TOSC.
- **3:** Refer to Figure 9-1.
DS21664D-page 53
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
**FIGURE 9-2:**
## **I/O TIMING**
**==> picture [436 x 196] intentionally omitted <==**
**----- Start of picture text -----**<br>
OSC1<br>I/O Pin<br>(input)<br>I/O Pin<br>Old Value New Value<br>(output)<br>20, 21<br>10<br>13 12<br>**----- End of picture text -----**<br>
**Note:** All tests must be done with specified capacitive loads (see data sheet) 50 pF on I/O pins.
## **FIGURE 9-3: RESET, OST AND POWER-UP-TIMER**
**==> picture [433 x 235] intentionally omitted <==**
**----- Start of picture text -----**<br>
VDD<br>MCLR<br>30<br>Internal<br>POR<br>33<br>PWRT<br>Time-out 32<br>OSC<br>Time-out<br>Internal<br>RESET<br>34<br>34<br>I/O Pins<br>**----- End of picture text -----**<br>
DS21664D-page 54
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **9.4 A/D Converter Characteristics**
|**9.4**<br>**A/D Converter Characteristics**|**9.4**<br>**A/D Converter Characteristics**|**9.4**<br>**A/D Converter Characteristics**|||||
|---|---|---|---|---|---|---|
|**AC Converter Characteristics**|||Industrial (I):<br>TAMB= -40°C to +85°C<br>VCC= 2.7V to 5.5V<br>Automotive(E): TAMB= -40°C to +125°C VCC= 4.5V to 5.5V||||
|**Param.**<br>**No.**|**Sym**|**Characteristics**|**Min**|**Max**|**Units**|**Test Conditions**|
||NR|A/D resolution|—|10-bits||VREF= VDD= 5.12V, VSS ≤in<br>≤VREF|
||NINT|A/D Integral error|—|less than<br>±1 LSb||VREF+ = VDD= 5.12V,<br>VSS- = VSS= 0 V(ITEMP)|
||NDIF|A/D Differential error|—|less than<br>±1 LSb||VREF+ = VDD= 5.12V,<br>VSS- = VSS= 0 V(ITEMP)|
||NG|A/D Gain error|—|less than<br>±1 LSb||VREF+ = VDD= 5.12V,<br>VSS- = VSS= 0 V|
||NOFF|A/D Offset error|—|less than<br>±2 LSb||VREF+ = VDD= 5.12V,<br>VSS- = VSS= 0 V|
|||Monotonicity|—|—||VSS ≤in≤VREF|
||VREF|Reference Voltage|4.096|VDD+0.3|V|Absolute minimum to ensure<br>10-bit accuracy.|
||VREF+|Reference V high|VREF-|VDD+0.3|V|Minimum resolution for A/D is<br>1 mV.|
||VREF-|Reference V low|VSS-0.3|VREF+|V|Minimum resolution for A/D is<br>1 mV.|
||VAIN|Analoginput V|VREF-|VREF+|V||
||ZAIN|Recommended impedance<br>of analogvoltage source|—|2.5|kΩ|**Note**|
||IREF|VREFinput current|—|10|µA||
||NHYS|Analog Transmit-on-change<br>Hysteresis|—|2 LSb||Specified by design (see<br>**Section 4.5.2.1 “Hysteresis**<br>**Function”**)|
**Note:** Design guidance only
DS21664D-page 55
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **NOTES:**
DS21664D-page 56
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **10.0 PACKAGING INFORMATION**
## **10.1 Package Marking Information**
14-Lead PDIP (300 mil)
## Example:
XXXXXXXXXXXXXX XXXXXXXXXXXXXX YYWWNNN
**==> picture [85 x 38] intentionally omitted <==**
**----- Start of picture text -----**<br>
MCP25050 e3<br>XXXXXXXXXXXXXX<br>0725NNN<br>**----- End of picture text -----**<br>
## 14-Lead SOIC (208 mil)
## Example:
**==> picture [67 x 37] intentionally omitted <==**
**----- Start of picture text -----**<br>
XXXXXXXXXXX<br>XXXXXXXXXXX<br>YYWWNNN<br>**----- End of picture text -----**<br>
**==> picture [80 x 38] intentionally omitted <==**
**----- Start of picture text -----**<br>
MCP25055 e3<br>XXXXXXXXXXX<br>0737NNN<br>**----- End of picture text -----**<br>
|**Legend:**|**Legend:**|XX...X|Customer-specific information||
|---|---|---|---|---|
|||Y|Year code (last digit of calendar year)||
|||YY|Year code (last 2 digits of calendar year)||
|||WW|Week code (week of January 1 is week ‘01’)||
|||NNN|Alphanumeric traceability code||
|||3<br>e|Pb-free JEDEC designator for Matte Tin (Sn)||
|||*****|This package is Pb-free. The Pb-free JEDEC designator ( )<br>can be found on the outer packaging for this package.<br>3<br>e||
|**Note**:|In|the event the full Microchip part number cannot be marked on one line, it will|||
||be carried||over to the next line, thus limiting the number of|available|
||characters||for customer-specific information.||
||||||
DS21664D-page 57
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **14-Lead Plastic Dual In-Line (P) – 300 mil Body [PDIP]**
**Note:** For the most current package drawings, please see the Microchip Packaging Specification located at http://www.microchip.com/packaging
|NOT<br>|E 1|||N||||||||E1<br>A2<br>L|E1<br>A2<br>L|E1<br>A2<br>L|E|c|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
||||||||||||||||||
||||||||||||||||||
||||||||||||||||||
||||1|D<br><br>2<br>3|||||||||||||
||||||||||||||||||
||||||||||||||||||
||A||||||||||||||||
||||||||||||||||B||
||A1||||||e||||||||||
||||||||||||||||||
||||||||||||||||e||
||||||||||||||||MAX<br>.210<br>.195<br>–<br>.325<br>.280<br>.775<br>.150<br>.015<br>.070<br>.022<br>.430||
||||||||||||Units||INCHES||||
||||||Dimension Limits||||||||MIN|NOM|||
|||Number of Pins||||||||N|||14||||
|||Pitch||||||||e|||.100 BSC||||
|||Topto SeatingPlane||||||||A|||–|–|||
|||Molded Package Thickness||||||||A2|||.115|.130|||
|||Base to SeatingPlane||||||||A1|||.015|–|||
|||Shoulder to Shoulder Width||||||||E|||.290|.310|||
|||Molded Package Width||||||||E1|||.240|.250|||
|||Overall Length||||||||D|||.735|.750|||
|||Tipto SeatingPlane||||||||L|||.115|.130|||
|||Lead Thickness||||||||c|||.008|.010|||
|||Upper Lead Width||||||||b1|||.045|.060|||
|||Lower Lead Width||||||||b|||.014|.018|||
|||Overall Row Spacing §||||||||eB|||–|–|||
## **Notes:**
1. Pin 1 visual index feature may vary, but must be located with the hatched area.
2. § Significant Characteristic.
3. Dimensions D and E1 do not include mold flash or protrusions. Mold flash or protrusions shall not exceed .010" per side.
4. Dimensioning and tolerancing per ASME Y14.5M.
BSC: Basic Dimension. Theoretically exact value shown without tolerances.
Microchip Technology Drawing C04-005B
DS21664D-page 58
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **14-Lead Plastic Small Outline (SL) – Narrow, 3.90 mm Body [SOIC]**
**Note:** For the most current package drawings, please see the Microchip Packaging Specification located at http://www.microchip.com/packaging
## **Notes:**
|NOTE 1<br>A<br>A1|NOTE 1<br>A<br>A1|NOTE 1<br>A<br>A1|||||||||||||||||c<br>α<br>β|
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|||1|||N<br>||||||||||E<br>E1<br>A2<br>L<br>L1<br>h<br>h<br>φ||h<br>h||c<br>α<br>β|
|||||||||||||||||||||
|||||||||||||||||||||
|||||||||||||||||||||
||||||1<br>2<br>3<br>b||||||e|||||||||
|||A||||||||||||||||||
|||||||||||||||||||||
|||A1||||||||||||||||||
|||||||||||||||||||||
||||||||||||||||||||MAX<br>1.75<br>–<br>0.25<br>0.50<br>1.27<br>8°<br>0.25<br>0.51<br>15°<br>15°|
||||||||||||||||Units|MILLMETERS||||
||||||||||||Dimension Limits|||||MIN||NOM||
||Number of Pins||||||||||||||N|14||||
||Pitch||||||||||||||e|1.27 BSC||||
||Overall Height||||||||||||||A|–||–||
||Molded Package Thickness||||||||||||||A2|1.25||–||
||Standoff §||||||||||||||A1|0.10||–||
||Overall Width||||||||||||||E|6.00 BSC||||
||Molded Package Width||||||||||||||E1|3.90 BSC||||
||Overall Length||||||||||||||D|8.65 BSC||||
||Chamfer (optional)||||||||||||||h|0.25||–||
||Foot Length||||||||||||||L|0.40||–||
||Footprint||||||||||||||L1|1.04 REF||||
||Foot Angle||||||||||||||φ|0°||–||
||Lead Thickness||||||||||||||c|0.17||–||
||Lead Width||||||||||||||b|0.31||–||
||Mold Draft Angle Top||||||||||||||α|5°||–||
||Mold Draft Angle Bottom||||||||||||||β|5°||–||
1. Pin 1 visual index feature may vary, but must be located within the hatched area.
2. § Significant Characteristic.
3. Dimensions D and E1 do not include mold flash or protrusions. Mold flash or protrusions shall not exceed 0.15 mm per side.
4. Dimensioning and tolerancing per ASME Y14.5M.
BSC: Basic Dimension. Theoretically exact value shown without tolerances.
- REF: Reference Dimension, usually without tolerance, for information purposes only.
Microchip Technology Drawing C04-065B
DS21664D-page 59
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **NOTES:**
DS21664D-page 60
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **PRODUCT IDENTIFICATION SYSTEM**
To order or obtain information, e.g., on pricing or delivery, refer to the factory or the listed sales office.
|**PART NO.**<br>**X**<br>**/XX**<br>**Package**<br>**Temperature**<br>**Range**<br>**Device**<br>Device:<br>MCP25020:<br>CAN I/O Expander<br>MCP25020T: CAN I/O Expander (Tape and Reel)<br>MCP25025:<br>CAN I/O Expander<br>MCP25025T: CAN I/O Expander (Tape and Reel)<br>MCP25050:<br>Mixed Signal CAN I/O Expander<br>MCP25050T: Mixed Signal CAN I/O Expander<br>(Tape and Reel)<br>MCP25055:<br>Mixed Signal CAN I/O Expander<br>MCP25055T: Mixed Signal CAN I/O Expander<br>(Tape and Reel)<br>Temperature Range:<br>I<br>=<br>-40°C to +85°C<br>E<br>=<br>-40°C to +125°C (not available on MCP25025<br>or MCP25055 devices)<br>Package:<br>P<br>=<br>Plastic DIP (300 mil Body), 14-lead<br>SL<br>=<br>Plastic SOIC (150 mil Body), 14-lead|**Examples:**<br>a)<br>MCP25020–I/P:<br>Industrial temperature,<br>PDIP package.<br>b)<br>MCP25025–I/SL:<br>Industrial temperature,<br>SOIC package.<br>c)<br>MCP25050T-E/SL: Tape and Reel,<br>Extended temperature,<br>SOIC package.<br>d)<br>MCP25055-I/SL:<br>Industrial temperature<br>SOIC package.|
|---|---|
DS21664D-page 61
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **NOTES:**
DS21664D-page 62
© 2007 Microchip Technology Inc.
**MCP2502X/5X**
## **APPENDIX A: REVISION HISTORY**
## **Revision D (January 2007)**
This revision includes updates to the packaging diagrams.
DS21664D-page 63
© 2007 Microchip Technology Inc.
## **NOTES:**
DS21664D-page 64
© 2007 Microchip Technology Inc.
## **Note the following details of the code protection feature on Microchip devices:**
- Microchip products meet the specification contained in their particular Microchip Data Sheet.
- Microchip believes that its family of products is one of the most secure families of its kind on the market today, when used in the intended manner and under normal conditions.
- There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our knowledge, require using the Microchip products in a manner outside the operating specifications contained in Microchip’s Data Sheets. Most likely, the person doing so is engaged in theft of intellectual property.
- Microchip is willing to work with the customer who is concerned about the integrity of their code.
- Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not mean that we are guaranteeing the product as “unbreakable.”
Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our products. Attempts to break Microchip’s code protection feature may be a violation of the Digital Millennium Copyright Act. If such acts allow unauthorized access to your software or other copyrighted work, you may have a right to sue for relief under that Act.
Information contained in this publication regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE **.** Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer’s risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.
## **Trademarks**
The Microchip name and logo, the Microchip logo, Accuron, dsPIC, KEELOQ, micro ID , MPLAB, PIC, PICmicro, PICSTART, PRO MATE, PowerSmart, rfPIC, and SmartShunt are registered trademarks of Microchip Technology Incorporated in the U.S.A. and other countries.
AmpLab, FilterLab, Migratable Memory, MXDEV, MXLAB, SEEVAL, SmartSensor and The Embedded Control Solutions Company are registered trademarks of Microchip Technology Incorporated in the U.S.A.
Analog-for-the-Digital Age, Application Maestro, CodeGuard, dsPICDEM, dsPICDEM.net, dsPICworks, ECAN, ECONOMONITOR, FanSense, FlexROM, fuzzyLAB, In-Circuit Serial Programming, ICSP, ICEPIC, Linear Active Thermistor, Mindi, MiWi, MPASM, MPLIB, MPLINK, PICkit, PICDEM, PICDEM.net, PICLAB, PICtail, PowerCal, PowerInfo, PowerMate, PowerTool, REAL ICE, rfLAB, rfPICDEM, Select Mode, Smart Serial, SmartTel, Total Endurance, UNI/O, WiperLock and ZENA are trademarks of Microchip Technology Incorporated in the U.S.A. and other countries.
SQTP is a service mark of Microchip Technology Incorporated in the U.S.A.
All other trademarks mentioned herein are property of their respective companies.
© 2007, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved.
0 Printed on recycled paper.
_Microchip received ISO/TS-16949:2002 certification for its worldwide headquarters, design and wafer fabrication facilities in Chandler and Tempe, Arizona, Gresham, Oregon and Mountain View, California. The Company’s quality system processes and procedures are for its PIC[®] MCUs and dsPIC DSCs, KEELOQ[®] code hopping devices, Serial EEPROMs, microperipherals, nonvolatile memory and analog products. In addition, Microchip’s quality system for the design and manufacture of development systems is ISO 9001:2000 certified._
DS21664D-page 65
© 2007 Microchip Technology Inc.
## **WORLDWIDE SALES AND SERVICE**
## **AMERICAS**
**Corporate Office** 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-792-7200 Fax: 480-792-7277 Technical Support: http://support.microchip.com Web Address: www.microchip.com
**Atlanta** Duluth, GA Tel: 678-957-9614 Fax: 678-957-1455
**Boston** Westborough, MA Tel: 774-760-0087 Fax: 774-760-0088
**Chicago** Itasca, IL Tel: 630-285-0071 Fax: 630-285-0075
**Dallas** Addison, TX Tel: 972-818-7423 Fax: 972-818-2924
**Detroit** Farmington Hills, MI Tel: 248-538-2250 Fax: 248-538-2260
**Kokomo** Kokomo, IN Tel: 765-864-8360 Fax: 765-864-8387
**Los Angeles** Mission Viejo, CA Tel: 949-462-9523 Fax: 949-462-9608
**Santa Clara** Santa Clara, CA Tel: 408-961-6444 Fax: 408-961-6445
**Toronto** Mississauga, Ontario, Canada Tel: 905-673-0699 Fax: 905-673-6509
## **ASIA/PACIFIC**
**Asia Pacific Office** Suites 3707-14, 37th Floor Tower 6, The Gateway Habour City, Kowloon Hong Kong Tel: 852-2401-1200 Fax: 852-2401-3431
**Australia - Sydney** Tel: 61-2-9868-6733 Fax: 61-2-9868-6755
**China - Beijing** Tel: 86-10-8528-2100 Fax: 86-10-8528-2104
**China - Chengdu** Tel: 86-28-8665-5511 Fax: 86-28-8665-7889
**China - Fuzhou** Tel: 86-591-8750-3506 Fax: 86-591-8750-3521
**China - Hong Kong SAR** Tel: 852-2401-1200 Fax: 852-2401-3431
**China - Qingdao** Tel: 86-532-8502-7355 Fax: 86-532-8502-7205
**China - Shanghai** Tel: 86-21-5407-5533 Fax: 86-21-5407-5066
**China - Shenyang** Tel: 86-24-2334-2829 Fax: 86-24-2334-2393
**China - Shenzhen** Tel: 86-755-8203-2660 Fax: 86-755-8203-1760
**China - Shunde** Tel: 86-757-2839-5507 Fax: 86-757-2839-5571
**China - Wuhan** Tel: 86-27-5980-5300 Fax: 86-27-5980-5118
**China - Xian** Tel: 86-29-8833-7250 Fax: 86-29-8833-7256
## **ASIA/PACIFIC**
**India - Bangalore** Tel: 91-80-4182-8400 Fax: 91-80-4182-8422
**India - New Delhi** Tel: 91-11-4160-8631 Fax: 91-11-4160-8632
**India - Pune** Tel: 91-20-2566-1512 Fax: 91-20-2566-1513
**Japan - Yokohama** Tel: 81-45-471- 6166 Fax: 81-45-471-6122
**Korea - Gumi** Tel: 82-54-473-4301 Fax: 82-54-473-4302
**Korea - Seoul** Tel: 82-2-554-7200 Fax: 82-2-558-5932 or 82-2-558-5934
**Malaysia - Penang** Tel: 60-4-646-8870 Fax: 60-4-646-5086
**Philippines - Manila** Tel: 63-2-634-9065 Fax: 63-2-634-9069
**Singapore** Tel: 65-6334-8870 Fax: 65-6334-8850
**Taiwan - Hsin Chu** Tel: 886-3-572-9526 Fax: 886-3-572-6459
**Taiwan - Kaohsiung** Tel: 886-7-536-4818 Fax: 886-7-536-4803
**Taiwan - Taipei** Tel: 886-2-2500-6610 Fax: 886-2-2508-0102
**Thailand - Bangkok** Tel: 66-2-694-1351 Fax: 66-2-694-1350
## **EUROPE**
**Austria - Wels** Tel: 43-7242-2244-39 Fax: 43-7242-2244-393
**Denmark - Copenhagen** Tel: 45-4450-2828 Fax: 45-4485-2829
**France - Paris** Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79
**Germany - Munich** Tel: 49-89-627-144-0 Fax: 49-89-627-144-44
**Italy - Milan** Tel: 39-0331-742611 Fax: 39-0331-466781
**Netherlands - Drunen** Tel: 31-416-690399 Fax: 31-416-690340
**Spain - Madrid** Tel: 34-91-708-08-90 Fax: 34-91-708-08-91
**UK - Wokingham** Tel: 44-118-921-5869 Fax: 44-118-921-5820
12/08/06
DS21664D-page 66
© 2007 Microchip Technology Inc.
Updated at February 9, 2023
Microchip Technology Inc. is a leading global provider of smart, connected, and secure embedded control solutions. Known for enabling engineers to design with confidence, the company delivers a comprehensive product portfolio that reduces total system costs and accelerates time to market across the industrial, automotive, communications, and computing sectors. Our extensive selection of Microchip components highlights the manufacturer's strength in both discrete semiconductors and advanced wireless connectivity. We carry a robust lineup of highly efficient single MOSFETs and Schottky diodes tailored for demanding power management and switching applications. Alongside these essential discretes, engineers can source a wide array of ready-to-use networking modules, prominently featuring Bluetooth and WLAN adapters that streamline the development of modern IoT and connected devices. Rounding out the offering is a diverse range of Microchip integrated circuits and specialized components. This includes versatile I/O expanders for simplified system integration, precision timing solutions such as MEMS oscillators and pulse generators, as well as AC/DC LED driver ICs and sub-2.4GHz RF transceivers. Backed by Microchip's renowned commitment to exceptional quality and reliable performance, these components provide scalable, dependable building blocks for complex electronic designs.
About Novapart
Novapart is a B2B electronic component broker specialising in stock shortages and cost reduction. We source hard-to-find parts and identify compliant alternatives across a catalogue of 410,000+ components from 500+ manufacturers.
Learn more →Stock Shortage Specialist
When a component is unavailable, discontinued or has an unacceptable lead time, we tap into our network of vetted European and Asian distributors to source what you need — without compromising on quality or traceability.
Request a quote →Compliant Alternatives
We identify pin-to-pin, electrically equivalent substitutes that meet the same certifications (RoHS, AEC-Q100, REACH) as your original specification — validated against datasheets, not just part numbers. Often at a lower cost.
BOM Analysis service →