CANRCV函数解析:接收CAN帧的详细过程

需积分: 45 28 下载量 97 浏览量 更新于2024-08-06 收藏 18.87MB PDF 举报
"LPC178x下册" 在给定的文件中,我们主要讨论了一个名为"CANRCV"的接收帧函数,该函数用于处理LPC178x系列微控制器上的CAN(Controller Area Network)通信。LPC178x是NXP半导体公司生产的一系列基于ARM Cortex-M3内核的微控制器,广泛应用于工业自动化、汽车电子等领域,其内部集成了CAN控制器。 `CANRCV`函数的目的是从CAN控制器中接收并解析CAN帧。以下是该函数的详细说明: 1. **函数原型**: `unsigned char CANRCV(unsigned char Ch, MessageDetail *MessageCAN)`,该函数接收两个参数:Ch表示CAN控制器编号(通常为0,表示第一路CAN),MessageCAN是一个指向存放CAN帧信息的结构体指针。 2. **函数工作流程**: - 首先,通过`Ch`计算出对应CAN控制器的寄存器地址偏移(CANOFFSET),然后访问RFS寄存器来处理DLC(Data Length Code)、RTR(Remote Transmission Request)和FF(Frame Format)信息。 - 使用`RGE(regaddr)`读取寄存器值到`mes`,并根据FF的值来确定CAN帧ID的长度(11位或29位)。DLC用来确定数据域的长度,FF则标识帧格式(标准帧或扩展帧)。 - 接下来,访问RID寄存器来获取CAN帧的ID,根据FF的值来截取适当长度的ID。 - 然后,处理数据域,读取RDA和RDB寄存器来获取CAN帧的数据A和数据B。 - 最后,访问CMR寄存器,设置释放接收缓冲区的标志,然后写回该值以完成接收过程。 3. **CAN通信**: CAN协议是一种多主站的串行通信协议,常用于车辆网络,因为它具有高可靠性、错误检测能力和容错能力。在这个函数中,LPC178x的CAN控制器负责处理物理层和数据链路层的功能,包括错误检测和仲裁。 4. **LPC178x中的其他功能部件**: 文件标签提到的"LPC178x下册"可能指的是该系列微控制器的手册或参考手册的第二部分,其中涵盖了更多关于LPC178x的硬件资源,如E2PROM存储器和外部存储器控制器(EMC): - **E2PROM存储器**:非易失性存储器,用于存储配置信息和数据,在断电后仍能保持数据。 - **外部存储器控制器(EMC)**:允许LPC178x与各种类型的外部存储器(如SRAM、DRAM、闪存等)进行高速通信,扩展了微控制器的存储能力。 `CANRCV`函数是LPC178x实现CAN通信的关键部分,而LPC178x微控制器丰富的外设接口使其成为复杂嵌入式系统设计的理想选择。理解并正确使用这些功能有助于开发高效可靠的CAN通信应用。