UPDATE: Some places where the project appears. Thanks to all!!
Hi all! After a couple of months with a lot of work, I come here again with the last board I develop before Christmas. It’s a dual USB serial and I2C converter based on two MCP2221 Microchip 2.0 USB-Serial bridges. I develop it as a need on my work with the last project I’m involved. I need to monitor a serial communication between two devices. With only one converter, I must choose between RX and TX lines to monitoring the traffic. With this solution, I can listen at the same time TX and RX lines, so the monitoring is more easy. And with a software like Docklight (you can download a free evaluation copy here), you can choose the monitoring option to display both channels. After the break you can find all the technical info of the board!
- Main diagram: Includes the mini-B USB connectors, TVS diodes for protecting the USB lines and the output connectos. I let the footprint for two kind of conenctors: screws or pin strip, in order to plug the board directly on a breadboard.
- Power supply stage: The board is powered with the 5V-USB voltage. On every power input, I add a 0.5A polyswitch fuse to protect the USB port. Both 5V-USB voltages are put in parallel using two SSA33 diodes, and the output is connected to the input of a NCP1117-3.3 LDO regulator, to obtain system 3.3V. MCP2221 can work with 5V or 3.3V levels, depending of the voltage at it’s powered. For both converters, I let a switch to select the power supply (VDD_A and VDD_B). So, with only one jumper per converter you can select level of the signals: you can use the board with 3.3V or 5V systems, or with a mix of both!
- MCP221 USB/Serial bridge (A): the basic connection for the MCP2221 converter. It has a small R-C filter on USB lines and a Reset pushbutton. In addition to USB/Serial converter, MCP2221 also has the feature to convert from USB to I2C master device. So, you can connect I2C slaves to this device and communicate with they (check the SW point). For the I2C communications, I let two jumpers to enable/disable the I2C pull-up resistors. Finally, I use GP0,GP1 and GP3 signals as a led’s indicators (low level active, default configuration). So GP0 lights when it receives a data over the serial port (red led). GP1 lights when transmit a data over the serial port (yellow led). And GP3 lights when there’s communication on the I2C port (green led).
- MCP2221 USB/Serial bridge (B): Same as the above.
I design the board with components only on top layer, it’s easy to assemble. I use the DP5050 sick of beige PCB format from DangerousPrototypes. All the PCB info is in the following file: INFO_USB_DualComPort_V1.0, and the gerber files of the board can downloaded here: GBR_USB_DualComPort_V1.0. And here’re a couple of 3D-previews images from Altium (I love this suite for design!):
I order the boards to DirtyPCB company, and like always, the quality is excelent for the price. I also ordered the stencil, to try to assemble it with a home oven reflow (at this time I can’t test it, so I assembled the boards by hand). It takes just one month between the day I order and the day I receive it at home:
On the software side, to use the board the first step is install the driver. On Microchip MCP2221 webpage there’re drivers for all the operating systems. If you’re windows user, just click here to download the install file.
In addition to the driver, there’re two usefull tools here. The first one is the MCP2221 Utility (version 1.0.1 at this time). wIth this tool, you can read the MCP2221 parameters, and modify many of them (like VID and PID, Descriptor, GP pins configuration,….):
The other tool that Microchip provides is the MCP2221 I2C/SMBus Terminal (v2.0). With this utility, you can manage I2C devices that are connected on the I2C bus as a slaves. Under the ‘Advance Settings’ button, you can specify a I2C address range and the MCP2221 can do a bus search to find devices on the bus:
After you know the device address, on the upper side of the application you can send it commands and request info for the device. It’s a useful tool to check and communicate with I2C devices!
This post is also available in: Spanish