Microchip公司的PIC18CXXX系列microcontroller,搭载了完整支持CAN 2.0协议的CAN功能模块,由于CAN模块被整合到CPU的内部,又是独立于CPU其它功能块,因此,在设计时减少了很多外部布线,并经过对CPU及CAN模块的功能整合,使项目的设计开发更精减,性能更加可靠。
在研究此笔记之前,我们先来大致了解PIC18CXXX系列CPU所搭载的CAN模块的一些具体的性能指数,以更好的理解此笔记中的代码。
PIC18CXXX中所搭载之CAN模块功能如下:
完整支持CAN1.2,CAN2.0A 和 CAN2.0B协议
支持标准帧和扩展帧
0-8字节的数据长度
可达1Mbit/s的可编程控制波特率
支持远程帧
两个带优先级的接收缓冲区
6个接收过滤器,完整支持标准识别区和扩展识别区,2个与高优先相关,4个与低优先相关联
2个完整的接收过滤器掩码,每个都可与高低优先权相关联
3个发送缓冲区,可由程序设定优先级并随时取消发送
带低通滤波的可编程唤醒功能
可编程的回环模式,支持自测试功能
中断发送CAN接收及发送错误状态
可编程时钟
可编程连接到定时模块,达成时间戳和网络同步
低电压睡眠模式
超载帧接收
帧间隔空间
PIC18CXXX中所搭载的CAN模块由协议引擎(Protocol Engine),消息缓冲(message buFFering)和控制(control)三大部分组成。协议引擎处理所有消息的接收和发送功能,消息发送使用装载到相关寄存器的数据,状态和错误信息可以到相关寄存器里读取,总线上所有的消息都会被检测,如果与过滤器匹配,则将其存入任一个接收缓冲区,CAN模块支持如下的帧类型:
标准数据帧(Standard Data Frame)
扩展数据帧(Extended Data Frame)
远程帧(Remote Frame)
错误帧(Error Frame)
超载帧(Overload Frame)
帧间隔(Interframe Space)
此例中所给出的PIC18CXXX库函数可分为三大类:
Configuration/Initialization Functions
Operation FunctionsStatus
Check Functions
下表给出了本例中所有的函数列表,详细的函数定义请参阅附件中的说明及源代码。
下面我们来看看如何使用这些函数。所有这些函数都是基于MPLAB C18 和HI-TECH PICCTM 18 C语言编译器所开发,源代码会自动侦测编译器,你也可以在使用的时候改变某些设置项,将其移植到其它的C语言编译器。
为使用这些代码时,按以下步骤进行:
将源代码的两个文件.C和.H拷贝到你的项目文件目录中
将.C的源文件包含到你的Project里
增加 #include can18xx8.h 到每一个需要的C文件中
你也可以将此源代码编译成目标文件或是库文件。
详细使用方法及例子程序代码,请大家参阅文中所述,在此不再叙述。
本文附加程序代码:源代码
本文附加说明文档:说明文档

PIC 18C CAN Rout