在线时间1 小时
UID17151
注册时间2017-1-11
NXP金币0
该用户从未签到
新手上路

- 积分
- 15
- 最后登录
- 2017-2-27
|
大家好,
我参考NXP的示例完成了S32K CAN控制器一个ID的报文接收, 但是要接收多个报文时不知道如何处理. 例如: 不过滤接收ID, 如何中断接收处理; 只接收几个ID, 如何设置过滤器, 完成中断接收处理.
下面的是我只接收一个ID的报文初始化配置:
#include "can0.h"
flexcan_state_t can0_State;
const flexcan_user_config_t can0_InitConfig0 = {
.fd_enable = false,
.pe_clock = FLEXCAN_CLK_SOURCE_SYS,
.max_num_mb = 10,
.num_id_filters = FLEXCAN_RX_FIFO_ID_FILTERS_16,
.is_rx_fifo_needed = false,
.flexcanMode = FLEXCAN_NORMAL_MODE,
.payload = FLEXCAN_PAYLOAD_SIZE_8,
.bitrate = {
.propSeg = 7,
.phaseSeg1 = 4,
.phaseSeg2 = 1,
.preDivider = 6,
.rJumpwidth = 1
},
.bitrate_cbt = {
.propSeg = 7,
.phaseSeg1 = 4,
.phaseSeg2 = 1,
.preDivider = 6,
.rJumpwidth = 1
},
.transfer_type = FLEXCAN_RXFIFO_USING_INTERRUPTS
};
void FlexCAN0_Config(void)
{
TJA1043_OperatingMode(TJA104x_Normal_Mode);
FLEXCAN_DRV_Init(FSL_CAN0, &can0_State, &can0_InitConfig0);
/* Set information about the data to be received
* - 1 byte in length
* - Standard message ID
* - Bit rate switch enabled to use a different bitrate for the data segment
* - Flexible data rate enabled
* - Use zeros for FD padding
*/
flexcan_data_info_t dataInfo =
{
.data_length = 8U,
.msg_id_type = FLEXCAN_MSG_ID_STD,
.enable_brs = true,
.fd_enable = false,
.fd_padding = 0U
};
/* Configure RX message buffer with index RX_MSG_ID and RX_MAILBOX */
FLEXCAN_DRV_ConfigRxMb(FSL_CAN0, 1, &dataInfo, 0x12);
}
|
|