LPC17系列是NXP(恩智浦)公司推出的一款基于Cortex-M3内核的微控制器,广泛应用于工业控制、汽车电子、自动化设备等多个领域。CAN(Controller Area Network)是一种多主通信协议,特别适合于实时性要求高、传输距离远、节点数量多的系统。在LPC17系列芯片中,CAN控制器是一个重要的外设模块,它提供了高效、可靠的通信能力。
在Cortex-M3处理器中,用户可以利用嵌入式中断控制器(NVIC,Nested Vectored Interrupt Controller)来处理CAN接收和发送事件。CAN程序设计主要涉及以下几个核心知识点:
1. **CAN总线协议**:CAN协议定义了帧格式,包括标准ID(11位)和扩展ID(29位),以及数据长度可变的数据字段。同时,CAN协议具有错误检测机制,如CRC校验,确保数据的完整性。
2. **LPC17xx系列CAN控制器**:LPC17系列的CAN控制器支持多个CAN节点间的通信,有独立的接收和发送FIFO,支持不同的工作模式,如正常模式、睡眠模式等。配置包括波特率设置、滤波器配置和中断设置等。
3. **波特率计算**:根据CAN系统的时钟频率和所需的波特率,需要计算出预分频器、TQ(时间量子)、SJW(同步跳跃宽度)、BRP(波特率预分频器)等参数。
4. **CAN消息过滤**:为了减少CPU的负担,可以通过设置接收滤波器,只接收特定ID或ID范围的消息。LPC17xx的CAN控制器支持多种滤波模式。
5. **中断处理**:在LPC17系列中,通过NVIC设置CAN中断,当接收到新消息或者发送完成时,CPU将响应中断服务程序,处理相关事务。
6. **CAN驱动程序开发**:编写CAN驱动程序是实现CAN通信的关键步骤,包括初始化CAN控制器、设置滤波器、发送和接收消息的函数接口等。
7. **CAN消息发送**:通过编程向CAN控制器写入要发送的消息,包括ID、DLC(数据长度代码)和数据字节。发送完成后,需要检查发送状态,处理可能的错误。
8. **CAN消息接收**:配置中断处理接收消息,当接收到消息时,读取CAN控制器中的接收FIFO,并根据需要处理数据。
9. **应用层协议设计**:在硬件层面实现CAN通信后,还需要设计应用层协议,定义数据的结构和交互规则,以满足具体应用场景的需求。
10. **调试工具**:使用CAN分析仪或者示波器进行硬件级的调试,以及使用RTOS(实时操作系统)的调试工具进行软件调试,如Keil uVision或IAR Embedded Workbench。
LPC17系列Cortex M3 CAN程序设计涵盖了硬件接口、协议理解、中断处理、滤波配置、驱动编写以及应用层协议设计等多个方面,需要对微控制器和CAN通信有深入的理解才能有效实现。在实际项目中,开发者通常会参考NXP提供的官方手册和例程,结合自己的需求进行定制化开发。