MCP2517FD CANFD控制器的SPI访问与功能详解

需积分: 43 79 下载量 78 浏览量 更新于2024-08-06 收藏 1.48MB PDF 举报
"MCP2517FD是一款带SPI接口的外部CANFD控制器,符合ISO11898-1:2015标准,支持高速CAN通信,最高可达1Mbps的仲裁比特率和8Mbps的数据比特率。它具备CAN2.0B和CANFD混合模式以及CAN2.0B模式。该设备拥有31个FIFO,可配置为发送或接收,1个发送队列和一个带有32位时间戳的发送事件FIFO。报文发送时可依据优先级位域或ID自动重发,重发次数可编程设置。接收方面,提供了32个灵活的过滤器和屏蔽器对象,支持标准ID和扩展ID过滤,并且每个对象都有32位时间戳。此外,MCP2517FD还具备低功耗特性,如休眠电流仅为10μA(典型值),并支持总线健康状况诊断、错误计数器、收发器待机控制等功能。SPI接口支持高达20MHz的时钟速度,具有CRC检测机制以确保接口通信的可靠性。内部RAM包含2KB的空间来存储报文对象,还提供了多个可配置中断引脚。该设备还支持GPIO功能,INT0和INT1引脚可作为通用I/O。封装类型包括VDFN14和SOIC14,其中VDFN14封装有外露的散热焊盘。" 文档中的SFR(System Function Register,系统功能寄存器)访问方法主要涉及三种指令:RESET、READ和WRITE。 1. **RESET指令**:此指令用于复位设备,命令代码为0b0000,地址为0x000。当nCS(Chip Select,片选)变为低电平时开始,然后变为高电平结束。只有在器件进入配置模式后才能执行此操作。RESET指令执行后,SFR和状态机将进行复位,类似于上电复位,但报文存储器不受影响。复位实际发生在nCS变为高电平时。 2. **SFR READ(READ指令)**:用于读取SFR中的数据。命令代码为0b0011,跟随地址A<11:0>。当nCS变低时开始,从指定地址A移出数据字节,然后是地址A+1的数据字节。可以连续读取任意数量的数据字节,指令结束于nCS变为高电平。 3. **SFR WRITE(WRITE指令)**:用于向SFR写入数据。命令代码为0b0010,同样跟随地址A<11:0>。数据字节在SCK下降沿写入对应地址,从A开始,然后是A+1。也可以写入任意数量的数据字节,写入操作在nCS变为高电平时完成。 这些指令都是面向字节的,地址自动递增,从0x3FF到0x000,再到0xFFF最后回到0xE00。SPI接口支持最高20MHz的时钟速度,支持SPI模式0、0和1、1,其设计使得通过SPI高效访问寄存器和位域变得简单。同时,SPI接口还包括CRC命令,以检测接口上的噪声,增强通信的可靠性。此外,设备的RAM受到ECC(Error Correction Code)保护,提高数据存储的稳定性。