F – tx ack advance – Keyspan USA-49WG User Manual

Page 21

Advertising
background image

21

7.1.f – TX ACK Advance

Data flushing: Sometimes, an application will issue a “transmit flush” command to the adapter to get rid of extra data.
For example, let’s say an application sends “AAAA” to the adapter, and then, once it’s received the “I’m done” indication
sends “BBBB.” Now, let’s say that sometime after sending “BBBB,” the application decides to cancel whatever part of
the ‘BBBB” has yet to leave the serial port, and sends a “transmit flush” command to the adapter. If the adapter had
been lying about being done sending “”AAAA,” it might still not be done, and the flush could purge the transmit FIFO
of some of the A’s (which is not what the application was expecting) in addition to the B’s.

Timing: In some applications, the receipt of the “I’m done” indication is used as a timing reference point. For example,
an application could send a data stream like this:

COMMAND…………………………………………………….

The extra periods following COMMAND would be just used to establish a timing interval: the application would know
that once the serial port said “I’m done,” the receiver would have had at least 64 character times to process COMMAND.
If the “I’m done” indication was sent early, the application might then do it’s subsequently action too early.

Another possibility is that the application is using the timing of the “I’m done” message to determine the baud rate. For
example, if the serial port was using external clocking, the application might not know what baud rate was being used,
so it would send a message and see how long it took. The early delivery of “I’m done” could screw up its calculation.

There are many other communication protocols in which time periods are counted from the point that message has
been delivered. Any time you change the timing of the “I’m done” indication, you run the risk if interfering with such
protocols.

What Should I Use?

There are various way to configure Tx Ack Advance. Following is a discussion of some possibilities:

None: If you’re using a baud rate of 9600 or less, you probably don’t have a problem. The 1 millisecond delay will not
significantly affect your throughput, and you can select this option. This option is also a good choice if you are running
an application in which throughput is not an issue, or one in which guaranteeing 100% correct operation is important
enough that you’d prefer not to risk having problems.

Auto: The ‘Auto” setting uses that calculation described above when internal clocking is used and sets the Tx Ack
Advance to “None” when external clocking is used (this is because the host doesn’t know the baud rate when the
clocking is supplied externally).

Experiment: If you’re using a baud rate above 9600, you can simply try increasing the Tx Ack Advance setting, and
see whether it improves performance 9in which case, great!), causes problems (in which case, don’t use it) or doesn’t
make any difference (in which case it doesn’t matter what you do).

Advertising