英飞凌TC3xx_MCMCAN(一)

目录

1.基本概述

2.Message RAM

3.FIFO和Buffer 

3.1 Rx FIFO和 Rx Buffer

3.2 Tx FIFO、Queue和Tx Buffer

4. 中断

5.小结      


1.基本概述

        英飞凌TC3xx的MCMCAN模块取代了TC2xx系列的MultiCAN;相比于之前的CAN模块,MCMCAN使用的是Bosch提供的M_CAN作为节点,满足ISO 11898-1的要求,支持CAN\CAN FD,最高传输速率可到8Mbit/s;同时还满足ISO 11898-4,基于时间同步事件触发通信方式。

        MCMCAN与MultiCAN+不同点在于:

  1. 可配置的message ram代替之前的Message Object
  2. 支持CAN的调试

        其结构框图如下:

        可以看到,博世的M_CAN node(最高支持4个CAN节点)与port模块相接,在物理层面实现了CAN 高低的连接;在MCMCAN内部包含了一个中断压缩单元、可配置的message ram和通用控制单元。其中,message ram用于存储即将要发送或者已经接收的can消息,所有CAN node都共享这一块RAM。

        因此我们首先来看RAM的具体定义。

2.Message RAM

        根据芯片手册Message RAM的最大支持 0x8000 bytes,即32K,但是由于所有的节点共享RAM,因此这块RAM是按如下结构进行分配:

         上述结构的起始结束地址由不同寄存器定义,如下所示

寄存器名(i=0-3)位域
SIDFC#i.FLSSA

标准帧ID滤波列表起始地址

0-128 words

XIDFC#i.FLESA

扩展帧ID滤波列表起始地址

0-128 words

RXF0C#i.F0SA

Rx FIFO 0起始地址

0-1152 words

RXF1C#i.F1SA

Rx FIFO 1起始地址

0-1152 words

RXBC.RBSA

Rx Buffer起始地址

0-1152 words

TXEFC.EFSA

TX Event FIFO起始地址

0-64 words

TXBC.TBSA

TX Buffer起始地址

0-576 words

TTTMC0.TMSA仅CAN0 node0支持该功能 

3.FIFO和Buffer 

        在Message RAM中,不管是TX还是RX均存在FIFO和Buffer,我们来看看两者具体区别在哪里。

3.1 Rx FIFO和 Rx Buffer

       RX FIFO和Buffer均是用于过滤 ID后存储接收的报文,通过寄存器位域SFEC\EFEC选择是存储到FIFO还是Buffer(注意英飞凌手册上写的是dedicated buffer):即每个Rx message应该有自己的特定的buffer。

        Rx FIFO 0/1每个最多支持64个elements,elements大小如下:

         同时,为了防止FIFO溢出,采用Rx FIFO的水位标记方式,如下:

        当Rx FIFO的填充达到了Rx FIFO设置的水位(由寄存器RXFnC.FnWM配置),此时会产生一个IRi.RFnW的中断Flag;如果Rx Put Index接近Rx Get Index相等时,说明此时接收数据过快,CPU还没来得及把数据取走,这是会产生一个Rx FIFO Full的中断Flag。 

        Rx Buffer最多也支持64个,当接收的报文通过filter处理后存入buffer,此时中断寄存器IRi.DRX会置位。

        处理Rx Buffer的流程如下:

  1. 重置IRi.DRX
  2. 读取New Data寄存器
  3. 从Message RAM读取message
  4. 重置处理过后的New Data flag

3.2 Tx FIFO、Queue和Tx Buffer

        模块Tx Handler处理了报文发送,最多32个Tx Buffer用于报文发送,结构如下:

        注意这里比较容易混淆;这32个Tx Buffer的实例可以配置成为如下五种模式:

  • Tx FIFO:
    • TXBC#i.TFQM配置为0,选择Tx FIFO;
    • 硬件根据TFGI来发送报文,
    • 软件访问TXFQSi.TFQPI,根据情况设置TXBARi.ARx用于触发发送请求
  • Tx Queue:
    • TXBC#i.TFQM配置为1,选择Tx Queue;
    • 硬件根据优先级来发送报文,
    • 软件访问TXFQSi.TFQPI,根据情况设置TXBARi.ARx用于触发发送请求
  • Dedicated Tx Buffers:每个元素有指定ID,ID越小优先级越高
  • Dedicated Tx Buffers with Tx FIFO
  • Dedicated Tx Buffers with Tx Queue

