This is a project where a basic definition of Modbus is designed to use CAN, as it is not "supported natively" by the standard. In addition, its real and functional implementation over ARM Cortex-M3 is included, such code is used to explain the design. As summary, it uses non-extended identifiers and only data frames. To achieve a better understanding of the project, please take a look to the code, which is fully and correctly commented to generate Doxygen's files. Moreover, it is also implemented RTU OSL communications for ARM Cortex-M3 following the normal standard of Modbus.
In addition, the hardware used in this project are the Stellaris LM3S8962 Evaluation Board and Stellaris LM3S2110 CAN Device Board, both produced by Texas Instruments. For that reason, it is used its libraries.