概述
本文基于C++语言在NXP S32K1 MCU上实现CAN & CAN FD收发。
本文不展示具体实现,只通过接口方式说明如何在MCU开发上使用C++。关于NXP S32K1 MCU的CAN模块如何使用请参考【使用C++开发MCU】06-CAN实例之UML画个图展现设计(分析NXP S32SDK CAN Driver),该文说明如何使用NXP官方提供的SDK,你可以在C++中调用C语言,来具体实现CCAN类。
抽象基类ICAN
CAN作为一个通讯模块,无外乎就是三大接口,初始化、发送和接收,为了提高程序的扩展性,有必要通过抽象基类的方式来概括CAN的接口,在不同的MCU上,可以具体实现其各自的子类,这样上层的应用程序也不会更改。
typedef struct {
uint32_t id;
uint8_t data[64];
uint8_t len;
} can_msg_t;
class ICAN{
public:
//virtual ICAN(void);
//virtual ~ICAN(void);
virtual void init(void) = 0;//初始化
virtual