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