3分钟看懂Microchip 32位MCU CAN模块的配置

CAN模块系统框图

CAN的英文全称:Control Area Network

Microchip下32位ARM MCU的CAN模块框图如下:
SAM ARM MCU CAN模块

  • 遵循ISO 11898-1:2015标准
    • 兼容Bosch CAN 2.0A, B标准和ISO CAN FD标准
  • CAN消息的存储都放在MCU内部的SRAM,通过高速总线进行访问
    • 需要单个或者2个外部消息RAM

Microchip MCC Harmony下CAN模块配置选项

CAN模块工作模式

在MCC配置模式下,添加CAN模块后进行配置
在这里插入图片描述

  • NORMAL (CAN 2.0B模式):
  • CAN FD模式:
  • Restricted Operation Mode (限制性操作模式):
    • 节点能够接收数据帧和远程帧
    • 能够对接收到的有效帧进行应答
    • 不能发送数据帧、远程帧、主动错误帧和过载帧
    • 当CAN 发送时无法及时从外部RAM中读到数据,会自动进入该模式,需手动进入配置模式,清除ASM标志位
    • 该模式可以用来实现CAN波特率自适应 (工作在不同波特率,当收到有效帧后手动退出该模式)
  • Bus Monitoring Mode: (总线监听模式):
    • 节点能够接收数据帧和远程帧
    • 节点不能传输数据
    • 用来分析CAN总线上的数据
    • 需要单个或者2个外部消息RAM
  • External Loop Back Mode (外部回环模式):
    • 数据帧在内部回环并会发送到总线上
    • 可以用来做硬件测试
  • Internal Loop Back Mode: (内部回环模式):
    • CAN数据帧在内部回环,不发送到总线上
    • 可以用来做自我诊断
      回环模式

CAN模块中断模式

MCAN中断模式配置

  • 开启Interrupt Mode (建议勾选):
    • 提供Tx FIFO/Event, Rx FIFO和中断回调注册接口
    • CAN初始化时开启CAN中断
    • 有CAN中断处理函数,在中断处理中调用注册的回调接口
  • 不选中Interrupt Mode:
    • 提供CAN中断状态查询和清除接口
    • 提供Tx Event和Rx FIFO状态查询接口

CAN工作速率Bit Timing Calculation配置

CAN的工作速率和采样点计算公式如下:
CAN波特率计算公式 =
CAN Clock Freq/Rate Prescaler/(1+TSEG1+TSEG2)
采样点计算公式 =
(1+TSEG1)/(1+TSEG1+TSEG2)
在这里插入图片描述
MCC支持自动计算比特率,只需要输入所需要的工作速率:
在这里插入图片描述

CAN 接收的配置

在这里插入图片描述

  • RX FIFOx配置:
    • 包括RX FIFOx深度、RX FIFOx中断触发门槛
    • 覆盖模式(Overwrite)还是阻塞模式(Blocking)
  • RX Buffer配置:
    • RX Buffer的深度(可以存多少个CAN数据帧)

CAN RX工作在阻塞模式:
阻塞模式

  • 在阻塞模式下RX FIFO工作流程:
    • 开始工作时Get Index和Put Index索引值都为0
    • 新收的数据帧存储在Put Index所指向的FIFO存储区
    • Put Index值自动+1 (0 ~ 63)
    • 当FIFO所有单元存满(Get Index == Put Index)
    • 新接收的数据帧会被丢弃

CAN RX工作在覆盖模式:
CAN覆盖模式

  • 在覆盖模式下RX FIFO工作流程:
    • 开始工作时Get Index和Put Index索引值都为0
    • 新收的数据帧存储在Put Index所指向的FIFO存储区
    • Put Index值自动+1 (0 ~ 63)
    • 当FIFO所有单元存满(Get Index == Put Index)
    • 新接收的数据帧会覆盖最旧的数据
    • Put Index值自动+1

