电子说
在电子工程师的日常工作中,CAN(Controller Area Network)总线通信是一个常见的需求。Microchip公司的MCP2515作为一款独立CAN控制器,凭借其丰富的功能和出色的性能,在众多应用场景中得到了广泛的应用。今天,我们就来深入了解一下这款MCP2515。
文件下载:MCP2515-E P.pdf
MCP2515实现了CAN V2.0B协议,通信速率可达1 Mb/s。它支持0 - 8字节的数据字段长度,并且能够处理标准和扩展数据帧以及远程帧,这使得它可以适应不同的应用需求,无论是简单的数据传输还是复杂的通信协议,都能轻松应对。
MCP2515采用了高速SPI接口,支持10 MHz的通信速率,并且兼容SPI Modes 0,0和1,1,方便与各种微控制器进行连接,实现快速、稳定的数据传输。
采用低功耗CMOS技术,工作电压范围为2.7V - 5.5V,典型工作电流为5 mA,睡眠模式下典型待机电流仅为1 µA,非常适合对功耗要求较高的应用场景。此外,它还支持工业级(-40°C至 +85°C)和扩展级(-40°C至 +125°C)的温度范围,具有良好的环境适应性。
MCP2515通过了AEC - Q100认证,这意味着它符合汽车级应用的严格要求,在汽车电子领域具有广阔的应用前景。
MCP2515主要由三个主要模块组成,下面为大家详细介绍各个模块的作用。
CAN模块负责处理CAN总线上消息的接收和发送。它包含CAN协议引擎、掩码、过滤器、发送和接收缓冲区等部分。消息发送时,先将消息加载到相应的消息缓冲区和控制寄存器,然后通过SPI接口使用控制寄存器位或发送使能引脚来启动传输。同时,可以通过读取相应的寄存器来检查状态和错误。对于接收到的消息,会先进行错误检查,然后与用户定义的过滤器进行匹配,若匹配成功则将消息移动到两个接收缓冲区之一。
控制逻辑模块通过与其他模块进行接口,来控制MCP2515的设置和操作。它提供了中断引脚,以增加系统的灵活性。每个接收寄存器都有一个多功能中断引脚(以及特定中断引脚),可用于指示有效消息已被接收并加载到接收缓冲区。此外,还有三个引脚可用于立即启动已加载到三个发送寄存器之一的消息的传输,不过使用这些引脚并非必须,也可以通过SPI接口访问控制寄存器来实现消息传输的启动。
微控制器通过SPI接口与MCP2515进行通信。使用标准的SPI读写命令以及专用的SPI命令,可以实现对所有寄存器的读写操作。
CAN总线上的所有节点必须具有相同的标称比特率(NBR)。由于CAN协议使用非归零(NRZ)编码,接收时钟必须由接收节点恢复并与发送器的时钟同步。MCP2515的位定时通过数字锁相环(DPLL)实现,该DPLL将每个比特时间划分为多个段,由时间量子((T_{Q}))组成。
标称比特时间(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})。
每个比特时间的段由时间量子((T{Q}))组成,其长度基于振荡器周期((T{OSC})),基础(T{Q})等于两倍的振荡器周期。可以通过可编程的波特率预分频器(BRP)来设置(T{Q})的长度。
为了补偿总线上每个节点振荡器频率之间的相移,每个CAN控制器必须能够与输入信号的相关信号边缘同步。MCP2515采用硬同步和重新同步两种机制。硬同步仅在总线空闲时出现从隐性到显性的边缘时执行,重新同步可能会导致PS1延长或PS2缩短,其调整量由同步跳跃宽度(SJW)限制。
CAN协议提供了复杂的错误检测机制,MCP2515能够检测CRC错误、确认错误、格式错误、比特错误和填充错误等多种错误。当检测到错误时,会生成错误帧,消息将被重复发送。
根据内部错误计数器的值,每个CAN节点处于三种错误状态之一:错误激活、错误被动和总线关闭(仅发送器)。错误激活状态下,节点可以无限制地发送消息和主动错误帧;错误被动状态下,节点可以发送消息和被动错误帧;总线关闭状态下,节点暂时无法参与总线通信。
MCP2515包含两个错误计数器:接收错误计数器(REC)和发送错误计数器(TEC)。MCU可以读取这两个计数器的值,根据它们的值来判断设备的错误状态。当TEC超过255时,设备进入总线关闭状态,需要接收到128次连续11个隐性位的总线关闭恢复序列后才能恢复正常。
MCP2515有八个中断源,CANINTE寄存器包含每个中断源的单独中断使能位,CANINTF寄存器包含相应的中断标志位。当发生中断时,INT引脚将被拉低,直到MCU清除中断。建议使用BIT MODIFY命令来重置CANINTF寄存器中的标志位,以防止意外更改标志位而导致错过中断。
中断代码位ICOD[2:0](CANSTAT[3:1])用于指示待处理中断的源。在多个中断发生的情况下,INT引脚将保持低电平,直到所有中断都被MCU重置。ICOD[2:0]位将反映当前待处理的最高优先级中断的代码。
包括发送中断、接收中断、消息错误中断、总线活动唤醒中断和错误中断等。不同的中断类型用于在不同的情况下通知MCU,例如发送缓冲区为空、消息成功接收、发生消息错误、检测到总线活动以及发生溢出或错误状态改变等。
MCP2515可以使用晶体或陶瓷谐振器连接到OSC1和OSC2引脚,也可以由外部时钟源驱动。它利用振荡器启动定时器(OST)确保振荡器在内部状态机开始操作之前稳定。CLKOUT引脚可作为系统的主时钟或其他设备的时钟输入,其内部预分频器可以将(F_{osc})除以1、2、4或8。
MCP2515有硬件复位(RESET引脚置低)和SPI复位(通过SPI命令复位)两种方式,这两种复位功能等效。在电源上电后,必须进行其中一种复位操作,以确保逻辑和寄存器处于默认状态。
MCP2515有配置模式、正常模式、睡眠模式、监听模式和回环模式五种工作模式。可以通过REQOP[2:0]位(CANCTRL[7:5])选择工作模式,在更改模式时,必须等待所有待处理的消息传输完成后模式才会实际改变。不同的工作模式适用于不同的应用场景,例如配置模式用于初始化设备,睡眠模式用于降低功耗,监听模式可用于总线监控或波特率检测,回环模式可用于系统开发和测试。
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等,方便工程师对设备进行各种操作。
在绝对最大额定值方面,它能承受一定范围的电压和温度,如(V_{DD})为7.0V ,存储温度范围为 - 65°C至 +150°C等。其直流特性包括不同引脚的输入输出电压、电流等参数,位定时特性、CAN接口交流特性、复位交流特性、CLKOUT引脚交流特性和SPI接口交流特性等也都有明确的规定,这些特性为工程师在实际应用中提供了重要的参考依据。
MCP2515提供了18 - Lead PDIP/SOIC、20 - Lead TSSOP和20 - Lead QFN等多种封装形式,不同的封装适用于不同的应用场景和设计需求。每个封装都有详细的尺寸和引脚信息,方便工程师进行PCB设计。
MCP2515以其丰富的功能、灵活的配置和出色的性能,为电子工程师在CAN总线通信设计中提供了一个优秀的解决方案。无论是在工业控制、汽车电子还是其他领域,都能发挥出重要的作用。希望通过本文的介绍,能让大家对MCP2515有更深入的了解,在实际设计中能够更好地运用这款产品。
不知道大家在使用MCP2515的过程中遇到过哪些有趣的问题或者有什么独特的经验呢?欢迎在评论区分享交流!
全部0条评论
快来发表一下你的评论吧 !