BCON for LVDS Control Protocol#
This topic is aimed at experienced hardware and software engineers proficient in electronics, software development, and embedded system design. The topic assumes that users have significant experience in programming with the GenICam generic programming interface and are familiar with the GenCP 1.2 specification.
General Information#
Basler BCON for LVDS camera modules are configured via a standard I²C interface. The camera modules are GenICam devices and use GenCP (Generic Control Protocol), version 1.2, as their low level protocol.
All information given in this topic is based on the GenCP 1.2 specification.
Basler BCON for LVDS Control Protocol#
GenCP Prefix#
To communicate with a Basler BCON for LVDS camera module, you must use the following prefix:
Width (Bytes) | Offset (Bytes) | Description |
---|---|---|
4 | 0 | 0x434C5356 Contains the ASCII string "VSLC", short for Versatile Serial Link Control (with "V" in the LSB). |
GenCP Postfix#
Each GenCP command and each GenCP acknowledge uses a CRC-16 code as postfix.
To communicate with a Basler BCON for LVDS camera module, you must use the following postfix:
Width (Bytes) | Offset (Bytes) | Description |
---|---|---|
2 | 0 | CRC-16 code Contains the CRC-16 with LSB first. Includes the prefix, CCD and SCD data. The generator polynom used is 0x8005. |
GenCP Command IDs#
Basler BCON for LVDS camera modules support the following command IDs:
- READMEM_CMD
- READMEM_ACK
- WRITEMEM_CMD
- WRITEMEM_ACK
- PENDING_ACK
Basler BCON for LVDS camera modules don't support the following command IDs:
- EVENT_CMD
- EVENT_ACK
Sample I²C Transaction#
The following pseudo data structure describes the I²C data stream initiated from the I²C master.
GenCP Command#
The pseudo data structure of a GenCP Command (without start, stop, and ACK bits) is as follows:
I²C Address (write) | Prefix ("VSLC") | Payload (GenCP CMD) | Postfix (CRC16) |
Example#
The following image shows an I²C dump of a valid I²C write request.
As an example, the GenCP READMEM_CMD command for the Maximum Device Response Time register is used.
GenCP Acknowledge#
The pseudo data structure of a GenCP Acknowledge (without start, stop, and ACK bits) is as follows:
I²C Address (read) | Prefix ("VSLC") | Payload (GenCP ACK) | Postfix (CRC16) |
Example#
The following image shows an I²C dump of a valid I²C read request.
As an example, the GenCP READMEM_ACK command for the Maximum Device Response Time register is used.
Considerations When Reading Data from the Device#
Before issuing a read command, the I²C master must send a valid GenCP command. Otherwise, the device will return a 0xFF value for each requested byte.
If the I²C master requests more data than the device is able to return, the following occurs:
- The device returns the data that the device is able to return.
- The device returns a 0xFF value for each further byte until the read request is finished.
Bootstrap Register Map (BRM)#
According to the GenCP standard, the total BRM is divided into two parts:
- The Technology Agnostic Bootstrap Register Map (ABRM)
- The Technology Specific Bootstrap Register Map (SBRM).
The next sections describe both register maps.
Technology Agnostic Bootstrap Register Map (ABRM)#
The Technology Agnostic Bootstrap Register Map (ABRM) uses the first 64 kB of the register space.
Info
The ABRM shown below is exactly the same as the ABRM described in the GenCP 1.2 specification, with the following exceptions:
- The Heartbeat Timeout register is not used.
- The Message Channel ID register is not used.
- The Access Privilege register is not used.
Accessing these registers will return a GENCP_INVALID_ADDRESS status code.
For more information, refer to Chapter 5 in the GenCP 1.2 specification.
Table Definitions#
- Width: Size of the register in bytes
- Offset: Address of the register in the device's BRM
- Support: M = Mandatory / R = Recommended / CM = Conditional Mandatory (depending on the capability bits)
- Access: R = Read-only, W = Write-only, RW = Read/Write
- Description: Name and short description
Width (Bytes) | Offset (Bytes) | Support | Access | Description |
---|---|---|---|---|
4 | 0x00000 | M | R | GenCP Version Complying GenCP specification version. |
64 | 0x00004 | M | R | Manufacturer Name String containing the self-describing name of the manufacturer. |
64 | 0x00044 | M | R | Model Name String containing the self-describing name of the device model. |
64 | 0x00084 | CM | R | Family Name String containing the name of the family of this device. |
64 | 0x000C4 | M | R | Device Version String containing the version of this device. |
64 | 0x00104 | M | R | Manufacturer Info String containing additional manufacturer information. |
64 | 0x00144 | M | R | Serial Number String containing the serial number of the device. |
64 | 0x00184 | CM | RW | User Defined Name String containing the user defined name of the device. |
8 | 0x001C4 | M | R | Device Capability Bit field describing the device's capabilities. See note below. |
4 | 0x001CC | M | R | Maximum Device Response Time Maximum response time in ms. |
8 | 0x001D0 | M | R | Manifest Table Address Pointer to the Manifest Table. |
8 | 0x001D8 | CM | R | SBRM Address Pointer to the Technology Specific Bootstrap Register Map. |
8 | 0x001E0 | CM | RW | Device Configuration Bit field describing the device's configuration. |
4 | 0x001E8 | CM | RW | Heartbeat Timeout Heartbeat Timeout in ms. Not used by the Basler BCON for LVDS interface. |
4 | 0x001EC | CM | RW | Message Channel ID channel_id used for the message channel. Not used by the Basler BCON for LVDS interface. |
8 | 0x001F0 | CM | R | Timestamp Last latched device time in ns. |
4 | 0x001F8 | CM | W | Timestamp Latch |
8 | 0x001FC | CM | R | Timestamp Increment |
4 | 0x00204 | CM | RW | Access Privilege Not used by the Basler BCON for LVDS interface. |
4 | 0x00208 | - | - | Reserved Deprecated Protocol Endianness, don't reuse. |
4 | 0x0020C | CM | R | Implementation Endianness Endianness of device implementation registers. |
65008 | 0x00210 | M | none | Reserved Register Space |
Device Capability#
The Device Capability register is set to 0xE09. As specified in the GenCP 1.2 specification, this value indicates the following:
- Access Privilege Available: Unavailable (not used by the Basler BCON for LVDS standard)
- Timestamp Supported: Available (required by the Basler BCON for LVDS standard)
- String Encoding: 0x0 ASCII (required by the Basler BCON for LVDS standard)
- SBRM Supported: Available (required by the Basler BCON for LVDS standard)
- Written Length Field Supported: Available (required by the Basler BCON for LVDS standard)
Technology Specific Bootstrap Register Map (SBRM)#
The SBRM must start on a free manufacturer-specific address space after address 0xFFFF.
Table definitions
- Width: Size of the register in bytes
- Offset: Address of the register in the device's BRM
- Support: M = Mandatory / R = Recommended / CM = Conditional Mandatory (depending on the capability bits)
- Access: R = Read-only, W = Write-only, RW = Read/Write
- Description: Name and short description
Width (Bytes) | Offset (Bytes) | Support | Access | Description |
---|---|---|---|---|
4 | SBRM | M | R | GenCP Version Complying GenCP specification version. |
16 | SBRM + 0x04 | M | none | Reserved Register Space |
4 | SBRM + 0x14 | M | R | Maximum Command Transfer Length The maximum supported command transfer length of the device. |
4 | SBRM + 0x18 | M | R | Maximum Acknowledge Transfer Length The maximum supported acknowledge transfer length of the device. |
4 | SBRM + 0x1C | M | RW | Prepare Access Writing any value to this register will re-initialize the camera module. If the camera module is currently acquiring images, image acquisition and data transmission will be stopped. |
4 | SBRM + 0x20 | M | R | Clock Frequency The Basler BCON for LVDS clock frequency in Hertz. The value can range from 12000000 (12 MHz) to 84000000 (84 MHz). |
4 | SBRM + 0x24 | M | R | Pixels Per Clock Cycle The number of pixels transmitted per clock cycle via the Basler BCON for LVDS interface. |
4 | SBRM + 0x28 | M | R | Width The current width of the region of interest in pixels. |
4 | SBRM + 0x2C | M | R | Height The current height of the region of interest in pixels. |
4 | SBRM + 0x30 | M | R | Pixel Format The current SFNC pixel format. |