Так с CAN нужно разобраться только на уровне аппаратной настройки CAN модуля, и там сложного ничего нет. Дальше с точки зрения программиста минимум телодвижений. Данные в буфер записал, выставил имя (идентификатор) и взвел бит на передачу. Всем остальным занимается сам CAN модуль микроконтроллера. Следит за занятостью шины, за контролем ошибок, за повторной отправкой данных в случае ошибки. По деньгам может быть конечно дороже. Но если есть возможность я бы выбрал CAN.