英飞凌 AURIX TC3XX 系列单片机的 CAN 功能实现

1、前言

上一篇介绍了 MAMCAN 和多个 CAN 节点的关系,那么这篇讲述的是英飞凌 AURIX TC3XX 系列多核单片机的 MCMCAN 外设功能实现;下面以 TC37X 为例,附完整代码实现。

iLLD库是英飞凌为TC2XX和TC3XX Tricore系列单片机提供的底层驱动库,有完善的使用手册,和较好的移植性。因此本篇的CAN功能基于该库实现。

2、实现方式

2.1、初始化

1、这里每个CAN节点只需要分别定义一个全局结构体变量即可,类型是 IfxCan_Can_Node。不过在此之前建议先定义一个结构体,用来封装各节点的配置信息,方便之前通过查表进行差异性初始化;以 CAN1 和 CAN2 节点为例,使用了同一个 MCMCAN,根据 IO 口确定了属于哪个节点,即CAN1 是节点3,CAN2 是节点2。

typedef struct
{
    IfxCan_Can_Pins pin;// 引脚
    uint32_t ramBaseAddr;// MCMCAN起始地址
    IfxCan_NodeId nodeId;// 节点号
    Ifx_Priority priorityfifo0;//FIF0的优先级
    Ifx_Priority priorityfifo1;//FIF1的优先级
    IfxCan_

你可能感兴趣的:(英飞凌,单片机,英飞凌,CAN总线)