电子说
在电子工程师的设计工具箱中,CAN(Controller Area Network)控制器是实现可靠通信的关键组件。Microchip的MCP2510独立CAN控制器,凭借其丰富的功能和出色的性能,在众多应用场景中脱颖而出。今天,我们就来深入剖析MCP2510的技术细节和应用要点。
文件下载:MCP2510T-I ST.pdf
MCP2510是一款独立的CAN控制器,旨在简化与CAN总线接口的应用设计。它实现了完整的CAN V2.0A和V2.0B协议,支持高达1 Mb/s的数据传输速率,具备标准和扩展数据帧、远程帧的收发能力,还提供了丰富的硬件特性和低功耗设计。
MCP2510主要由三个主要模块组成:CAN协议引擎、控制逻辑和SRAM寄存器、SPI协议块。CAN协议引擎负责处理总线上消息的收发功能;控制逻辑和SRAM寄存器用于配置设备及其操作;SPI协议块实现与MCU的通信。
MCP2510拥有三个发送缓冲区和两个接收缓冲区,以及两个验收掩码和六个验收滤波器。发送缓冲区每个占用14字节的SRAM,用于存储待发送的消息;接收缓冲区用于存储接收到的消息,只有当消息符合验收滤波器的标准时,才会被转移到接收缓冲区。
CAN协议引擎是MCP2510的核心,它由多个功能块组成,包括位定时逻辑、发送逻辑、错误计数器、CRC计算等。其中,协议有限状态机(FSM)是引擎的核心,它按位处理消息,控制消息的收发、错误检测和处理等操作。
标准数据帧以起始帧(SOF)位开始,接着是仲裁字段(11位标识符和远程传输请求RTR位)、控制字段(6位,包括标识符扩展IDE位、保留位和数据长度代码DLC)、数据字段(0 - 8字节)、CRC字段和确认字段。
扩展数据帧的仲裁字段包含32位,包括11位基本标识符、替代远程请求SRR位、标识符扩展IDE位和18位扩展标识符。其他部分与标准数据帧类似。
远程帧用于请求数据,与数据帧的区别在于RTR位为隐性状态,且没有数据字段。当数据帧和远程帧具有相同标识符时,数据帧在仲裁中获胜。
当节点检测到总线错误时,会生成错误帧。错误帧由错误标志字段和错误分隔符字段组成,根据节点的错误状态,错误标志字段可以是有源错误标志(由六个连续的显性位组成)或无源错误标志(由六个连续的隐性位组成)。
过载帧用于延迟下一个消息的开始,它只能在帧间空间生成,格式与有源错误帧相同。
帧间空间用于分隔前一个帧和后续的数据或远程帧,由至少三个隐性位组成,为节点提供内部处理时间。
MCP2510通过三个发送缓冲区实现消息发送。发送前,MCU需要将消息加载到相应的发送缓冲区,并设置控制寄存器。发送优先级可通过TXBNCTRL.TXP<1:0>位设置,有四个优先级级别。消息发送通过设置TXBNCTRL.TXREQ位启动,可通过SPI接口或TXnRTS引脚操作。发送完成后,TXBNCTRL.TXREQ位将被清除,CANINTF.TXNIF位将被设置。
MCP2510有两个接收缓冲区,RXB0优先级较高,有两个验收滤波器;RXB1优先级较低,有四个验收滤波器。消息接收时,首先在消息组装缓冲区(MAB)中组装,只有符合验收滤波器标准的消息才会被转移到接收缓冲区。当消息被转移到接收缓冲区时,CANINTF.RXNIF位将被设置,MCU处理完消息后需要清除该位,以允许新消息的接收。
CAN总线所有节点必须使用相同的标称比特率。MCP2510的位定时通过数字锁相环(DPLL)实现,将每个比特时间划分为多个时间段,由时间量子(TQ)组成。位定时的配置包括同步段、传播段、相位缓冲段和采样点的设置,需要根据系统参数进行合理调整。
时间量子(TQ)是由振荡器周期派生的固定时间单位,可通过可编程波特率预分频器调整。不同节点的振荡器频率需要协调,以确保系统范围内的标称比特时间一致。
同步段用于同步总线上的各个CAN节点,输入信号的边沿应在同步段内出现,持续时间为1 TQ。
传播段用于补偿网络中的物理延迟时间,包括总线信号传播时间、节点内部延迟时间等。其长度可通过CNF2寄存器的PRSEG<2:0>位编程设置。
相位缓冲段用于优化接收比特的采样点位置,可通过重新同步过程进行调整。采样点位于相位段1和相位段2之间。
采样点是读取总线电平并确定接收比特值的时间点,通常位于比特时间的60 - 70%位置。
每个比特时间内只允许一次同步,只有当先前采样点检测到的值与边沿后的总线值不同时,边沿才用于同步,发送显性位的节点不会因正相位误差的隐性到显性边沿进行重新同步。
CAN协议提供了复杂的错误检测机制,MCP2510能够检测CRC错误、确认错误、格式错误、位错误和填充错误等。检测到的错误通过错误帧向其他节点公开,错误消息的传输将被中止并尽快重发。每个CAN节点根据内部错误计数器的值处于“错误活动”、“错误无源”或“总线关闭”三种错误状态之一。
MCP2510包含接收错误计数器(REC)和发送错误计数器(TEC),MCU可以读取这两个计数器的值。当两个计数器的值都低于128时,MCP2510处于错误活动状态;当至少一个计数器的值等于或超过128时,处于错误无源状态;当发送错误计数器的值等于或超过256时,进入总线关闭状态。
错误标志寄存器(EFLG)用于指示各种错误状态,如接收缓冲区溢出、发送错误无源、接收错误无源、发送警告、接收警告和总线关闭等。
MCP2510提供了八个中断源,通过CANINTE寄存器的各个中断使能位进行控制,CANINTF寄存器包含相应的中断标志位。当发生中断时,INT引脚将被拉低,直到MCU清除中断。中断源内部有优先级之分,CANSTAT.ICOD位反映当前最高优先级的中断代码。
当发送缓冲区为空并准备好加载新消息时,若CANINTE.TXNIE位使能,将产生发送中断。
当消息成功接收到接收缓冲区时,若CANINTE.RXNIE位使能,将产生接收中断。
当消息收发过程中发生错误时,若CANINTE.MERRE位使能,将产生消息错误中断。
当MCP2510处于睡眠模式且CANINTE.WAKIE位使能时,检测到总线活动将产生唤醒中断。
当发生溢出条件或发送器、接收器的错误状态发生变化时,若CANINTE.ERRIE位使能,将产生错误中断。
MCP2510可使用晶体或陶瓷谐振器连接到OSC1和OSC2引脚,也可由外部时钟源驱动。振荡器启动定时器(OST)确保振荡器稳定后,内部状态机才开始工作。CLKOUT引脚提供时钟输出,可通过CANCNTRL寄存器设置预分频器。
MCP2510有五种工作模式:配置模式、正常模式、睡眠模式、监听模式和回环模式。通过CANCTRL.REQOP位设置工作模式,CANSTAT.OPMODE位指示当前工作模式。
配置模式用于初始化MCP2510,进入该模式时所有错误计数器将被清除。只有在配置模式下,才能修改某些寄存器,如CNF1、CNF2、CNF3、TXRTSCTRL、验收滤波器寄存器和验收掩码寄存器。
睡眠模式用于降低设备的电流消耗,SPI接口在睡眠模式下仍可访问所有寄存器。进入睡眠模式时,内部振荡器停止工作,可通过总线活动或设置CANINTF.WAKIF位唤醒。
监听模式用于接收所有消息,包括错误消息,可用于总线监控或自动波特率检测。该模式下不发送消息,错误计数器被重置和停用。
回环模式允许内部消息从发送缓冲区传输到接收缓冲区,不实际在CAN总线上传输,可用于系统开发和测试。
正常模式是MCP2510的标准工作模式,设备积极监控总线上的所有消息,并生成确认位、错误帧等。
MCP2510的寄存器映射经过优化,便于顺序读写数据。部分控制和状态寄存器可使用SPI位修改命令进行单个位的修改。寄存器的配置和操作是实现MCP2510各项功能的关键,需要仔细理解和掌握。
MCP2510通过SPI接口与MCU通信,支持多种指令,如读取指令、写入指令、请求发送(RTS)指令、读取状态指令和位修改指令。每个指令都有特定的操作流程和时序要求,需要根据实际应用进行正确配置。
通过降低CS引脚启动读取指令,发送读取指令和8位地址后,所选地址寄存器的数据将在SO引脚输出,内部地址指针自动递增。
通过降低CS引脚启动写入指令,发送写入指令、地址和至少一个字节的数据。数据在SCK线的DO位上升沿写入寄存器。
用于启动一个或多个发送缓冲区的消息发送,通过设置RTS命令的最后3位指示启用的发送缓冲区。
允许单指令访问一些常用的消息收发状态位。
用于设置或清除特定状态和控制寄存器中的单个位。
MCP2510的电气特性包括绝对最大额定值、直流特性、振荡器定时特性、CAN接口交流特性、CLKOUT引脚特性和SPI接口交流特性等。在设计应用电路时,需要根据这些特性合理选择电源、输入输出信号电平、时钟频率等参数,以确保设备的正常工作。
MCP2510提供18引脚PDIP/SOIC和20引脚TSSOP封装,每种封装都有详细的尺寸和引脚定义。在进行PCB设计时,需要根据封装信息进行合理布局和布线。
MCP2510独立CAN控制器凭借其丰富的功能、灵活的配置和出色的性能,为电子工程师提供了一个强大的CAN总线解决方案。在实际应用中,我们需要根据具体需求合理配置MCP2510的各项参数,掌握其工作原理和操作方法,以实现可靠的CAN通信。希望通过今天的剖析,能帮助大家更好地理解和应用MCP2510。如果你在使用过程中有任何问题或经验,欢迎在评论区分享交流。
全部0条评论
快来发表一下你的评论吧 !