The LM4F CAN Tx FIFO example just sets up eight messages and sends them out all at once. Are Tx FIFOs only for the special case of wanting a series of messages to be transmitted in a given order. What if the message addresses have random values so that bus priority is in question? Does the FIFO over ride the standard bus priority? Is a Tx FIFO useful in handling random sets of messages being sent from different program functions such that messages are not lost?
I am writing a CAN driver that uses a barrel queue in front of the hardware. The user asks for a message to be sent, it is put on the barrel queue and timers pop messages off of the barrel queus such that the bus avoids 100% utization - something that can foul a system. I have found it almost impossible to overdrive just a single MOB. So using multiple MOBs is really a plan B for heavy Tx traffic. I assume some user will come up with code that will over drive the CAN driver.
So is a Tx FIFO useful/applicable in this case? -or-
Should I just allocate, say 8, MOBs for Tx messages. Then when I pop a message off of the barrel queue, I just search from the bottom up through the Tx MOBs and place in the first free MOB?