CAN RX工作在FIFO模式和Buffer模式的对比:

  • RX FIFO模式:

    • CAN模块提供2个RX FIFO,FIFO0和FIFO1
    • 每个FIFO最大的存储深度是64(64个完整CAN数据帧)
    • 通过过滤器的设置可指定接收数据帧存储到指定FIFO
    • FIFO存储的数据帧读取遵循先入先出的原则
    • 可以配置为高优先级帧的缓存区
    • 可通过配置将普通帧和高优先级帧存放在不同FIFO
  • RX Buffer模式:

    • CAN模块提供1个专属RX Buffer
    • Buffer最大的存储深度是64(64个完整CAN数据帧)
    • 通过过滤器的设置可指定接收数据帧存储到Buffer
    • 可以指定位置读取存储在Buffer里的数据帧
    • Buffer里存储进新数据后该buffer区域会被锁定直到数据被取走并手动清除标志位信息
    • 可以用来存储CAN的debug message

CAN 发送的配置

在这里插入图片描述

  • TX FIFO 配置:
    • 包括TX FIFO深度(最大32个存储深度)
    • 发送的数据遵循先入先出原则
    • 通过Watermark来设置TX FIFO空闲中断门槛
  • TX Pause配置:
    • 满足AUTOSAR关于transmit cancellation要求
    • 满足ECU某些场合需要优先级控制的要求
  • TX Buffer配置:
    • TX Buffer的深度(最大32个存储深度)
    • 可以往指定的TX Buffer存储单元写入数据
    • 在发送的帧的ID都是相同的情况下,编号越小的TX Buffer具备更高的发送优先级
    • TX Buffer里面帧的ID越小,发送优先级越高
    • TX Buffer和TX FIFO混用的情况下,TX Buffer里面某个帧的ID值如果小于FIFO里面下一个发送帧的ID,则Buffer里的具有更小ID的帧会优先发送

CAN 过滤器工作流程说明

在这里插入图片描述

  • CAN 帧过滤器处理流程:
    • 根据帧ID判定是标准帧还是扩展帧
    • 判断是否为远程帧
      • 未使能远程帧接收则直接丢弃接收到的远程帧
    • 判断是否开启了帧过滤器
      • 未开启任何过滤器则认为接收的帧不匹配
      • 有开启过滤器则执行过滤规则
    • 判断接收的帧是否满足匹配规则
      • 如拒绝接收不满足匹配规则的帧则直接丢弃
      • 满足匹配规则的帧将会被放入接收缓存区
    • 判断接收缓存区是否空闲
      • 缓存区未空则存储接收的数据帧
      • 缓存区满(阻塞模式)则丢弃接收的数据帧

CAN 过滤器的配置

在这里插入图片描述
CAN过滤器的配置:

  • 过滤器数量配置:
    • 满足过滤规则的帧将存储在指定的FIFO中
    • 标准帧最大支持128个过滤器设置
    • 扩展帧最大支持64个过滤器设置
    • 过滤器支持3种模式-Classic、Dual和Range
  • Classic模式:
    • ID1为filter,ID2为mask ID
    • 需要配置满足过滤规则的帧存储方式
  • Range模式
    • ID2 >= ID1,只过滤ID1和ID2范围内的帧
    • 需要配置满足过滤规则的帧存储方式
  • Dual模式:
    • 双ID过滤模式,只过滤ID1和ID2的帧
    • 需要配置满足过滤规则的帧存储方式
      *** 非匹配的帧处理**:
    • 可以选择拒收或者存储到FIFO0或者FIFO1
    • 存储到FIFOx需要先使能对应的FIFO通道

​过滤器元素配置Element Configuraton:

  • Store in RX FIFOx
    • 满足过滤规则的帧将存储在指定的FIFO中
  • Set Priority
    • 接收的帧标记优先级并不存储
    • 会触发HPM(High Priority Message)中断
  • Set Priority and store in RX FIFOx
    • 满足过滤规则的帧将存储在指定的FIFO中
    • 接收的帧标记为高优先级
    • 会触发HPM(High Priority Message)中断
    • 标记为高优先级的帧需要遵循先入先出原则
  • Store into RX Buffer
    • 满足过滤规则的帧将存储在对应的Buffer中
    • Buffer中的数据必须及时处理
    • 否则新收的数据会被拒收
  • 14
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值