相关寄存器如下:

        基于上述描述,我们可以总结上述五种发送模式的优先级如下:

发送模式发送顺序
Tx FIFO越先进入FIFO,TX优先级越高
Tx QueueID越小,TX优先级越高
Dedicated Tx BuffersID越小,TX优先级越高
Dedicated Tx Buffers with Tx FIFO

获取Buffer中的ID和FIFO中index

小ID,TX高优先级

Dedicated Tx Buffers with Tx Queue

获取所有激活的Tx请求

小ID,TX高优先级

4. 中断

        除了时钟外,中断在MCMCAN中也是固定的,对于该模块,共存在16个中断节点,可通过寄存器GRINT1x和GRINT2x灵活分配中断给任意节点。

        这个说起来有点抽象,从具体代码角度来看,要选择IR里SRC节点,如下

        首先找到对应芯片手册中IR模块里CAN node的中断服务源的基地址SRC_CANxINTy,如下:

        要配置CAN中断,首先要选择那个CAN模块,然后通过配置interrupt line选择对应的SRC节点(line和SRC_INT一一对应)。

        下面这张图是看了很久才慢慢有所体会。

        首先这张图显示的是每个节点中断的压缩情况,每个节点有28个中断类型,这28个中断会被压缩为16个中断源状态在寄存器中保存。为什么要压缩,因为有很多中断可以用一种中断状态来表示。

         例如 Alert这个中断(绿线),可以由中断EW\EP\TSW\RF0L\RF1L\TEFL触发,如下:

        那么只要我看到alert 中断flag置位,我就可以判断有上述六种情况,根据现象进行排查。 

        IR寄存器可以用于生成中断脉冲,IE用于使能上述中断。这是什么意思呢?光看到IRi寄存器某个位置位还不能说明生成了中断,必须通过IE寄存器使能中断,才会产生中断给IR整个模块。

        一旦相应中断使能,MCMCAN会使用GRINT1i和GRINT2i通过INT_Ox输出中断脉冲;如果有多个中断源与中断节点链接,所有请求会组合一起到一个相同的line(链接到SRC)

        上述中断的使能也需要由寄存器来配置(与逻辑,两者都满足才行),如下:

        IE和IR位域是一一对应的。


5.小结      

        这里简单对TX\RX Handler、messageRAM 做了一个概述,实际上当我们使用AUTOSAR工具来进行配置时候,理解芯片内部原理,是对工程的效率非常有帮助的。

        接下来我们讲一下具体应该怎么来配置CAN这个模块。

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
英飞凌tc2xx_bootloader.zip是一个英飞凌公司开发的芯片启动程序。作为一个芯片的启动程序,它能够实现芯片的初始化和加载应用程序,并且能够提供必要的安全措施以保护芯片的数据和系统。同时,英飞凌tc2xx_bootloader.zip还具备多种扩展功能,如支持多种协议、多种芯片类型、多种外设接口等。这些功能可以让用户在使用芯片时更加方便、灵活以及安全。 英飞凌公司开发的芯片启动程序,能够大大提高芯片的启动速度和安全性。这是因为英飞凌tc2xx_bootloader.zip可以使用系统内存,直接初始化和加载应用程序,这样就避免了芯片启动时需要从外部加载数据的时间浪费。此外,英飞凌tc2xx_bootloader.zip还能够提供多层安全措施,如检测芯片状态、校验应用程序、加密数据传输等,以保护芯片的数据和系统安全。 另外,英飞凌tc2xx_bootloader.zip还支持多种协议,如CAN、LIN、UART等,这些协议可以让芯片的外设与上位机进行通信和数据交互。在应用程序升级时,还能够通过这些协议把新版本应用程序送到芯片内存中,并且支持OTA升级,让用户无需繁琐的手动操作,快速升级设备。 总之,英飞凌tc2xx_bootloader.zip是一个高效、灵活、安全的芯片启动程序。利用它,用户可以更加轻松地对芯片进行操作和开发,从而提高整个系统的可靠性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CyberSecurity_zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值