is_WriteI2C

uEye Camera Manual Version 4.92


is_WriteI2C

Windows_Logo
Linux_Logo

USB 2.0

USB 3.0

GigE

USB 2.0

USB 3.0

GigE

Syntax

INT is_WriteI2C (HIDS hCam, INT nDeviceAddr, INT nRegisterAddr, BYTE* pbData, INT nLen)

Description

Using is_WriteI2C(), you can write data via the I2C bus of a board level camera.

The uEye camera processes I2C addresses in a 7-bit format that is created from the 8-bit format by a bit shift to the right. The eighth bit indicates whether an address is a read (1) or write (0) address. For example, the 7-bit address 0x48 is the write address 0x90 and the read address 0x91 in 8-bit format.

For information on the signals applied to the I2C bus, refer to the D: Specifications chapters.

hint_info

I2C functions are only supported by the PCB versions of the camera series uEye LE USB 3.1 Gen 1, USB 3 uEye LE, USB uEye LE, and GigE uEye LE.

hint_info

If you write data on a micro controller via the uEye camera, make sure that the micro controller confirms the transfer with an ACK message.

hint_info

The following addresses for nDeviceAddr are assigned to the uEye camera and must not be used:

7-bit format: 0x10, 0x48, 0x4C, 0x50, 0x51, 0x52, 0x55, 0x5C, 0x5D, 0x69, 0x77

8-bit format: 0x20, 0x90, 0x98, 0xA0, 0xA2, 0xA4, 0xAA, 0xB8, 0xBA, 0xD2, 0xEE

For UI-336x/UI-536x and UI-337x/UI-537x: 0x82

Input parameters

hCam

Camera handle

nDeviceAddr

Device address (8 bit format)

nDeviceAddr | IS_I2C_DONT_WAIT

By default, it is polled when the byte is actually written to the storage cell. If IS_I2C_DONT_WAIT is ORed to nDeviceAddr there will be no polling.

nRegisterAddr

Address of a 8 bit register (only 8-bit addresses are valid)

nRegisterAddr |
IS_I2C_16_BIT_REGISTER

Address of a 16 bit register

nRegisterAddr |
IS_I2C_0_BIT_REGISTER

If only a device address but no register address exists.

pbData

Data to be written

nLen

Data length (max. 62 byte)

Return values

IS_CANT_COMMUNICATE_WITH_DRIVER

Communication with the driver failed because no driver has been loaded.

IS_CANT_OPEN_DEVICE

An attempt to initialize or select the camera failed (no camera connected or initialization error).

IS_INVALID_CAMERA_HANDLE

Invalid camera handle

IS_INVALID_I2C_DEVICE_ADDRESS

Invalid I2C device address

IS_INVALID_PARAMETER

One of the submitted parameters is outside the valid range or is not supported for this sensor or is not available in this mode.

IS_IO_REQUEST_FAILED

An IO request from the uEye driver failed. Possibly the versions of the ueye_api.dll (API) and the driver file (ueye_usb.sys or ueye_eth.sys) do not match.

This error code is also returned if the micro controller does not report back with ACK.

IS_NO_SUCCESS

General error message

IS_SUCCESS

Function executed successfully

Related functions

•is_ReadI2C()

•is_DeviceFeature: Setting the I2C stop bit

Example

// ------------------------------------------------------

// Write to I2C device:

//

// 16 bit register addressing

// Note:

// Only writing 2 bytes at once is allowed

 

is_WriteI2C (hCam, DevAdr, RegAdr | IS_I2C_16_BIT_REGISTER, pbData, 2);

 

// 8 bit register addressing

// Note:

// Writing 1 or 2 bytes at once is allowed

 

// Writing 1 byte

is_WriteI2C (hCam, DevAdr, RegAdr, pbData, 1);

// Writing 2 bytes

is_WriteI2C (hCam, DevAdr, RegAdr, pbData, 2);

 

 

// ------------------------------------------------------

// Read from I2C device:

//

// 16 bit register addressing

is_ReadI2C (hCam, DevAdr, RegAdr | IS_I2C_16_BIT_REGISTER, pbData, 2);

 

// 8 bit register addressing

 

// Reading 1 byte

is_ReadI2C (hCam, DevAdr, RegAdr, pbData, 1);

// Reading 2 bytes

is_ReadI2C (hCam, DevAdr, RegAdr, pbData, 2);

 

 

// ------------------------------------------------------

// Example values

// Device address (from device data sheet): 0x40

// Device address in 8 bit format (after left shift): 0x80

// Device address for write (generated by is_WriteI2C()): 0x80

// Device address for read (generated by is_ReadI2C()) 0x81

 

// Write value 0x52 to device with address 0x40 in register 0x00

BYTE bValue = 0x52;

is_WriteI2C (hCam, 0x80, 0x00, &bValue, 1);

 

// Read from device with address 0x40, register 0x00

INT nVal;

BYTE bValue = 0;

is_ReadI2C (hCam, 0x80, 0x00, &bValue, 1);

Suggestion for improvement? Send us your short Feedback on this chapter. Thank you very much!
For technical questions please contact your local distributor or use the support form on our website.


© 2019 IDS Imaging Development Systems GmbH
https://en.ids-imaging.com