hi,
Acording to the CAN specification you can only send 8 bytes in a frame.
So I think the way you send your data is a good one.
But you can also write your data in a global large buffer, enable the transfert of a frame and use the Tx interrupt to enable the transfert of the other data.