NXP MCU 技术论坛
直播中

李春梅

7年用户 1768经验值
私信 关注
[问答]

将FlexCAN配置为Legacy RxFIFO模式的步骤是什么?

将 FlexCAN 配置为 Legacy RxFIFO 模式的步骤是什么?

到目前为止我已经做了:
1. 从pin工具配置PIN
2. 从外围工具配置FlexCAN3 + IntCtrl
在代码中......
3.初始化时钟
4.初始化中断控制器和FlexCAN3中断+设置IRQ优先级
5.初始化FlexCAN3外设(FlexCAN_Ip_Init)
6. 为 RxFIFO (FlexCAN_Ip_ConfigRxFifo) 设置 ID 过滤表
7. 将 FlexCAN 外设置于启动模式 (FlexCAN_Ip_SetStartMode)
8. 进入 while(1) 循环等待 FlexCAN 的 IRQ。

9. 我正在通过我的 PC 使用 USB 向 PEAK 系统的控制器发送数据包。

10. 我收到一条消息说公共汽车很重,但在我自己停止通信之前我看不到任何变化。

我已经研究了 S32K344 关于 FlexCAN 的 RM,我在过去为 FlexCAN0 配置了增强型 RxFIFO,但 FlexCAN1、2 和 3 不支持它,所以我需要设置 Legacy RxFIFO。

A。我发送了一条消息,其 ID 与 ID 过滤器表中使用的 ID 相同。
b. 我的两个设备(我的 MCU 和 PCAN 控制器)的比特率都是 500Kb。
c.FlexCAN时钟为16MHz
d. 我的配置是:

     .cfg =
{
//CAN periph configs
.flexcanMode                    = FLEXCAN_NORMAL_MODE,
.ctrlOptions                    = (FLEXCAN_IP_PROTOCOL_EXCEPTION_U32),
.fd_enable                      = false,
.enhCbtEnable                   = false,
.bitRateSwitch                  = false,
.bitrate                        = {2, 2, 3, 4, 2},
.bitrate_cbt                    = {2, 2, 3, 4, 2},

//CAN IRQ callback pointers
.Callback                       = flexcan3_cb,
.ErrorCallback                  = NULL_PTR,

// MailBox configs
.max_num_mb                     = 32,
.payload                        = {FLEXCAN_PAYLOAD_SIZE_8, FLEXCAN_PAYLOAD_SIZE_8, FLEXCAN_PAYLOAD_SIZE_8},

//RxFIFO configs
.is_rx_fifo_needed              = true ,
.num_id_filters                 = FLEXCAN_RX_FIFO_ID_FILTERS_8,
.transfer_type                  = FLEXCAN_RXFIFO_USING_INTERRUPTS,

//Enchanced RxFIFO configs
.is_enhanced_rx_fifo_needed     = false,
.num_enhanced_std_id_filters    = 0,
.num_enhanced_ext_id_filters    = 0,
.num_enhanced_watermark         = 0,
},




更多回帖

发帖
×
20
完善资料,
赚取积分