The Lan I2C Adapter VM is a versatile programmable Ethernet to I2C adapter with an adjustable I2C frequency up to 400 kHz. The adapter provides system designers a quick and easy way to add Ethernet networking capabilities to any device with an I2C interface. Implementing this adapter in a system allows Ethernet connectivity and standard protocol processing to be completely offloaded from the system, significantly reducing hardware, firmware and software development. It is therefore the first choice for Machine and Equipment Builders.
The core of the adapter is a dual core ARM 32 Bit microcontroller. Each core has an independent I2C interface, however both interfaces are connected to the same I2C bus. While the I2C interface in Core 1 can be I2C master or slave, the I2C interface in Core 2 is I2C master only.
Core 1 serves as a classic out-of-the-box Ethernet-to-I2C adapter with I2C master and slave functionality. The disclosed interface documentation allows the adapter to be implemented in target applications independent of the operating system. Whether Windows, Linux, real-time operating systems or others, the adapter is completely independent of the operating system and requires no drivers. However, a Windows DLL (Dynamic Link Library) is available to speed up the implementation of the adapter in applications running on Windows.
A virtual machine emulating an 8051 microcontroller is implemented in Core 2. Real-time, time-sensitive and repetitive processes can be run in the virtual machine. This also reduces network traffic, among many other benefits. A simple case example, when it comes to monitoring a large number of I2C devices (e.g. flow, temperature and pressure sensors) then it is important to read the values in real time and to react to them as fast as possible. If required, status messages can be forwarded to the PC.
As a second case example, some I2C devices require certain registers to be constantly updated at short time intervals, even if the values are not changing. Such repetitive processes cause a lot of unnecessary network traffic. Running such processes in the virtual machine reduces network traffic to a minimum.
Each Core has an additional interrupt input needed to respond to external events without constantly polling connected I2C devices. For example, an IO expander uses an interrupt output to inform the master as soon as the status of the IOs has changed. The interrupt input can be activated (rising or falling edge) or deactivated by software. In I2C slave mode, the interrupt output is used. In this case, an external I2C master is notified as soon as the I2C slave output buffer is filled with new data. Switching between master mode and slave mode is done by software. Since the I2C interface in Core 2 can only be operated in I2C master mode, no interrupt output is available.
4.7k pull-up resistors are already on board. However, these can be disabled to use external resistors. The pull-up voltage can be set to either the internal 3.3V or to an external voltage in the range from 2.5V to 15V.
The lowest 256 bytes of the onboard 32K bytes EEPROM are reserved for storing internal settings. The remaining memory is available to the user. This memory area can be used to store any user specific information and/or VM 8051 application code.
The “IIC Device Control” software supports all I2C devices that comply with the I2C specification. Ready-to-use GUI for a variety of different I2C devices, such as Temperature, Pressure, Flow, ADC, DAC, IO-Expander, PWM, Audio, Digital Potentiometer, Fan, LED Blinker / Dimmer, Magnetometer, Multiplexers, Switchers, RTC / Calendar, Stepper Motor, Accelerometer and Gyroscope. The software supports EEPROMS of 1Kbit (128 bytes) to 1Mbit (128K bytes).
For more information on the disclosed software interface, please refer to the “TCP/UDP I2C Interface Manual”. When using the Windows Dynamic Link Library (DLL) please refer to the “Interface Manual LANIICVM.DLL”