MCS9904 is a single lane multifunction PCI express to I/O controller. MCS9904 supports four serial ports and eight GPIO's. MCS9904 also provides an option for peripheral expansion through proprietary Cascade interface. The generic cascade interface allows interconnecting with other ASIC's like MCS9900 to expand the peripheral ports.
PCIe to Quad Serial Controller [NOT FOR NEW DESIGN!!]
● PCI Express
-- Single-lane (X1) PCI Express End-point Controller with integrated PHY
-- Compliant with PCI Express Base Specification, Revision 1.1
-- Compliant with PCI Express card specifications
-- Supports four PCI Express functions
-- Supports auto completion of configuration requests
-- Supports built in flow control
-- Supports Message TLP (Error) generation
-- Supports integrated time out handling of Non-posted request
-- Supports both legacy and MSI Interrupt
-- Supports PCIe Power Management
● Serial Port
-- Four 16C450 / 550 / Extended 550 / 650 / Enhanced Mode compatible UARTs
-- Supports RS232, RS422 & RS485 modes
-- Bi-directional speeds from 50 bps to 16 Mbps per port
-- Full Serial Modem Control
-- Supports Hardware, Software Flow Control
-- Supports 5, 6, 7, 8 bit Serial format
-- Supports Even, Odd, None, Space and Mark parity
-- Supports Custom baud rate by programming internal PLL or external clock
-- Supports On Chip 256 Byte depth FIFOs in Transmit, Receive path of each Serial Port
-- Supports remote wakeup and power management features
-- Serial Port transceiver shutdown support
-- Supports Slow IrDA mode (up to 115200bps) on all Serial Ports
● Cascade : MCS9904 supports a 13-Pin proprietary interface to connect to other ASIX devices for IO expansion. Through this interface, MCS9904 can be used as Cascade Secondary device and can be connected to Cascade Primary capable ASIX Devices like MCS9900. Eg. MCS9904 can be connected to MCS9900, for following product configurations
-- PCIe to 8 Serial Ports
-- PCIe to 6 Serial Ports and one Parallel port
● General Device Features
-- I2C interface for EEPROM
-- EEPROM read / write through PCIe Interface
-- 8 bi-directional multi-function GPIO lines
-- On chip oscillator
-- Power supply : 1.2V, 3.3V
-- Package : 128-Pin LQFP, RoHS
-- Operating Temperature : 0 to +70°C
Serial Attached Devices
Serial Networking / Monitoring Equipment
Data Acquisition System
POS Terminal & Industrial PC
Add-On I/O Cards - Serial
Embedded systems - For I/O expansion
Hardware Design Considerations
Where can I obtain the latest MCS9900/MCS9901/MCS9904/MCS9922 datasheet, reference schematic and other hardware design archives?
Please register MyASIX membership and then download the latest MCS9900/MCS9901/MCS9904/MCS9922 datasheet, reference schematic, PCB layout guide, etc. from ASIX Interface ICs Product web pages directly.
Can ASIX help me to review my own MCS99xx schematic and PCB layout?
Yes, please deliver your own MCS99xx schematic and PCB layout files to ASIX's Support (email@example.com) for further review before making your own MCS99xx PCB board.
How do I register a PCI Vendor ID from PCI-SIG?
If you are a new PCI/PCIe product developer looking to get a PCI Vendor ID for your company, you can register a PCI Vendor ID from PCI-SIG (Peripheral Component Interconnect Special Interest Group). Please visit the PCI-SIG web site for details.
Does the MCS99xx EEPROM utility program the I2C EEPROM while it is in-circuit or does it need to be pre-programmed and then placed on the PCB?
The utility can program the I2C EEPROM while it is in-circuit. There is no need to pre-program it and then place it on the PCB.
What should be the maximum length of RS232 serial cable that can be used for MCS99xx?
Cable length is one of the most discussed items in RS232 world. The standard has a clear answer; the maximum serial cable length is 50 feet, or the cable length equal to a capacitance of 2500 pF.
Software Design Considerations
Where can I obtain the latest MCS9900/MCS9901/MCS9904/MCS9922 drivers?
Please visit ASIX Driver Download web pages to download proper drivers for your MCS9900/MCS9901/MCS9904/MCS9922 target applications.
Is it possible to manually change the IRQ of MCS99xx Parallel/Serial ports?
It is not possible to manually change IRQ setting of all PCIe devices in any operating systems because the IRQ used by the device is assigned by the PCIe system and cannot be changed. Usually the only way to change the IRQ of a PCIe device is to move it to a different PCIe slot. Each slot is usually assigned a different IRQ, although this is not always true. Each system may handle the assignment of IRQs differently.
Is it possible to remap the I/O addresses of MCS99xx Parallel/Serial ports to Legacy I/O address values?
MCS99xx is a PCI Express to multi-I/O controller so it does not support to remap the parallel/serial ports base address into legacy I/O address range. The limitation is inherent in PCI Express system architectures. On most of Windows/Linux systems, the legacy I/O address remapping feature is not required.
For some specific old parallel/serial devices, users might still need to support the legacy I/O address in order to work on their existing software under DOS. In this case, users can consider using ASIX PCI bridge I/O connectivity products to support this inquiry.
Can I manually force MCS99xx parallel port at a specific LPT mode (such as EPP, ECP, etc.)?
Only the MCS99xx DOS and Windows NT drivers have a mechanism to manually select the desired LPT Mode for MCS99xx Parallel port. The Windows systems are supposed to be able to auto-switch to a proper LPT mode for PCIe based parallel port devices. Unfortunately, this LPT mode automatic switching functionality does not work very well with PCIe based Parallel port devices on Windows systems. MCS99xx can support SPP and PS/2 Modes without any problems. The EPP and ECP modes supporting varies from machine to machine and depends on the Operating System being used. Both EPP and ECP modes require two banks of Standard/Extended registers to control the standard/enhanced functionality of MCS99xx Parallel port. The base address of 2nd bank Extended registers must be equal to "the base address of 1st bank Standard registers + 400h" to meet the IEEE-1284 standard specification. Unfortunately, the PCIe specification does not make any guarantees that two resource requests will have any specific relationship to each other. We request the two banks with the desired offset, but the system does not always honor those requests, and often returns the extended register bank at some entirely different address than what we requested. When this occurs, neither EPP nor ECP Mode will be workable. For this reason, some software (including Device Drivers for Printers etc.) will not work with MCS99xx PCIe based Parallel port.
Is it possible to change the COM port number of MCS99xx?
Yes, the COM port number of MCS99xx can be changed to a desired number that is free and un-used by device/serial application. If you are using Windows systems, there is a control which will let you change the COM port number easily.
1. Go into the Device Manager.
2. Open the Properties page for the Port in question (under Ports COM & LPT).
3. In the "Port Settings" tab, click the "Advanced" button. On the screen that opens is the control to change the COM port number.
Is it possible to change the LPT port number of MCS99xx?
Yes, we can change the LPT port number by using a drop down list located in LPT Port Properties. To change the LPT port number, go to "LPT Port Properties => Port Setting => LPT Port Number". If there is no standard LPT port available on motherboard, MCS99xx LPT port will automatically enumerate as LPT1, otherwise it will enumerate as LPT3.
Does MCS99xx support Serial mouse under DOS?
In DOS operating system, the serial mouse driver expects the standard IRQ to be present for serial port. The IRQ of MCS99xx serial ports, which is different from the standard serial port, is assigned by system BIOS and cannot be changed. Therefore, the serial mouse support is not possible under DOS for MCS99xx.
Hardware Design Documentation
MCS9904 PCIe Minicard 4 Serial Reference Schematic
Software & Tools
Linux kernel 4.x/3.x/2.6.x DriverFor all Android systems, Linux kernel 2.6.15 and later
Windows 10/8.x 32-bit DriverFor x86 CPU platform, HLK/WHCK certified
Windows 10/8.x 64-bit DriverFor x64 CPU platform, HLK/WHCK certified
Windows 7/Vista/XP 32-bit DriverFor x86 CPU platform, WHCK certified
Windows 7/Vista/XP 64-bit DriverFor x64 CPU platform, WHCK certified
Windows CE 5.0 / Mobile 5 / Mobile 6 DriverFor CEPC x86 platform
PCIe/PCI/USB to serial/parallel bridge solutions for industrial computers and embedded systems
UART Transceivers/EL Drivers
5V/3V RS-232/RS-422/RS-485 UART transceivers solutions for industrial computers, embedded systems; EL drivers solutions for PDAs, cell phones and other handheld/portable devices.
PCI Bridge [NOT FOR NEW DESIGN!!]
PCIe to Multi I/O (4S, 2S+1P, 2S+SPI, LB) Controller