1 概述
CanFestival是一个免费而且开源的CANopen协议栈,较为适合于对CANopen协议栈功能完备性和工作性能要求不高的应用场合。对于功能和性能要求较高的应用,也有很多第三方的商用CANopen协议栈可供购买使用。目前,CanFestival在嵌入式控制(PLC、单片机、ARM等)领域中使用较多。
本文讲解了CanFestival库的基本架构和原理,针对ZYNQ平台详细介绍了裸机移植的原理和过程。最后通过测试实例,介绍了CanFestival中主要常用功能及相关API函数的使用方法。
2 CanFestival
2.1 CanFestival介绍
CanFestival能够运行于多种类型的平台。其源代码基于ANSI-C编写,驱动和例程的编译情况仅取决于具体的编译工具。在目前最新的版本中,提供了适用于多种硬件平台的底层驱动。此外,CanFestival可以在任意类Unix系统下编译和运行,如Linux和FreeBSD。
CanFestival协议功能完整,完全符合CANopen标准。CanFestival完全支持2002年2月发布的CIA DS-301 V4.02标准,并支持CiA DS302中的简明DFC协议和DS305规范。
此外,CanFestival为开发者提供了许多工具,以提高开发的便利性。例如,用于生成节点对象字典源代码的对象字典编辑器,以及便于开发者自由配置编译选项的配置脚本。
CanFestival库所支持的CANopen协议栈功能包括:
主站和从站的NMT网络管理
心跳报文的发送与接收
节点守护报文接收与发送
同步报文接收和发送
支持多个SDO服务器或客户端,可使用快速和分段传输
PDO发送与接收、PDO映射
紧急报文的接收和发送
支持简明DFC文件访问
支持LSS设备底层配置协议
2.2 源代码获取
CanFestival开源库网址为:https://canfestival.org/index.html.en,
源码下载地址:https://canfestival.org/code.html.en,
其中官方主分支:https://hg.beremiz.org/。
点击 Main repo, quite lazily updated hg.beremiz.org/canfestival .就可以进入下载位置
然后点击ZIP就可以把源码下载下来了
2.3 源代码概述
通过上述地址所下载的CanFestival的源码解压后的目录如下表所示: