1寫在前面
教程上一篇文章《關(guān)于Canfestival及對(duì)象字典生成工具環(huán)境搭建》中我們簡(jiǎn)單認(rèn)識(shí)了一下Canfestival這套免費(fèi)開源CANOpen協(xié)議的框架。
那么,本文將會(huì)以下載的PDF手冊(cè)(源碼里面也有)為導(dǎo)向,來(lái)深入解析Canfestival這套框架。
本文大概分兩部分來(lái)講述:
1.manual手冊(cè)概要內(nèi)容;
2.解析Canfestival源碼;
2
manual手冊(cè)概要內(nèi)容
請(qǐng)先下載我們教程上一篇文章《關(guān)于Canfestival及對(duì)象字典生成工具環(huán)境搭建》提到的PDF手冊(cè)(解壓源碼,在目錄objdictgen doc下面也有manual_en.pdf手冊(cè)文檔)。
打開PDF手冊(cè),我們可以清楚的看到手冊(cè)共有12章。對(duì)于使用STM32開發(fā)的初學(xué)者來(lái)說(shuō),相對(duì)重要一點(diǎn)的章節(jié)有:2, 3, 4, 9這些章節(jié)。
為了照顧初學(xué)者,這里先把每一章節(jié)內(nèi)容概述一下,后面在重點(diǎn)講述部分的內(nèi)容。
2.1 內(nèi)容概要
第1章Introduction介紹
主要介紹了CanFestival是一個(gè)開源(LGPL和GPL) CANopen框架,CanFestival項(xiàng)目的起源及支持。同時(shí),也介紹了什么是CANOpen協(xié)議,以及協(xié)議相關(guān)的規(guī)范。
第2章CanFestival特征
1.工具:提供對(duì)象字典GUI圖形化編輯器、代碼生成,以及腳本等配套工具;
2.多平臺(tái):庫(kù)源代碼是ANSI標(biāo)準(zhǔn)C,支持多平臺(tái)編譯和開發(fā);
3.CANopen標(biāo)準(zhǔn):支持DS-301、302、305等標(biāo)準(zhǔn)的CANOpen協(xié)議。
第3章How to start如何開始
這一章節(jié)其實(shí)主要就是對(duì)一些環(huán)境的要求和配置,及如何獲取CanFestival等。
其實(shí),對(duì)我我們使用MCU開發(fā)的人來(lái)說(shuō),重要的就是對(duì)象字典編輯和生成工具的環(huán)境(具體請(qǐng)參看教程上一篇文章《對(duì)象字典生成工具環(huán)境搭建》)。其它基于Windows、Linux開發(fā)的環(huán)境,大家可以參考文檔配置一下,這里不講述。
第4章理解Canfestival
主要講述:理解源代碼文件目錄劃分情況、在應(yīng)用程序中實(shí)現(xiàn)CanFestival以及源文件結(jié)構(gòu)關(guān)系、CAN底層驅(qū)動(dòng)接口的調(diào)用和實(shí)現(xiàn)、對(duì)事件調(diào)度的實(shí)現(xiàn)方法。
本章節(jié)內(nèi)容直接牽涉源代碼相關(guān)內(nèi)容,所以說(shuō)比較重要,下面章節(jié)將進(jìn)一步詳解。
第5、6章
這兩章節(jié)主要是針對(duì)Linux、Windows平臺(tái)的配置和開發(fā)相關(guān)內(nèi)容,感興趣朋友可以認(rèn)真研究一下,這里不講述。
第7章
主要講述源碼提供的HCS12例程相關(guān)的編譯、下載、硬件連接以及演示。這里參考意義也不大,如果你有對(duì)應(yīng)的板卡,可以參考進(jìn)行演示一下。
第8章例程和測(cè)試程序
這一章節(jié)講述了配套提供的一些例程的相關(guān)說(shuō)明。比如TestMasterSlave主從站測(cè)試?yán)?a target="_blank">中心跳發(fā)生器時(shí)間為1000毫秒等。
這些說(shuō)明在源代碼中也有,通過(guò)查看提供的源代碼一目了然。所以,參看價(jià)值也不是很大。
第9章開發(fā)一個(gè)新節(jié)點(diǎn)
這一章比較重要,我們開發(fā)一個(gè)新的節(jié)點(diǎn),就需要編輯其對(duì)象字典,那么就需要通過(guò)編輯器編輯對(duì)象字典并生成代碼。
簡(jiǎn)單的說(shuō),這章節(jié)的重要內(nèi)容就是讓你學(xué)會(huì)如何使用這個(gè)對(duì)象字典編輯器工具。
第10章FAQ常見問(wèn)題
這一章節(jié),初學(xué)者能看懂的還建議看下有些問(wèn)題可能對(duì)你有幫助,比如:CanFestival3是否符合DS301 V4.02版本?
第11章文檔資源
主要就是一些參考網(wǎng)址。
第12章關(guān)于這個(gè)項(xiàng)目
不是重點(diǎn),可以了解一下這些信息。
3
解析Canfestival源碼
3.1 源文件目錄
解壓下載的源碼壓縮包,會(huì)看到如下圖文件及文件夾:
我們主要需要的三個(gè).c .h源文件目錄:
drivers:底層驅(qū)動(dòng);
include:.h頭文件;
src:.c源代碼;
一個(gè)對(duì)象字典生成工具:
objdictgen:object dictionary generate.
examples:例程,初學(xué)者可以參考;
3.2 源代碼結(jié)構(gòu)關(guān)系及應(yīng)用程序如何實(shí)現(xiàn)
這里有一張?jiān)次募慕Y(jié)構(gòu)關(guān)系圖,大致就是將源文件按照其作用進(jìn)行了劃分,初學(xué)者需要多看多理解。
從圖中我們可以看出,將源代碼劃分成三塊。中間的Library庫(kù)文件我們不會(huì)去動(dòng)它。主要修改左右兩邊的代碼。
左邊CAN底層驅(qū)動(dòng)接口(前面我提供過(guò)STM32例程)。Target目標(biāo)接口,如定時(shí)器。
右邊底部對(duì)象字典,我們需要通過(guò)工具事先配置好,不需要人為編寫。最后就是我們通過(guò)調(diào)用API函數(shù),實(shí)現(xiàn)應(yīng)用程序。
提示:最右邊的英文希望大家理解一下,對(duì)初學(xué)者有幫助,如打開CAN接口(也可以叫初始化)、初始化定時(shí)器......等。
3.3 CAN底層接口實(shí)現(xiàn)和要求
我們底層發(fā)送要求非阻塞的方式實(shí)現(xiàn),一般我建議跑一個(gè)操作系統(tǒng),加一個(gè)隊(duì)列的方式實(shí)現(xiàn)。
需要一個(gè)發(fā)送線程、一個(gè)接收線程,同時(shí)需要定時(shí)器實(shí)現(xiàn)事件的調(diào)度。
這一節(jié)的內(nèi)容,對(duì)于初學(xué)者理解起來(lái)相對(duì)較難,可以先了解,有一個(gè)概念,后面我會(huì)結(jié)合代碼讓大家更容易理解其中含義。
-
CAN
+關(guān)注
關(guān)注
57文章
2754瀏覽量
463697 -
CANopen
+關(guān)注
關(guān)注
8文章
253瀏覽量
43588 -
manual
+關(guān)注
關(guān)注
0文章
17瀏覽量
11519 -
編輯器
+關(guān)注
關(guān)注
1文章
806瀏覽量
31171
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論