MCP2221 USB 2.0 to I2C™/UART Protocol Converter with GPIO Features: I2C/SMBus Universal Serial Bus (USB) • The Device Runs as an I2C Master. The Data to Write/Read On the I2C Bus is Conveyed By the USB Interface. • I2C Master - Up to 400 kHz Clock Rate - Supports 7- or 10-bit Addressable Devices; 10-bit Addressable Devices are Supported Through the PC Host Library - Supports Block Reads/Writes of Up to 65,535 Bytes Long • SMBus Master - Supports All of the SMBus Transfers - SMBus Functionality is Achieved Through a Combination of Chip and Support Library Processing - Up to 400 kHz Clock Rate • Supports Full-Speed USB (12 Mb/s) • Implements USB Protocol Composite Device: - Communication Device Class (CDC) for USB-to-UART Conversion - Human Interface Device (HID) for I2C™ Device Control and Configuration • 128-byte Buffer to Handle Data Throughput at Any Supported UART Baud Rate: - 64-Byte Transmit - 64-Byte Receive • Human Interface Device (HID) for Both I2C Communication and Control: 64-byte Buffer to Handle Data Throughput at Any I2C Baud Rate • Fully-Configurable VID and PID Assignments and String Descriptors • Bus-powered or Self-powered • USB 2.0-Compliant: TID# 40001594 USB Driver and Software Support • Enumerates as a Composite USB Device (CDC and HID) Using Standard Drivers for Virtual Com Port (VCP) on the Following Windows® Operating Systems: XP® (SP3), Vista®, 7, 8 and 8.1 • Configuration Utility for Establishing a Custom Boot-up Configuration • I2C/SMBus Terminal • Windows DLL CDC and Universal Asynchronous Receiver/Transmitter (UART) Options • Communications Device Class (CDC) for the USB-to-UART Option • Responds to SET LINE CODING Commands to Dynamically Change Baud Rates • Supports Baud Rates: 300-115200 • UART TX and RX Pins Only • Serial Number Used During the CDC Enumeration Can Be Enabled By Using the Microchip-provided Configuration Utility or By Calling the Proper API From the Support Libraries for this Device 2015 Microchip Technology Inc. General-Purpose Input/Output (GPIO) Pins • Four General-Purpose Input/Output Pins • All GP Pins Can Be Assigned to Other Functionalities Other Functionalities • UART Activity LED Outputs (UTX and URX) • SSPND Output Pin • USBCFG Output Pin (Indicates When the Enumeration Has Completed) • Three ADC Inputs • One DAC with Two Possible Output Options • Clock Reference Output: 12 MHz or Other Configurable Values • External Interrupt Edge Detection Other • Operating Voltage: 3.0 to 5.5V • Electrostatic Discharge (ESD) Protection: > 4 kV Human Body Model (HBM) • Industrial (I) Operating Temperature: -40°C to +85°C DS20005292B-page 1 MCP2221 Package Types MCP2221 4 x 4 QFN* 3 12 D- RST 4 11 VUSB URX 5 UTX GP2 1 GP1 2 10 SCL RST 3 6 9 SDA URX 4 7 8 GP3 VSS GP1 GP0 16 15 14 13 12 D+ 11 D- EP 17 10 VUSB 9 SCL 5 6 7 8 SDA 13 D+ NC 2 GP3 GP0 NC 14 VSS GP2 1 UTX VDD VDD MCP2221 PDIP/SOIC/TSSOP * Includes Exposed Thermal Pad (EP); see Table 1-1. Block Diagram CONFIG USB Bus USB Module & Transceiver I2C Bus I2C Master USB HID USB CDC BUS MATRIX Internal Oscillator TXD/RXD UART IOC GPIO PIN MUX GP Pins ADC/DAC CLKR DS20005292B-page 2 2015 Microchip Technology Inc. MCP2221 1.0 FUNCTIONAL DESCRIPTION The MCP2221 is a USB-to-UART serial converter that enables USB connectivity in applications that have UART and/or I2C interfaces. The device reduces external components by integrating the USB termination resistors and the oscillator needed for USB operation. TABLE 1-1: The MCP2221 has four GP pins for miscellaneous functionalities (including GPIO, USBCFG, SSPND, Clock Output, ADC, DAC and interrupt detector). See Table 1-1 and Section 1.7 “Pin Mux Module” for details about the pin functions. PINOUT DESCRIPTION PDIP, Pin Pin SOIC, QFN Name Type SSOP Standard Function Alternate Functions GP0 2 1 I/O General-purpose I/O or alternate SSPND (OUT) function pin GP1 3 2 I/O General-purpose I/O or alternate CLKR (OUT) function pin ADC1 (IN) LED_UTX (OUT) IOC (IN) RST 4 3 I Reset input (with internal pull-up) N/A URX 5 4 I UART RX pin (input) N/A UTX 6 5 O UART TX pin (output) N/A GP2 7 6 I/O General-purpose I/O or alternate USBCFG (OUT) USB device configured status function pin (factory default) ADC2 (IN) ADC Channel 2 DAC1 (OUT) DAC Output 1 GP3 8 7 I/O General-purpose I/O or alternate LED_I2C (OUT) function pin ADC3 (IN) DAC2 (OUT) SDA 9 8 I/O I2C Data line N/A SCL 10 9 I/O I2C Clock line N/A VUSB 11 10 USB USB Power pin (internally connected to 3.3V) Should be locally bypassed with a high-quality ceramic capacitor D- 12 11 USB USB D- D+ 13 12 USB USB D+ Signals when the host has entered Suspend mode LED_URX (OUT) UART RX LED activity output (factory default) VSS 14 13 P Ground NC — 14 15 — Not Connected VDD 1 16 P Power EP — 17 — Exposed Thermal Pad (EP) Do not electrically connect. 2015 Microchip Technology Inc. Clock Reference Output ADC Channel 1 UART TX Led activity output (factory default) External interrupt edge detector USB-I2C traffic indicator (factory default) ADC Channel 3 DAC Output 2 DS20005292B-page 3 MCP2221 1.1 Supported Operating Systems The following operating systems are supported: • Windows – XP (SP3), Vista, 7, 8 and 8.1 • Linux® – any distribution with support for CDC and HID classes • Mac OS® – all versions – beginning with 10.7 1.1.1 ENUMERATION The MCP2221 enumerates as a composite USB device after POR. The device enumerates as both a Human Interface Device (HID) for I2C, GPIO control, and as CDC for the USB-to-UART converter. 1.1.1.1 USB HID 1.3.1 GET/SET LINE CODING The GET_LINE_CODING and SET_LINE_CODING commands are used to read and set the UART parameters while in operation. For example, terminal applications (e.g., Putty, RealTerm, Hyperterminal, etc.) send the SET_LINE_COMMAND when connecting to the port. The MCP2221 responds by setting the baud rate only. The other parameters (Data Bits, Parity, Stop Bits) remain unchanged. Note: MCP2221 supports only eight Data bits, no Parity, and one Stop bit. 1.3.1.1 Rounding Errors The MCP2221 enumerates as an HID, so the device can be configured, while the I2C and GPIO can be controlled. A DLL package, with example applications and tools, is supplied by Microchip on the device web page, on the Microchip web site www.microchip.com. Primary baud rate settings (with associated rounding errors) are shown in Table 1-2. 1.1.1.2 TABLE 1-2: USB CDC The CDC enumeration implements the USB-to-UART data translation. 1.2 UART The MCP2221 UART interface consists of the TX and RX data signals. The UART is configurable for several baud rates. The available baud rates are listed in Table 1-2. DS20005292B-page 4 300 300 0.00% 1200 1200 0.00% 2400 2400 0.00% 4800 4800 0.00% 9600 0.00% 19200 0.00% 38400 38339 0.16% 57600 57692 0.16% 115200 115385 0.16% EQUATION 1-1: SOLVING FOR ACTUAL BAUD RATE 12MHz ActualRate = -----------------int x ACCESSING THE DEVICE UART Interface % Error 9600 The MCP2221 can be accessed for reading and writing via USB host commands. The device cannot be accessed or controlled via the UART interface. 1.3 Actual rate 19200 The control module interfaces to the UART and USB modules. 1.2.2 UART PRIMARY BAUD RATES Desired Rate Bus-Matrix Module The Bus-Matrix module is the heart of the MCP2221. All other modules are tied together and controlled via the Bus-Matrix module. This module manages the data transfers between the USB and the UART, the I2C Master module, as well as the command requests generated by the USB host controller and commands for controlling the function of the UART, GPIO, ADC, DAC and Clock Output. 1.2.1 If baud rates other than the ones shown in the table are used, the error percentage can be calculated using Equation 1-1 to find the actual baud rate. Where: 1.3.2 12MHz x = ----------------------------------DesiredBaud CUSTOM BAUD RATES Custom baud rates are configured by sending the SET_LINE_CODING USB command. See Section 2.0 “USB Enumeration Process” for more information. 2015 Microchip Technology Inc. MCP2221 1.4 Device Configuration FIGURE 1-1: The MCP2221 keeps all the essential device configuration settings stored in Flash memory. Power-Up/Reset Device configuration settings affect the way the MCP2221 behaves at run time. The settings are stored into the Flash memory on the device. Some of the settings are also copied into SRAM at Power-Up/Reset. Copy FLASH Chip and GP settings to SRAM These device configuration settings reside in the following two distinct areas of Flash memory: • Chip Settings The Chip Settings area stores the key MCP2221 parameters – USB parameters, ADC/DAC reference voltage choice, start-up DAC value, Clock Reference output (CLKR) frequency and duty cycle values. • GP Settings The GP Settings area stores the GP designation settings. For GP settings that are assigned to GPIO output operation, output values (logic 1 or 0) are also specified. CHIP SETTINGS RUN TIME MANAGEMENT USB enumeration & configuration complete No SRAM settings changes needed Yes Change the SRAM settings Even though the MCP2221 places a partial copy of the Chip Settings in SRAM, the following Chip Settings always reside in Flash: • USB Manufacturer/Product and Serial Number descriptors • USB VID and PID pair • USB options (e.g., the requested amount of current that is presented to the USB host during the USB enumeration process) 1.4.1 POWER-UP/RESET DEVICE CONFIGURATION BEHAVIOR At Power-Up/Reset, the MCP2221 configures the device options (GP designation, special function pins parameters and USB enumeration options) according to the Flash settings. Then, the Flash Chip Settings and GP Settings are loaded into SRAM to allow for their temporary modification at run time. Chip Settings of the Device Configuration Flash is copied partially into SRAM. Only the runtime-modifiable parameters are copied into SRAM. GP Settings of the Device Configuration Flash (GP settings area) are copied entirely into the SRAM. By copying the GP settings completely into SRAM, the user is allowed to completely change the GP designation at run time. The SRAM copy of the settings can be altered at run time in order to change certain device behavior, e.g., GP designation (the GPs can be re-assigned for a different type of operation than the one assigned at Power-Up) and special parameters (DAC value, ADC/DAC voltage references, Clock output value). 2015 Microchip Technology Inc. The SRAM settings (GP and partial Chip Settings) can be modified through USB HID commands and they will have an effect on the following device features: • GP pin designation (switch between GPIO, dedicated or special functions modes) • GPIO direction and output value (only for GPIO outputs) – for the GPs assigned to work in GPIO mode • Clock Output duty cycle and value – if GP1 is assigned for CLKR mode (Clock Reference output mode), by modifying the SRAM settings, the clock frequency and duty cycle can be changed at run time • DAC value and voltage reference used – the DAC value setting as well as the voltage reference used for it are stored in SRAM settings and they can be changed at run time. Through this mechanism, at run time the user can change the DAC value, as well as the voltage reference. • ADC voltage reference value – the voltage reference used for ADC conversions can be changed by altering its corresponding SRAM setting • Interrupt-On-Change (IOC) detector settings – if GP1 is assigned for IOC mode, the SRAM settings are used for setting up the triggers used for external interrupt detection (positive, negative edge detection or both) DS20005292B-page 5 MCP2221 1.4.2 CHIP SETTINGS MAP The Chip Settings area resides in Flash memory and is copied into SRAM at run time. Not all of the device’s settings can be altered at run time. All the fields in the Flash settings can be altered by the user. TABLE 1-3: CHIP SETTINGS MAP Byte Index Register Name Comments 0 CHIPSETTING0 Controls the USB CDC serial number enumeration, default state for the GP LED designation, default state for GP dedicated-function pins and chip settings protection level 1 CHIPSETTING1 Default clock output divider and duty cycle 2 CHIPSETTING2 DAC reference options and default DAC value 3 CHIPSETTING3 ADC reference and interrupt detection settings 4 USBVIDL USB VID lower byte 5 USBVIDH USB VID higher byte 6 USBPIDL USB PID lower value 7 USBPIDH USB PID higher byte 8 USBPWRATTR USB power attributes 9 USBREQCRT USB required current 10 PASS0 Password byte 0 11 PASS1 Password byte 1 12 PASS2 Password byte 2 13 PASS3 Password byte 3 14 PASS4 Password byte 4 15 PASS5 Password byte 5 16 PASS6 Password byte 6 17 PASS7 Password byte 7 DS20005292B-page 6 2015 Microchip Technology Inc. MCP2221 REGISTER 1-1: R/W-0 CHIPSETTING0 REGISTER R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-0 R/W-0 CDCSNEN LEDURXINST LEDUTXINST LEDI2CINST SSPNDINST USBCFGINST CHIPPROT1 CHIPPROT0 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 bit 7 CDCSNEN: USB CDC Serial Number Enable 1 = USB CDC Serial Number is enumerated 0 = No USB CDC Serial Number enumeration (factory default) bit 6 LEDURXINST: LED UART RX Inactive State 1 = LED UART RX is inactive high and active low (factory default) 0 = LED UART RX is inactive low and active high bit 5 LEDUTXINST: LED UART TX Inactive State 1 = LED UART TX is inactive high and active low (factory default) 0 = LED UART TX is inactive low and active high bit 4 LEDI2CINST: LED I2C Inactive State 1 = LED I2C is inactive high and active low (factory default) 0 = LED I2C is inactive low and active high bit 3 SSPNDINST: SSPND Inactive State 1 = SSPND is inactive high and active low (factory default) 0 = SSPND is inactive low and active high bit 2 USBCFGINST: USBCFG Inactive State 1 = USBCFG is inactive high and active low (factory default) 0 = USBCFG is inactive low and active high bit 1-0 CHIPPROT<1:0>: Chip Settings Protection Level 11 = Reserved 10 = Permanently locked 01 = Password protection 00 = Chip settings unprotected (factory default) 2015 Microchip Technology Inc. x = Bit is unknown DS20005292B-page 7 MCP2221 REGISTER 1-2: CHIPSETTING1 REGISTER R/W-0 R/W-0 R/W-0 R/W-1 R/W-0 R/W-0 R/W-1 R/W-0 — — — CLKDC1 CLKDC0 CLKDIV2 CLKDIV1 CLKDIV0 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 bit 7-5 Reserved: Set to ‘0’ bit 4-3 CLKDC<1:0>: Clock-Out Duty-Cycle 11 = Duty cycle 75% (75% of 1 clock period is logic ‘1’ and 25% of 1 clock period is logic ‘0’) 10 = Duty cycle 50% (50% of 1 clock period is logic ‘1’ and 50% of 1 clock period is logic ‘0’) (factory default) 01 = Duty cycle 25% (25% of 1 clock period is logic ‘1’ and 75% of 1 clock period is logic ‘0’) 00 = Duty cycle 0% (100% of 1 clock period is logic ‘0’) bit 2-0 CLKDIV<2:0>: Clock-Out Divider Output 111 = 375 kHz clock output 110 = 750 kHz clock output 101 = 1.5 MHz clock output 100 = 3 MHz clock output 011 = 6 MHz clock output 010 = 12 MHz clock output (factory default) 001 = 24 MHz clock output 000 = Reserved REGISTER 1-3: CHIPSETTING2 REGISTER R/W-1 R/W-0 R/W-0 R/W-0 R/W-1 R/W-0 R/W-0 R/W-0 DACVRM1 DACVRM0 DACREF DACVAL4 DACVAL3 DACVAL2 DACVAL1 DACVAL0 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 bit 7-6 DACVRM<1:0>: DAC Internal Voltage Reference (DAC VRM) Selection 11 = VRM voltage is 4.096V (only if VDD is above this voltage) 10 = VRM voltage is 2.048V (factory default) 01 = VRM voltage is 1.024V 00 = VRM is off bit 5 DACREF: DAC Reference Output Selection 1 = DAC reference output is DAC VRM voltage selection 0 = DAC reference output is VDD (factory default) bit 4-0 DACVAL<4:0>: Initial DAC Output Value 5-bit value for the DAC output (factory default is 8 decimal) DS20005292B-page 8 2015 Microchip Technology Inc. MCP2221 REGISTER 1-4: CHIPSETTING3 REGISTER R/W-0 — R/W-1 R/W-1 INTDETFEEN INTDETREEN R/W-0 R/W-1 R/W-1 R/W-0 R/W-0 ADCVRM1 ADCVRM0 ADCREF — — 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 bit 7 Reserved: Set to ‘0’ bit 6 INTDETFEEN: Interrupt Falling Edge Detect Enable 1 = Interrupt detector will trigger when a falling edge is detected (factory default) 0 = Falling edges will not trigger the detector bit 5 INTDETREEN: Interrupt Rising Edge Detect Enable 1 = Interrupt detector will trigger when a rising edge is detected (factory default) 0 = Rising edges will not trigger the detector bit 4-3 ADCVRM<1:0>: ADC Internal Voltage Reference (ADC VRM) Selection 11 = VRM voltage is 4.096V (only if VDD is above this voltage) 10 = VRM voltage is 2.048V 01 = VRM voltage is 1.024V (factory default) 00 = VRM is off bit 2 ADCREF: ADC Reference Output Selection 1 = ADC reference output is ADC VRM voltage selection (factory default) 0 = ADC reference output is VDD bit 1-0 Reserved: Set to ‘0’ REGISTER 1-5: USBVIDL REGISTER R/W-1 R/W-1 R/W-0 R/W-1 R/W-1 R/W-0 R/W-0 R/W-0 USBVIDL7 USBVIDL6 USBVIDL5 USBVIDL4 USBVIDL3 USBVIDL2 USBVIDL1 USBVIDL0 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 bit 7-0 x = Bit is unknown USBVIDL<7:0>: USB VID Lower Byte (factory default: 0xD8(hex)) REGISTER 1-6: USBVIDH REGISTER R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-1 R/W-0 R/W-0 USBVIDH7 USBVIDH6 USBVIDH5 USBVIDH4 USBVIDH3 USBVIDH2 USBVIDH1 USBVIDH0 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 bit 7-0 x = Bit is unknown USBVIDH<7:0>: USB VID Higher Byte (factory default: 0x04(hex)) 2015 Microchip Technology Inc. DS20005292B-page 9 MCP2221 REGISTER 1-7: USBPIDL REGISTER R/W-1 R/W-1 R/W-0 R/W-1 R/W-1 R/W-1 R/W-0 R/W-1 USBPIDL7 USBPIDL6 USBPIDL5 USBPIDL4 USBPIDL3 USBPIDL2 USBPIDL1 USBPIDL0 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 bit 7-0 x = Bit is unknown USBPIDL<7:0>: USB PID Lower Byte (factory default: 0xDD(hex)) REGISTER 1-8: USBPIDH REGISTER R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 USBPIDH7 USBPIDH6 USBPIDH5 USBPIDH4 USBPIDH3 USBPIDH2 USBPIDH1 USBPIDH0 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 bit 7-0 x = Bit is unknown USBPIDH<7:0>: USB PID Higher Byte (factory default: 0x00(hex)) REGISTER 1-9: USBPWRATTR REGISTER R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 — SELFPWR REMWKUP — — — — — 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 bit 7 Reserved: Reserved – set to ‘1’ (factory default) bit 6 SELFPWR: USB Self-Powered Attribute 1 = Chip will enumerate on the USB bus as being self-powered 0 = Chip will enumerate on the USB bus as being USB-bus powered (factory default) bit 5 REMWKUP: USB Remote Wake-Up Capability 1 = Chip will enumerate on the USB bus as being able to wake up the USB host 0 = Chip will enumerate as not being capable of remote wake-up of the USB host (factory default) bit 4-0 Reserved: Set all bits to ‘0’ (factory default) DS20005292B-page 10 2015 Microchip Technology Inc. MCP2221 REGISTER 1-10: R/W-0 USBREQC RT7 USBREQCRT REGISTER R/W-0 R/W-1 R/W-1 R/W-0 USBREQCRT USBREQCRT USBREQCR USBREQCR 6 5 T4 T3 R/W-0 R/W-1 USBREQCR USBREQCR T2 T1 R/W-0 USBREQC RT0 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 bit 7-0 x = Bit is unknown USBREQCRT<7:0>: USB Bus-Powered Required Current Amount (in units of 2 mA) Factory default is 50 (decimal); the USB enumeration interprets this value as a current requirement of 100 mA. REGISTER 1-11: PASS0 – PASS7 REGISTER R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 PASSx7 PASSx6 PASSx5 PASSx4 PASSx3 PASSx2 PASSx1 PASSx0 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 bit 7-0 x = Bit is unknown PASSx<7:0>: Password Byte X Value (factory default is 0) 2015 Microchip Technology Inc. DS20005292B-page 11 MCP2221 1.4.3 GP SETTINGS MAP The GP Settings area resides in Flash memory and is copied into SRAM at run time. The user can alter both the Flash and the SRAM GP settings. Any modification in the SRAM copy of the GP settings will have an immediate effect. The GP pins designation changes according to the new content of the SRAM settings. The Flash variant of the settings will affect the Power-Up behavior of the GP pins. TABLE 1-4: Byte Index GP SETTINGS MAP Register Name Comments 0 GPSETTING0 GP0 pin designation and GPIO default output value, when GP is set for GPIO output operation 1 GPSETTING1 GP1 pin designation and GPIO default output value, when GP is set for GPIO output operation 2 GPSETTING2 GP2 pin designation and GPIO default output value, when GP is set for GPIO output operation 3 GPSETTING3 GP3 pin designation and GPIO default output value, when GP is set for GPIO output operation REGISTER 1-12: GPSETTING0 REGISTER R/W-0 R/W-0 R/W-0 R/W-1 R/W-0 R/W-0 R/W-1 R/W-0 — — — GPIOOUTVAL GPIODIR GPDES2 GPDES1 GPDES0 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 bit 7-5 Reserved: Set to ‘0’ bit 4 GPIOOUTVAL: GPIO Output Value (valid only when GP0 is set for GPIO output operation) 1 = Default output value is logic ‘1’ (factory default) 0 = Default output value is logic ‘0’ bit 3 GPIODIR: GPIO Direction (input or output; valid only when GP0 is set for GPIO operation) 1 = GPIO Input 0 = GPIO Output (factory default) bit 2-0 GPDES<2:0>: GP0 Designation 111 = Reserved 110 = Reserved 101 = Reserved 100 = Reserved 011 = Reserved 010 = Alternate function 0 (LED UART RX – LEDURX) (factory default) 001 = Dedicated function operation (SSPND) 000 = GPIO operation (GPIO0) DS20005292B-page 12 2015 Microchip Technology Inc. MCP2221 REGISTER 1-13: GPSETTING1 REGISTER R/W-0 R/W-0 R/W-0 R/W-1 R/W-0 R/W-0 R/W-1 R/W-1 — — — GPIOOUTVAL GPIODIR GPDES2 GPDES1 GPDES0 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 bit 7-5 Reserved: Set to ‘0’ bit 4 GPIOOUTVAL: GPIO Output Value (valid only when GP1 is set for GPIO output operation) 1 = Default output value is logic ‘1’ (factory default) 0 = Default output value is logic ‘0’ bit 3 GPIODIR: GPIO Direction (input or output; valid only when GP1 is set for GPIO operation) 1 = GPIO Input 0 = GPIO Output (factory default) bit 2-0 GPDES<2:0>: GP1 Designation 111 = Reserved 110 = Reserved 101 = Reserved 100 = Alternate function 2 (Interrupt detector) 011 = Alternate function 1 (LED UART TX – LEDUTX) (factory default) 010 = Alternate function 0 (ADC1) 001 = Dedicated function operation (Clock Output) 000 = GPIO operation (GPIO1) 2015 Microchip Technology Inc. DS20005292B-page 13 MCP2221 REGISTER 1-14: GPSETTING2 REGISTER R/W-0 R/W-0 R/W-0 R/W-1 R/W-0 R/W-0 R/W-0 R/W-1 — — — GPIOOUTVAL GPIODIR GPDES2 GPDES1 GPDES0 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 bit 7-5 Reserved: Set to ‘0’ bit 4 GPIOOUTVAL: GPIO Output Value (valid only when GP2 is set for GPIO output operation) 1 = Default output value is logic ‘1’ (factory default) 0 = Default output value is logic ‘0’ bit 3 GPIODIR: GPIO Direction (input or output; valid only when GP2 is set for GPIO operation) 1 = GPIO Input 0 = GPIO Output (factory default) bit 2-0 GPDES<2:0>: GP2 Designation 111 = Reserved 110 = Reserved 101 = Reserved 100 = Reserved 011 = Alternate function 1 (DAC1) 010 = Alternate function 0 (ADC2) 001 = Dedicated function operation (USBCFG) (factory default) 000 = GPIO operation (GPIO2) DS20005292B-page 14 2015 Microchip Technology Inc. MCP2221 REGISTER 1-15: GPSETTING3 REGISTER R/W-0 R/W-0 R/W-0 R/W-1 R/W-0 R/W-0 R/W-0 R/W-1 — — — GPIOOUTVAL GPIODIR GPDES2 GPDES1 GPDES0 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 bit 7-5 Reserved: Set to ‘0’ bit 4 GPIOOUTVAL: GPIO Output Value (valid only when GP3 is set for GPIO output operation) 1 = Default output value is logic ‘1’ (factory default) 0 = Default output value is logic ‘0’ bit 3 GPIODIR: GPIO Direction (input or output; valid only when GP3 is set for GPIO operation) 1 = GPIO Input 0 = GPIO Output (factory default) bit 2-0 GPDES<2:0>: GP3 Designation 111 = Reserved 110 = Reserved 101 = Reserved 100 = Reserved 011 = Alternate function 1 (DAC2) 010 = Alternate function 0 (ADC3) 001 = Dedicated function operation (LEDI2C) (factory default) 000 = GPIO operation (GPIO3) 2015 Microchip Technology Inc. DS20005292B-page 15 MCP2221 1.5 USB Module (HID, CDC and Transceiver Modules) The USB HID and CDC modules in the MCP2221 are full-speed USB 2.0-compliant. • Composite device (CDC + HID): - CDC: USB-to-UART Communications - HID: I2C Transactions, GPIO Control, Configuration and Miscellaneous Operations (ADC, DAC, Clock Output) • 128-byte buffer to handle data throughput at any UART Baud Rate: - 64-Byte Transmit - 64-Byte Receive • Fully Configurable VID and PID Assignments and Descriptors (stored on-chip) • Bus-Powered or Self-Powered 1.5.1 DESCRIPTORS During configuration, the supplied PC interface stores the descriptors in the MCP2221. 1.5.2 SUSPEND AND RESUME The USB Suspend and Resume signals are supported for power management of the MCP2221. The device enters Suspend mode when “Suspend Signaling” is detected on the bus. The MCP2221 exits Suspend mode when any of the following events occur: • “Resume Signaling” is detected or generated • A USB “Reset” signal is detected • A device Reset occurs 1.6 USB Transceiver The MCP2221 has a built-in USB 2.0 full-speed transceiver internally connected to the USB module. The USB transceiver obtains power from the VUSB pin, which is internally connected to the 3.3V regulator. The best electrical signal quality is obtained when VUSB is locally bypassed with a high-quality ceramic capacitor. 1.6.1 INTERNAL PULL-UP RESISTORS The MCP2221 devices have built-in pull-up resistors designed to meet the requirements for full-speed USB. 1.6.2 MCP2221 POWER OPTIONS The following are the main power options for the MCP2221: • USB Bus-Powered (5V) • 3.3V Self-Powered 1.6.2.1 Internal Power Supply Details MCP2221 offers various options for power supply. To meet the required USB signaling levels, the MCP2221 incorporates an internal LDO that is used solely by the USB transceiver to present the correct D+/D- voltage levels. Figure 1-2 shows the internal connections of the USB transceiver LDO in relation to the VDD power supply rail. The output of the USB transceiver LDO is tied to the VUSB line. A capacitor connected to the VUSB pin is required if the USB transceiver LDO provides the 3.3V supply to the transceiver. FIGURE 1-2: MCP2221 INTERNAL POWER SUPPLY DETAILS VDD IN LDO 3.3V VUSB D+ D- DS20005292B-page 16 OUT USB Transceiver 2015 Microchip Technology Inc. MCP2221 The provided VDD voltage has a direct influence on the voltage levels present on the GPIO and UART TX/RX pins. When VDD is 5V, all of these pins will have a logical ‘1’ around 5V with the variations specified in Section 4.1 “DC Characteristics”. For applications that require a 3.3V logical ‘1’ level, VDD must be connected to a power supply providing the 3.3V voltage. In this case, the internal USB transceiver LDO cannot provide the required 3.3V power. It is necessary to also connect the VUSB pin of the MCP2221 to the 3.3V power supply rail. This way, the USB transceiver is powered up directly from the 3.3V power supply. 1.6.2.2 Figure 1-4 shows a circuit where MCP2221’s internal LDO is used to provide 3.3V to the USB transceiver. The voltage on the VDD affects the voltage levels onto the UART and GPIO pins. With VDD at 5V, these pins will have a logic ‘1’ of 5V with the variations specified in Section 4.1 “DC Characteristics”. FIGURE 1-4: USB Bus-Powered (5V) In Bus Power Only mode, all power for the application is drawn from the USB (Figure 1-3). This is effectively the simplest power method for the device. FIGURE 1-3: During USB Suspend mode, the D+ or D- pull-up resistor must remain active, which will consume some of the allowed suspend current budget (500 µA/2.5 mA). The VUSB pin requires an external bypass capacitor with a value between 0.22 and 0.47 µF (ceramic cap). BUS POWER ONLY 5V (USB Bus) or external power supply TYPICAL POWER SUPPLY OPTION USING THE 5V PROVIDED BY THE USB VDD IN VBUS LDO 3.3V VDD VUSB VUSB OUT VSS D+ In order to meet the inrush current requirements of the USB 2.0 specifications, the total effective capacitance appearing across VBUS and ground must be no more than 10 µF. If it is more than 10 µF, some kind of inrush limiting is required. For more details on Inrush Current Limiting, search for that subject in the latest “Universal Serial Bus Specification”. D- USB Transceiver According to the USB 2.0 specification, all USB devices must also support a Low-Power Suspend mode. In the USB Suspend mode, devices must consume no more than 500 µA (or 2.5 mA for high-powered devices that are remote wake-up capable) from the 5V VBUS line of the USB cable. The host signals the USB device to enter Suspend mode by stopping all USB traffic to that device for more than 3 ms. The USB bus provides a 5V voltage. However, the USB transceiver requires 3.3V for the signaling (on D+ and D- lines). 2015 Microchip Technology Inc. DS20005292B-page 17 MCP2221 1.6.2.3 1.7 3.3V Self-Powered Typically, many embedded applications are using 3.3V power supplies. When such option is available in the target system, MCP2221 can be powered up from the existing 3.3V power supply rail. The typical connections for MCP2221 are shown in Figure 1-5. In this example, MCP2221 has both VDD and VUSB lines tied to the 3.3V rail. These tied connections disable the internal USB transceiver LDO of the MCP2221 to regulate the power supply on the VUSB pin. Another consequence is that the ‘1’ logical level on the GPIO pins will be at the 3.3V level, in accordance with the variations specified in Section 4.1 “DC Characteristics”. 1.6.2.4 Remote Wake-Up Capability The MCP2221 offers a mechanism for triggering a remote wake-up event for the USB host. The remote wake-up trigger works only with the external interrupt detector. In order to use this capability, GP1 must be designated for interrupt detection operation. Before the USB host goes into Sleep/Standby, the interrupt detector must be set up for detecting positive edges, negative edges or both; also, the detector flag must be cleared. After these conditions are met, the USB host can go into Sleep/Standby mode and it will be awakened whenever an external signal on GP1 triggers the interrupt detector. FIGURE 1-5: USING AN EXTERNALLY PROVIDED 3.3V POWER SUPPLY 5V (USB Bus) or external External 3.3V power supply LDO VDD IN LDO 3.3V VUSB OUT The Pin Mux module offers multiple functionalities for the GP pins. 1.7.1 D- DS20005292B-page 18 USB Transceiver CONFIGURABLE PIN FUNCTIONS The pins can be configured as: • GPIO – individually configurable general-purpose input or output • SSPND – USB Suspend state • USBCFG – indicates USB configuration status • LED_URX – indicates UART receive traffic (when seen from the MCP2221) • LED_UTX – indicates UART transmit traffic (when seen from the MCP2221) • LED_I2C – indicates I2C traffic • ADC1/2/3 – analog inputs connected to the internal 10-bit ADC • DAC1/2 – analog outputs connected to the same 5-bit DAC • CLKR – digital clock output (the nominal value is 12 MHz, but other values are possible) • IOC – external interrupt detector 1.7.1.1 GPIO Pin Function When the GPIO pin function is enabled for a given GP(n) pin, it will operate as a digital input or an output pin. When configured as a digital output, its value is controlled through the USB HID commands. When configured as a digital input, its logic value is read using USB HID commands. 1.7.1.2 SSPND Pin Function The SSPND pin (if enabled) reflects the USB state (Suspend/Resume). The pin is active low (factory-default setting; see the CHIPSETTING0 register for more details) when the Suspend state has been issued by the USB host. Likewise, the pin drives high after the Resume state is achieved. This pin allows the application to go into Low Power mode when USB communication is suspended and switches to a full active state when USB activity is resumed. 1.7.1.3 D+ Pin Mux Module USBCFG Pin Function The USBCFG pin (if enabled) starts out low (factory default setting; see the CHIPSETTING0 register for more details) during Power-Up or after Reset and goes high after the device successfully configures to the USB. The pin will go low when in Suspend mode and high when the USB resumes. 2015 Microchip Technology Inc. MCP2221 1.7.1.4 LED_URX 1.7.1.6 LED_I2C The “RX” in this pin name refers to the UART of the MCP2221. The LED_URX pin is an indicator of UART RX characters being received. The “I2C” in this pin name refers to the I2C module in the MCP2221. The LED_I2C pin is an indicator of I2C activity. This pin will pulse low or high (depending on the chip configuration settings; see the CHIPSETTING0 register for more details) for a period of time (a few milliseconds). This allows the application to provide a visual indication of the UART RX traffic. This pin will pulse low or high (depending on the chip configuration settings; see the CHIPSETTING0 register for details) for a period of time (a few milliseconds). This allows the application to provide a visual indication of the I2C traffic. 1.7.1.5 1.7.1.7 LED_UTX The “TX” in this pin name refers to the UART of the MCP2221. The LED_UTX pin is an indicator of UART TX characters being transmitted. This pin will pulse low or high (depending on the chip configuration settings; see the CHIPSETTING0 register for more details) for a period of time (a few milliseconds). This allows the application to provide a visual indication of the UART TX traffic. TABLE 1-5: GP Designation Bits <2:0> ADC1/2/3 When GP1/2/3 are configured for ADC operation, they will work as analog input pins and they are tied to the first three channels of the 10-bit ADC in the MCP2221. 1.7.1.8 DAC1/2 When GP2/3 are configured for DAC operation, they will work as analog output pins and they are tied to the output of the MCP2221’s 5-bit DAC. GP DESIGNATION TABLE Assignment GP0 GP1 GP2 GP3 GPIO GPIO GPIO GPIO SSPND CLK OUT USBCFG LED_I2C 000 GPIO 001 DEDICATED_FUNC 010 ALT_FUNC_0 LED_URX ADC1 ADC2 ADC3 011 ALT_FUNC_1 — LED_UTX DAC1 DAC2 100 ALT_FUNC_2 — IOC — — 2015 Microchip Technology Inc. DS20005292B-page 19 MCP2221 1.8 GPIO/ADC/DAC Module 1.8.3 This module communicates with the USB HID sub-module through the Bus Matrix module. It allows the manipulation of GPIOs, retrieving the ADC data and setting the DAC value. 1.8.1 GPIO When the GPs are configured for GPIO operation, those configured GPs can be used as digital inputs or outputs. When working as outputs, the GPs output logic levels (logic 0 or 1). 1.8.1.1 The DAC is 5-bit wide, has a single analog output and it uses its own VRM module. The DAC output voltage can be routed to GP2/3 (if GP2/3 are configured for DAC operation). If the GP2 and GP3 are configured for DAC operation, they will present the same analog voltage value because they are connected to the same DAC output. FIGURE 1-7: DAC SUB-MODULE DETAILS 5-Bit Value VRM 5-Bit DAC The ADC and DAC sub-modules each have a voltage reference module (VRM). Each VRM can be configured (at Power-Up and run time) to output one of the four voltage choices available. The VRM can provide the following voltages as a reference: • VDD – the VRM output is exactly the voltage present at the VDD pin of the MCP2221. It can take any value from 3.3 to 5V. • 1.024V – the VRM output of 1.024V is obtained from an internal voltage reference • 2.048V – the VRM output of 2.048V is obtained from an internal voltage reference • 4.096V – the VRM output of 4.096V is obtained from an internal voltage reference. If the VDD is lower than 4.096V, the VRM output will have the value of VDD. 1.8.2 DAC CONVERTER Analog Output CHIPSETTING2<5> Analog Mux VDD CHIPSETTING2<7:6> OFF 1.024V 2.048V 4.096V VRM ADC CONVERTER The ADC converter is producing 10-bit values and it uses its own VRM module. It features three external channels (connected to GP1/2/3 if configured for ADC operation). The sampling rate of the ADC is around 1000 sps. FIGURE 1-6: ADC SUB-MODULE DETAILS 3 Ext. Channels 10-Bit Value 10-bit ADC CHIPSETTING3<2> Analog Mux VDD CHIPSETTING3<4:3> OFF 1.024V 2.048V 4.096V VRM DS20005292B-page 20 2015 Microchip Technology Inc. MCP2221 1.9 CLKR 1.13 I2C™ Master Module When GP1 is configured for clock output operation, the GP1 pin will act as a digital output, providing a clock signal derived from the device’s internal clock. The clock’s nominal frequency is 12 MHz ± 0.25%. Other clock values and duty cycles are possible by setting different values that are associated with this mode of operation. The I2C Master module is responsible for the I2C traffic generation. The module is controlled through the USB HID, through the Bus Matrix module. 1.10 The I2C Master initiates all the I2C/SMBus transactions (being read or write operations) on the bus. IOC When GP1 is configured for Interrupt-on-Change (IOC) operation, GP1 acts as a digital input that is sensitive to positive and negative edges. Depending on the settings associated with this mode of operation, the GP1 can detect positive, negative or both edges. 1.11 1.11.1 RESET/POR RESET PIN The RST pin provides a method for triggering an external Reset of the device. A Reset is generated by holding the pin low. These devices have a noise filter in the Reset path, which detects and ignores small pulses. 1.11.2 POR A POR pulse is generated on-chip whenever VDD rises above a certain threshold. This allows the device to start in the initialized state when VDD is adequate for operation. To take advantage of the POR circuitry, tie the RST pin to VDD through a resistor (1 – 10 k). This will eliminate external RC components usually needed to create a POR delay. When the device starts normal operation (i.e., exits the Reset condition), device operating parameters (voltage, frequency, temperature, etc.) must be met to ensure operation. If these conditions are not achieved, the device must be held in Reset until the operating conditions are met. 1.12 Internal Oscillator The I2C module only implements the functionality of an I2C/SMBus Master. 1.13.1 I2C/SMBUS MASTER The I2C/SMBus Master module has the following capabilities: • sending/receiving data at a multitude of bit rates, up to 400 kbps • 7-bit Addressing mode • single data transfers of up to 65,535 bytes • clock-stretching (it allows the slower I2C Slaves to communicate) All the user data to be sent/transmitted over the I2C bus is conveyed to the USB host only through the USB HID interface. 1.14 Bus Matrix Module The Bus Matrix module manages the communication between various functional modules, such as: USB (HID and CDC), I2C, UART, GPIO/ADC/DAC, Config, IOC, CLKR, Pin Mux. 1.15 Config Module The Config module is in charge of the device settings and also of their (loading/modifying/access protection). uses non-volatile memory for storing device settings. storage of the management The module the Power-Up At Power-Up, the module loads the settings from the non-volatile storage area into an SRAM location (volatile settings). These settings represent the device’s configuration, along with other key parameters (e.g., string descriptors, VID/PID, etc.). After the settings are loaded in SRAM (volatile settings), they can be changed through the USB HID interface. The MCP2221 features an internal oscillator that provides a 12 MHz clock, which is needed for the USB modules (HID and CDC). The user can read/modify/change either settings (nonvolatile or volatile) through the same interface (USB HID). Full-speed USB is nominally 12 Mb/s. The clock signal’s accuracy is over temp (2,500 ppm maximum). The Config module contains the relevant Power-Up settings that are used by the MCP2221. A few examples of settings are: USB descriptors, GP settings, ADC, DAC, CLKR. The internal clock of the MCP2221 is fed into the CLKR module to provide a clock signal outside of the device. GP1 can be configured as a clock output pin providing a 12 MHz clock to the rest of the system. Other clock and duty-cycle values are possible by using different settings for this module. 2015 Microchip Technology Inc. DS20005292B-page 21 MCP2221 2.0 USB ENUMERATION PROCESS The MCP2221 implements the CDC class to support the USB-to-UART protocol converter functionality. Using USB-to-UART (CDC class) adapters with personal computers running the Windows operating system (OS) requires some consideration because of the way the Windows OS responds to their connection. When a USB-to-UART (CDC class) adapter is connected to the USB port of the PC, Windows searches for a driver. After a suitable driver is found, the system creates an entry in the registry. The entry stores relevant information about the USB-to-UART adapter, its driver and the associated COM port. The COM port and its number are legacy-type adapters, which are still supported by Windows OS. Historically, the COM ports in a computer are part of the computer’s motherboard and are assigned a different index number. With the advent of USB-to-UART adapters, the Windows OS kept the COM port concept and extended it to support the USB adapters. Whenever a USB-to-UART adapter is first connected to a PC, the system searches the registry for an entry that is suitable for the connected adapter. If one is not found, the system asks for a suitable driver. If this step is completed, it creates a registry entry, and assigns a COM port number as well. Then, whenever the USB-to-UART adapter is connected to that PC, the system checks the registry entry, loads the specified driver and assigns the given COM port number (as found in the registry entry). The case with no serial number is useful for test/validation of products using the MCP2221. The fact that all the tested boards are not supplying a serial number will force Windows to assign them the same COM port number (but only if connected to the same USB port). The MCP2221 is factory-set to not use a serial number. Later in the process, if a customer wants the benefits provided by using a serial number, the Configuration Utility from Microchip can be used to enable the MCP2221 to enumerate its serial number as well. The MCP2221 comes with a uniquely-provided serial number to be used during the USB enumeration process; however, this can be changed by the user in the Configuration Utility. The serial number enumeration enable/disable can be changed, as well, using the Configuration Utility. All the USB-related settings mentioned above are part of the Device Configuration (Chip Settings area) and they reside only in Flash. When the Chip Settings area (1st area) is being copied into the SRAM (at Power-Up), the USB settings are skipped (not copied into SRAM). During the enumeration process, the device can specify a serial number. If it does, this number is stored in the registry entry and it is used to assign the same COM port number to the adapter in question, no matter which USB port the adapter is connected to. USB-to-UART adapters have the option to not present a serial number during USB enumeration. In this case, the operating system would not be able to differentiate between two identical devices, if neither is providing its serial number. Each time one of these two devices (with no serial number provided during enumeration) is connected to the same USB port, they will have the same COM port number assigned. Both functionalities (with or without serial numbers) are very useful for different applications. When the serial number is provided, an adapter using the MCP2221 solution receives the same COM port number from a Windows machine, no matter which USB port they are connected to. DS20005292B-page 22 2015 Microchip Technology Inc. MCP2221 3.0 USB HID COMMUNICATION Except for the USB CDC and UART modules, all the other modules in the MCP2221 use USB HID protocol for communication. The USB HID protocol uses 64-byte reports. A typical command exchange starts with a 64-byte packet that is written by the USB Host (i.e., the PC). Afterward, the USB Host reads the response from the device as a 64-byte packet. 3.1 3.1.1 USB HID Commands/Responses STATUS/SET PARAMETERS This command offers many options for this device. It is used to poll for the status of the device. It is also used to establish certain I2C bus parameters/conditions. TABLE 3-1: Byte Index COMMAND STRUCTURE Function Description 0 Value 0x10 1 Don’t care 2 Cancel current I2C/SMBus transfer (sub-command) Effect Status/Set Parameters – command code Any value 0x10 When this value is put in this field, the device will cancel the current I2C/SMBus transfer and will attempt to free the I2C bus. This command is very useful since it can cancel a transfer and free the bus. An example would be when trying to communicate with a device using a wrong address. This will cause a timeout to occur. This timeout situation can be read using the “Status/Set Parameter” and the cancellation of the I2C/SMBus transfer can be achieved by this sub-command. Any other No effect. value 3 Set I2C/SMBus communication speed (sub-command) 0x20 When this value is put in this field, the device will take the next command field and interpret it as the system clock divider that will give the I2C/SMBus communication clock. Any other No effect. value 4 5-63 The I2C/SMBus system clock divider that will be used to establish the communication speed Don’t care 2015 Microchip Technology Inc. The value in this field is being taken into consideration only when the Byte Index 3 contains the code for establishing a new communication speed. In all the other cases, this field’s value won’t matter. Any value DS20005292B-page 23 MCP2221 3.1.1.1 Responses TABLE 3-2: Byte Index RESPONSE 1 STRUCTURE Function Description 0 0x10 1 2 Value Cancel transfer 3 4 0x00 Command completed successfully No special operation (i.e., Cancel current I2C/SMBus transfer) 0x10 The current I2C/SMBus transfer was marked for cancellation. The actual I2C/SMBus transfer cancellation and bus release will need some time (a few hundreds of microseconds, depending on the communication speed initially chosen for the canceled transfer) 0x11 The I2C engine (inside MCP2221) was already in Idle mode. The cancellation command had no effect. 0x00 No Set I2C/SMBus communication speed was issued. 0x20 The new I2C/SMBus communication speed is now considered. 0x21 The I2C/SMBus communication speed was not set (e.g., I2C transfer in progress). The divider value given at the same index in the command field Don’t care 8 Internal I2C state machine state value 9 Lower byte (16-bit value) of the requested I2C transfer length 10 Higher byte (16-bit value) of the requested I2C transfer length 11 Lower byte (16-bit value) of the already transferred (through I2C) number of bytes 12 Higher byte (16-bit value) of the already transferred (through I2C) number of bytes 13 Internal I2C data buffer counter 14 Current I2C communication speed divider value 15 Current I2C timeout value 16 Lower byte (16-bit value) of the I2C address being used 17 Higher byte (16-bit value) of the I2C address being used 18-21 Don’t care 22 Status/Set Parameters – command code echo 0x00 0x00 5-7 Effect Only in the case when the code for establishing a new communication speed is given at Byte Index 3. When the communication speed is not being set. Any value Any value SCL line value – as read from the pin DS20005292B-page 24 2015 Microchip Technology Inc. MCP2221 TABLE 3-2: Byte Index RESPONSE 1 STRUCTURE (CONTINUED) Function Description Value 23 SDA line value – as read from the pin 24 Interrupt edge detector state 25 I2 0, 1 or 2 26-45 Don’t care Any value C Read pending value 46 MCP2221 Hardware Revision Major (‘A’) 47 MCP2221 Hardware Revision Minor (‘6’) 48 MCP2221 Firmware Revision Major (‘1’) 49 MCP2221 Firmware Revision Minor (‘1’) 0 or 1 50-55 ADC Data (16-bit) values. 56-63 Don’t care 2015 Microchip Technology Inc. Effect This field is used by the USB host to know if the MCP2221 still has to read from a slave device. 3 x (16-bit) little-endian ADC channel values (CH0 LSB, CH0 MSB, CH1 LSB, CH1 MSB, CH2 LSB, CH2 MSB). Any value DS20005292B-page 25 MCP2221 3.1.2 READ FLASH DATA This command is used to read various important data structures and strings that are stored in Flash memory on the MCP2221. TABLE 3-3: Byte Index COMMAND STRUCTURE Function Description Value 0 1 2-63 Read Flash Data – command code 0x00 Read Chip Settings – it will read the MCP2221 flash settings 0x01 Read GP Settings – it will read the MCP2221 flash GP settings 0x02 Read USB Manufacturer Descriptor String – reads the USB Manufacturer String Descriptor used during the USB enumeration 0x03 Read USB Product Descriptor String – reads the USB Product String Descriptor used during the USB enumeration 0x04 Read USB Serial Number Descriptor String – reads the USB Serial Number String Descriptor that is used during USB enumeration. This serial number can be changed by the user through a specific USB HID command. 0x05 Read Chip Factory Serial Number – reads the factory-set serial number. This serial number cannot be changed. Any other value No meaning. The device will reply with a code for an unsupported command at Byte Index 1 in the Response report. Reserved 0x00 Responses TABLE 3-4: Byte Index 0xB0 Read Flash Data Sub-code. The value in this field will instruct the MCP2221 on what Flash data to be read. 3.1.2.1 Effect RESPONSE STRUCTURE Function Description Value Effect 0 0xB0 Read Flash Data – command code 1 0x00 Command completed successfully 0x01 Command not supported 2 3-63 Data structure length or Don’t care Data or Don’t care DS20005292B-page 26 Depends on the issued sub-command or the returned code at Byte Index 1 2015 Microchip Technology Inc. MCP2221 TABLE 3-5: Byte Index RESPONSE STRUCTURE – READ CHIP SETTINGS SUB-COMMAND Function Description 0 1 2 Structure length 3 Don’t care 4 Bit 7: CDC Serial Number Enumeration Enable 5 Value 0xB0 Read Flash Data – command code echo 0x00 Command completed successfully 1 The USB serial number will be used during the USB enumeration of the CDC interface. 0 No serial number descriptor will be presented during the USB enumeration. Bit 6: Initial value for LEDUARTRX pin option This value represents the logic level signaled when no UART RX activity takes places. When the UART RX (of the MCP2221) is receiving data, the LEDUARTRX pin will take the negated value of this bit. Bit 5: Initial value for LEDUARTTX pin option This value represents the logic level signaled when no UART TX transmission takes place. When the UART TX (of the MCP2221) is sending data, the LEDUARTTX pin will take the negated value of this bit. Bit 4: Initial value for LEDI2C pin option This value represents the logic level signaled when no I2C traffic occurs. When the I2C traffic is active, the LEDI2C pin (if enabled) will take the negated value of this bit. Bit 3: Initial value for SSPND pin option This value represents the logic level signaled when the device is not in Suspend mode. Upon entering Suspend mode, the SSPND pin (if enabled) will take the negated value of this bit. Bit 2: Initial value for USBCFG pin option This value represents the logic level signaled when the device is not USB configured. When the device will be USB configured, the USBCFG pin (if enabled) will take the negated value of this bit. Bits 1-0: Chip configuration security option 11-10 Permanently locked 01 Password-protected 00 Unsecured Bits 7-5 Don’t care Bits 4-0: Clock Output divider value 6 Effect Bits 7-6: DAC Reference voltage option Bit 5: DAC reference option If the GP pin (exposing the clock output) is enabled for clock output operation, the divider value will be used on the 48 MHz USB internal clock and its divided output will be sent to this pin. 11 Reference voltage is 4.096V (only if VDD is above this voltage) 10 Reference voltage is 2.048V 01 Reference voltage is 1.024V 00 Reference voltage is off (this is useful for the case in which the DAC uses other reference than VRM DAC; e.g., VDD) 1 DAC reference is VRM DAC voltage 0 DAC reference is VDD Bits 4-0: Power-Up DAC value 2015 Microchip Technology Inc. DS20005292B-page 27 MCP2221 TABLE 3-5: Byte Index 7 RESPONSE STRUCTURE – READ CHIP SETTINGS SUB-COMMAND (CONTINUED) Function Description Bit 7 Value Effect Don’t care Bit 6: Interrupt detection – negative edge If set, the interrupt detection flag will be set when a negative edge occurs. Bit 5: Interrupt detection – positive edge If set, the interrupt detection flag will be set when a positive edge occurs. Bit 4-3: ADC Reference Voltage 11 Reference voltage is 4.096V (only if VDD is above this voltage) 10 Reference voltage is 2.048V 01 Reference voltage is 1.024V 00 Reference voltage is off (this is useful for the case in which the ADC uses other reference than VRM ADC; e.g., VDD) Bit 2 1 DAC reference is VDD DAC voltage 0 DAC reference is VRM Bit 1 Don’t care Bit 0 Don’t care 8 Lower byte of the 16-bit USB VID value 9 Higher byte of the 16-bit USB VID value 10 Lower byte of the 16-bit USB PID value 11 Higher byte of the 16-bit USB PID value 12 USB power attributes(1) This value will be used by the MCP2221’s USB Configuration Descriptor (power attributes value) during the USB enumeration. 13 USB requested number of mA(s)(1) The requested mA value during the USB enumeration will represent the value at this index multiplied by 2. 14-63 Don’t care Note 1: Please consult the USB 2.0 specification for details on the correct values for power and attributes DS20005292B-page 28 2015 Microchip Technology Inc. MCP2221 TABLE 3-6: Byte Index RESPONSE STRUCTURE – READ GP SETTINGS SUB-COMMAND Function Description Value Effect 0 0xB0 Read Flash Data – command code echo 1 0x00 Command completed successfully 2 Structure length 3 4 Don’t care GP0 Power-Up Settings Bit 7-5: Don’t care Bit 4: GPIO Output value Bit 3: GPIO Direction (Input/Output) – Works only when GP0 is set for GPIO operation Bit 2-0: GP0 Designation 5 When GP0 is set as an output GPIO, this value will be present at the GP0 pin at Power-Up/Reset. 1 GPIO Input mode 0 GPIO Output mode 111-011 Don’t care 010 Alternate function 0 (LED UART RX) 001 Dedicated function operation (SSPND) 000 GPIO operation GP1 Power-Up Settings Bits7-5: Don’t care Bit 4: GPIO Output value Bit 3: GPIO Direction (Input/Output) – Works only when GP0 is set for GPIO operation Bit 2-0: GP1 Designation 6 When GP1 is set as an output GPIO, this value will be present at the GP1 pin at Power-Up/Reset. 1 GPIO Input mode 0 GPIO Output mode 111-101 Don’t care 001 Dedicated function operation (Clock Output) 100 Alternate function 2 (Interrupt Detection) 011 Alternate function 1 (LED UART TX) 010 Alternate function 0 (ADC1) 000 GPIO operation GP2 Power-Up Settings Bits7-5: Don’t care Bit 4: GPIO Output value Bit 3: GPIO Direction (Input/Output) – Works only when GP2 is set for GPIO operation Bit 2-0: GP1 Designation 2015 Microchip Technology Inc. When GP2 is set as an output GPIO, this value will be present at the GP2 pin at Power-Up/Reset. 1 GPIO Input mode 0 GPIO Output mode 111-100 Don’t care 011 Alternate function 1 (DAC1) 010 Alternate function 0 (ADC2) 001 Dedicated function operation (USB) 000 GPIO operation DS20005292B-page 29 MCP2221 TABLE 3-6: Byte Index 7 RESPONSE STRUCTURE – READ GP SETTINGS SUB-COMMAND (CONTINUED) Function Description Value Effect GP3 Power-Up Settings Bits7-5: Don’t care Bit 4: GPIO Output value When GP3 is set as an output GPIO, this value will be present at the GP3 pin at Power-Up/Reset. Bit 3: GPIO Direction (Input/Output) – Works only when GP3 is set for GPIO operation Bit 2-0: GP1 Designation 1 GPIO Input mode 0 GPIO Output mode 111-100 Don’t care 8-63 011 Alternate function 1 (DAC2) 010 Alternate function 0 (ADC3) 001 Dedicated function operation (LED I2C) 000 GPIO operation Don’t care TABLE 3-7: RESPONSE STRUCTURE – READ USB MANUFACTURER DESCRIPTOR STRING SUB-COMMAND Byte Index Value 0 0xB0 Read Flash Data – command code echo 1 0x00 Command completed successfully 2 (2) 3 0x03 4 + 2 x Unicode_char_number + 0 (1) The value at this index must always be 0x03. Higher byte of the 16-bit Unicode character. (1) Don’t care. Only if the USB string descriptor is less than 60-bytes long in total. (4 + 2 x Unicode_char_number + 2) - 63 2: Number of bytes + 2 in the provided USB Manufacturer Descriptor String. The actual String starts at Byte Index 4. Lower byte of the 16-bit Unicode character. 4 + 2 x Unicode_char_number + 1(1) Note 1: Effect “Unicode_char_number” value starts from 0 to a maximum of 30 (included). The value at Byte Index 2 must be 2 + 2 x (number of Unicode characters in the string). TABLE 3-8: RESPONSE STRUCTURE – READ USB PRODUCT DESCRIPTOR STRING SUB-COMMAND Byte Index Value Effect 0 0xB0 Read Flash Data – command code echo 1 0x00 Command completed successfully 2 (2) 3 0x03 Number of bytes + 2 in the provided USB Product Descriptor String. The actual String starts at Byte Index 4. The value at this index must always be 0x03 4 + 2 x Unicode_char_number + 0(1) Lower byte of the 16-bit Unicode character. (1) Higher byte of the 16-bit Unicode character. 4 + 2 x Unicode_char_number + 1 (4 + 2 x Unicode_char_number + 2) - 63(1) Note 1: 2: Don’t care. Only if the USB string descriptor is less than 60-bytes long (in total). “Unicode_char_number” value starts from 0 to a maximum of 30 (included). The value at Byte Index 2 must be 2 + 2 x (number of Unicode characters in the string). DS20005292B-page 30 2015 Microchip Technology Inc. MCP2221 TABLE 3-9: RESPONSE STRUCTURE – READ USB SERIAL NUMBER DESCRIPTOR STRING SUB-COMMAND Byte Index Value 0 0xB0 Read Flash Data – command code echo 1 0x00 Command completed successfully 2 (2) 3 4 + 2 x Unicode_char_number + 0 0x03 (1) The value at this index must always be 0x03 Higher byte of the 16-bit Unicode character (4 + 2 x Unicode_char_number + 2) - 63 (1) Don’t care. Only if the USB string descriptor is less than 60-bytes long in total. “Unicode_char_number” value starts from 0 to a maximum of 30 (included). The value at Byte Index 2 must be 2 + 2 x (number of Unicode characters in the string). TABLE 3-10: RESPONSE STRUCTURE – READ CHIP FACTORY SERIAL NUMBER SUB-COMMAND(1) Byte Index Value 0 0xB0 Read Flash Data – command code echo 1 0x00 Command completed successfully 2 3 (4 + Structure length) - 63 Effect Structure length Don’t care 4 - (4 + Structure length - 1) Note 1: The number of bytes + 2 in the provided USB Serial Number Descriptor String. The actual String starts at Byte Index 4 Lower byte of the 16-bit Unicode character 4 + 2 x Unicode_char_number + 1(1) Note 1: 2: Effect Structure data – Factory Serial Number String Don’t care The Chip Serial Number is typically 8 bytes in length. 2015 Microchip Technology Inc. DS20005292B-page 31 MCP2221 3.1.3 WRITE FLASH DATA This command is used to write various important data structures and strings into the Flash memory of the device. TABLE 3-11: Byte Index COMMAND STRUCTURE Function Description 0 1 2-63 Write Flash Data Sub-code. The value in this field will instruct the MCP2221 about the particular Flash settings to be altered. Data to be written DS20005292B-page 32 Value Effect 0xB1 Write Flash Data – command code 0x00 Write Chip Settings – it will write the MCP2221 flash settings 0x01 Write GP Settings – it will write the MCP2221 flash GP settings 0x02 Write USB Manufacturer Descriptor String – writes the USB Manufacturer String Descriptor used during the USB enumeration 0x03 Write USB Product Descriptor String – writes the USB Product String Descriptor used during the USB enumeration 0x04 Write USB Serial Number Descriptor String – writes the USB Serial Number String Descriptor used during the USB enumeration Any other value No meaning. The device will reply with a code for an unsupported command at Byte Index 1 in the response report. Data format depends on the Write Flash Data Sub-code (at Byte Index 1). 2015 Microchip Technology Inc. MCP2221 TABLE 3-12: Byte Index SUB-COMMAND STRUCTURE – WRITE CHIP SETTINGS SUB-COMMAND Function Description Value Effect 0 0xB1 Write Flash Data – command code 1 0x00 Write Chip Settings – it will write the MCP2221 flash device settings 2 Bit 7: CDC Serial Number Enumeration Enable. The USB serial number will be used during the USB enumeration of the CDC interface. 0 No serial number descriptor will be presented during the USB enumeration. Bit 6: Initial value for LEDUARTRX pin option This value represents the logic level signaled when no UART RX activity takes places. When the UART RX (of the MCP2221) is receiving data, the LEDUARTRX pin will take the negated value of this bit. Bit 5: Initial value for LEDUARTTX pin option This value represents the logic level signaled when no UART TX transmission takes place. When the UART TX (of the MCP2221) is sending data, the LEDUARTTX pin will take the negated value of this bit. Bit 4: Initial value for LEDI2C pin option This value represents the logic level signaled when no I2C traffic occurs. When I2C traffic is active, the LEDI2C pin (if enabled) will take the negated value of this bit. Bit 3: Initial value for SSPND pin option This value represents the logic level signaled when the device is not in Suspend mode. Upon entering Suspend mode, the SSPND pin (if enabled) will take the negated value of this bit. Bit 2: Initial value for USBCFG pin option This value represents the logic level signaled when the device is not USB configured. When the device will be USB-configured, the USBCFG pin (if enabled) will take the negated value of this bit. Bit 1-0: Chip Configuration Security Option 3 1 Bit 7-5 11-10 Permanently locked 01 Password-protected 00 Unsecured Don’t care Bit 4-0: Clock Output divider value 4 Bit 7-6: DAC Reference voltage option Bit 5: DAC reference option If the GP pin (exposing the clock output) is enabled for clock output operation, the divider value will be used on the 48 MHz USB internal clock and its divided output will be sent to this pin. 11 Reference voltage is 4.096V (only if VDD is above this voltage) 10 Reference voltage is 2.048V 01 Reference voltage is 1.024V 00 Reference voltage is off (this is useful for the case in which the DAC uses other reference than VRM DAC, i.e., VDD) 1 DAC reference is VDD 0 DAC reference is VRM DAC voltage Bit 4-0: Power-Up DAC value 2015 Microchip Technology Inc. DS20005292B-page 33 MCP2221 TABLE 3-12: Byte Index 5 SUB-COMMAND STRUCTURE – WRITE CHIP SETTINGS SUB-COMMAND Function Description Bit 7 Value Effect Don’t care Bit 6: Interrupt detection – negative edge If set, the interrupt detection flag will be set when a negative edge occurs. Bit 5: Interrupt detection – positive edge If set, the interrupt detection flag will be set when a positive edge occurs. Bit 4-3: ADC Reference Voltage Bit 2: ADC Reference Option 11 Reference voltage is 4.096V (only if VDD is above this voltage). 10 Reference voltage is 2.048V 01 Reference voltage is 1.024V 00 Reference voltage is off (this is useful for the case in which the ADC uses other reference than VRM ADC; e.g., VDD) 1 ADC reference voltage is VRM ADC 0 ADC reference voltage is VDD Bit 1 Don’t care Bit 0 Don’t care 6 Lower byte of the 16-bit USB VID value. 7 Higher byte of the 16-bit USB VID value. 8 Lower byte of the 16-bit USB PID value. 9 Higher byte of the 16-bit USB PID value. 10 USB power attributes This value will be used by the MCP2221’s USB Configuration Descriptor (power attributes value) during the USB enumeration. 11 USB requested number of mA(s) The requested mA value during the USB enumeration will represent the value at this index multiplied by 2. 12-19 8-bytes password (for Flash modifications protection) 20-63 DS20005292B-page 34 Don’t care 2015 Microchip Technology Inc. MCP2221 TABLE 3-13: Byte Index SUB-COMMAND STRUCTURE – WRITE GP SETTINGS SUB-COMMAND Function Description Value Effect 0 0xB1 Write Flash Data – command code 1 0x01 Write GP Settings – it will write the MCP2221 flash GP settings 2 GP0 Power-Up Settings Bit 7-5: Don’t care Bit 4: GPIO Output value Bit 3: GPIO Direction (Input/Output) – Works only when GP0 is set for GPIO operation. Bit 2-0: GP0 Designation 3 When GP0 is set as an output GPIO, this value will be present at the GP0 pin at Power-Up/Reset. 1 GPIO Input mode 0 GPIO Output mode 111-011 Dedicated function operation (SSPND) 001 Alternate function 0 (LED UART RX) 000 GPIO operation GP1 Power-Up Settings Bit 7-5: Don’t care Bit 4: GPIO Output value Bit 3: GPIO Direction (Input/Output) – Works only when GP1 is set for GPIO operation. Bit 2-0: GP1 Designation 4 Don’t care 010 When GP1 is set as an output GPIO, this value will be present at the GP1 pin at Power-Up/Reset. 1 GPIO Input mode 0 GPIO Output mode 111-101 Don’t care 100 Alternate function 2 (Interrupt Detection) 011 Alternate function1 (LED UART TX) 010 Alternate function 0 (ADC1) 001 Dedicated function operation (Clock Output) 000 GPIO operation GP2 Power-Up Settings Bit 7-5: Don’t care Bit 4: GPIO Output value Bit 3: GPIO Direction (Input/Output) – Works only when GP2 is set for GPIO operation. Bit 2-0: GP2 Designation 2015 Microchip Technology Inc. When GP2 is set as an output GPIO, this value will be present at the GP2 pin at Power-Up/Reset. 1 GPIO Input mode 0 GPIO Output mode 111-100 Don’t care 011 Alternate function1 (DAC1) 010 Alternate function 0 (ADC2) 001 Dedicated function operation (Clock Output) 000 GPIO operation DS20005292B-page 35 MCP2221 TABLE 3-13: Byte Index 5 SUB-COMMAND STRUCTURE – WRITE GP SETTINGS SUB-COMMAND (CONTINUED) Function Description Value Effect GP3 Power-Up Settings Bit 7-5: Don’t care Bit 4: GPIO Output value When GP3 is set as an output GPIO, this value will be present at the GP2 pin at Power-Up/Reset. Bit 3: GPIO Direction (Input/Output) – Works only when GP3 is set for GPIO operation. Bit 2-0: GP3 Designation 1 GPIO Input mode 0 GPIO Output mode 111-100 6-63 Don’t care 011 Alternate function 1 (DAC2) 010 Alternate function 0 (ADC3) 001 Dedicated function operation (LED I2C) 000 GPIO operation Don’t care TABLE 3-14: SUB-COMMAND STRUCTURE – WRITE USB MANUFACTURER DESCRIPTOR STRING SUB-COMMAND Byte Index Value 0 0xB1 Write Flash Data – command code 1 0x02 Write USB Manufacturer Descriptor String – writes the USB Manufacturer String Descriptor used during the USB enumeration 2 (2) 3 0x03 Effect Number of bytes + 2 in the provided USB Serial Number Descriptor String The value at this index must always be 0x03. 0(1) Lower byte of the 16-bit Unicode character. 4 + 2 x Unicode_char_number + 1(1) Higher byte of the 16-bit Unicode character. 4 + 2 x Unicode_char_number + Note 1: 2: “Unicode_char_number” value starts from 0 to a maximum of 30 (included). The value at Byte Index 2 must be 2 + 2 x (number of Unicode characters in the string). TABLE 3-15: SUB-COMMAND STRUCTURE – WRITE USB PRODUCT DESCRIPTOR STRING SUB-COMMAND Byte Index Value 0 0xB1 Write Flash Data – command code 1 0x03 Write USB Product Descriptor String – writes the USB Product String Descriptor used during the USB enumeration 2 (2) 3 0x03 Effect Number of bytes + 2 in the provided USB Serial Number Descriptor String. The actual String starts at Byte Index 4. The value at this index must always be 0x03. (1) Lower byte of the 16-bit Unicode character 4 + 2 x Unicode_char_number + 1(1) Higher byte of the 16-bit Unicode character 4 + 2 x Unicode_char_number + 0 Note 1: 2: “Unicode_char_number” value starts from 0 to a maximum of 30 (included). The value at Byte Index 2 must be 2 + 2 x (number of Unicode characters in the string). DS20005292B-page 36 2015 Microchip Technology Inc. MCP2221 TABLE 3-16: SUB-COMMAND STRUCTURE – WRITE USB SERIAL NUMBER DESCRIPTOR STRING SUB-COMMAND Byte Index Value 0 0xB1 Write Flash Data – command code 1 0x04 Write USB Serial Number Descriptor String – writes the USB Serial Number String Descriptor used during the USB enumeration 2 (2) Number of bytes + 2 in the provided USB Serial Number Descriptor String. The actual String starts at Byte Index 4 3 0x03 Effect The value at this index must always be 0x03. (1) Lower byte of the 16-bit Unicode character 4 + 2 x Unicode_char_number + 1(1) Higher byte of the 16-bit Unicode character 4 + 2 x Unicode_char_number + 0 Note 1: 2: 3.1.3.1 “Unicode_char_number” value starts from 0 to a maximum of 30 (included). The value at Byte Index 2 must be 2 + 2 x (number of Unicode characters in the string). Responses TABLE 3-17: RESPONSE STRUCTURE – READ CHIP FACTORY SERIAL NUMBER SUB-COMMAND Byte Index Value 0 0xB1 Write Flash Data – command code 1 0x00 Command completed successfully 0x02 Command not supported 0x03 Command not allowed 2-63 Effect Don’t care 2015 Microchip Technology Inc. DS20005292B-page 37 MCP2221 3.1.4 SEND FLASH ACCESS PASSWORD This command is used to send a user-supplied password that will be compared to the one stored in the device’s Flash when Flash updates (Chip/GP configuration, USB strings) are required and the Flash data is password-protected. In the case where no protection mechanism is in place or the Flash data has been permanently locked, this command has no meaning. TABLE 3-18: Byte Index Value 0 0xB2 1 Don’t care COMMAND STRUCTURE Effect Send Flash Access Password – command code 2 Password byte 1 3 Password byte 2 4 Password byte 3 5 Password byte 4 6 Password byte 5 7 Password byte 6 8 Password byte 7 9 Password byte 8 10-63 3.1.4.1 Don’t care Responses TABLE 3-19: RESPONSE 1 STRUCTURE Byte Index Value 0 0xB2 Send Flash Access Password – command code echo 1 0x00 Command completed successfully 0x03 Command not allowed (when the number of failed Flash updates has been reached, no password will be accepted) 2-63 Effect Don’t care DS20005292B-page 38 2015 Microchip Technology Inc. MCP2221 I2C™ WRITE DATA 3.1.5 This command is used to write user-given data to the I2C Slave device (the speed is specified by the STATUS/SET Parameters command). The command will have the following effects: • The I2C engine will send the “START” condition. • The selected I2C slave address is sent next and the I2C engine will wait for the slave to send an acknowledge bit. • The user data follows next and the I2C engine awaits for the acknowledge bit from the slave. • If the requested length is more than 60 bytes, subsequent user bytes will be sent on the bus. • When the user data length (being sent on the bus) reaches the requested length, the I2C engine will send the “STOP” condition on the bus. TABLE 3-20: Byte Index Value 0 0x90 COMMAND STRUCTURE(1) Effect I2C Write Data – command code 1 Low Byte Requested I2C transfer length – 16-bit value – low byte 2 High Byte Requested I2C transfer length – 16-bit value – high byte 3 I2C Slave 8-bit value representing the I2C slave address to communicate with (even – address to write, Address odd – address to read) (Note 2) User data to be sent to the selected I2C slave device 4-63 Note 1: 2: 3.1.5.1 When the requested transfer length is more than 60 bytes, subsequent “I2C Write Data” commands will transport the reminder of the user data (till the requested length). The I2C slave address is represented on 8 bits, with even values for writes and odd for reads. To get the 8-bit address value out of a 7-bit address, the 7-bit value needs to be shifted left by 1 position. For write operations use the shifted value, while for reads add 1 to the shifted value. Responses TABLE 3-21: RESPONSE 1 STRUCTURE Byte Index Value 0 0x90 I2C Write Data – command code echo 1 0x00 Command completed successfully 0x01 I2C Engine is busy (command not completed) Internal I2C Engine state (at the moment the command was issued) – useful for monitoring the status of the I2C Engine 2 3-63 Effect Don’t care 2015 Microchip Technology Inc. DS20005292B-page 39 MCP2221 I2C™ WRITE DATA REPEATED-START 3.1.6 This command is used to write user-given data to the I2C Slave device (the speed is specified by the STATUS/SET Parameters command). The command will have the following effects: • The I2C engine will send the “Repeated-START” condition. • The selected I2C slave address is sent next and the I2C engine will wait for the slave to send an acknowledge bit. TABLE 3-22: Byte Index Value 0 0x92 • The user data follows next and the I2C engine waits for the acknowledge bit from the slave. • If the requested length is more than 60 bytes, subsequent user bytes will be sent on the bus. • When the user data length (being sent on the bus) reaches the requested length, the I2C engine will send the “STOP” condition on the bus. COMMAND STRUCTURE (1) Effect I2C Write Data Repeated-START – command code (cI2C_CMD_RSTART_WRDATA7) 1 Low Byte Requested I2C transfer length – 16-bit value – low byte 2 High Byte Requested I2C transfer length – 16-bit value – high byte 3 I2C Slave 8-bit value representing the I2C slave address to communicate with (even – address to write, Address odd – address to read) (Note 2) User data to be sent to the selected I2C slave device 4-63 Note 1: 2: 3.1.6.1 When the requested transfer length is more than 60 bytes, subsequent “I2C Write Data Repeated-START” commands will transport the reminder of the user data (till the requested length). The I2C slave address is represented on 8 bits, with even values for writes and odd for reads. To get the 8-bit address value out of a 7-bit address, the 7-bit value needs to be shifted left by 1 position. For write operations use the shifted value, while for reads add 1 to the shifted value. Responses TABLE 3-23: RESPONSE 1 STRUCTURE Byte Index Value 0 0x92 I2C Write Data Repeated-START – command code echo (cI2C_CMD_RSTART_WRDATA7) 1 0x00 Command completed successfully 0x01 I2C Engine is busy (command not completed) Internal I2C Engine state (at the moment the command was issued) – useful for monitoring the status of the I2C Engine 2 3-63 Effect Don’t care DS20005292B-page 40 2015 Microchip Technology Inc. MCP2221 I2C™ WRITE DATA NO STOP 3.1.7 This command is used to write user-given data to the I2C Slave device (the speed is specified by the STATUS/SET Parameters command). The command will have the following effects: • The I2C engine will send the “START” condition. • The selected I2C slave address is sent next and the I2C engine will wait for the slave to send an acknowledge bit. TABLE 3-24: Byte Index Value 0 0x94 • The user data follows next and the I2C engine waits for the acknowledge bit from the slave. • If the requested length is more than 60 bytes, subsequent user bytes will be sent on the bus. • When the user data length (being sent on the bus) reaches the requested length, the I2C engine will not send the “STOP” condition on the bus. COMMAND STRUCTURE (1) Effect I2C Write Data No STOP – command code 1 Low Byte Requested I2C transfer length – 16-bit value – low byte 2 High Byte Requested I2C transfer length – 16-bit value – high byte 3 I2C Slave 8-bit value representing the I2C slave address to communicate with (even – address to write, Address odd – address to read) (Note 2) User data to be sent to the selected I2C slave device 4-63 Note 1: 2: 3.1.7.1 When the requested transfer length is more than 60 bytes, subsequent “I2C Write Data No STOP” commands will transport the reminder of the user data (till the requested length). The I2C slave address is represented on 8 bits, with even values for writes and odd for reads. To get the 8-bit address value out of a 7-bit address, the 7-bit value needs to be shifted left by 1 position. For write operations use the shifted value, while for reads add 1 to the shifted value. Responses TABLE 3-25: RESPONSE 1 STRUCTURE Byte Index Value 0 0x94 I2C Write Data No STOP – command code echo 1 0x00 Command completed successfully 0x01 I2C Engine is busy (command not completed) Internal I2C Engine state (at the moment the command was issued) – useful for monitoring the status of the I2C Engine 2 3-63 Effect Don’t care 2015 Microchip Technology Inc. DS20005292B-page 41 MCP2221 I2C™ READ DATA 3.1.8 This command is used to read user-given data to the I2C Slave device (the speed is specified by the STATUS/SET Parameters command). The command will have the following effects: • The I2C engine will send the “START” condition. • The selected I2C slave address is sent next and the I2C engine will wait for the slave to send an acknowledge bit. TABLE 3-26: Byte Index Value 0 0x91 • The user data is read next and the I2C engine sends the acknowledge bit to the slave. • If the requested length is more than 60 bytes, subsequent user bytes will be read from the I2C slave on the bus. • When the user data length (being sent on the bus) reaches the requested length, the I2C engine will send the “STOP” condition on the bus. COMMAND STRUCTURE Effect I2C Read Data – command code 1 Low Byte Requested I2C transfer length – 16-bit value – low byte 2 High Byte Requested I2C transfer length – 16-bit value – high byte 3 I2C Slave 8-bit value representing the I2C slave address to communicate with (even – address to write, Address odd – address to read) (Note 1) 4-63 Note 1: 3.1.8.1 Don’t care The I2C slave address is represented on 8 bits, with even values for writes and odd for reads. To get the 8-bit address value out of a 7-bit address, the 7-bit value needs to be shifted left by 1 position. For write operations use the shifted value, while for reads add 1 to the shifted value. Responses TABLE 3-27: RESPONSE 1 STRUCTURE Byte Index Value 0 0x91 I2C Read Data – command code echo 1 0x00 Command completed successfully 0x01 I2C Engine is busy (command not completed) Internal I2C Engine state (at the moment the command was issued) – useful for monitoring the I2C Engine’s status 2 3-63 Effect Don’t care DS20005292B-page 42 2015 Microchip Technology Inc. MCP2221 I2C™ READ DATA REPEATED-START 3.1.9 This command is used to read user-given data to the I2C Slave device (the speed is specified by the STATUS/SET Parameters command). The command will have the following effect: • The I2C engine will send the “Repeated-START” condition. • The selected I2C slave address is sent next and the I2C engine will wait for the slave to send an acknowledge bit. TABLE 3-28: • The user data is read next and the I2C engine sends the acknowledge bit to the slave. • If the requested length is more than 60 bytes, subsequent user bytes will be read from the I2C slave on the bus. • When the user data length (being sent on the bus) reaches the requested length, the I2C engine will send the “STOP” condition on the bus. COMMAND STRUCTURE Byte Index Value Effect 0 0x93 I2C Read Data Repeated-START – command code 1 Low Byte Requested I2C transfer length – 16-bit value – low byte 2 High Byte Requested I2C transfer length – 16-bit value – high byte 3 I2C Slave 8-bit value representing the I2C slave address to communicate with (even – address to write, Address odd – address to read) (Note 1) 4-63 Note 1: 3.1.9.1 Don’t care The I2C slave address is represented on 8 bits, with even values for writes and odd for reads. To get the 8-bit address value out of a 7-bit address, the 7-bit value needs to be shifted left by 1 position. For write operations use the shifted value, while for reads add 1 to the shifted value. Responses TABLE 3-29: RESPONSE 1 STRUCTURE Byte Index Value 0 0x93 I2C Read Data Repeated-START – command code echo 1 0x00 Command completed successfully 0x01 I2C Engine is busy (command not completed) Internal I2C Engine state (at the moment the command was issued) – useful for monitoring the status of the I2C Engine 2 3-63 Effect Don’t care 2015 Microchip Technology Inc. DS20005292B-page 43 MCP2221 3.1.10 I2C READ DATA – GET I2C DATA This command is used to read back the data from the I2C Slave device. TABLE 3-30: Byte Index Value 0 0x40 1-63 Don’t care 3.1.10.1 COMMAND STRUCTURE Effect I2C Read Data – Get I2C Data – command code Responses TABLE 3-31: RESPONSE 1 STRUCTURE Byte Index Value 0 0x40 I2C Read Data – Get I2C Data – command code echo 1 0x00 Command completed successfully 0x41 Error reading the I2C slave data from the I2C engine Internal I2C Engine state (at the moment the command was issued) – useful for monitoring the I2C Engine’s status 2 3 4-63 Effect 0-60 The number of read-back data bytes to follow in this packet: from 0 to a maximum of 60 bytes of read-back bytes 127 This value is signaled when an error has occurred and the following data should not be taken into account User Data or Don’t care DS20005292B-page 44 2015 Microchip Technology Inc. MCP2221 3.1.11 SET GPIO OUTPUT VALUES This command is used to change the GPIO output value for those GP pins assigned for GPIO operation (GPIO outputs). TABLE 3-32: Byte Index COMMAND STRUCTURE Function Description Value 0 0x50 1 Don’t care 2 3 Alter GP0 output (enable/disable) GP0 output value 0x00 Effect Set GPIO Output Values – command code Do not modify GP0 output (if GP0 is set as GPIO output) Any other The next byte (index 3) will be the value used to set GP0 output (only if value GP0 is set for GPIO output) 0x00 GP0 (if set up for GPIO output operation) will take a logical value of ‘0’ Any other GP0 (if set up for GPIO output operation) will take a logical value of ‘1’ value 4 5 6 7 Alter GP0 pin direction (enable/disable) GP0 pin direction (input or output) Alter GP1 output (enable/disable) GP1 output value 0x00 Leave the GP0 GPIO designation as is (input or output) Any other The next byte (index 5) will be the value used to set GP0’s pin direction value (only if GP0 is set for GPIO operation) 0x00 Set GP0 GPIO as output Any other GP0 (if set up for GPIO operation) will be set as a digital input value 0x00 Do not modify GP1 output (if GP1 is set as GPIO output) Any other The next byte (index 7) will be the value used to set GP1 output (only if value GP1 is set for GPIO output) 0x00 GP1 (if set up for GPIO output operation) will take a logical value of ‘0’ Any other GP1 (if set up for GPIO output operation) will take a logical value of ‘1’ value 8 9 10 11 Alter GP1 pin direction (enable/disable) GP1 pin direction (input or output) Alter GP2 output (enable/disable) GP2 output value 0x00 Leave the GP1 GPIO designation as is (input or output) Any other The next byte (index 9) will be the value used to set GP1’s pin direction value (only if GP1 is set for GPIO operation) 0x00 Set GP1 GPIO as output Any other GP1 (if set up for GPIO operation) will be set as a digital input value 0x00 Do not modify GP2 output (if GP2 is set as GPIO output) Any other The next byte (index 11) will be the value used to set GP2 output (only if value GP2 is set for GPIO output) 0x00 The GP2 (if GP2 is set up for GPIO output operation) will take a logical value of ‘0’ Any other GP2 (if GP2 is set up for GPIO output operation) will take a logical value value of ‘1’ 12 13 14 Alter GP2 pin direction (enable/disable) GP2 pin direction (input or output) Alter GP3 output (enable/disable) 2015 Microchip Technology Inc. 0x00 Leave the GP2 GPIO designation as is (input or output) Any other The next byte (index 13) will be the value used to set GP2’s pin direction value (only if GP2 is set for GPIO operation) 0x00 Set GP2 GPIO as output Any other GP2 (if set up for GPIO operation) will be set as a digital input value 0x00 Do not modify GP3 output (if GP3 is set as GPIO output) Any other The next byte (index 11) will be the value used to set GP3 output (only if value GP3 is set for GPIO output) DS20005292B-page 45 MCP2221 TABLE 3-32: Byte Index 15 COMMAND STRUCTURE (CONTINUED) Function Description Value Effect GP3 output value 0x00 GP3 (if set up for GPIO output operation) will take a logical value of ‘0’. Any other GP3 (if set up for GPIO output operation) will take a logical value of ‘1’ value 16 17 Alter GP3 pin direction (enable/disable) GP3 pin direction (input or output) 18-63 Reserved 3.1.11.1 Function Description 1 3 0x00 Set GP3 GPIO as output Any other GP3 (if set up for GPIO operation) will be set as a digital input value 0x00 RESPONSE 1 STRUCTURE 0 2 Leave the GP3 GPIO designation as is (input or output) Responses TABLE 3-33: Byte Index 0x00 Any other The next byte (index 17) will be the value used to set GP3’s pin direction value (only if GP3 is set for GPIO operation) Alter GP0 output (enable/disable) status GP0 output value status Value Effect 0x50 Set GPIO Output Values – command code 0x00 Command completed successfully 0xEE If GP0 is not set for GPIO operation Any other If GP0 is already set for GPIO operation, the value will be copied from value the same byte index in the command structure 0xEE If GP0 is not set for GPIO operation Any other If GP0 is already set for GPIO operation, the value will be copied from value the same byte index in the command structure 4 5 6 7 Alter GP0 pin direction (enable/disable) GP1 pin direction (input or output) Alter GP1 output (enable/disable) status GP1 output value status 0xEE If GP0 is not set for GPIO operation Any other If GP0 is already set for GPIO operation, the value will be copied from value the same byte index in the command structure 0xEE If GP1 is not set for GPIO operation Any other If GP1 is already set for GPIO operation, the value will be copied from value the same byte index in the command structure 0xEE If GP1 is not set for GPIO operation Any other If GP1 is already set for GPIO operation, the value will be copied from value the same byte index in the command structure 0xEE If GP1 is not set for GPIO operation Any other If GP1 is already set for GPIO operation, the value will be copied from value the same byte index in the command structure 8 9 10 Alter GP1 pin direction (enable/disable) GP1 pin direction (input or output) Alter GP2 output (enable/disable) status DS20005292B-page 46 0xEE If GP1 is not set for GPIO operation Any other If the GP1 is already set for GPIO operation, the value will be copied value from the same byte index in the command structure 0xEE If GP1 is not set for GPIO operation Any other If GP1 is already set for GPIO operation, the value will be copied from value the same byte index in the command structure 0xEE If GP2 is not set for GPIO operation Any other If GP2 is already set for GPIO operation, the value will be copied from value the same byte index in the command structure 2015 Microchip Technology Inc. MCP2221 TABLE 3-33: RESPONSE 1 STRUCTURE (CONTINUED) Byte Index Function Description Value 11 GP2 output value status 0xEE Effect If GP2 is not set for GPIO operation Any other If GP2 is already set for GPIO operation, the value will be copied from value the same byte index in the command structure 12 13 14 15 Alter GP2 pin direction (enable/disable) GP2 pin direction (input or output) Alter GP3 output (enable/disable) status GP3 output value status 0xEE If GP2 is not set for GPIO operation Any other If GP2 is already set for GPIO operation, the value will be copied from value the same byte index in the command structure 0xEE If GP2 is not set for GPIO operation Any other If GP2 is already set for GPIO operation, the value will be copied from value the same byte index in the command structure 0xEE If GP3 is not set for GPIO operation Any other If GP3 is already set for GPIO operation, the value will be copied from value the same byte index in the command structure 0xEE If GP3 is not set for GPIO operation Any other If GP3 is already set for GPIO operation, the value will be copied from value the same byte index in the command structure 16 17 Alter GP3 pin direction (enable/disable) GP3 pin direction (input or output) 18-63 2015 Microchip Technology Inc. 0xEE If GP3 is not set for GPIO operation Any other If GP3 is already set for GPIO operation, the value will be copied from value the same byte index in the command structure 0xEE If GP3 is not set for GPIO operation Any other If GP3 is already set for GPIO operation, the value will be copied from value the same byte index in the command structure Don’t care DS20005292B-page 47 MCP2221 3.1.12 GET GPIO VALUES This command is used to retrieve the GPIO direction and pin value for those GP pins assigned for GPIO operation (GPIO inputs or outputs). TABLE 3-34: Byte Index Value 0 0x51 1-63 Don’t care 3.1.12.1 Effect Get GPIO Values – command code Responses TABLE 3-35: Byte Index COMMAND STRUCTURE RESPONSE 1 STRUCTURE Function Description Value Effect 0 0x51 Get GPIO Values – command code 1 0x00 Command completed successfully 0xEE If GP0 is not set for GPIO operation 2 GP0 pin value Other values If GP0 is already set for GPIO operation, the value represents the GP0 logic (0x00 or 0x01) pin value 3 4 GP0 direction value GP1 pin value 0xEF If GP0 is not set for GPIO operation Other values If GP0 is already set for GPIO operation, the value represents the GP0 pin (0x00 or 0x01) designation (0x00 for output and 0x01 for input) 0xEE If GP1 is not set for GPIO operation Other values If GP1 is already set for GPIO operation, the value represents the GP1 logic (0x00 or 0x01) pin value 5 6 GP1 direction value GP2 pin value 0xEF If GP1 is not set for GPIO operation Other values If GP1 is already set for GPIO operation, the value represents the GP1 pin (0x00 or 0x01) designation (0x00 for output and 0x01 for input) 0xEE If GP2 is not set for GPIO operation Other values If GP2 is already set for GPIO operation, the value represents the GP2 logic (0x00 or 0x01) pin value 7 8 GP2 direction value GP3 pin value 0xEF If GP2 is not set for GPIO operation Other values If GP2 is already set for GPIO operation, the value represents the GP2 pin (0x00 or 0x01) designation (0x00 for output and 0x01 for input) 0xEE If GP3 is not set for GPIO operation Other values If GP3 is already set for GPIO operation, the value represents the GP3 logic (0x00 or 0x01) pin value 9 GP3 direction value 10-63 DS20005292B-page 48 0xEF If GP3 is not set for GPIO operation Other values If GP3 is already set for GPIO operation, the value represents the GP3 pin (0x00 or 0x01) designation (0x00 for output and 0x01 for input) Don’t care 2015 Microchip Technology Inc. MCP2221 3.1.13 SET SRAM SETTINGS This command is used to alter various run time chip-settings. The altered settings reside in SRAM memory and they won’t affect the chip’s Power-Up/Reset default settings. These altered settings will be active till the next chip Power-Up/Reset. TABLE 3-36: Byte Index COMMAND STRUCTURE Function Description Value 0 0x60 1 Don’t care 2 Effect Set SRAM settings – command code Clock Output Divider value – this allows the user to modify the clock output value on the fly, at run-time Bit 7: Enable loading of a new clock divider Bit 6-5 Bit 4-3: Duty cycle 1 The 4-0 bits will be loaded into the clock divider 0 Clock divider value won’t be altered Don’t care 00 0% duty cycle 01 25% duty cycle 10 50% duty cycle 11 75% duty cycle Bit 2-0: Clock divider value 3 DAC Voltage Reference – this allows the user to modify the DAC reference voltage Bit 7: Enable loading of a new DAC reference Bit 6-3 4 1 Bits 2-0 will be used for DAC reference voltage selection 0 DAC reference will remain unaltered Don’t care Bit 2-1: DAC VRM voltage selection. These bits are used to change the DAC VRM voltage 11 VRM voltage is 4.096V (only if VDD is higher than this value) 10 VRM voltage is 2.048V 01 VRM voltage is 1.024V 00 VRM voltage is off Bit 0: This bit is used to change the DAC reference voltage 1 DAC voltage reference is the internal DAC voltage reference module (DAC VRM) 0 DAC voltage reference is VDD 1 Bits 4-0 will be used for DAC reference voltage selection 0 The current DAC value will remain unaltered Set DAC output value Bit 7: Enable loading of a new DAC value Bit 6-5 Don’t care Bit 4-0: The new DAC value 2015 Microchip Technology Inc. DS20005292B-page 49 MCP2221 TABLE 3-36: Byte Index 5 COMMAND STRUCTURE (CONTINUED) Function Description Bit 6-3 Bit 2-1: These bits are used to change the DAC VRM voltage Bit 0: This bit is used to change the DAC reference voltage 1 Bits 2-0 will be used for ADC reference voltage selection 0 ADC reference will remain unaltered Don’t care 11 VRM voltage is 4.096V (only if VDD is higher than this value) 10 VRM voltage is 2.048V 01 VRM voltage is 1.024V 00 VRM voltage is off 1 VDD ADC voltage reference is the internal ADC voltage reference module (ADC VRM) 0 ADC voltage reference is VDD Setup the interrupt detection mechanism and clear the detection flag – useful for preparing the interrupt detection module to detect a new interrupt condition Bit 7: Enable the modification of the interrupt detection conditions Bit 6-5 1 The interrupt detection settings and flag will change 0 The interrupt detection settings and flag will remain unchanged Don’t care Bit 4 Bit 3: The new value for the positive edge detector Enable the modification of the positive edge detection 1 Interrupt detection will trigger on positive edges 0 Interrupt detection will not trigger on positive edges Bit 2 7 8 Effect ADC Voltage Reference – this allows the user to modify the ADC reference voltage Bit 7: Enable loading of a new ADC reference 6 Value Enable the modification of the negative edge detection Bit 1: The new value for the negative edge detector 1 Interrupt detection will trigger on negative edges 0 Interrupt detection will not trigger on negative edges Bit 0: Clear the interrupt detection flag 1 Clear the interrupt detection flag 0 Leave the interrupt detection flag as is Alter GPIO configuration: alters the current GP designation 1 Alter the GP designation. The values from Byte Index 8 will be used to load a new set of values into the SRAM GP settings. 0 Do not alter the current GP designation GP0 settings Bit 7-5 Don’t care Bit 4: GPIO Output value Bit 3: GPIO Direction (Input/Output) – Works only when GP0 is set for GPIO operation Bit 2-0: GP0 Designation DS20005292B-page 50 When GP0 is set as an output GPIO, this value will be present at the GP0 pin 1 GPIO Input mode 0 GPIO Output mode 111-011 Don’t care 010 Alternate function 0 (LED UART RX) 001 Dedicated function operation (SSPND) 000 GPIO operation 2015 Microchip Technology Inc. MCP2221 TABLE 3-36: Byte Index 9 COMMAND STRUCTURE (CONTINUED) Function Description Value GP1 settings Bit 7-5 Don’t care Bit 4: GPIO Output value Bit 3: GPIO Direction (Input/Output) – Works only when GP1 is set for GPIO operation Bit 2-0: GP0 Designation 10 When GP1 is set as an output GPIO, this value will be present at the GP1 pin 1 GPIO Input mode 0 GPIO Output mode 111-101 Don’t care 100 Alternate function 2 (Interrupt Detection) 011 Alternate function 1 (LED UART TX) 010 Alternate function 0 (ADC1) 001 Dedicated function operation (Clock Output) 000 GPIO operation GP2 settings Bit 7-5 Don’t care Bit 4: GPIO Output value Bit 3: GPIO Direction (Input/Output) – Works only when GP2 is set for GPIO operation Bit 2-0: GP2 Designation 11 Effect When GP2 is set as an output GPIO, this value will be present at the GP2 pin 1 GPIO Input mode 0 GPIO Output mode 111-100 Don’t care 011 Alternate function 1 (DAC1) 010 Alternate function 0 (ADC2) 001 Dedicated function operation (USBCFG) 000 GPIO operation GP3 settings Bit 7-5 Don’t care Bit 4: GPIO Output value Bit 3: GPIO Direction (Input/Output) – Works only when GP3 is set for GPIO operation Bit 2-0: GP3 Designation 12-63 Reserved 2015 Microchip Technology Inc. When GP3 is set as an output GPIO, this value will be present at the GP3 pin 1 GPIO Input mode 0 GPIO Output mode 111-100 Don’t care 011 Alternate function 1 (DAC2) 010 Alternate function 0 (ADC3) 001 Dedicated function operation (LED I2C) 000 GPIO operation 0x00 DS20005292B-page 51 MCP2221 3.1.13.1 Responses TABLE 3-37: RESPONSE 1 STRUCTURE Byte Index Value 0 0x60 Set SRAM Settings – command code echo 1 0x00 Command completed successfully 2-63 Don’t care Effect DS20005292B-page 52 2015 Microchip Technology Inc. MCP2221 3.1.14 GET SRAM SETTINGS This command is used to retrieve the run time Chip and GP settings. TABLE 3-38: COMMAND STRUCTURE Byte Index Value 0 0x61 Get SRAM Settings – command code echo 1-63 0x00 Command completed successfully 3.1.14.1 Responses TABLE 3-39: Byte Index Effect RESPONSE 1 STRUCTURE Function Description Value Effect 0 0x61 Get SRAM Settings – command code echo 1 0x00 Command completed successfully 2 Length in bytes of the SRAM Chip-settings area. 3 Length in bytes of the SRAM GP settings area. 4 Bit 7: CDC Serial Number Enumeration Enable 1 The USB serial number will be used during the USB enumeration of the CDC interface 0 No serial number descriptor will be presented during the USB enumeration Bit 6: Initial value for LEDUARTRX pin option This value represents the logic level signaled when no UART RX activity takes places. When the UART RX (of the MCP2221) is receiving data, the LEDUARTRX pin will take the negated value of this bit. Bit 5: Initial value for LEDUARTTX pin option. This value represents the logic level signaled when no UART TX transmission takes place. When the UART TX (of the MCP2221) is sending data, the LEDUARTTX pin will take the negated value of this bit. Bit 4: Initial value for LEDI2C pin option This value represents the logic level signaled when no I2C traffic occurs. When I2C traffic is active, the LEDI2C pin (if enabled) will take the negated value of this bit. Bit 3: Initial value for SSPND pin option This value represents the logic level signaled when the device is not in Suspend mode. Upon entering Suspend mode, the SSPND pin (if enabled) will take the negated value of this bit. Bit 2: Initial value for USBCFG pin option This value represents the logic level signaled when the device is not USB configured. When the device will be USB-configured, the USBCFG pin (if enabled) will take the negated value of this bit. Bit 1-0: Chip configuration security option 2015 Microchip Technology Inc. 10 Permanently locked 01 Password-protected 00 Unsecured DS20005292B-page 53 MCP2221 TABLE 3-39: Byte Index 5 RESPONSE 1 STRUCTURE (CONTINUED) Function Description Bit 7-5 Value Don’t care Bit 4-0: Clock Output divider value 6 Bit 7-6: DAC Reference voltage option Bit 5: DAC reference option Effect If the GP pin (exposing the clock output) is enabled for clock output operation, the divider value will be used on the 48 MHz USB internal clock and its divided output will be sent to this pin. (Bits 4-3 for duty cycle and bits 2-0 for the clock divider.) 11 Reference voltage is 4.096V 10 Reference voltage is 2.048V 01 Reference voltage is 1.024V 00 Reference voltage is off (this is useful for the case in which the DAC uses other reference than VRM DAC; e.g., VDD) 1 DAC reference is VRM DAC voltage 0 DAC reference is VDD Bit 4-0: Power-Up DAC value 7 Bit 7 Bit 6: Interrupt detection – negative edge If set, the interrupt detection flag will be set when a negative edge occurs Bit 5: Interrupt detection – positive edge If set, the interrupt detection flag will be set when a positive edge occurs Bit 4-3: ADC Reference Voltage Bit 2: ADC Reference Option 8 Don’t care 11 Reference voltage is 4.096V (only if VDD is above this voltage) 10 Reference voltage is 2.048V 01 Reference voltage is 1.024V 00 Reference voltage is off (this is useful for the case in which the ADC uses other reference than VRM DAC; e.g., VDD) 1 ADC reference is VRM ADC 0 ADC reference is VDD Bit 1 Don’t care Bit 2 Don’t care Lower byte of the 16-bit USB VID value 9 Higher byte of the 16-bit USB VID value 10 Lower byte of the 16-bit USB PID value 11 Higher byte of the 16-bit USB PID value 12 USB power attributes This value will be used by the MCP2221’s USB Configuration Descriptor (power attributes value) during the USB enumeration 13 USB requested number of mA(s) The requested mA value during the USB enumeration will represent the value at this index multiplied by 2 14 Current supplied-password byte 1 15 Current supplied-password byte 2 16 Current supplied-password byte 3 DS20005292B-page 54 2015 Microchip Technology Inc. MCP2221 TABLE 3-39: Byte Index RESPONSE 1 STRUCTURE (CONTINUED) Function Description 17 Current supplied-password byte 4 18 Current supplied-password byte 5 19 Current supplied-password byte 6 20 Current supplied-password byte 7 21 Current supplied-password byte 8 22 GP0 settings Bit 7-5 Value Don’t care Bit 4: GPIO Output value Bit 3: GPIO Direction (Input/Output) – Works only when GP0 is set for GPIO operation Bit 2-0: GP0 Designation 23 When the GP0 is set as an output GPIO, this value will be present at the GP0 pin 1 GPIO Input mode 0 GPIO Output mode 111-011 Don’t care 010 Alternate function 0 (LED UART RX) 001 Dedicated function operation (SSPND) 000 GPIO operation GP1 settings Bit 7-5 Don’t care Bit 4: GPIO Output value Bit 3: GPIO Direction (Input/Output) – Works only when GP1 is set for GPIO operation Bit 2-0: GP1 Designation 24 Effect When the GP1 is set as an output GPIO, this value will be present at the GP1 pin 1 GPIO Input mode 0 GPIO Output mode 111-101 Don’t care 100 Alternate function 2 (Interrupt Detection) 011 Alternate function 1 (LED UART TX) 010 Alternate function 0 (ADC1) 001 Dedicated function operation (Clock Output) 000 GPIO operation GP2 settings Bit 7-5 Don’t care Bit 4: GPIO Output value Bit 3: GPIO Direction (Input/Output) – Works only when GP2 is set for GPIO operation Bit 2-0: GP2 Designation 2015 Microchip Technology Inc. When the GP2 is set as an output GPIO, this value will be present at the GP2 pin 1 GPIO Input mode 0 GPIO Output mode 111-100 Don’t care 011 Alternate function 1 (DAC1) 010 Alternate function 0 (ADC2) 001 Dedicated function operation (USBCFG) 000 GPIO operation DS20005292B-page 55 MCP2221 TABLE 3-39: Byte Index 25 RESPONSE 1 STRUCTURE (CONTINUED) Function Description Value Effect GP3 settings Bit 7-5 Don’t care Bit 4: GPIO Output value Bit 3: GPIO Direction (Input/Output) – Works only when GP3 is set for GPIO operation Bit 2-0: GP3 Designation 26-63 DS20005292B-page 56 When the GP3 is set as an output GPIO, this value will be present at the GP3 pin 1 GPIO Input mode 0 GPIO Output mode 111-100 Don’t care 011 Alternate function 1 (DAC2) 010 Alternate function 0 (ADC3) 001 Dedicated function operation (LED I2C) 000 GPIO operation Don’t care 2015 Microchip Technology Inc. MCP2221 3.1.15 RESET CHIP This command is used to force a Reset of the MCP2221 device. This command is useful when the Flash memory is updated with new data. The MCP2221 would need to be re-enumerated to see the new data. Note: This command is the only command that does not expect a response. TABLE 3-40: Byte Index COMMAND STRUCTURE Value 0 0x70 1 0xAB 2 0xCD 3 0xEF 4-63 0x00 Effect Reset Chip – command code Reserved 2015 Microchip Technology Inc. DS20005292B-page 57 MCP2221 NOTES: DS20005292B-page 58 2015 Microchip Technology Inc. MCP2221 4.0 ELECTRICAL CHARACTERISTICS Absolute Maximum Ratings (†)(1) Ambient temperature under bias............................................................................................................... -40°C to +85°C Storage temperature .............................................................................................................................. -65°C to +150°C Voltage on VDD with respect to VSS ......................................................................................................... -0.3V to +6.0V Voltage on RST with respect to VSS ......................................................................................................... -0.3V to +9.0V Voltage on VUSB pin with respect to VSS .................................................................................................. -0.3V to +4.0V Voltage on D+ and D- pins with respect to VSS ............................................................................ -0.3V to (VUSB + 0.3V) Voltage on all other pins with respect to VSS ................................................................................. -0.3V to (VDD + 0.3V) Total power dissipation(2) ..................................................................................................................................... 800 mW Maximum current out of VSS pin ............................................................................................................................ 95 mA Maximum current into VDD pin ............................................................................................................................... 95 mA Clamp current, IK (VPIN < 0 or VPIN > VDD) 20 mA Maximum output current sunk by any I/O pin ......................................................................................................... 25 mA Maximum output current sourced by any I/O pin .................................................................................................... 25 mA Maximum current sunk by all ports ......................................................................................................................... 90 mA Maximum current sourced by all ports ................................................................................................................... 90 mA † 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 above maximum rating conditions for extended periods may affect device reliability. Note 1: 2: VUSB must always be VDD + 0.3V. Power dissipation is calculated as follows: PDIS = VDD x {IDD – IOH} + {(VDD – VOH) x IOH} + (VOL x IOL). 2015 Microchip Technology Inc. DS20005292B-page 59 MCP2221 4.1 DC CHARACTERISTICS DC Characteristics Param. No. D001 Characteristic Operating Conditions (unless otherwise indicated): 3.0V VDD 5.5V at -40C TA +85C (I-Temp) Sym. Min. Typ. Max. Units Supply Voltage VDD 3.0 — 5.5 V POR Release Voltage VPOR POR Rearm Voltage D003 VDD Rise Rate to Ensure POR D004 Supply Current SVDD 0.8 V — — V/ms — 10 12 mA Design guidance only Not tested IDD VDD = 5.0V Standby Current V 0.05 VDD = 3.0V D005 1.6 Conditions FOSC = 12 MHz, (330 nF on VUSB) — 13 15 mA IDDS — 46 — µA VIL — — 0.2 VDD V — — 0.8 0.8 VDD — VDD 2.0 — VDD IIL — ±50 ±100 nA VSS VPIN VDD, pin at Hi-Z VOL — — 0.6 V IOL = 8.0 mA, VDD = 5.0V — — 0.6 VDD – 0.7 — — VDD – 0.7 — — — 50 Input Low-Voltage D031 Schmitt Trigger (URX) TTL (GP pins) 3.0V VDD 5.5V 4.5V VDD 5.5V Input High-Voltage D041 Schmitt Trigger (URX) VIH TTL (GP pins) V 3.0V VDD 5.5V 4.5V VDD 5.5V Input Leakage Current D060 GP, URX Output Low-Voltage D080 GP, UTX IOL = 6.0 mA, VDD = 3.3V Output High-Voltage D090 GP, UTX VOH V IOH = -3.5 mA, VDD = 5.0V IOH = -3.0 mA, VDD = 3.3V Capacitive Loading Specs on Output Pins D102 Note 1: GPIO CIO — pF Note 1 Characterized only, not 100% tested. DS20005292B-page 60 2015 Microchip Technology Inc. MCP2221 FIGURE 4-1: POR AND POR REARM WITH SLOW RISING VDD VDD VPOR VPORR VSS NPOR(1) POR REARM VSS TPOR(3) TVLOW(2) Note 1: When NPOR is low, the device is held in Reset. 2: TPOR 1 µs typical. 3: TVLOW 2.7 µs typical. TABLE 4-1: USB MODULE SPECIFICATIONS DC Characteristics Param. No. Characteristic Operating Conditions (unless otherwise indicated): 3.0V VDD 5.5V at -40°C TA +85°C (I-Temp) Sym. Min. Typ. Max. Units Conditions VUSB 3.0 — 3.6 V Voltage on the VUSB pin must be in this range for proper USB operation IIL — — ±1 μA VSS VPIN VDD pin at high impedance D313 USB Voltage D314 Input Leakage on Pin D315 Input Low Voltage for USB Buffer VILUSB — — 0.8 V For VUSB range D316 Input High Voltage for USB Buffer VIHUSB 2.0 — — V For VUSB range D318 Differential Input Sensitivity VDIFS — — 0.2 V The difference between D+ and D- must exceed this value while VCM is met D319 Differential Common Mode Range VCM 0.8 — 2.5 V D320 Driver Output Impedance(1) ZOUT 28 — 44 W D321 Voltage Output Low VOL 0.0 — 0.3 V 1.5 k load connected to 3.6V D322 Voltage Output High VOH 2.8 — 3.6 V 1.5 k load connected to ground Note 1: The D+ and D- signal lines have been built-in impedance matching resistors. No external resistors, capacitors or magnetic components are necessary on the D+/D- signal paths between the MCP2221 family device and the USB cable. 2015 Microchip Technology Inc. DS20005292B-page 61 MCP2221 TABLE 4-2: THERMAL CONSIDERATIONS Standard Operating Conditions (unless otherwise stated) Operating temperature: -40C TA +85C (I-Temp) Param. No. Sym. Characteristic Typ. Units Conditions 70 C/W 14-pin PDIP package 95.3 C/W 14-pin SOIC package 100 C/W 14-pin TSSOP package 45.7 C/W 16-pin QFN 4 x 4 mm package TH02 θJC Thermal Resistance Junction 32 C/W 14-pin PDIP package to Case 31 C/W 14-pin SOIC package 24.4 C/W 14-pin TSSOP package 6.3 C/W 16-pin QFN 4 x 4 mm package TH03 TJMAX Maximum Junction Temperature +150 C TH04 PD Power Dissipation — W PD = PINTERNAL + PI/O TH05 PINTERNAL Internal Power Dissipation — W PINTERNAL = IDD x VDD(1) TH06 PI/O I/O Power Dissipation — W PI/O = (IOL x VOL) + (IOH x (VDD – VOH)) TH07 PDER Derated Power — W PDER = PDMAX (TJ – TA)/θJA(2, 3) Note 1: IDD is the current to run the device alone without driving any load on the output pins. 2: TA = Ambient Temperature. 3: TJ = Junction Temperature. TH01 θJA DS20005292B-page 62 Thermal Resistance Junction to Ambient 2015 Microchip Technology Inc. MCP2221 4.2 4.2.1 AC Characteristics TIMING PARAMETER SYMBOLOGY The timing parameter symbols have been created in one of the following formats: 1. TppS2ppS T F Frequency E Error Lowercase letters (pp) and their meanings: pp io Input or Output pin rx Receive bitclk RX/TX BITCLK drt Device Reset Timer Uppercase letters and their meanings: S F Fall H High I Invalid (high-impedance) L Low 4.2.2 2. TppS T Time osc tx RST Oscillator Transmit Reset P R V Z Period Rise Valid High-impedance TIMING CONDITIONS The operating temperature and voltage specified in Table 4-3 apply to all timing specifications, unless otherwise noted. Figure 4-2 specifies the load conditions for the timing specifications. TABLE 4-3: TEMPERATURE AND VOLTAGE SPECIFICATIONS – AC AC CHARACTERISTICS FIGURE 4-2: Standard Operating Conditions (unless otherwise stated) Operating temperature -40C TA +85C Operating voltage VDD range as described in DC spec, Section 4.1 “DC Characteristics”. LOAD CONDITIONS FOR DEVICE TIMING SPECIFICATIONS Pin 50 pF 2015 Microchip Technology Inc. DS20005292B-page 63 MCP2221 4.2.3 TIMING DIAGRAMS AND SPECIFICATIONS TABLE 4-4: RESET, OSCILLATOR START-UP TIMER AND POWER-UP TIMER PARAMETERS Standard Operating Conditions (unless otherwise stated) Operating Temperature: -40°C TA +85°C Param No. Sym. 30 TRST 31 32 Characteristic RST Pulse Width (low) TPWRT Power-Up timer TOST Oscillator Start-Up Time Min. Typ.† Max. Units 2 — — μs 40 65 140 ms — 1024 — TOST Conditions * These parameters are characterized but not tested. † Data in the “Typ.” column is at 5V, +25°C, unless otherwise stated. These parameters are for design guidance only and are not tested. DS20005292B-page 64 2015 Microchip Technology Inc. MCP2221 5.0 PACKAGING INFORMATION 5.1 Package Marking Information 14-Lead PDIP (300 mil) Example MCP2221 I/P ^^ e3 1448256 14-Lead SOIC (3.90 mm) Example MCP2221 I/SL 1448256 14-Lead TSSOP (4.4 mm) Example XXXXXXXX YYWW NNN 2221ST 1448 256 16-Lead QFN (4x4x0.9 mm) PIN 1 Legend: XX...X Y YY WW NNN e3 * Note: Example PIN 1 2221 I/ML ^^ e3 448256 Customer-specific information Year code (last digit of calendar year) Year code (last 2 digits of calendar year) Week code (week of January 1 is week ‘01’) Alphanumeric traceability code Pb-free JEDEC designator for Matte Tin (Sn) This package is Pb-free. The Pb-free JEDEC designator ( e3 ) can be found on the outer packaging for this package. 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. 2015 Microchip Technology Inc. DS20005292B-page 65 MCP2221 3 %& %!%4") ' % 4$% %"% %%255)))& &54 N NOTE 1 E1 1 3 2 D E A2 A L A1 c b1 b e eB 6% & 9&% 7!&( $ 7+8- 7 7 7: ; % % % < < ""44 0 , 0 1 % % 0 < < !"% !"="% - , ,0 ""4="% - 0 > :9% ,0 0 0 % % 9 0 , 0 9"4 > 0 ( 0 ? ( > 1 < < 69"="% 9 )9"="% : )* 1+ , !"#$%!&'(!%&! %( %")%%%" *$%+% % , & "-" %!"& "$ %! "$ %! %#". " & "% -/0 1+21 & %#%! ))% !%% ) +01 DS20005292B-page 66 2015 Microchip Technology Inc. MCP2221 Note: For the most current package drawings, please see the Microchip Packaging Specification located at http://www.microchip.com/packaging 2015 Microchip Technology Inc. DS20005292B-page 67 MCP2221 Note: For the most current package drawings, please see the Microchip Packaging Specification located at http://www.microchip.com/packaging DS20005292B-page 68 2015 Microchip Technology Inc. MCP2221 3 %& %!%4") ' % 4$% %"% %%255)))& &54 2015 Microchip Technology Inc. DS20005292B-page 69 MCP2221 Note: For the most current package drawings, please see the Microchip Packaging Specification located at http://www.microchip.com/packaging DS20005292B-page 70 2015 Microchip Technology Inc. MCP2221 Note: For the most current package drawings, please see the Microchip Packaging Specification located at http://www.microchip.com/packaging 2015 Microchip Technology Inc. DS20005292B-page 71 MCP2221 Note: For the most current package drawings, please see the Microchip Packaging Specification located at http://www.microchip.com/packaging DS20005292B-page 72 2015 Microchip Technology Inc. MCP2221 ! "#$ %&'(()*"# 3 %& %!%4") ' % 4$% %"% %%255)))& &54 D2 D EXPOSED PAD e E2 E 2 2 1 1 b TOP VIEW K N N NOTE 1 L BOTTOM VIEW A3 A A1 6% & 9&% 7!&( $ 99-- 7 7 7: ; ? % :8% > %" $$ 0 + %%4 , :="% - -# ""="% - :9% -# ""9% ?01+ -3 1+ 0 ?0 > 1+ 0 ?0 + %%="% ( 0 , ,0 + %%9% 9 , 0 + %%% -# "" V < !"#$%!&'(!%&! %( %")%%%" 4 ) !%" , & "% -/0 1+2 1 & %#%! ))% !%% -32 $& '! !)% !%% '$ $ &% ! > < ) +1 2015 Microchip Technology Inc. DS20005292B-page 73 MCP2221 Note: For the most current package drawings, please see the Microchip Packaging Specification located at http://www.microchip.com/packaging DS20005292B-page 74 2015 Microchip Technology Inc. MCP2221 APPENDIX A: REVISION HISTORY Revision B (February 2015) 1. Updated bit settings in Registers 1-1 to 1-7, Register 1-10 and Registers 1-12, 1-13, 1-14, 1-15. Revision A (May 2014) Original Release of this Document. 2015 Microchip Technology Inc. DS20005292B-page 75 MCP2221 NOTES: DS20005292B-page 76 2015 Microchip Technology Inc. MCP2221 PRODUCT IDENTIFICATION SYSTEM To order or obtain information, e.g., on pricing or delivery, contact your local Microchip sales office. PART NO. Device Device: [X](1) X /XX Examples: Tape and Reel Temperature Package Option Range MCP2221: MCP2221T: USB-to-I2C/UART Protocol Converter USB-to-I2C/UART Protocol Converter (Tape and Reel) Temperature Range: I = Package: = Plastic Quad Flat, No Lead Package – 4x4x0.9 mm Body (QFN), 16-Lead = Plastic Dual In Line, 300 mil. Body (PDIP), 14-Lead = Plastic Small Outline – Narrow, 3.90 mm Body (SOIC), 14-Lead = Plastic Thin Shrink Small Outline – 4.4 mm Body (TSSOP), 14-Lead ML P SL ST Note 1: -40C to +85C (Industrial) a) MCP2221- I/P: Industrial temperature, 14LD PDIP Package a) MCP2221- I/SL: b) MCP2221T- I/SL: Industrial temperature, 14LD SOIC Package Tape and Reel, Industrial temperature, 14LD SOIC Package a) MCP2221- I/ST: b) MCP2221T- I/ST: a) MCP2221- I/ML: b) MCP2221T- I/ML: Industrial temperature, 14LD TSSOP Package Tape and Reel, Industrial temperature, 14LD TSSOP Package Industrial temperature, 16LD 4x4 QFN Package Tape and Reel, Industrial temperature, 16LD 4x4 QFN Package Tape and Reel identifier only appears in the catalog part number description. This identifier is used for ordering purposes and is not printed on the device package. Check with your Microchip Sales Office for package availability with the Tape and Reel option. 2015 Microchip Technology Inc. DS20005292B-page 77 MCP2221 NOTES: DS20005292B-page 78 2015 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, dsPIC, FlashFlex, flexPWR, JukeBlox, KEELOQ, KEELOQ logo, Kleer, LANCheck, MediaLB, MOST, MOST logo, MPLAB, OptoLyzer, PIC, PICSTART, PIC32 logo, RightTouch, SpyNIC, SST, SST Logo, SuperFlash and UNI/O are registered trademarks of Microchip Technology Incorporated in the U.S.A. and other countries. The Embedded Control Solutions Company and mTouch are registered trademarks of Microchip Technology Incorporated in the U.S.A. Analog-for-the-Digital Age, BodyCom, chipKIT, chipKIT logo, CodeGuard, dsPICDEM, dsPICDEM.net, ECAN, In-Circuit Serial Programming, ICSP, Inter-Chip Connectivity, KleerNet, KleerNet logo, MiWi, MPASM, MPF, MPLAB Certified logo, MPLIB, MPLINK, MultiTRAK, NetDetach, Omniscient Code Generation, PICDEM, PICDEM.net, PICkit, PICtail, RightTouch logo, REAL ICE, SQI, Serial Quad I/O, Total Endurance, TSHARC, USBCheck, VariSense, ViewSpan, WiperLock, Wireless DNA, 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. Silicon Storage Technology is a registered trademark of Microchip Technology Inc. in other countries. GestIC is a registered trademarks of Microchip Technology Germany II GmbH & Co. KG, a subsidiary of Microchip Technology Inc., in other countries. All other trademarks mentioned herein are property of their respective companies. © 2015, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved. ISBN: 978-1-63277-016-5 QUALITY MANAGEMENT SYSTEM CERTIFIED BY DNV == ISO/TS 16949 == 2015 Microchip Technology Inc. Microchip received ISO/TS-16949:2009 certification for its worldwide headquarters, design and wafer fabrication facilities in Chandler and Tempe, Arizona; Gresham, Oregon and design centers in California and India. The Company’s quality system processes and procedures are for its PIC® MCUs and dsPIC® DSCs, KEELOQ® code hopping devices, Serial EEPROMs, microperipherals, nonvolatile memory and analog products. In addition, Microchip’s quality system for the design and manufacture of development systems is ISO 9001:2000 certified. DS20005292B-page 79 Worldwide Sales and Service AMERICAS ASIA/PACIFIC ASIA/PACIFIC EUROPE Corporate Office 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-792-7200 Fax: 480-792-7277 Technical Support: http://www.microchip.com/ support Web Address: www.microchip.com Asia Pacific Office Suites 3707-14, 37th Floor Tower 6, The Gateway Harbour City, Kowloon China - Xiamen Tel: 86-592-2388138 Fax: 86-592-2388130 Austria - Wels Tel: 43-7242-2244-39 Fax: 43-7242-2244-393 China - Zhuhai Tel: 86-756-3210040 Fax: 86-756-3210049 Denmark - Copenhagen Tel: 45-4450-2828 Fax: 45-4485-2829 India - Bangalore Tel: 91-80-3090-4444 Fax: 91-80-3090-4123 France - Paris Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 India - New Delhi Tel: 91-11-4160-8631 Fax: 91-11-4160-8632 Germany - Dusseldorf Tel: 49-2129-3766400 Atlanta Duluth, GA Tel: 678-957-9614 Fax: 678-957-1455 Hong Kong Tel: 852-2943-5100 Fax: 852-2401-3431 Australia - Sydney Tel: 61-2-9868-6733 Fax: 61-2-9868-6755 China - Beijing Tel: 86-10-8569-7000 Fax: 86-10-8528-2104 Austin, TX Tel: 512-257-3370 China - Chengdu Tel: 86-28-8665-5511 Fax: 86-28-8665-7889 Boston Westborough, MA Tel: 774-760-0087 Fax: 774-760-0088 China - Chongqing Tel: 86-23-8980-9588 Fax: 86-23-8980-9500 Chicago Itasca, IL Tel: 630-285-0071 Fax: 630-285-0075 Cleveland Independence, OH Tel: 216-447-0464 Fax: 216-447-0643 Dallas Addison, TX Tel: 972-818-7423 Fax: 972-818-2924 Detroit Novi, MI Tel: 248-848-4000 Houston, TX Tel: 281-894-5983 Indianapolis Noblesville, IN Tel: 317-773-8323 Fax: 317-773-5453 Los Angeles Mission Viejo, CA Tel: 949-462-9523 Fax: 949-462-9608 New York, NY Tel: 631-435-6000 San Jose, CA Tel: 408-735-9110 Canada - Toronto Tel: 905-673-0699 Fax: 905-673-6509 China - Dongguan Tel: 86-769-8702-9880 China - Hangzhou Tel: 86-571-8792-8115 Fax: 86-571-8792-8116 India - Pune Tel: 91-20-3019-1500 Japan - Osaka Tel: 81-6-6152-7160 Fax: 81-6-6152-9310 Japan - Tokyo Tel: 81-3-6880- 3770 Fax: 81-3-6880-3771 Korea - Daegu Tel: 82-53-744-4301 Fax: 82-53-744-4302 China - Hong Kong SAR Tel: 852-2943-5100 Fax: 852-2401-3431 Korea - Seoul Tel: 82-2-554-7200 Fax: 82-2-558-5932 or 82-2-558-5934 China - Nanjing Tel: 86-25-8473-2460 Fax: 86-25-8473-2470 Malaysia - Kuala Lumpur Tel: 60-3-6201-9857 Fax: 60-3-6201-9859 China - Qingdao Tel: 86-532-8502-7355 Fax: 86-532-8502-7205 Malaysia - Penang Tel: 60-4-227-8870 Fax: 60-4-227-4068 China - Shanghai Tel: 86-21-5407-5533 Fax: 86-21-5407-5066 Philippines - Manila Tel: 63-2-634-9065 Fax: 63-2-634-9069 China - Shenyang Tel: 86-24-2334-2829 Fax: 86-24-2334-2393 Singapore Tel: 65-6334-8870 Fax: 65-6334-8850 China - Shenzhen Tel: 86-755-8864-2200 Fax: 86-755-8203-1760 Taiwan - Hsin Chu Tel: 886-3-5778-366 Fax: 886-3-5770-955 China - Wuhan Tel: 86-27-5980-5300 Fax: 86-27-5980-5118 Taiwan - Kaohsiung Tel: 886-7-213-7828 China - Xian Tel: 86-29-8833-7252 Fax: 86-29-8833-7256 Germany - Munich Tel: 49-89-627-144-0 Fax: 49-89-627-144-44 Germany - Pforzheim Tel: 49-7231-424750 Italy - Milan Tel: 39-0331-742611 Fax: 39-0331-466781 Italy - Venice Tel: 39-049-7625286 Netherlands - Drunen Tel: 31-416-690399 Fax: 31-416-690340 Poland - Warsaw Tel: 48-22-3325737 Spain - Madrid Tel: 34-91-708-08-90 Fax: 34-91-708-08-91 Sweden - Stockholm Tel: 46-8-5090-4654 UK - Wokingham Tel: 44-118-921-5800 Fax: 44-118-921-5820 Taiwan - Taipei Tel: 886-2-2508-8600 Fax: 886-2-2508-0102 Thailand - Bangkok Tel: 66-2-694-1351 Fax: 66-2-694-1350 01/27/15 DS20005292B-page 80 2015 Microchip Technology Inc.