CAN接收器(上)
扫描二维码
随时随地手机看文章
CAN接收流程是CAN总线通信中与发送流程相辅相成的关键环节,它承担着从总线上准确捕获、解析并处理数据的任务,其设计的严谨性直接决定了整个网络数据交互的可靠性。与发送流程主动竞争总线控制权不同,接收节点始终处于监听状态,通过实时监测总线电平变化,精准捕捉有效数据帧,并经过一系列校验与解析步骤,最终将有效信息传递给上层应用,这一过程既需要与发送节点保持时序同步,又要具备强大的错误识别与过滤能力,以应对复杂的总线环境。
接收流程的起点是总线监听与帧同步。CAN总线上的所有节点在空闲时都会持续监测总线电平,当某个发送节点启动发送时,帧起始(SOF)位——一个显性电平(低电平)会打破总线的隐性状态(高电平),此时接收节点会立即检测到这一电平跳变,并以此为基准启动同步机制。CAN协议采用位同步方式,接收节点的位时钟发生器需要与发送节点的位时序保持一致,这一过程包括硬同步和重同步:硬同步发生在检测到SOF位的跳变时,接收节点会将自身位时钟的同步段与SOF的跳变对齐,确保初始时序一致;而在后续的位传输中,若接收节点检测到总线上的电平跳变与自身位时钟的预期跳变存在偏差(即相位误差),会通过重同步机制微调位时钟,使偏差控制在允许范围内,保证每一位的采样都准确无误。这种实时同步能力是接收节点正确解析数据的前提,尤其在多节点通信中,能有效抵消不同节点间的时钟漂移。
在实现同步后,接收节点进入帧结构的逐段解析阶段,首当其冲的是仲裁场的接收与过滤。仲裁场包含标识符(ID)及远程帧标志(RTR)等信息,接收节点会逐位接收这些数据,并将标识符与自身预设的验收滤波条件进行比对。验收滤波器是接收流程中的“守门人”,其作用是筛选出节点需要处理的帧,避免无关数据占用处理器资源。滤波器的配置通常基于标识符——既可以设置为只接收特定ID的帧(列表模式),也可以通过掩码屏蔽部分位,接收符合特定范围的ID(掩码模式),且能区分标准帧(11位ID)和扩展帧(29位ID)。当接收的标识符与滤波条件匹配时,节点会继续接收后续字段;若不匹配,则会忽略该帧的剩余部分,重新回到监听状态,等待下一个SOF的到来。这种过滤机制使CAN总线能在多节点共存的环境中,实现数据的定向传输,提升通信效率。
仲裁场解析通过后,接收节点依次接收控制场、数据场、CRC场、ACK场和帧结束。控制场中的数据长度码(DLC)明确了数据场的字节数(0-8字节),接收节点会根据DLC准备相应的缓冲区,确保数据场的完整接收。数据场是有效信息的载体,接收节点会按位读取并按字节拼接,将原始电信号转换为可被上层应用识别的数字信息。紧接着的CRC场是数据完整性的“质检员”,接收节点会对从SOF到数据场的所有位进行CRC计算,并将结果与接收到的CRC码比对:若一致,说明数据传输过程未受严重干扰;若不一致,则判定为CRC错误,触发后续的错误处理机制。





