MDIO, I²C and SPI bus products

FDI is committed to providing the best support possible for it's products. If there is an answer that you cannot find or if you have additional questions, you can send an email to our support team. We will respond directly to your inquiry as quickly as possible.

For additional questions that relate more specifically to the manufacturer’s products, FDI provides full service design and development support.

USB-MPC-KIT

USB-MPC-KIT FAQs

The USB-MPC does not work correctly. Why?

Do NOT plug in the unit before installing the software.

Do you have Linux drivers available for the USB-MPC?

No, not at this time.

Do you have National Instruments LabView drivers for the USB-MPC ?

No, not at this time.

Do you have a development kit for using the USB-MPC in our application?

Yes, all installations of USB-MPC include the Windows DLL, LIB, and files necessary to support custom Window Applications.

Do you have examples of programs for using the USB-MPC?

Yes, the standard install creates the directory "Examples" which includes an example to read an EEPROM using I2C and an example to read registers using MDIO Clause 22.

What speeds can the MDIO run?

When using the USB-MPC graphical application, the MDIO runs at a default rate of 4 MHz. Using the development kit, the MDIO rate can be changed to 1, 2, 3, 4, or 6 MHz.

Does the USB-MPC support MDIO Clause 45?

Yes. The user interface supports basic reading and writing of Clause 45 registers, but because of the large range of access, may require customization of a DDF file.

My I2C does not want to talk to my device at address A0h. Why is that?

The USB-MPC has an onboard EEPROM already at this location that cannot be disabled. Your device will have to use a different address.

At what speed does the I2C bus run?

Speeds of both 100 kHz and 400 kHz are supported.

My USB-MPC seems to take a very long time talking I2C with the target and eventually fails with a read error. What’s going on?

Make sure the USB-MPC is talking to a I2C bus where the SCL and SDA lines are pulled up to Vcc. If the bus lines are low, use a 2K ohm resistor to pull-up the signals.

My target is dead and does not power up when plugged into the USB-MPC. What could be wrong?

The USB-MPC does not supply power. You must attach power to your board and feed back a reference voltage back to the USB-MPC.

My target has power, but communications is failing. Why?

Make sure you are supplying a reference voltage into the USB-MPC on your connector. The USB-MPC does not provide power to the outside.

Can I setup the USB-MPC to send more than 2 bytes?
Write one byte Address byte 1st Parameter
30 10 00

This tells the device that I am writing one byte to address 10 and setting it to 00.

You need to use the ‘Register’ mode access. Using the LTC2609 (4 digit LED driver) DDF as an example of a register based I2C. Also notice that [REG SIZE] declares the number of bytes to send. If a value of 1 is used, an 8-bit value is passed and written. If a value of 2 is used, a 16-bit value is written.
If 30 is the hexadecimal address of the I2C device or if it is an additional byte being written. Assuming it is the I2C device address, a DDF file could be created as follows:

[DEVICE]
	[NAME] "Device testing"
	[DESC] "Unknown Device testing"
	[TYPE] "I2C"
	[ADDR] 0x30
[REGISTER]
	[REG NAME] "Device Register"
	[REG ADDR] 0x10
	[REG SIZE] 1
	[REG TYPE] "RW"

The above creates an 8-bit register at 0x10 that accesses I2C slave device at 0x30.

Can I connect my USB-MPC through a hub?

The USB-MPC may not operate correctly through a hub. For best performance, connect the unit directly to your computer.

My USB-MPC is hanging when I do MDIO Clause 45 accesses but doesn't fail when I do MDIO Clause 22.

You are using an old version of the USB-MPC software (version 1.03 or earlier). Upgrade to version 1.03b or later.

When doing MDIO Clause 45 instructions, a MDIO Clause 22 instruction appears in the output stream. Why?

You are using an old version of the USB-MPC software (version 1.02 or earlier). Upgrade to the latest (version 1.03b or later).

My MDIO device is not listed. What do I do?

Because of the large number of different Clause 22 and Clause 45 MDIO devices available, the USB-MPC only provides a few devices and a generic DDF file. You will want to go to the directory C:\Program Files\FDI\USB-MPC\DDF and duplicate either the MDIO_22.ddf or MDIO_45.ddf file. Open the new file with a text editor and edit to match your device.

Can I have multiple devices with different addresses share the MDIO interface? Can I open several application windows and access different devices through MDIO at the same time?

Yes, you can run multiple instances of the USB-MPC software and control multiple MDIO devices chained together with different addresses. However, the GUI currently only allows access to one USB-MPC device at a time.

Can the preamble length be changed?

No, the preamble length cannot be changed.

What is the lowest voltage that the USB-MPC will work with?

The USB-MPC requires a minimum of 1.8V to work correctly.

