在线时间61 小时
UID3091481
注册时间2015-1-12
NXP金币25
TA的每日心情 | 无聊 2021-5-27 14:51 |
---|
签到天数: 2 天 连续签到: 1 天 [LV.1]初来乍到
中级会员
 
- 积分
- 298
- 最后登录
- 2025-7-3
|
本帖最后由 烟雨梦 于 2018-1-31 10:30 编辑
调试环境IAR,参考S32K144 Beta SDK v0.9.0下的flexcan_encrypted例程,使用的是CAN1模块,CAN总线上一直无任何信号发送不成功?
CAN1_ESR1下的IDLE SYNCH TX一直为零。代码如下:
const flexcan_user_config_t canCom1_InitConfig0 = {
.fd_enable = false,
.pe_clock = FLEXCAN_CLK_SOURCE_SOSCDIV2,
.max_num_mb = 2,
.num_id_filters = FLEXCAN_RX_FIFO_ID_FILTERS_8,
.is_rx_fifo_needed = false,
.flexcanMode = FLEXCAN_NORMAL_MODE,
.payload = FLEXCAN_PAYLOAD_SIZE_8,
.bitrate = {
.propSeg = 7,
.phaseSeg1 = 4,
.phaseSeg2 = 1,
.preDivider = 1,
.rJumpwidth = 1
},
.bitrate_cbt = {
.propSeg = 7,
.phaseSeg1 = 4,
.phaseSeg2 = 1,
.preDivider = 1,
.rJumpwidth = 1
},
.transfer_type = FLEXCAN_RXFIFO_USING_INTERRUPTS,
.rxFifoDMAChannel = 0U
};
void CANInit(void)
{
/* Activate Clock for FlexCAN and PORT */
PCC->PCCn[PCC_FlexCAN1_INDEX] |= PCC_PCCn_CGC_MASK; /* CGC=1: Clock enabled */
/* Configure Pin for CAN TX */
PORTC->PCR[6]|=PORT_PCR_MUX(3); /* Set MUX=0 temporarily */
PORTC->PCR[7]|=PORT_PCR_MUX(3); /* MUX=5: PTE5, ALT=5 as CAN0TX */
FLEXCAN_DRV_Init(INST_CANCOM1, &canCom1_State, &canCom1_InitConfig0);
flexcan_data_info_t dataInfo =
{
.data_length = 1U,
.msg_id_type = FLEXCAN_MSG_ID_STD,
.enable_brs = true,
.fd_enable = true,
.fd_padding = 0U
};
/* Configure RX message buffer with index RX_MSG_ID and RX_MAILBOX */
FLEXCAN_DRV_ConfigRxMb(INST_CANCOM1, RX_MAILBOX, &dataInfo, RX_MSG_ID);
}
void SendCANData(uint32_t mailbox, uint32_t messageId, uint8_t * data, uint32_t len)
{
/* Set information about the data to be sent
* - 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 = len,
.msg_id_type = FLEXCAN_MSG_ID_STD,
.enable_brs = true,
.fd_enable = true,
.fd_padding = 0U
};
/* Configure TX message buffer with index TX_MSG_ID and TX_MAILBOX*/
FLEXCAN_DRV_ConfigTxMb(INST_CANCOM1, mailbox, &dataInfo, messageId);
/* Execute send non-blocking */
FLEXCAN_DRV_Send(INST_CANCOM1, mailbox, &dataInfo, messageId, data);
}
帮忙分析下原因
|
|