基本信息
文件名称:Microchip 系列:PIC18 系列_(11).CAN总线通信.docx
文件大小:26.54 KB
总页数:22 页
更新时间:2025-06-23
总字数:约1.09万字
文档摘要

PAGE1

PAGE1

CAN总线通信

1.CAN总线概述

CAN(ControllerAreaNetwork)总线是一种用于实时数据传输的串行通信协议,广泛应用于汽车和工业自动化领域。CAN总线的主要特点是:

高可靠性:采用差分信号传输,具有很强的抗干扰能力。

多主结构:网络中可以有多个节点,每个节点都可以主动发送数据。

优先级机制:通过消息标识符确定消息的优先级,高优先级的消息可以抢占总线。

错误检测:内置多种错误检测机制,确保数据传输的准确性。

非破坏性仲裁:多个节点同时发送数据时,不会破坏数据,而是通过优先级进行仲裁。

CAN总线通信协议定义了两个标准:CAN2.0A和CAN2.0B。其中,CAN2.0B支持更长的消息标识符。

2.PIC18系列中的CAN模块

PIC18系列单片机中集成了CAN模块,使其能够方便地实现CAN总线通信。CAN模块的主要功能包括:

数据发送和接收:支持标准格式和扩展格式的消息发送和接收。

过滤器:可以配置多个过滤器,用于选择接收特定的消息。

错误处理:内置错误检测和处理机制,确保通信的可靠性。

中断支持:可以配置中断,用于处理接收和发送事件。

2.1CAN模块寄存器

CAN模块包含多个寄存器,用于配置和控制通信过程。主要的寄存器包括:

CANCTRL:CAN控制寄存器,用于启用和复位CAN模块。

CANSTAT:CAN状态寄存器,用于读取CAN模块的状态。

CANTCON:CAN定时器控制寄存器,用于配置CAN定时器。

CANBTR1和CANBTR2:CAN波特率寄存器,用于设置通信波特率。

CANINTE和CANINTF:CAN中断使能和中断标志寄存器,用于配置和读取中断状态。

BUFPTR:缓冲区指针寄存器,用于选择CAN消息缓冲区。

TXBnCON和RXBnCON:发送和接收缓冲区控制寄存器,用于配置缓冲区的模式和状态。

TXBnSIDH和TXBnSIDL:发送缓冲区标准/扩展标识符高/低字节寄存器。

TXBnDLC:发送缓冲区数据长度码寄存器。

TXBnDx:发送缓冲区数据寄存器(x=0,1,2,3,4,5,6,7)。

RXBnSIDH和RXBnSIDL:接收缓冲区标准/扩展标识符高/低字节寄存器。

RXBnDLC:接收缓冲区数据长度码寄存器。

RXBnDx:接收缓冲区数据寄存器(x=0,1,2,3,4,5,6,7)。

CANRXF0到CANRXF5:接收过滤器寄存器,用于配置接收消息的过滤条件。

CANRXM1和CANRXM2:接收模式寄存器,用于配置接收模式。

2.2CAN模块工作模式

CAN模块支持多种工作模式,包括:

配置模式:用于初始化CAN模块。

正常模式:用于正常的发送和接收消息。

监听模式:用于接收所有消息,但不参与总线仲裁。

环回模式:用于测试CAN模块,发送的消息会直接返回到接收缓冲区。

停止模式:用于关闭CAN模块,节省功耗。

工作模式可以通过CANCTRL寄存器中的REQOP位进行配置。

3.CAN总线通信配置

3.1初始化CAN模块

在使用CAN模块之前,需要进行初始化配置。主要步骤包括:

配置波特率:通过CANBTR1和CANBTR2寄存器设置通信波特率。

配置接收过滤器:通过CANRXF0到CANRXF5寄存器设置接收消息的过滤条件。

配置接收模式:通过CANRXM1和CANRXM2寄存器设置接收模式。

使能CAN模块:通过CANCTRL寄存器使能CAN模块并设置工作模式。

3.1.1配置波特率

波特率的配置涉及到CANBTR1和CANBTR2寄存器。这两个寄存器用于设置位时间参数,包括同步跳转宽度(SJW)、传播延时(PropSeg)、相位段1(PhaseSeg1)和相位段2(PhaseSeg2)。

//配置CAN波特率为500kbit/s

voidconfigCANBaudRate(void){

//设置波特率寄存器

CANBTR1=0x00;//SJW=1,PropSeg=2

CANBTR2=0x1C;//PhaseSeg1=8,PhaseSeg2=2,BRP=1

}

3.1.2配置接收过滤器

接收过滤器用于选择接收特定的消息。可以通过CANRXF0到CANRXF5寄存器配置过滤器。

//配置接收过滤器,接收ID为0x123的标准格式消息

voidconfigCANFilter(void){

CANRXF0=0x12;//高8位

CANRXF1=0x30;/