基本信息
文件名称:NXP 系列:LPC1768 (适用于复杂娱乐设备)_(11).LPC1768CAN接口.docx
文件大小:26.87 KB
总页数:25 页
更新时间:2025-06-15
总字数:约1.26万字
文档摘要

PAGE1

PAGE1

LPC1768CAN接口

1.CAN接口概述

CAN(ControllerAreaNetwork)接口是一种用于实时通信的串行通信协议,广泛应用于汽车、工业控制和复杂娱乐设备等领域。LPC1768微控制器集成了两个CAN控制器,支持CAN2.0B协议,可以实现高速、可靠的数据通信。CAN接口的主要特点包括:

多主控制:网络中的任何节点都可以在任意时刻主动发送信息。

非破坏性总线仲裁:当多个节点同时发送信息时,优先级高的信息会获得发送权。

错误检测和自动重发:节点可以检测到通信错误并自动重发信息。

灵活的消息过滤:接收节点可以根据消息ID选择接收特定的消息。

LPC1768的CAN接口通过一系列寄存器和配置来实现这些功能。本节将详细介绍如何配置和使用LPC1768的CAN接口。

2.CAN接口硬件配置

LPC1768的CAN接口硬件配置包括以下几个步骤:

引脚配置:LPC1768的CAN接口引脚可以通过引脚复用功能配置为CAN_TX和CAN_RX。

时钟配置:CAN控制器需要一个稳定的时钟源,通常使用系统时钟。

CAN模块初始化:通过配置CAN控制器的寄存器来初始化模块,设置波特率、模式等参数。

2.1引脚配置

LPC1768的CAN接口引脚可以通过PINSEL寄存器配置。例如,将P0.4和P0.5配置为CAN1的TX和RX引脚,可以使用以下代码:

//配置P0.4为CAN1_TX

PINSEL_ConfigPin(0,4,2);//2表示CAN1_TX

//配置P0.5为CAN1_RX

PINSEL_ConfigPin(0,5,2);//2表示CAN1_RX

2.2时钟配置

CAN控制器的时钟源通常来自系统时钟。在LPC1768中,可以通过PCLKSEL0和PCLKSEL1寄存器配置CAN模块的时钟源。例如,将CAN1模块的时钟源设置为系统时钟,可以使用以下代码:

//配置CAN1时钟源为系统时钟

LPC_SC-PCLKSEL0=(LPC_SC-PCLKSEL0~(0x36))|(0x26);//位6和7选择CAN1的时钟源

2.3CAN模块初始化

CAN模块的初始化包括设置波特率、模式、过滤器等参数。LPC1768的CAN模块提供了丰富的寄存器配置选项。以下是一个完整的初始化示例:

#includeLPC17xx.h

#includeboard.h

#includelpc17xx_can.h

voidCAN1_Init(void){

//配置引脚

PINSEL_ConfigPin(0,4,2);//CAN1_TX

PINSEL_ConfigPin(0,5,2);//CAN1_RX

//配置时钟源

LPC_SC-PCLKSEL0=(LPC_SC-PCLKSEL0~(0x36))|(0x26);//选择系统时钟

//使能CAN1时钟

LPC_SC-PCONP|=(117);//使能CAN1时钟

//初始化CAN1

CAN_Configconfig={

.mode=CAN_MODE_NORMAL,//正常模式

.bitrate=500000,//500kbps

.clock=LPC_CAN1,//选择CAN1

.function=CAN_FUNC_FULL,//完整功能

.filter=CAN_FILTER_OFF//关闭过滤器

};

CAN_Init(config);

//配置CAN1中断

NVIC_EnableIRQ(CAN_IRQn);

LPC_CAN1-IER=1;//使能中断

//使能CAN1

LPC_CAN1-MOD=0;//退出复位模式

}

intmain(void){

SystemInit();

Board_Init();

//初始化CAN1

CAN1_Init();

while(1){

//主循环

}

}

3.CAN消息发送

LPC1768的CAN接口可以发送标准格式和扩展格式的消息。发送消息的基本步骤包括:

配置消息帧:设置