My application using the PCI-CAN Series 2 card is programming automotive modules in a time-critical environment using a MSVC++ application running on Win2000. We need to send about 1.4 Mb of data to the module as quickly as possible, preferably less than 70 seconds. We are communicating with the modules at 500 Kbaud using standard frames (not extended).
Looking at the CAN bus on a scope, we see that the frames themsevles are about 240 microseconds wide, but after each frame of data, there is roughly 300 microseconds of delay.
In my C++ implementation, I have created a transmit object with a transmit queue size of 225 frames. The transmit object is configured to transmit "by call" and the period att
ribute has been set to 0. Using this configuration, I would assume that data would be sent as fast as possible. I am certain that the transmit queue is being filled faster than it can send the data out. What is producing the delays between frames, and how do I eliminate them?
(Attached file contains transmit object configuration and frame writing routine.)