打印
[Kinetis]

K60 FlexCAN问题

[复制链接]
4515|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
leihen0525|  楼主 | 2015-11-6 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
FlexCAN有点小复杂,灵活性太高了,新手真的搞死了,好了说问题

我的问题是设置一个MB缓冲区为接收,如何让他能同时接收标准帧和扩展帧呢?
还有就是开FIFO接收队列和MB接收缓冲区又有什么关系呢,手册说开了这个队列,MB缓冲区就发生了一些变化,FIFO队列和MB缓冲区这两个是怎么协调的呢?有点迷糊了,
还有究竟是16个MB缓冲区还是32个呢,为什么中断标志寄存器里面有32个呢而且IFLAG寄存器居然有2个,也就是64个缓冲区,真心迷茫了,光看手册已经晕了,
有大神解释一下吗?非常感谢

相关帖子

沙发
Roderman_z| | 2015-11-12 14:30 | 只看该作者
新手直接玩是不是太麻烦了啊

使用特权

评论回复
板凳
leihen0525|  楼主 | 2015-11-13 09:31 | 只看该作者
Roderman_z 发表于 2015-11-12 14:30
新手直接玩是不是太麻烦了啊

那要看你是什么新手了,是第一次接触CAN的新手,还是第一次接触FlexCAN的新手了,
说来惭愧,博世是CAN的制定者,而我却是博世的员工.

使用特权

评论回复
地板
FSL_TICS_ZJJ| | 2015-11-13 11:07 | 只看该作者
本帖最后由 FSL_TICS_ZJJ 于 2015-11-13 13:03 编辑

楼主你好!不好意思,回复迟了。FlexCAN相对MSCAN确实要更加灵活并且复杂些。
现在回答你的几个问题。
1.MB缓冲区接收问题
  一个 MB缓冲区只能配置为接收标准帧或者扩展帧,不能同时接收标准帧和扩展帧。
MB中的IDE位决定具体是标准帧还是扩展帧:IDE=0,标准帧;IDE=1为扩展帧
2.FIFO接收问题。
FlexCAN的FIFO是6级深度。
其实FIFO和MB是共用的,如果使能FIFO的话,那么其实是MB0-MB5对应的内存用作了FIFO存储,所以这个时候MB0-MB5不能用作正常的接收与传输缓冲区功能了。如果接收成功的数据,会压入FIFO中。
总之,是地址共用,如果FIFO使能,MB的个数就少了,MB接收成功的数据会压入到FIFO中。
3,MB个数问题。
默认只有16个,在手册中,有这样一句话:
This module's memory map includes sixteen 128-bit message buffers (MBs) that occupy
the range from offset 0x80 to 0x17F.
CANx_MCR[MAXMB]用于确定最终参与总线仲裁的MB数量,复位置为0X0F,即16个MB。不过,最大可以设置64个MB,这样就和你说的中断标志寄存器IFLAG两个吻合了。
看手册,的确会比较难懂。
如果有ARM Cortex M4 自学笔记-基于kinetis K60的书的话,你可以看看那本书,那样比较容易懂点。
希望能帮到你,如果还有问题,欢迎继续发帖交流。

使用特权

评论回复
评论
天涯做客 2018-12-21 17:21 回复TA
请问一下 ID 过滤器表元素 具体是如何过滤的 
5
leihen0525|  楼主 | 2015-11-13 12:59 | 只看该作者
FSL_TICS_ZJJ 发表于 2015-11-13 11:07
楼主你好!不好意思,回复迟了。FlexCAN相对MSCAN确实要更加灵活并且复杂些。
现在回答你的几个问题。
1.MB ...

非常感谢,这个光看手册真的会一头雾水,非常感谢.

使用特权

评论回复
6
戈壁滩| | 2016-3-10 10:52 | 只看该作者
您好,我还有两个问题期待您的解答:
1、那请问FIFO和邮箱之间到底什么关系呢,对比了下,FIFO中多了ID过滤表。
2、我没太明白过滤表究竟如何使用,请楼主如果明白了可否告知一下~
谢谢啦~~

使用特权

评论回复
评论
天涯做客 2018-12-21 17:23 回复TA
你好,这两个问题解决了吗? 我也是一头雾水啊!! 
7
SudodGod| | 2016-4-24 18:10 | 只看该作者
使用FIFO应该如何配置呢?如下配置是否正确?RX_FIFO 配置:
MCR.RFEN = 1 ;//开启FIFO
MCR.IDAM= 1 ;//选择格式A

CANx_CTRL2.RFEN = 1 //使用8个过滤器数,接收队列此时使用的邮箱为MB0~MB7,其中MB6和MB7用于私有掩码寄存器,接收队列私有掩码寄存器所影响的ID过滤元素为0~7,
                        接收队列全局掩码不会有影响
CANx_RXFGMASK= 0;  //接收队列全局掩码设置
CANx_RXIMR6 = 0;  //接收队列私有掩码设置
CANx_RXIMR7 = 0;   //接收队列私有掩码设置

/*开启中断*/
CANx_IMASK1.5  = 1;

读取数据地址0x80~0x8C

使用特权

评论回复
8
linuxzb| | 2017-8-23 17:51 | 只看该作者
第一次接触can 怎么搞,求大神经验

使用特权

评论回复
9
zjp1013| | 2019-1-31 15:46 | 只看该作者
FSL_TICS_ZJJ 发表于 2015-11-13 11:07
楼主你好!不好意思,回复迟了。FlexCAN相对MSCAN确实要更加灵活并且复杂些。
现在回答你的几个问题。
1.MB ...

请问flexcan在p1010的代码或者技术资料有吗?谢谢

使用特权

评论回复
10
zjp1013| | 2019-1-31 15:46 | 只看该作者
leihen0525 发表于 2015-11-13 12:59
非常感谢,这个光看手册真的会一头雾水,非常感谢.

弄出来了吗?我现在也有点疑问

使用特权

评论回复
11
zjp1013| | 2019-1-31 15:47 | 只看该作者
leihen0525 发表于 2015-11-13 12:59
非常感谢,这个光看手册真的会一头雾水,非常感谢.

做出来了吗?我现在也有点疑问

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

55

帖子

3

粉丝