Digital I/O

cancel
Showing results for 
Search instead for 
Did you mean: 

16-bit input transfer using 6533 only transfers 32-bits at a time

Hi,

I have an application that has been transferring large amounts of data using the PCI-DIO-32HS (6533) for a while now. I use the DIG_Grp_Config, DIG_Grp_Mode, and then DIG_Block_In (&DIG_Block_Out) to use the four 8 bit ports as 16-bit input and 16-bit output. This has been working fine more or less. Recently, I discovered that the 16-bit input using DIG_Block_In transfers only 32-bits at a time. In other words, it always transfers 2 16-bit words at a time. If I have a device that tries to transmit 5 16-bit words to the card, only 4 16-bit words will arrive and the 5th will not be placed into the buffer until a 6th 16-bit word is sent. I couldn't find this documented anywhere in any of the docum
entation. Is this the way that DIG_block_in transfers data or am I just crazy? Thanks for your replies!
0 Kudos
Message 1 of 3
(2,985 Views)
Once we have a resolution via email, I will post it.
0 Kudos
Message 2 of 3
(2,985 Views)
Hi Juno,

The 6533 will always transfer data to the host PC in groups of 32 bits (4 bytes) when using DMA. Since you are acquiring data from 2 ports, every one of your samples is 2 bytes wide. The board requires 2 samples before it will transfer data across the PCI bus. If you were acquiring data from all 4 ports within the same group, you would be able to acquire every sample.

As a comparison, the 6534 (with large onboard memory) is designed to handle larger sustained DMA transfers. On order to make the transfers more efficient, it transfers data in groups of 32 bytes (instead of 4 bytes like the 6533 and PCI-DIO-32HS).

I hope that helps.
Message 3 of 3
(2,985 Views)