MCP2515:独立CAN控制器的卓越之选
在电子工程师的日常工作中,CAN(Controller Area Network)总线通信是一个常见的需求。Microchip公司的MCP2515作为一款独立CAN控制器,凭借其丰富的功能和出色的性能,在众多应用场景中得到了广泛的应用。今天,我们就来深入了解一下这款MCP2515。
文件下载:MCP2515-E P.pdf
一、功能特性亮点
1. CAN协议支持
MCP2515实现了CAN V2.0B协议,通信速率可达1 Mb/s。它支持0 - 8字节的数据字段长度,并且能够处理标准和扩展数据帧以及远程帧,这使得它可以适应不同的应用需求,无论是简单的数据传输还是复杂的通信协议,都能轻松应对。
2. 强大的过滤与缓冲机制
- 接收缓冲:拥有两个接收缓冲区,可进行优先级消息存储,还配备了六个29位过滤器和两个29位掩码,能够有效过滤掉不需要的消息,大大减轻了主机MCU的负担。对于标准数据帧,它还支持对前两个数据字节进行数据字节过滤,进一步提高了数据处理的效率。
- 发送缓冲:具备三个发送缓冲区,并具有优先级和中止功能,让工程师可以根据实际情况灵活安排消息的发送顺序,确保重要消息能够及时发送。
3. 高速SPI接口
MCP2515采用了高速SPI接口,支持10 MHz的通信速率,并且兼容SPI Modes 0,0和1,1,方便与各种微控制器进行连接,实现快速、稳定的数据传输。
4. 特色功能模式
- 单次发送模式:One - Shot模式确保消息只尝试发送一次,这在一些对时间要求严格的确定性系统中非常有用,例如TTCAN系统。
- 时钟输出功能:其Clock Out引脚带有可编程预分频器,可以作为其他设备的时钟源,为系统的时钟同步提供了便利。
- 帧起始信号监测:Start - of - Frame(SOF)信号可用于监测SOF信号,能够应用于基于时隙的协议和/或总线诊断,帮助工程师及时发现总线的早期退化问题。
5. 低功耗与宽温度范围
采用低功耗CMOS技术,工作电压范围为2.7V - 5.5V,典型工作电流为5 mA,睡眠模式下典型待机电流仅为1 µA,非常适合对功耗要求较高的应用场景。此外,它还支持工业级(-40°C至 +85°C)和扩展级(-40°C至 +125°C)的温度范围,具有良好的环境适应性。
6. 汽车级认证
MCP2515通过了AEC - Q100认证,这意味着它符合汽车级应用的严格要求,在汽车电子领域具有广阔的应用前景。
二、系统架构解析
MCP2515主要由三个主要模块组成,下面为大家详细介绍各个模块的作用。
1. CAN模块
CAN模块负责处理CAN总线上消息的接收和发送。它包含CAN协议引擎、掩码、过滤器、发送和接收缓冲区等部分。消息发送时,先将消息加载到相应的消息缓冲区和控制寄存器,然后通过SPI接口使用控制寄存器位或发送使能引脚来启动传输。同时,可以通过读取相应的寄存器来检查状态和错误。对于接收到的消息,会先进行错误检查,然后与用户定义的过滤器进行匹配,若匹配成功则将消息移动到两个接收缓冲区之一。
2. 控制逻辑
控制逻辑模块通过与其他模块进行接口,来控制MCP2515的设置和操作。它提供了中断引脚,以增加系统的灵活性。每个接收寄存器都有一个多功能中断引脚(以及特定中断引脚),可用于指示有效消息已被接收并加载到接收缓冲区。此外,还有三个引脚可用于立即启动已加载到三个发送寄存器之一的消息的传输,不过使用这些引脚并非必须,也可以通过SPI接口访问控制寄存器来实现消息传输的启动。
3. SPI协议块
微控制器通过SPI接口与MCP2515进行通信。使用标准的SPI读写命令以及专用的SPI命令,可以实现对所有寄存器的读写操作。
三、消息处理机制
1. 消息发送
- 发送缓冲区:MCP2515有三个发送缓冲区,每个缓冲区占用14字节的SRAM,并映射到设备的内存映射中。在发送消息之前,至少需要加载TXBnSIDH、TXBnSIDL和TXBnDLC寄存器。如果消息中有数据字节,还需要加载TXBnDm寄存器;如果使用扩展标识符,还需要加载TXBnEIDm寄存器并设置EXIDE位。
- 发送优先级:MCP2515内部对待发送消息进行优先级排序。在发送SOF之前,会比较所有排队等待传输的缓冲区的优先级,优先级最高的发送缓冲区将首先发送。如果两个缓冲区的优先级设置相同,则编号较高的缓冲区将首先发送。发送优先级共有四个级别,可通过TXP[1:0]位进行设置。
- 发送启动:要启动消息传输,需要为每个要发送的缓冲区设置TXREQ位。可以通过SPI写命令、SPI RTS命令或将特定发送缓冲区的TXnRTS引脚置低来实现。当TXREQ设置时,ABTF、MLOA和TXERR位将自动清除。需要注意的是,设置TXREQ位并不意味着立即启动消息传输,只有当设备检测到总线可用时才会开始传输。
- 单次发送模式:One - Shot模式下,消息只尝试发送一次。如果消息在传输过程中丢失仲裁或被错误帧破坏,不会进行重传。
- 发送中止:MCU可以通过清除相应的TXREQ位来请求中止特定消息缓冲区中的消息。此外,通过设置ABAT位(CANCTRL[4])可以请求中止所有待处理的消息。
2. 消息接收
- 接收消息缓冲:MCP2515包含两个完整的接收缓冲区和一个单独的消息组装缓冲区(MAB)。MAB始终用于接收总线上的下一条消息,只有当消息满足接受过滤器的标准时,才会将消息转移到RXBn缓冲区。当消息被移动到接收缓冲区时,相应的RXnIF位(CANINTF)将被设置,MCU必须清除该位才能允许新消息进入缓冲区。
- 接收优先级:RXB0是较高优先级的缓冲区,有一个掩码和两个消息接受过滤器与之关联;RXB1是较低优先级的缓冲区,有一个掩码和四个接受过滤器。消息首先会应用于RXB0的掩码和过滤器,RXB0的过滤器数量较少,使得匹配更加严格,因此具有更高的优先级。
- 帧起始信号:如果启用,在RXCAN引脚检测到每个CAN消息的开始时,SOF引脚将生成Start - of - Frame信号。通过监测RXCAN引脚和SOF引脚,MCU可以在CAN通信受到影响之前检测到小干扰,从而发现早期物理总线问题。
- 接收缓冲满引脚:除了INT引脚,接收缓冲满引脚(RX0BF和RX1BF)可用于指示有效消息已分别加载到RXB0或RXB1中。这些引脚有禁用、缓冲满中断和数字输出三种不同的配置方式。
- 消息接受过滤器和掩码:消息接受过滤器和掩码用于确定消息组装缓冲区中的消息是否应加载到接收缓冲区。对于标准数据帧,MCP2515会自动将通常与扩展标识符关联的16位掩码和过滤器应用于数据字段的前16位,从而减少实现高层协议(HLP)时MCU的负载。
四、位定时与同步
1. CAN位时间
CAN总线上的所有节点必须具有相同的标称比特率(NBR)。由于CAN协议使用非归零(NRZ)编码,接收时钟必须由接收节点恢复并与发送器的时钟同步。MCP2515的位定时通过数字锁相环(DPLL)实现,该DPLL将每个比特时间划分为多个段,由时间量子((T_{Q}))组成。
2. 标称比特时间
标称比特时间(NBT)由同步段(SyncSeg)、传播段(PropSeg)、相位段1(PS1)和相位段2(PS2)组成。这些段是非重叠的,NBT是这些段的总和。同步段用于同步总线上的节点,固定为1 (T{Q});传播段用于补偿节点之间的物理延迟,可编程范围为1 - 8 (T{Q});两个相位段用于补偿总线上的边缘相位误差,PS1可编程范围为1 - 8 (T{Q}),PS2可编程范围为2 - 8 (T{Q})。
3. 时间量子
每个比特时间的段由时间量子((T{Q}))组成,其长度基于振荡器周期((T{OSC})),基础(T{Q})等于两倍的振荡器周期。可以通过可编程的波特率预分频器(BRP)来设置(T{Q})的长度。
4. 同步机制
为了补偿总线上每个节点振荡器频率之间的相移,每个CAN控制器必须能够与输入信号的相关信号边缘同步。MCP2515采用硬同步和重新同步两种机制。硬同步仅在总线空闲时出现从隐性到显性的边缘时执行,重新同步可能会导致PS1延长或PS2缩短,其调整量由同步跳跃宽度(SJW)限制。
五、错误检测与处理
1. 错误类型
CAN协议提供了复杂的错误检测机制,MCP2515能够检测CRC错误、确认错误、格式错误、比特错误和填充错误等多种错误。当检测到错误时,会生成错误帧,消息将被重复发送。
2. 错误状态
根据内部错误计数器的值,每个CAN节点处于三种错误状态之一:错误激活、错误被动和总线关闭(仅发送器)。错误激活状态下,节点可以无限制地发送消息和主动错误帧;错误被动状态下,节点可以发送消息和被动错误帧;总线关闭状态下,节点暂时无法参与总线通信。
3. 错误计数器
MCP2515包含两个错误计数器:接收错误计数器(REC)和发送错误计数器(TEC)。MCU可以读取这两个计数器的值,根据它们的值来判断设备的错误状态。当TEC超过255时,设备进入总线关闭状态,需要接收到128次连续11个隐性位的总线关闭恢复序列后才能恢复正常。
六、中断管理
MCP2515有八个中断源,CANINTE寄存器包含每个中断源的单独中断使能位,CANINTF寄存器包含相应的中断标志位。当发生中断时,INT引脚将被拉低,直到MCU清除中断。建议使用BIT MODIFY命令来重置CANINTF寄存器中的标志位,以防止意外更改标志位而导致错过中断。
1. 中断代码位
中断代码位ICOD[2:0](CANSTAT[3:1])用于指示待处理中断的源。在多个中断发生的情况下,INT引脚将保持低电平,直到所有中断都被MCU重置。ICOD[2:0]位将反映当前待处理的最高优先级中断的代码。
2. 各种中断类型
包括发送中断、接收中断、消息错误中断、总线活动唤醒中断和错误中断等。不同的中断类型用于在不同的情况下通知MCU,例如发送缓冲区为空、消息成功接收、发生消息错误、检测到总线活动以及发生溢出或错误状态改变等。
七、其他特性
1. 振荡器
MCP2515可以使用晶体或陶瓷谐振器连接到OSC1和OSC2引脚,也可以由外部时钟源驱动。它利用振荡器启动定时器(OST)确保振荡器在内部状态机开始操作之前稳定。CLKOUT引脚可作为系统的主时钟或其他设备的时钟输入,其内部预分频器可以将(F_{osc})除以1、2、4或8。
2. 复位
MCP2515有硬件复位(RESET引脚置低)和SPI复位(通过SPI命令复位)两种方式,这两种复位功能等效。在电源上电后,必须进行其中一种复位操作,以确保逻辑和寄存器处于默认状态。
3. 工作模式
MCP2515有配置模式、正常模式、睡眠模式、监听模式和回环模式五种工作模式。可以通过REQOP[2:0]位(CANCTRL[7:5])选择工作模式,在更改模式时,必须等待所有待处理的消息传输完成后模式才会实际改变。不同的工作模式适用于不同的应用场景,例如配置模式用于初始化设备,睡眠模式用于降低功耗,监听模式可用于总线监控或波特率检测,回环模式可用于系统开发和测试。
4. SPI接口
MCP2515通过SPI接口与微控制器进行通信,支持Mode 0,0和Mode 1,1。它提供了多种SPI指令,如RESET、READ、READ RX BUFFER、WRITE、LOAD TX BUFFER、RTS、READ STATUS、RX STATUS和BIT MODIFY等,方便工程师对设备进行各种操作。
5. 电气特性
在绝对最大额定值方面,它能承受一定范围的电压和温度,如(V_{DD})为7.0V ,存储温度范围为 - 65°C至 +150°C等。其直流特性包括不同引脚的输入输出电压、电流等参数,位定时特性、CAN接口交流特性、复位交流特性、CLKOUT引脚交流特性和SPI接口交流特性等也都有明确的规定,这些特性为工程师在实际应用中提供了重要的参考依据。
6. 封装信息
MCP2515提供了18 - Lead PDIP/SOIC、20 - Lead TSSOP和20 - Lead QFN等多种封装形式,不同的封装适用于不同的应用场景和设计需求。每个封装都有详细的尺寸和引脚信息,方便工程师进行PCB设计。
MCP2515以其丰富的功能、灵活的配置和出色的性能,为电子工程师在CAN总线通信设计中提供了一个优秀的解决方案。无论是在工业控制、汽车电子还是其他领域,都能发挥出重要的作用。希望通过本文的介绍,能让大家对MCP2515有更深入的了解,在实际设计中能够更好地运用这款产品。
不知道大家在使用MCP2515的过程中遇到过哪些有趣的问题或者有什么独特的经验呢?欢迎在评论区分享交流!
-
CAN总线通信
+关注
关注
1文章
20浏览量
8722 -
CAN控制器
+关注
关注
3文章
81浏览量
15712 -
MCP2515
+关注
关注
0文章
25浏览量
16425
发布评论请先 登录
带有SPI接口的独立CAN控制器MCP2515相关资料下载
基于MCP2515带有 SPI 接口的独立 CAN 控制器
MCP2515带有SPI接口的独立CAN控制器数据手册免费下载
如何将MCP2515CAN总线控制器与Arduino接口
MCP2515带SPI的独立控制器接口的数据手册免费下载
MCP2515独立控制器
MCP2515:独立CAN控制器的卓越之选
评论