K60_CAN flexcan

https://blog.csdn.net/abcflyer/article/details/50128557

FLEXCAN模块内存映射包括16个128比特的报文缓冲MBS

每一个私有MB都由16字节组成。

 

 

 

    uint32_t CS;     /**< Message Buffer 0 CSRegister..Message Buffer 15 CS Register, array offset: 0x80, array step: 0x10*/

    uint32_t ID;     /**< Message Buffer 0 IDRegister..Message Buffer 15 ID Register, array offset: 0x84, array step: 0x10*/

    uint32_t WORD0;  /**< Message Buffer 0 WORD0Register..Message Buffer 15 WORD0 Register, array offset: 0x88, array step:0x10 */

    uint32_t WORD1;  /**< Message Buffer 0 WORD1Register..Message Buffer 15 WORD1 Register, array offset: 0x8C, array step:0x10 */

  } MB[16];

FlexCAN

邮箱系统由高达64个报文缓冲区组成,前38个MBs相对应的内存空间可以被配置成支持FIFO接收机制,该机制具有一个强大的ID过滤机制,能够检测接收帧的ID表(最多可以是128个扩展帧ID或者256个标准帧ID或者512个8比特的ID分片),还具有高达32个ID表提供私有掩码寄存器。

同时支持通过队列FIFO以及邮箱接收。

对于邮箱接收,一个匹配算法可以使得将接收到的帧存储到MBs中,该MB的ID字段和接收到的帧具有相同的ID字段。掩码机制可以使得在MB中设置的ID号与一系列的接收到的CAN帧的ID进行匹配。对于传输,仲裁算法可以基于报文的ID(通过本地3个比特的优先权字段来选择)或者MB的排序来决定将要发送的MBs的优先权。

 

仲裁过程会根据CTRL1[LBUF]以及MCR[LPRIO_EN]位的设置,在扫描结束时在所有激活的发送邮箱中选择优胜者。

CTRL1[LBUF]置位,则第一个(最小号)激活的发送邮箱将获得仲裁优先权。当其置位时,MCR[LPRIO_EN]将不会产生作用。

 

FLEXCAN模块具有四种不同的功能模式:正常模式(用户和管理员)、冻结模式、监听模式以及闭环模式;同样具有三种不同的低功耗模式:禁止模式、睡眠模式以及停止模式。

冻结模式:MCR寄存器的FRZ位被置位,CAN_MCR_FRZ_MASK:当MCR的HALT位置位时或者在MCU级请求调试模式并且MCR寄存器的FRZ_ACK被置位,CAN模块将进入到冻结模式。

回环模式:CAN_CTRL1_LPB_MASK;CAN工作在内部闭环模式用于自测。从发送器发出的比特流输出回内部的接收器输入,输入引脚将被忽略,并且输出引脚将处于逻辑1状态。

睡眠模式:当MCR寄存器的DOZE被置位、在MCU级请求睡眠模式并由CAN置位MCR寄存器的LPM_ACK位时将进入低功耗模式。

CAN_MCR_LPMACK_MASK。

停止模式:在MCU级请求模式并且由FLEXCAN模块置位MCR寄存器LPM_ACK位时,模块进入该低功耗模式。在停止模式中,模块将会自己置于不活动状态,然后通知CPU可以关闭所有时钟。当请求离开停止模式或者当检测到CAN总线上有活动时,并且同时开启了自醒机制时,flexcan将会退出该模式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值