1写在前面
教程上一篇文章《关于canfestival及对象字典生成工具环境搭建》中我们简单认识了一下canfestival这套免费开源canopen协议的框架。
那么,本文将会以下载的pdf手册(源码里面也有)为导向,来深入解析canfestival这套框架。
本文大概分两部分来讲述:
1.manual手册概要内容;
2.解析canfestival源码;
2
manual手册概要内容
请先下载我们教程上一篇文章《关于canfestival及对象字典生成工具环境搭建》提到的pdf手册(解压源码,在目录objdictgen doc下面也有manual_en.pdf手册文档)。
打开pdf手册,我们可以清楚的看到手册共有12章。对于使用stm32开发的初学者来说,相对重要一点的章节有:2, 3, 4, 9这些章节。
为了照顾初学者,这里先把每一章节内容概述一下,后面在重点讲述部分的内容。
2.1 内容概要
第1章introduction介绍
主要介绍了canfestival是一个开源(lgpl和gpl) canopen框架,canfestival项目的起源及支持。同时,也介绍了什么是canopen协议,以及协议相关的规范。
第2章canfestival特征
1.工具:提供对象字典gui图形化编辑器、代码生成,以及脚本等配套工具;
2.多平台:库源代码是ansi标准c,支持多平台编译和开发;
3.canopen标准:支持ds-301、302、305等标准的canopen协议。
第3章how to start如何开始
这一章节其实主要就是对一些环境的要求和配置,及如何获取canfestival等。
其实,对我我们使用mcu开发的人来说,重要的就是对象字典编辑和生成工具的环境(具体请参看教程上一篇文章《对象字典生成工具环境搭建》)。其它基于windows、linux开发的环境,大家可以参考文档配置一下,这里不讲述。
第4章理解canfestival
主要讲述:理解源代码文件目录划分情况、在应用程序中实现canfestival以及源文件结构关系、can底层驱动接口的调用和实现、对事件调度的实现方法。
本章节内容直接牵涉源代码相关内容,所以说比较重要,下面章节将进一步详解。
第5、6章
这两章节主要是针对linux、windows平台的配置和开发相关内容,感兴趣朋友可以认真研究一下,这里不讲述。
第7章
主要讲述源码提供的hcs12例程相关的编译、下载、硬件连接以及演示。这里参考意义也不大,如果你有对应的板卡,可以参考进行演示一下。
第8章例程和测试程序
这一章节讲述了配套提供的一些例程的相关说明。比如testmasterslave主从站测试例程中心跳发生器时间为1000毫秒等。
这些说明在源代码中也有,通过查看提供的源代码一目了然。所以,参看价值也不是很大。
第9章开发一个新节点
这一章比较重要,我们开发一个新的节点,就需要编辑其对象字典,那么就需要通过编辑器编辑对象字典并生成代码。
简单的说,这章节的重要内容就是让你学会如何使用这个对象字典编辑器工具。
第10章faq常见问题
这一章节,初学者能看懂的还建议看下有些问题可能对你有帮助,比如:canfestival3是否符合ds301 v4.02版本?
第11章文档资源
主要就是一些参考网址。
第12章关于这个项目
不是重点,可以了解一下这些信息。
3
解析canfestival源码
3.1 源文件目录
解压下载的源码压缩包,会看到如下图文件及文件夹:
我们主要需要的三个.c .h源文件目录:
drivers:底层驱动;
include:.h头文件;
src:.c源代码;
一个对象字典生成工具:
objdictgen:object dictionary generate.
examples:例程,初学者可以参考;
3.2 源代码结构关系及应用程序如何实现
这里有一张源文件的结构关系图,大致就是将源文件按照其作用进行了划分,初学者需要多看多理解。
从图中我们可以看出,将源代码划分成三块。中间的library库文件我们不会去动它。主要修改左右两边的代码。
左边can底层驱动接口(前面我提供过stm32例程)。target目标接口,如定时器。
右边底部对象字典,我们需要通过工具事先配置好,不需要人为编写。最后就是我们通过调用api函数,实现应用程序。
提示:最右边的英文希望大家理解一下,对初学者有帮助,如打开can接口(也可以叫初始化)、初始化定时器......等。
3.3 can底层接口实现和要求
我们底层发送要求非阻塞的方式实现,一般我建议跑一个操作系统,加一个队列的方式实现。
需要一个发送线程、一个接收线程,同时需要定时器实现事件的调度。
这一节的内容,对于初学者理解起来相对较难,可以先了解,有一个概念,后面我会结合代码让大家更容易理解其中含义。
存在一种完美的编程语言吗?
华为P10问题门:华为P10屏幕门、闪存门曝不停,全面揭秘华为P10闪存、疏油层事件
紫光高性能生物识别安全芯片揽获“创新产品奖”、“信息安全奖”双料大奖
必达安保系统i2A8MK-AN2门锁介绍
高性能计算与人工智能何处去?英特尔剑指XPU
CANOpen系列教程11_ 深度分析CanFestival_3架构
智慧医疗成为医疗新基建关键,IT总支出预计到2024年超过1000亿
ToF技术离我们还有多远?
电信启动测试仪表集中采购项目,共采集三个标包
哪一些行业会因为5G而大爆发
濮阳惠成获得资本支持 将加速OLED发光材料中间体国产化
推行PD快充协议后Type C接口设备需标配
下载调试接口SWD和JTAG的区别
抑制瞬态的更佳方法
捷报来传!魅蓝5s全网预约量超425万
滨松科研级相机量子领域应用案例:量子关联成像
半导体弧形封装激光器的特点及应用
iPVD
最常见的电阻器特性
浅谈电子元器件的基础知识