Calibre UK UCA93 I2C Owner's Manual

Calibre UK Ltd 2003
CALIBRE
UCA93 I2C Communications Adapter
Issue 1.0
01/07/2003
Issue 1.0 Page i 01/07/03
Welcome to the Calibre UCA93 adjustable voltage I
2
C Adapter. This Adapter provides full I2C bi-directional compatibility as either a master or slave from within a Windows 98 2000 or Windows XP environment.
If you have any queries relating to this or any other I
2
C product supplied by Calibre please visit
our web site www.calibreuk.com.
For technical support please e-mail techsupport@calibreuk.com or send your queries by fax to (44) 1274 730960, for the attention of our I2C Technical Support Department.
COPYRIGHT
This document and the software described within it are copyrighted with all rights reserved. Under copyright laws, neither the documentation nor the software may be copied, photocopied, reproduced, translated, or reduced to electronic medium or machine readable form, in whole or in part, without prior written consent of Calibre UK Ltd ("Calibre"). Failure to comply with this condition may result in prosecution.
Calibre does not warrant that this software package will function properly in every hardware/software environment. For example, the software may not work in combination with modified versions of the operating system or with certain network Adapter drivers.
Although Calibre has tested the software and reviewed the documentation, CALIBRE MAKES NO WARRANTY OR REPRESENTATION, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO THIS SOFTWARE OR DOCUMENTATION, THEIR QUALITY, PERFORMANCE, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. THIS SOFTWARE AND DOCUMENTATION ARE LICENSED 'AS IS', AND YOU, THE LICENSEE, BY MAKING USE THEREOF, ARE ASSUMING THE ENTIRE RISK AS TO THEIR QUALITY AND PERFORMANCE.
IN NO EVENT WILL CALIBRE BE LIABLE FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE SOFTWARE OR DOCUMENTATION, even if advised of the possibility of such damages. In particular, and without prejudice to the generality of the foregoing, Calibre has no liability for any programs or data stored or used with Calibre software, including costs of recovering such programs or data.
Copyright Calibre UK Ltd (c) 2003 Cornwall House, Cornwall Terrace
Bradford, BD8 7JS. UK. E-mail: sales@calibreuk.com Web site www.calibreuk.com All World-wide Rights Reserved
Issue 1.0 01/07/2003
All trade marks acknowledged
Calibre operates a policy of continued product improvement, therefore specifications are subject to change without notice as products are updated or revised.
E&OE.
Issue 1.0 Page ii 01/07/03
Contents
INTRODUCTION 1
1.1. General Introduction 1
1.2. Packing List 1
1.3. Configuring the Adapter 1
1.4. Bus Termination and Protection 1
1.5. Connecting the Adapter to your System 1
1.6. Bus Capacitance Limitations/Cable Choice 2
1.7. Variable Voltage Bus Power Supply 2
INSTALLING THE ADAPTER UNDER WINDOWS 3
2.1. Introduction 3
2.2. Installing the Adapter 3
LIBRARIES FOR PROGRAMMING IN MICROSOFT W INDOW S ENVIRONMENTS 4
3.1. Introduction 4
3.2. Function Prototypes 5
3.3. Function Description 7
3.3.1. Setup 7
3.3.2. SendAddress 7
3.3.3. WriteByte 8
3.3.4. ReadByte 8
3.3.5. SendStop 8
3.3.6. Restart 8
3.3.7. GetStatus 9
3.3.8. Recover 9
3.3.9. SlaveLastByte 9
3.3.10. BlockWrite 10
3.3.11. SetBlockData 10
3.3.12. BlockWriteStatus 10
3.3.13. BlockRead 10
3.3.14. GetBlockData 11
3.3.15. BlockReadStatus 11
3.3.16. BlockSlaveTransmittter 11
3.3.17. BlockSlaveTransmitterStatus 12
3.3.18. BlockSlaveReceiver 12
3.3.19. BlockSlaveReceiverStatus 13
3.3.20. CheckBusVoltage 13
3.3.21. CheckPullupVoltage 13
3.3.22. Write_IO_Pin 14
3.3.23. Read_IO_Pin 14
3.3.24. SendAddressNoStatus 15
3.3.25. WriteByteNoStatus 15
3.3.26. ReadByteNoStatus 15
3.3.27. SendStopNoStatus 15
3.3.28. RestartNoStatus 16 The Real-Time Bus Monitor 17 Appendix A I
2
C Communications Adapter Status Codes 18 Appendix B Migration Notes for Existing Calibre I2C Customers 19 When the THE MOST COMMONLY ASKED I2C QUESTIONS 22
General Questions 22 Windows Questions 22
Issue 1.0
Page 1
01/07/03
INTRODUCTION
1.1. General Introduction
The UCA93 is a USB V1.1 to I2C Adapter based on the PIC 16F874 microcontroller using a Philips PCF8584 for the bus monitor function. It features full I
2
C bi-directional compatibility as either a master or
slave. I
2
C connections are made via a 9 way “D” socket. This product complies with the requirements of
EEC Directive 89/336 for EMC and is CE marked.
The UCA93 provides full software control of the I
2
C bus voltage, bus speed and pull up resistors. Two
spare IO pins are available to the user.
The software functions supplied with the Adapter have been designed to feel as familiar as possible to customers with existing Calibre AT or PCI bus I2C adapters. Nevertheless there are some unavoidable differences between the way the UCA93 works and previous generations of products. Customers are strongly recommended to read Appendix B which deals with migration issues.
New software block functions have been added to take advantage of the USB port’s high data rate.
1.2. Packing List
Your I2C Communications Adapter is supplied with the following items:-
A. I
2
C CD ROM
B. The UCA93 Adapter and USB cable
1.3. Configuring the Adapter
NOTE There are no user adjustable components within the Adapter. The Adapter contains static sensitive devices.
Read the following section to change the configuration.
1.4. Bus Termination and Protection
Normally the system to which the I2C Communications Adapter is to be connected should already have master pull up resistors fitted to the SCL and SDA lines. If this is not the case, pull up resistors to the +V(adjustable) can be configured as part of the software set up.
1.5. Connecting the Adapter to your System
The USB cable MUST be connected between the PC and the Adapter.
All I
2
C connections are made via a 9 way “D” socket:
Pin Function 10V 20V 30V 40V 5NC 6 SDA (Bi-directional) 7 +V (variable voltage) 8 SCL (Bi-directional) 9NC
The Adapter also provides two digital input / output pins, which are connected via a 0.1” 4 way PCB connector.
IO 0 is an open drain output which requires an external pull up and can be used on systems which are not 5V tolerant. If IO 0 is used as an input it MUST be connected to a 5V system.
Issue 1.0
Page 2
01/07/03
IO 1 is a 5V TTL input and can only be used on 5V tolerant systems.
Pin Function 1 NC – DO NOT CONNECT 2IO 0 3IO 1 40V
1.6. Bus Capacitance Limitations/Cable Choice
The maximum allowable capacitance on the I2C bus in normal mode depends on the value of the SCL and SDA master pull-ups, but never exceeds 400pF. Refer to Phillips Technical Handbook Book 4 Parts 12a and 12b for further details. Care should be taken in choosing a length and type of interconnecting cable, which will not exceed this limit.
For most systems with a distance of a few metres between the I
2
C Communications Adapter and the target system, screened cable is NOT recommended, as it is likely to introduce too much capacitance. However, the EMC performance of an unscreened cable is always potentially poorer than a screened one. The Adapter's EMC performance even with an unscreened cable is good - but this may not be true of the target system! If you are in any doubt at to the best way to connect up your system with EMC in mind please contact your supplier or Calibre for advice.
1.7. Variable Voltage Bus Power Supply
Pin 7 on the “D” connector is connected to the variable bus voltage power rail. Power for external circuitry can be drawn from here, but care should be taken never to short it to 0V or to exceed 250mA loading. It is short circuit and overload protected by a self-resetting thermal fuse but prolonged shorting could cause the UCA93 to generate an excessive amount of heat.
The bus voltage is set via software, in the range 2V to 5V.
NOTE that if a bus voltage greater 4.2V is selected the output will be 5V.
Issue 1.0
Page 3
01/07/03
INSTALLING THE ADAPTER UNDER WINDOWS
2.1. Introduction
This section details the installation of the UCA93 I2C communications Adapter under Windows 98® / Windows2000® and Windows XP®.
The appearance of the dialog boxes during the installation of new hardware varies depending on the version of Windows.
The Adapter supports plug and play via the USB port.
2.2. Installing the Adapter
Connect the Adapter to the PC using the USB cable, the power light will illuminate.
The operating system will detect the installation of new hardware, follow the set up wizard instructions.
Either browse the CD or select the “have disc” option select the FTD2XX.inf.
The wizard will then install the device drivers.
IMPORTANT NOTE
Windows XP includes a driver for the USB interface device used in the Adapter, and will normally install this. The driver installed from the XP disc
WILL NOT WORK
with this Adapter.
If you are using Windows XP you can check that the correct driver is installed by
1) Right click on the “My Computer Icon”
2) Select properties
3) Select the Hardware Tab and click “Device Manager”
4) Expand the “Universal Serial Bus Controllers”
5) If the driver is provided by Microsoft you need to select the update driver then browse for and select the FTD2XX.inf
6) Once installed correctly the FTDI FT8U2XX Device should be listed
PLEASE NOTE The FTD2XX.inf is NOT digitally signed but is correct.
Issue 1.0
Page 4
01/07/03
LIBRARIES FOR PROGRAMMING IN MICROSOFT WINDOWS ENVIRONMENTS
3.1. Introduction
Each utility is documented in a standard format which lists its name, usage, function and effect on the Adapter is given. The Adapter should be setup prior to any data transfer.
Within the DLL there are two versions of some functions e.g. SendAddress and SendAddressNoStatus, the first provides legacy support for software written for other Calibre UK Ltd I2C products, the second format does not return the status.
3.1.1. Legacy Function
The following changes have had to be made to the legacy functions
1) The parameters passed to the setup function are specific to the Adapter
2) The status wait has been removed and is now controlled by hardware, the Adapter will wait up to 500 micro seconds before returning an error code indicating that the transfer failed.
3) The Setnack is now changed on the read you require the acknowledge state to change NOT on the byte before.
4) There is no longer a need to perform a Trash read after a restart.
3.1.2. No Status Functions
The xxNoStatus functions provide faster transfers as they do not require the USB bus to change direction between writing and reading. The function prototypes are included in the manual but care MUST be taken when using these functions not to corrupt the I
2
C with uncontrolled transfers. These
functions are ONLY to be used when users are 100% certain that all devices on the I
2
C WILL
acknowledge their address and that there is a single master.
PLEASE NOTE NO TECHNICAL SUPPORT IS AVAILABLE FOR THESE FUNCTIONS
Calibre UK recommend using the block functions detailed below
3.1.3. Block Functions
To aid users wishing to transfer data without the complication of having to write a I2C transfer protocol a number of Block functions have been added. DO NOT exceed the data transfer limitations described in the individual functions as this will cause errors and data corruption.
C and C++ users will undoubtedly wonder why they are passing data to the DLL when they could much more efficiently pass a pointer, unfortunately not all the development environments this Adapter will be used on support pointers.
Issue 1.0
Page 5
01/07/03
3.2. Function Prototypes
If you are using ‘C’ or ‘C++’ copy the file CALUCA.H into the directory containing your project and add the line:
#include " CALUCA.H"
The following functions are implemented in the windows libraries:-
extern __declspec(dllimport) int WINAPI Setup (int, int, int, int, int); extern __declspec(dllimport) int WINAPI SendAddress (int, int); extern __declspec(dllimport) int WINAPI WriteByte(int); extern __declspec(dllimport) int WINAPI ReadByte(int); extern __declspec(dllimport) int WINAPI SendStop(void); extern __declspec(dllimport) int WINAPI Restart (int, int); extern __declspec(dllimport) int WINAPI GetStatus(void); extern __declspec(dllimport) int WINAPI recover(void); extern __declspec(dllimport) void WINAPI SlaveLastByte(void); extern __declspec(dllimport) int WINAPI DLLVersion(void);
extern __declspec(dllimport) void WINAPI SendAddressNoStatus(int , int, int); extern __declspec(dllimport) void WINAPI RestartNoStatus(int , int, int ); extern __declspec(dllimport) void WINAPI WriteByteNoStatus(int ); extern __declspec(dllimport) void WINAPI ReadByteNoStatus(int ); extern __declspec(dllimport) void WINAPI SendStopNoStatus(void);
extern __declspec(dllimport) int WINAPI SetBlockData(int); extern __declspec(dllimport) int WINAPI BlockWriteStatus (void); extern __declspec(dllimport) int WINAPI BlockWrite(int , int , int ,int, int ); extern __declspec(dllimport) int WINAPI GetBlockData(void); extern __declspec(dllimport) int WINAPI BlockReadStatus(void); extern __declspec(dllimport) int WINAPI BlockRead(int , int , int , int, int ); extern __declspec(dllimport) int WINAPI BlockSlaveTransmitterStatus(void); extern __declspec(dllimport) int WINAPI BlockSlaveTransmitter( int ); extern __declspec(dllimport) int WINAPI BlockSlaveReceiverStatus(void); extern __declspec(dllimport) int WINAPI BlockSlaveReceiver(int , int ); extern __declspec(dllimport) int WINAPI Write_IO_Pin (int , int ); extern __declspec(dllimport) int WINAPI Read_IO_Pin (int ); extern __declspec(dllimport) int WINAPI CheckBusVoltage(void); extern __declspec(dllimport) int WINAPI CheckPullupVoltage(void);
Loading...
+ 17 hidden pages