TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28379D: 这个芯片的CAN中关于message object FIFO

Part Number:TMS320F28379D

TI工作人员你好!

      datasheet中提到,使用CAN接收数据帧时,会将其放入message object,为啥还提到了使用FIFO BUFFER,另外还有一个寄存器位EoB,很让人糊涂,不知道什么意思,也不知道怎么使用,请教一下!!

Susan Yang:

F2837x CAN模块允许为消息对象创建FIFO缓冲区。

有关如何使用消息FIFO的说明,请参见TRM的21.11.5、21.12.11和21.12.12节。

https://www.ti.com/lit/ug/spruhx5e/spruhx5e.pdf 

,

bao xiao:

谢谢你这么快回复,但是你链接的这个文档中,对应打开21.11.5、21.12.11和21.12.12都没有提及,或者没有相应章节。

,

bao xiao:

我在另外一个datasheet上找到你说的对应的三个小节,和我之前看的是一样的内容。主要就是文档写得太简单,不知道怎么使用。

首先,这个EOB是在配置接收数据帧时才使用吗?

另外,不是Message RAM对应Message object吗,怎么又出现了FIFO buffer,我什么时候配置该使用EOB呢?

还有,在配置某一接收邮箱的EOB为1之前,我需要将多少接收邮箱的EOB配置为0呢?

,

Susan Yang:

抱歉,28377D的话,请点击下面链接

https://www.ti.com.cn/cn/lit/ug/spruhm8i/spruhm8i.pdf

在 22.11.11 Storing Received Messages in FIFO Buffers

22.11.12 Reading from a FIFO Buffer

bao xiao 说:首先,这个EOB是在配置接收数据帧时才使用吗

在22.10.5 Configuration of a FIFO Buffer 有如下语句

The EoB bit of all message objects of a FIFO buffer except the last one must be programmed to zero. The EoB bits of the last message object of a FIFO buffer is set to one, configuring it as the end of the block

FIFO缓冲区中除最后一个缓冲区之外的所有消息对象的EoB位必须编程为零。FIFO缓冲区的最后一个消息对象的EoB位设置为1,将其配置为块的末尾,作为FIFO缓冲区的结尾

bao xiao 说:另外,不是Message RAM对应Message object吗,怎么又出现了FIFO buffer,我什么时候配置该使用EOB呢?

FIFO的作用主要是在进行数据传输的过程当中,作为缓冲器对数据进行缓冲。邮箱 RAM 可以组合形成 FIFO 缓冲器

目前并没有相关的FIFO例程,关于DCAN的相关编程应用,您可以看一下

https://www.ti.com/lit/an/sprace5a/sprace5a.pdf 

另外请注意勘误表中的内容

https://www.ti.com/lit/er/sprz412l/sprz412l.pdf 

During DCAN FIFO Mode, Received Messages May be Placed Out of Order in the FIFO Buffer

,

bao xiao:

非常感谢您这些用心的答复!您提供的这些文档,我之前也已经读完过。

但是,关于DCAN中的所谓FIFO模式,以及如何应用,其实还是不太明白。

在我理解,DCAN存在非FIFO模式,也就是一个message RAM的空间对应一个message object;但是关于FIFO模式,似乎不太好理解,接收到一批具有同一ID的接收帧,经过message RAM后,再到达所谓的FIFO,那么我允许多少接收数据帧组成一个FIFO呢?总不至于无限大吧?这对于我们编程应用,在使用FIFO模式的时候挺重要的!麻烦再次回复一下!

,

Susan Yang:

bao xiao 说:关于DCAN中的所谓FIFO模式,以及如何应用,其实还是不太明白。

或许您可以看一下流程图

Figure 22-12. CPU Handling of a FIFO Buffer (Interrupt Driven)

https://www.ti.com.cn/cn/lit/ug/spruhm8i/spruhm8i.pdf

bao xiao 说:那么我允许多少接收数据帧组成一个FIFO呢?总不至于无限大吧?

FIFO模式确实是有些难以理解。 FIFO模式允许您接收一组具有相同ID(或在过滤后具有相同ID)的帧,并且仅在最后一个帧进入时才对CPU产生中断。设置具有相同标识符和掩码的邮箱块。FIFO的功能是类似使用多个buffer级联,组成一个队列的方式实现队列的报文接收

例如,如果您需要在该组中接收的最大字节数是64,则用相同的标识符和掩码配置8个邮箱。例如,让我们使用邮箱1-8。前七个(1-7)将EoB(缓冲区结束)设置为0,将RxIE(接收中断使能)设置为0。在第八个邮箱上,将EoB设置为1并将RxIE设置为1

最后,在未出FIFO例程之前,建议慎重使用DCAN FIFO

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28379D: 这个芯片的CAN中关于message object FIFO
分享到: 更多 (0)