打印
[模拟产品/SiC]

MCP2517FD笔记

[复制链接]
2752|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wiba|  楼主 | 2021-9-2 09:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
SFR:MCP2517FD Special Function Registers

MCP2517FD 有如下模式:

Configuration
Normal CAN FD
Normal CAN 2.0
Sleep
Listen Only
Restricted Operation
Internal and External Loop back modes
BSP(CAN FD Bit Stream Processor)用来编解码CANFD报文,进行应答,检测错误信号。

发送报文使用发送FIFO请求来发送,使用RAM接口来从RAM中取得要发送的数据提供给BSP来发送。

接收报文通过验收滤波器来过滤哪些报文被存储到接收FIFO中,同样使用RAM接口来保存数据到RAM。

每个FIFO可以被配置为发送或接收FIFO。通过FIFO Control来跟踪FIFO的头和尾,计算用户地址。对于TX FIFO,用户地址所指向的RAM地址是下一个要被发送数据帧的存储地址。即将要发送的数据写到此地址处再启动发送。对于RX FIFO来说,用户地址所指向的是下一个应该被读的数据所在RAM中的地址。用户通过增加FIFO的Head/Tail来通知FIFO一个报文已经写入到RAM或从RAM中读取完成。

TXQ(Transmit Queue)是一个特别的发送FIFO,它发送报文基于被存到队列的报文的ID。

如图是主要的内存分配和地址范围,每个SFR都是32bit,例如CiCOM的最低位地址是0x000,最高位地址是0x003.


使用特权

评论回复
沙发
wiba|  楼主 | 2021-9-2 10:00 | 只看该作者
SPI接口

mcp2517fd 使用SPI接口来和微控制器进行通信,使用模式1,1或0,0的8-bit模式来进行通信。SFR和RAM的访问通过SPI命令来进行。每个命令在nCS下降沿后的SCK上升沿开始,一帧由4-bits command和12-bits address再加上数据组成。在nCS拉高时结束。


模式的操作

“Normal” Modes:Normal FD Mode 、Normal2.0 mode


“Debug” Modes:External/Internal Loopback Mode、Listen Only Mode、Restricted Operation Mode


如上图所示是模式的转换,新的模式通过写CiCON.REQOP来请求模式改变。只能在总线空闲时改变模式。通过读取CiCON.OPMOD可知当前处于什么模式。


直接在“Normal” Modes之间转换是不允许的,要转换到新模式必须先转换到配置模式。


直接在“Debug” Modes之间转换也是不允许的,要转换到新模式必须先转换到配置模式。


Configuration Mode


复位后,2517FD处于配置模式,错误计数会清零所有寄存器恢复默认值。


激活前必须先初始化CAN FD控制器模块。只有在模块处于配置模式,OPMOD = 100时才可以进行初始化。通过将REQOP = 100来请求配置模式。


Normal Modes


1.Normal CANFD mode


通过设置REQOP=000来请求此模式,在此模式设备可以传送CANFD帧和普通CAN帧。


2.Normal CAN2.0 mode


通过设置REQOP=110来请求此模式,此模式下只能接收CAN帧不能接收CANFD帧。


Sleep Mode


通过设置REQOP = 001来请求睡眠模式。



配置模块


1. 首先要复位MCP2517FD,在配置前让模块处于配置模式。对晶振、FIFO和位时间的设置只能在配置模式下;


2. 配置晶振和CLKO引脚;


3. 配置I/O引脚;


4. 配置CAN控制寄存器;


5. 配置波特率相关寄存器;


6. 配置TEF, TXQ,TX和RX FIFO



使用特权

评论回复
板凳
wiba|  楼主 | 2021-9-2 10:01 | 只看该作者

报文发送

报文格式如上所示

1. 将要发送的报文写入发送FIFO


在将待发送报文写入FIFO前必须保证FIFO没有满。如果CiFIFOSTAm.TFNRFNIF为1,则FIFO中有空间。通过读取CiFIFOUAm(m=0~31)得到FIFO用户地址。FIFO用户地址指向指向下一个待发送报文存储在RAM中的地址。用户要将报文数据写到此地址。在RAM中的实际地址是 A = 0x400 + CiFIFOUAm。


当报文写入FIFO后需要设置CiFIFOCONm.UINC来使CANFD控制器增加FIFO的Head和更新CiFIFOUAm,指向写一个待存储发送报文的地址。此时这个写入的报文可以准备好发送,下一个报文也可以写入下一个FIFO地址。


2. 请求发送FIFO的报文


在上一步将报文写入发送FIFO后,这些报文只是准备好发送,但还没触发发送。应用通过设置CiFIFOCONm.TXREQ 或设置CiTXREQ寄存器的对应位来触发CANFD控制器将FIFO内所有报文发送出去。当所有报文被发送完后会自动清除TXREQ位。在发送期间可以继续将报文写入发送FIFO,但写入后必须置位UINC和TXREQ,确保新加入的报文也被发送出去。



使用特权

评论回复
地板
mutable| | 2021-9-2 19:33 | 只看该作者
这个笔记,有PDF么

使用特权

评论回复
5
woshi520laoxie| | 2021-10-11 15:05 | 只看该作者
楼主,你好啊,我最近也在使用MCP2517,我发了一个咨询贴
关键字:MCP2517_FDCAN无法接收32个字节以上的FDCAN帧

请问你在使用过程中有关于这方面的尝试吗?我配置了8、16、24、32都没有问题,但是到48就出现异常了,发送64个字节也没有问题,但是接收超过48个就不行了。

使用特权

评论回复
6
guijial511| | 2021-10-11 18:58 | 只看该作者
我们最近也准备升级到CAN-FD

使用特权

评论回复
7
李不走寻常路| | 2021-10-27 13:51 | 只看该作者
woshi520laoxie 发表于 2021-10-11 15:05
楼主,你好啊,我最近也在使用MCP2517,我发了一个咨询贴
关键字:MCP2517_FDCAN无法接收32个字节以上的FDC ...

配置接收FIFO的时候是不是按64字节接收配置的呢?

使用特权

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

本版积分规则

78

主题

3313

帖子

3

粉丝