aurix中mutlican的使用

mutlican的整体架构
aurix中mutlican的使用_第1张图片
TC23x中有三个node,连出来就是三对收发,在通过连接内部的Message object,最多128个。每个node可以共享这128个Message object
Message object 的作用:
1、收发帧的存储容器
2、合并nodes之间的网关
从下图可以看到,can中message controller用来交换nodes和objects之间的can帧,存储在message RAM中。
aurix中mutlican的使用_第2张图片
首先设置can,最主要的就是时钟控制。
aurix中mutlican的使用_第3张图片
其中CAN_CLC寄存器用来产生模块时钟fCLC
CAN_FDR寄存器用来产生fCAN
关于生成fCAN 的分频公式有两种模式:normal divider 和 fractional divider,如下:
aurix中mutlican的使用_第4张图片
通过CAN_FDR.DM位来设置。
Can模块的时钟频率默认设置为SPB的频率。
然后通过MCR.CLKSEL值来选择时钟源。
时钟设置完,就是节点设置。
跟节点相关的参数:
通信速率
收发的引脚关联,和port模式
关于CAN的发送,亦可以由事件触发发送。
aurix中mutlican的使用_第5张图片
关于节点产生中断,亦可以产生如下几种中断:
aurix中mutlican的使用_第6张图片
最后设置MO对象
MO在CAN中是一个list双向链表结构,如下:
aurix中mutlican的使用_第7张图片
TC23x中模块提供16个lists,每个MO需要分配到list中。上图就是把3,5,16的MO分配到LIST2中,而且中LIST中的BEGIN和END号,也列出了LIST中MO的顺序。
整体看来是这样的连接效果
aurix中mutlican的使用_第8张图片
因为nodes数比list数少,所以没有接到node的list中的MO将无法收发can报文,而这些分配操作时通过LIST指令来完成。
aurix中mutlican的使用_第9张图片
通过MOSTATx(0~127)寄存器来查看MO的状态
而且每个MO有每个MO的专门功能,比如专门做接收或专门做发送,
对于MO的性能可以分成
标准MO FIFO MO
其中FIFO用来短时间的大量can报文收发时使用。即使在CAN通信的过程中FIFO也可以resize install 或uninstall。FIFO需要自己组合,一个MO只能放8bytes的数据,需要长frame,也是自己组合。
FIFO有base object和slave object组成,如下结构:
aurix中mutlican的使用_第10张图片
所以使用FIFO的时候,把指定的当前MO作为base object,然后再配置其他的MO作为slave object。
接收FIFO中接收的slave object和标准的MO类似
发送FIFO中发送slave object则需要特别指定设置 MOFCRn.MMC
GateWay mode 则是实现两个can 总线之间进行自动的信息转发,无需cpu干涉。报文转发。该模式是在MO上操作。
所以在网关配置时需要提前设置源ID和目标ID,然后在之间进行传输。
其实从下图看出GateWay的使用和FIFO结构类似,也是通过FGPR寄存器中的pointer指向。
aurix中mutlican的使用_第11张图片
MO的帧处理:
aurix中mutlican的使用_第12张图片
MO发送
aurix中mutlican的使用_第13张图片
如果要使用MO中AR 的MSGID匹配,需要在AMR中AM值设置mask(acceptance mask),这样只有指定ID的报文才能被该MO接收。
aurix中mutlican的使用_第14张图片

你可能感兴趣的:(aurix)