ME05 CAN123 初始化后无法正常收发
-
-
swust flexcan_state_t flexcanInitConfig1_State;
flexcan_user_config_t flexcanInitConfig1 = {
.max_num_mb = 64UL,
.num_id_filters = FLEXCAN_RX_FIFO_ID_FILTERS_8,
.is_rx_fifo_needed = false,
.flexcanMode = FLEXCAN_NORMAL_MODE,
.payload = FLEXCAN_PAYLOAD_SIZE_8,
.fd_enable = false,
.pe_clock = FLEXCAN_CLK_SOURCE_PERIPH,
.transfer_type = FLEXCAN_RXFIFO_USING_INTERRUPTS,
.bitrate = {
.propSeg = 4, /!< Propagation segment/
.phaseSeg1 = 6, /!< Phase segment 1/
.phaseSeg2 = 2, /!< Phase segment 2/
.preDivider = 14, /!< Clock prescaler division factor/
.rJumpwidth = 1, /!< Resync jump width/
},
.bitrate_cbt = {
.propSeg = 6, /!< Propagation segment/
.phaseSeg1 = 2, /!< Phase segment 1/
.phaseSeg2 = 1, /!< Phase segment 2/
.preDivider = 0, /!< Clock prescaler division factor/
.rJumpwidth = 1, /!< Resync jump width/
},
.rxFifoDMAChannel=0,
.rxFifoDMALastWord=0,
.is_enhance_rx_fifo_needed=false,
.num_enhance_rx_fifo_filters=0,
.num_enhance_rx_fifo_extid_filters=0,
.num_enhance_rx_fifo_min_messages=0,
};uint32_t CAN_PTCAN_RXMB_INDEX[CAN_PTCAN_RX_MB_NUM] = {
0x000,};
//for Rx ID
uint32_t CAN_PTCAN_RXMB_ID[CAN_PTCAN_RX_MB_NUM] = {
0x000,
};//for Rx ID mask
uint32_t CAN_PTCAN_RXMB_IDMask[CAN_PTCAN_RX_MB_NUM] = {
0x7ff,
};
flexcan_msgbuff_t CanPTCAN_RxPduInfo; //fifo接收缓存pin_settings_config_t g_pin_mux_CAN1[2] = {
// CAN1_RX
{
.base = PCTRLC,
.pinPortIdx = 6U,
.pullConfig = PCTRL_INTERNAL_PULL_NOT_ENABLED,
.passiveFilter = false,
.mux = PCTRL_MUX_ALT3,
.intConfig = PCTRL_INT_FALLING_EDGE,
.clearIntFlag = true,
.gpioBase = GPIOC,
.digitalFilter = false,
},
// CAN1_TX
{
.base = PCTRLC,
.pinPortIdx = 7U,
.pullConfig = PCTRL_INTERNAL_PULL_NOT_ENABLED,
.passiveFilter = false,
.mux = PCTRL_MUX_ALT3,
.intConfig = PCTRL_DMA_INT_DISABLED,
.clearIntFlag = false,
.gpioBase = GPIOC,
.digitalFilter = false,
}
};
static void CAN_MBConfig(uint8_t CAN_Chanel, uint32_t *mbIndex, uint32_t *CanId, uint32_t *IdMask, uint8_t FilterNum, flexcan_msgbuff_t *messagePduInfo)
{
uint8_t index = 0;for (index = 0; index < FilterNum; index++) { FLEXCAN_DRV_ConfigRxMb(CAN_Chanel, mbIndex[index], &rxMbStdCfg, CanId[index]); FLEXCAN_DRV_SetRxIndividualMask(CAN_Chanel, FLEXCAN_MSG_ID_STD, mbIndex[index], IdMask[index]); FLEXCAN_DRV_Receive(CAN_Chanel, mbIndex[index], messagePduInfo); }}
void Can1_Init()
{
status_t status1 = STATUS_SUCCESS;
status1 |= PINS_DRV_Init(2, g_pin_mux_CAN1);
status1 |= FLEXCAN_DRV_Init(CAN1_INST, &PEcanState, &flexcanInitConfig1);
FLEXCAN_DRV_InstallEventCallback(CAN1_INST, Can1InterruptCallback, NULL);
//使用 Individual Mask,使能 FIFO
FLEXCAN_DRV_SetRxMaskType(CAN1_INST, FLEXCAN_RX_MASK_INDIVIDUAL);CAN_MBConfig(CAN1_INST, CAN_PTCAN_RXMB_INDEX, CAN_PTCAN_RXMB_ID, CAN_PTCAN_RXMB_IDMask, CAN_PTCAN_RX_MB_NUM, &CanPTCAN_RxPduInfo);}
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...







