S32K144入门笔记(二十五):FlexCAN初始化序列

初始化模块典型过程

对于配置、改变或者初始化FlexCAN模块来说,必须在冻结模式下操作。且在每次复位后,FlexCAN模块必须被重新初始化。
一个典型的初始化过程大致如下:

  • 配置MCR寄存器
    a. 通过设置 IRMQ 启用每个 MB 和接收队列的单独过滤功能。
    b. 通过设置 WRNEN 启用警告中断。
    c. 如果需要,通过设置 SRXDIS 禁用帧自接收。
    d. 通过设置 RFEN 启用 Rx FIFO。
    e. 如果启用了 Rx FIFO 且需要 DMA,则设置 DMA。
    f. 如果需要伪装网络模式,则设置 PNET_EN。
    g. 通过设置 AEN 启用中止机制。
    h. 通过设置 LPRIOEN 启用本地优先级功能。

  • 初始化控制 1 寄存器(CTRL1),并可选择初始化 CAN 位定时寄存器(CBT)。同时初始化 CAN FD CAN 位定时寄存器(FDCBT)。
    a. 确定位定时参数:PROPSEG、PSEG1、PSEG2 和 RJW。
    b. 可选择确定位定时参数:EPROPSEG、EPSEG1、EPSEG2 和 ERJW。
    c. 确定 CAN FD 位定时参数:FPROPSEG、FPSEG1、FPSEG2 和 FRJW。
    d. 通过对 PRESDIV 字段进行编程来确定位速率,并可选择对 EPRESDIV 字段进行编程。
    e. 通过对 FPRESDIV 字段进行编程来确定 CAN FD 位速率。
    f. 确定内部仲裁模式(LBUF)。

  • 初始化消息邮箱
    a. 必须初始化所有消息缓冲区的控制和状态字。
    b. 如果启用了 Rx FIFO,则必须初始化 ID 过滤器表。
    c. 应根据需要初始化每个消息缓冲区中的其他条目。

  • 初始化Rx独立掩码寄存器(RXIMRn)

  • 设置中断屏蔽位
    – IMASK寄存器
    –CTRL1/CTRL2寄存器

  • 如果虚拟网络模式使能,配置选择性唤醒需要的寄存器

  • 清除MCR中的HALT位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值