In applications such as high-speed machine vision, scientific research, and medical imaging, efficiently connecting industrial cameras with IEEE 1394b (FireWire 800) interfaces to computers is a core aspect of system design. The PCIe FIW series frame grabber launched by ADLINK Technology is based on the PCI Express bus and provides dual port (FIW62) or four port (FIW64) 1394b connections, supporting data transfer rates of up to 800Mb/s. It integrates industrial grade functions such as isolated digital I/O and programmable trigger output, and is designed for harsh visual inspection environments. This article will provide engineers with a comprehensive technical reference manual from the aspects of model comparison, hardware features, trigger mechanism, installation configuration, and software development.
Series Overview and Model Selection
The PCIe FIW series includes two main products:
PCIe-FIW62: Provides 2 1394b (FireWire 800) ports with x1 PCI Express interface, suitable for systems with fewer channels and cost sensitivity.
PCIe-FIW64: Provides 4 1394b ports and adopts x4 PCI Express interface to meet the synchronous acquisition needs of multiple cameras. It is also equipped with 4 isolated digital inputs, 4 isolated digital outputs, 4 isolated trigger inputs, and 4 isolated trigger outputs, making it an ideal choice for high-end machine vision systems.
Both cards comply with PCI Express Base Specification Rev 1.1 and support Windows XP/XP Embedded/Vista and newer systems (via compatible drivers). In terms of external dimensions, FIW64 is 129.5mm × 111.15mm, and FIW62 is 78.6mm × 105.75mm, suitable for different space chassis. When selecting, it is necessary to make a comprehensive decision based on the number of cameras, whether external triggering/I/O control is required, and the available PCIe slot specifications (FIW62 can be used for x1/x4/x8/x16, FIW64 requires x4/x8/x16).
Core hardware specifications and interface definitions
2.1 1394b Interface Characteristics
Number of ports: 2 for FIW62 and 4 for FIW64.
Transmission rate: Automatic negotiation supports 100/200/400/800 Mb/s, fully compatible with IEEE 1394-1995, 1394a-2000, and 1394b-2002 standards.
Physical connector: 9-pin 1394b socket with screw locking, ensuring reliable connection in industrial environments.
Power output: The onboard 4-pin ATX power socket (+12V) can provide power to the connected 1394 camera, reducing external power wiring.
Each port is equipped with an independent green LED status indicator light (LED19~LED22 correspond to CN1~CN4 of FIW64), which lights up when connected to the 1394b device normally for on-site diagnosis.
2.2 Digital I/O and Trigger Interface (FIW64 only)
FIW64 provides the following isolation signals through a 37 pin D-sub expansion connector (CN6):
4-channel isolated digital input: optocoupler, input voltage range 0~25V, high-level threshold ≥ 2V, low-level ≤ 0.5V, rated isolation voltage 1000V@60 In seconds.
4-channel isolated digital output: optocoupler, current sink type, maximum load voltage 24V, output saturation voltage drop ≤ 1.0V (at 80mA), maximum current sink 80mA.
4-channel isolated trigger input: Same electrical characteristics as digital input, but supports programmable polarity (rising edge/falling edge trigger), with a minimum pulse width of 0.1ms.
4-channel isolated trigger output: photoelectric coupling, current injection type, maximum injection current 40mA, output voltage drop ≤ 0.4V (16mA), programmable output pulse width (0.1-50ms, step 0.1ms), and adjustable delay (0-1000ms, step 1ms).
All isolated signals use independent common terminals (with corresponding common pins for each input/output/trigger), which facilitates the connection of external devices with different potentials and enhances anti-interference capabilities.
2.3 Board ID Setting (FIW64)
The FIW64 board is equipped with a 4-digit DIP switch (SW1) for setting the Card ID (0-3). The same PC system can support up to 4 FIW64 cards, distinguished by different IDs. By default, all are ON (ID=0), and users can set the binary encoding according to Table 2-5. The driver program identifies each card through its ID to ensure that signal channels do not conflict when multiple cards work together.

