当前位置:   article > 正文

S32K144-11.can

S32K144-11.can

CAN有接收邮箱和发送邮箱

”发送邮箱“是用于CAN总线数据发送的,总共有3个,并且存在优先级关系。优先级越高表示其里面的数据会被优先发送。数据在发送前都会被送到优先级最高且空闲的发送邮箱,然后依次发送。最后说明一点:发送邮箱有3个,且每个邮箱只能装一个报文

”接收邮箱“是用于CAN总线数据接收用的,在接收数据端会有一个过滤器处于”接收邮箱“的前面,过滤器使用于删选”标识符“的,只有标识符符合的报文才会被放入到”接收邮箱“当中。注意:”接收邮箱不同于发送邮箱,接收邮箱只有2(FIFO0FIFO1)个,但是每一个有三层,每层都可以存放一个报文,即每一个接收邮箱可以接收三个报文。但读取时只能读到最先收到的报文,等这个读完之后,才能读下一个报文”。

1.can 的pin设置

2.can初始化;

#define tx_mailbox 1 邮箱

#define rx_mailbox 0

#define rx_filter 0 筛选器不过滤

void can_init(void){

CAN_Init(&can_pal1_instance, &can_pal1_Config0);

// 接收结构体配置

can_buff_config_t can_buffrx_config={

.enableBRS =0,

.enableFD=0,

.fdPadding=0,

.idType = CAN_MSG_ID_STD,

.isRemote = 0,

};

//发送结构体配置

can_buff_config_t can_bufftx_config={

.enableBRS =0,

.enableFD=0,

.fdPadding=0,

.idType = CAN_MSG_ID_STD,

.isRemote = 0,

};

CAN_ConfigTxBuff(&can_pal1_instance,tx_mailbox,&can_bufftx_config);

CAN_ConfigRxBuff(&can_pal1_instance,rx_mailbox,&can_buffrx_config,rx_filter);

//设置筛选器接收ID的全局掩码设置

CAN_SetRxFilter(&can_pal1_instance,CAN_MSG_ID_STD,rx_mailbox,rx_filter);

//安装中断回调函数

CAN_InstallEventCallback(&can_pal1_instance,&can_callback,NULL);

}

//配置接收函数

void can_callback(uint32_t instance,can_event_t eventType,uint32_t buffIdx, void *flexcanState)

{

switch(eventType){

case CAN_EVENT_RX_COMPLETE:

break;

case CAN_EVENT_TX_COMPLETE:

break;

default:

break;

}

}

//发送函数

void can_send(uint32_t data,uint32_t id,uint8_t len){

can_message_t can_msg;

can_msg.cs = 0;

can_msg.data[0] =data;

can_msg.id= id;

can_msg.length=len; //字节

CAN_Send(&can_pal1_instance,tx_mailbox,&can_msg);

}

//接收函数

CAN_Receive(&can_pal1_instance,rx_mailbox,&can_msg);

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/144616
推荐阅读
相关标签
  

闽ICP备14008679号