I have tried using different CAN bit rates and different messages, but the result is the same. Only 48 frames are successfully sent. Never more, never less. Exactly 48 succeed.
As it turns out, the FIFO and TXQ buffers were overflowing due to the CAN Bus frames not successfully sending since I don’t have a CAN Bus device connected. What confused me is that Rak_Can.tryToSend (frame) returns 0 (no error) even when a CAN Bus device is not connected due to it placing the unsent messages in queues.
Part of why I am testing without a CAN Bus device connected is that I cannot rely on all messages being received and, for my use case, the most recent message is always the most important so dropping older messages is ok.
In the example code, retransmission attempts are set to UnlimitedNumber by default. I set the attempts to Disabled to resolve the issue. I have now sent over 1000 consecutive frames without issue.