What is the MDIO pin out for the 10-pin connector on the front of the USB-MPC?

The MDIO connector has the following pin out:

Pin Name Function
1 N/C No connection
2 N/C No connection
3 GND Reference ground from target
4 VMDIO Reference power from target
5 GND Reference ground from target
6 MDC MDIO Clock output
7 GND Reference ground from target
8 MDIO MDIO Data input/output
9 GND Reference ground from target
10 VMDIO Reference power from target

PC-I2C-KIT

PC-I2C-KIT FAQs

Can the PC-I2C serve as an I2C "monitor"?
No, the current PC-I2C does not support I2C monitoring since this would require a special hardware device capable of this "monitoring" function.
Can the PC-I2C be a slave?
No, the current PC-I2C does not support I2C slave operation. The PC-I2C MUST be the I2C master and also must be the ONLY master on the I2C bus.
What is the frequency range on the PC-I2C?
1KHz to 100KHz.
Is Windows NT/2000/XP support available on the PC-I2C?
Yes, with Version 1.3 Windows NT (service pack 3 or later), Windows 2000, and Windows XP are supported.
Where can I get more information on the I2C bus?
Two excellent sources of information on the I2C bus are:
  1. The I2C Peripherals Data Handbook (IC12) available from Philips Semiconductors.
  2. The I2C Bus, From Theory to Practice, from Dominique Paret with Carl Fenger, ISBN 0-471-96268-6, published by John Wiley & Sons. The PC-I2C-KIT is really just an enhanced version of the OM4777 (single master controller) mentioned in this book. The FDI version adds several new features, including on-board programming of I2C EEPROM's, and we also provide full Windows software support.
Can I interface the PC-I2C adaptor with my software application?
Yes, using our PC-I2C-DEV you can write a software plugin for any program you wish using software development programs such as Microsoft Visual Studio or Borland C++.
Can I interface the PC-I2C software to my software application?
No, there is no support for external communication with secondary software applications.
PC-I2C reads random data from the on-board EEPROM under Windows 9X?
Verify that the installation was completed properly by checking the existence of the following files in the \windows\system directory:
- agentcd.vxd
- DriverAgent.dll
- Pport.sys
- Pport_proxy.dll
These four files must be in the windows\system directory of your computer in order for PC-I2C software to function properly. IF they are not found, re-install the PC-I2C software utilizing the default settings. If the files still didn't install properly, then you should download the latest version of the software.
I get “No PC-I2C Hardware Detected” when attempting to read the EEPROM under Windows9X.
Make sure the following:
- the PC-I2C is attached to the proper parallel port and configured to match the system hardware (via the "Options" menu)
- If you are utilizing a laptop PC, make sure the parallel port is NOT powered down through power management.
- Verify that there is no other software running that manipulates the parallel port such as FLEXlm software protection.
- If you have the PC-I2C attached to external hardware, disconnect this and re-test.
- Make sure the parallel port is configured for "bi-directional" communications.
Does the PC-I2C-KIT include DLL files (application API), so we can write our own application to program the I2C Device?
The PC-I2C-KIT does not include an API, but you can purchase our PC-I2C-DEV which includes both the PC-I2C-KIT and the API and related materials.
Why does the Sequencer keep writing to the wrong registers?
Verify that you are using the register index numbers to address the registers in the Sequencer. These index numbers are based on the order of the registers in the DDF file starting at 0.
Let's say these entries were the first register listings in the DDF.
[REGISTER]
[REG NAME] "I2C REG 1"
[REG ADDR] 0x00
[REG SIZE] 1
[REG TYPE] RO
[REGISTER]
[REG NAME] "I2C REG 2"
[REG ADDR] 0xE8
[REG SIZE] 1
[REG TYPE] RW
So in order to read from the register at 0x00 in the sequencer, the command would be invoked:
READ REG[0] LOG("[Insert Comment Here]")
But in order to read from the register at 0xE8 in the sequencer, the command would be invoked:
READ REG[1] LOG("[Insert Comment Here]")
If you are uncomfortable using this method of addressing registers, the MEM token can be used in place of the REG token for absolute addressing of registers. The REG token is intended as a matter of convenience for those who prefer relative addressing.
Why is the Bus Speed I measured so far off from the setting I chose?

There was a typo in the Manual for PC-I2C-DEV. If your Developer's Manual is version 3.0 or 3.1 then the following change needs to be made.

On page 6, the description of the parameter "n50 Percent":

"Half of the desired clock period in uSec"

This should be:

"Fifty times the desired clock period in uSec"

Why can't I choose a range when programming a device in PC-I2C that has a width greater than one byte?
Choosing a range, when the memory word is greater than one byte, is not supported at this time. If byte addressing is necessary, it is possible to configure the memory device as an array of registers.

PC-I2C-DEV