Detailed explanation of programmable triggering function - precision timing control
One of the most powerful features of FIW64 is its flexible triggering control mechanism, which is very suitable for visual applications that require precise timing excitation, such as strobe lighting and motion synchronization capture. This function is based on the process of "trigger input → delay → trigger output", with the following specific parameters:
3.1 Trigger timing parameters
T1 (Trigger Input Pulse Width): Minimum 0.1ms, too low a width may be ignored.
T2 (Trigger Delay): Programmable from 0 to 1000ms, with 1ms steps. Timing starts from the effective edge of the trigger input, and the trigger output is generated after the delay ends.
T3 (trigger output pulse width): programmable 0.1-50ms, step by 0.1ms.
Polarity combination: Configure four modes through registers -0 (input falling edge+output low validity), 1 (input falling edge+output high validity), 2 (input rising edge+output low validity), and 3 (input rising edge+output high validity).
3.2 Busy Timer Protection
To prevent multiple trigger signals from interfering with each other, FIW64 has a built-in "trigger busy flag". When a valid trigger input is detected, the busy flag is set and a timer is started (T4=T3+0.1ms). During this timer counting period, any new trigger inputs will be ignored. This mechanism ensures that each trigger outputs complete execution, avoiding overlapping or truncation of output pulses. Users can query the triggering status through software (if supported by the driver), or design external logic based on the timing diagram.
3.3 Typical application scenarios
Strobe lighting synchronization: The camera exposure signal is used as the trigger input, and after a delay of T2, the trigger signal is output to light up the LED flash, achieving precise fill light.
Multi camera time-division capture: Using different trigger channels to set different delays, multiple cameras can be sequentially exposed to avoid light source conflicts.
Motion triggered positioning: After the photoelectric sensor detects that the workpiece is in place, the trigger input is delayed, and the output signal triggers the camera to capture, which is synchronized with the encoder to achieve position synchronization.
When programming, it is necessary to call FIW64_SetTriggerDelayTime (set delay), FIW64_SetTriggerWidth (set pulse width), and FIW64_SetTriggerPolarity (set polarity), and read the current configuration through functions such as FIW64_SetTriggerDelayTime for debugging.
Guidelines for Connecting Input/Output Circuits to External Devices
4.1 Digital Input/Trigger Input Connection
Switch input: Connect one end of an external switch (such as a photoelectric sensor output) to the input pin (such as Digital Input 1) and the other end to the corresponding common terminal (Digital Input Common 1). Note that the common terminal can be connected to an external power source or ground, depending on the sensor type (NPN/PNP). The card optocoupler provides electrical isolation for the input, avoiding ground loops.
TTL signal input: When an external device outputs TTL level (0-5V), the TTL ground wire needs to be connected to the system GND, but attention should be paid to the signal polarity: due to the polarity of the LED inside the optocoupler, if the external signal is highly effective, it may need to be logically reversed in the software (such as through an inverter circuit or driver layer configuration). The manual suggests using a reverse connection method (such as connecting the TTL signal to the common terminal and the common terminal to the input pin) to obtain in-phase response. Please refer to Figure 2-9 for details.
4.2 Digital Output/Trigger Output Connection
Drive relay or indicator light: The output pin is in the form of current injection, that is, when the output is logic high (set by software 1), the internal transistor conducts, and the current flows from the external load (connected to the positive power supply) into the output pin, and then flows through the transistor to the common terminal (COM). The load power supply (3~24V) needs to be provided externally, and the load current should not exceed 80mA (digital output) or 40mA (trigger output).
Logic level output: If TTL high/low level needs to be output, an external pull-up resistor needs to be connected to+5V, and the logic level is generated by the on/off of the output transistor. The manual example provides the connection method, where the output high level (transistor off) is obtained by pulling up the resistor, and the output low level (transistor on) is low.
4.3 Loop Test
To verify the integrity of the trigger link, the trigger output signal can be physically connected to the trigger input (the same card or another card), and the trigger pulse can be sent through software to read the input status, achieving self checking. This is very useful during the system debugging phase.

