MCP2517FD笔记

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.

 

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

报文发送

报文格式如上所示

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,确保新加入的报文也被发送出去。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
带SPI接口的外部CAN FD控制器 特性 通用 • 带SPI接口的外部CAN FD控制器 • 最高1 Mbps的仲裁比特率 • 最高8 Mbps的数据比特率 • CAN FD控制器模式 - CAN 2.0B和CAN FD混合模式 - CAN 2.0B模式 • 符合ISO 11898-1:2015 报文FIFO • 31个FIFO,可配置为发送或接收FIFO • 1个发送队列(Transmit Queue, TXQ) • 带32位时间戳的发送事件FIFO(Transmit Event FIFO, TEF) 报文发送 • 报文发送优先级: - 基于优先级位域,和/或 - 使用发送队列(Transmit Queue, TXQ)先发 送ID最小的报文 • 可编程自动重发尝试:无限制、 3次尝试或禁止 报文接收 • 32个灵活的过滤器和屏蔽器对象 • 每个对象均可配置为过滤: - 标准ID + 前18个数据位或 - 扩展ID • 32位时间戳 特殊功能 • VDD: 2.7V至5.5V • 工作电流:最大20 mA(5.5V, 40 MHz CAN时钟) • 休眠电流: 10 µA(典型值) • 报文对象位于RAM中: 2 KB • 最多3个可配置中断引脚 • 总线健康状况诊断和错误计数器 • 收发器待机控制 • 帧起始引脚,用于指示总线上报文的开头 • 温度范围: - 高温(H): –40°C至+150°C 振荡器选项 • 40、 20 或 4 MHz 晶振或陶瓷谐振器;或外部时钟 输入 • 带预分频器的时钟输出 SPI接口 • 最高20 MHz SPI时钟速度 • 支持SPI模式0,0和1,1 • 寄存器和位域的排列方式便于通过SPI高效访问 安全关键型系统 • 带CRC的SPI命令,用于检测SPI接口上的噪声 • 受纠错码(Error Correction Code, ECC)保护的 RAM 其他特性 • GPIO引脚: INT0和INT1可配置为通用I/O • 漏极开路输出: TXCAN、 INT、 INT0 和 INT1 引脚 可配置为推/挽或漏极开路输出
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值