Hardware installation and driver deployment
5.1 Physical installation steps
Turn off the host power, open the chassis, and select a PCIe slot that meets the bandwidth requirements (FIW62 can be plugged in x1, FIW64 requires x4 or above).
Remove the baffle, align the board with the slot, apply even pressure, and secure it with screws.
Connect the 1394b camera cable (it is recommended to use an industrial grade cable with a locking screw). If power is required for the camera, connect the 4-pin ATX power cord to CN5.
Cover the computer case and turn it on.
5.2 Windows System Driver Installation
After system startup, the built-in OHCI IEEE 1394 driver in Windows automatically recognizes and installs the basic 1394 bus driver (displayed as "Texas Instruments OHCI Compliant IEEE 1394 Host Controller" in Device Manager). If a yellow exclamation mark appears, you need to manually update the driver by pointing to the system's built-in driver or Windows Update.
For FIW64, it is also necessary to install the dedicated driver provided by ADLINK to enable DI/O and trigger functions. Run FIW64_SetupDisk.exe from the CD and follow the wizard to complete the installation (note that for Vista and above systems, the User Account Control UAC needs to be turned off, otherwise the driver may not load properly).
After installation, the device nodes corresponding to ADLINK FIW64 can be seen in the Device Manager.
5.3 Linux and other systems
Although the manual mainly targets Windows, the 1394b driver based on the OHCI standard can be supported in Linux through open source libraries such as libraw1394, and commonly used machine vision software such as HALCON and VisionPro can also access the card through the driver layer. For the triggering and I/O parts, ADLINK provides Linux version drivers (to confirm support with the manufacturer), it is recommended to contact FAE for assistance.
Key points of function library programming
ADLINK provides a complete API library (header files and DLLs) for FIW64, covering system initialization, device enumeration, digital I/O control, trigger parameter settings, and more. Key function list (see Chapter 4 for details):
System management: FIW64Initialize (load driver), FIW64_SetTotalDeviceNum (get card quantity), FIW64_SetTotalDeviceID (get card IDs), FIW64_SesetDevice (reset channel), FIW64_SetFirmwareVersion (version check).
Digital I/O: FIW64_SetDO (set/reset output), FIW64_SetDI (read input status).
Trigger control: FIW64_SetTriggerDelayTime、FIW64_GetTriggerDelayTime、FIW64_SetTriggerWidth、FIW64_GetTriggerWidth、FIW64_SetTriggerPolarity、FIW64_GetTriggerPolarity。
Error handling: FIW64_GetError Message converts error codes into readable strings.
Programming specification: Each ChannelNo is determined by both the Card ID and port index. For example, for a card with Card ID=0, the ChannelNo corresponding to its four 1394b ports is 0-3; Cards with Card ID=1 correspond to 4-7, and so on (up to a maximum of 4 cards). All APIs return 0 to indicate success, and negative error codes are defined in section 4.3 (such as -1 indicating device does not exist, -7 parameter exceeding limit, etc.).
Typical initialization process:
int ret = FIW64_Initialize();
int devNum;
ret = FIW64_GetTotalDeviceNum(&devNum);
if(devNum > 0) {
int ids[4];
FIW64_GetTotalDeviceID(ids, 4);
//Use the first card, ChannelNo=0
FIW64_SetTriggerDelayTime(0, 500); //Delay 500ms
FIW64_SetTriggerWidth(0, 100); //Pulse width 10ms (100 * 0.1ms)
FIW64_SetTriggerPolarity(0, 3); //Rising edge input, high effective output
}
Common troubleshooting and optimization suggestions
Camera unable to recognize: Check if the 1394b cable connection is secure and if the LED is on; Confirm that the camera has sufficient power supply (external power supply or+12V provided through CN5); Try replacing the port to eliminate single port faults.
Trigger output no response: Confirm that the trigger input signal level meets the specifications (high ≥ 2.4V, low ≤ 0.5V), pulse width ≥ 0.1ms; check if the polarity of the software configuration is correct; Measure the trigger output pin with an oscilloscope and observe for any pulses.
Unstable image transmission: Ensure the use of high-quality shielded 1394b cables and avoid bundling with high voltage or frequency converter cables for wiring; Check if there are other devices occupying too much PCIe bandwidth in the system (which can be allocated through BIOS settings).
Multi card ID conflict: If multiple FIW64 cards are installed, different IDs must be assigned through DIP switches, and the IDs of each card cannot be duplicated, otherwise the driver enumeration will fail.
Windows Vista/7 driver signature issue: If using a 64 bit system, it may be necessary to disable driver forced signature or use test mode; It is recommended to upgrade to a newer operating system and use the updated driver version of ADLINK.
