0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CANOpen系列教程11_ 深度分析CanFestival_3架构

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-06 15:43 次阅读

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底层接口实现和要求

我们底层发送要求非阻塞的方式实现,一般我建议跑一个操作系统,加一个队列的方式实现。

需要一个发送线程、一个接收线程,同时需要定时器实现事件的调度。

这一节的内容,对于初学者理解起来相对较难,可以先了解,有一个概念,后面我会结合代码让大家更容易理解其中含义。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CAN
    CAN
    +关注

    关注

    56

    文章

    2472

    浏览量

    459462
  • CANopen
    +关注

    关注

    7

    文章

    201

    浏览量

    42906
  • manual
    +关注

    关注

    0

    文章

    17

    浏览量

    11458
  • 编辑器
    +关注

    关注

    1

    文章

    788

    浏览量

    30277
收藏 人收藏

    评论

    相关推荐

    CANopen以太网网关怎么用?

    CANopen以太网网关怎么用? CANopen以太网网关是一种连接CANopen总线和以太网的设备,它提供了在CANopen网络和以太网之间传输数据的功能。本文将详细介绍
    的头像 发表于 02-02 16:59 297次阅读

    EtherCAT转CANopen网关在工业领域的应用方法

    :根据需求,选择合适的EtherCAT转CANopen网关。需要考虑网关的接口、协议转换能力、稳定性、可靠性等方面。 3.配置EtherCAT转CANopen网关:根据实际应用情况,对EtherCAT转
    发表于 01-31 14:54

    Profinet协议转换为CanOpen协议来连接CanOpen伺服驱动器的应用

    局域网(CAN)网络的通信协议,被广泛应用于汽车和其他嵌入式系统中。对于将Profinet协议转换为CanOpen协议以链接台达B3系列伺服驱动器的应用,以下是一些运用的基本步骤:系列
    发表于 01-10 10:29

    工业通讯中CANOPEN转EtherCAT的转换

    CANOPEN转EtherCAT协议转换网关是一款能够将CANOPEN接口设备连接到EtherCAT网络系统的产品。该网关作为EtherCAT网络的从站,可以将CANOPEN设备集成到EtherCAT控制系统中,实现EtherC
    的头像 发表于 12-12 11:33 219次阅读
    工业通讯中<b class='flag-5'>CANOPEN</b>转EtherCAT的转换

    工业通讯中CANOPEN转EtherCAT的转换

    CANOPEN转EtherCAT协议转换网关是一款能够将CANOPEN接口设备连接到EtherCAT网络系统的产品。该网关作为EtherCAT网络的从站,可以将CANOPEN设备集成到
    发表于 12-12 11:31

    倍加福推出内置CANopen接口的L2系列超声波传感器

    倍加福推出内置CANopen接口的L2系列超声波传感器,为传感器技术在移动工程机械应用领域开辟新的前景。如今,机器制造商可以直接在移动工程机械中使用集成 CANopen 接口且通过 E1 认证的超声波传感器,从而使昂贵且耗时的额
    的头像 发表于 09-22 09:47 435次阅读

    CANOPEN 转 Modbus 协议网关

    YC-COP-RTU网关可通过自带的配置软件设置成两种不同的通信网关,CANopen 做主站/Modbus 做从站网关:CANopen 主站协议与 Modbus 从站协议之间的转换,可实现单个 CANopen 从站设备与 Mod
    的头像 发表于 09-19 17:55 386次阅读
    <b class='flag-5'>CANOPEN</b> 转 Modbus 协议网关

    BM1684架构介绍

    一、概述 一图胜千言,先po一张架构图,如下所示: 二、TPU架构 2.1 DTCM DTCM是TPU内部的MCU ARM9的高速缓存空间(512KB),类似于CPU中的L1
    发表于 09-19 08:11

    适用于R-Profile AArch64架构参考手册

    规则。 Arm架构包括以下定义: •相关的调试架构。 •相关的跟踪体系结构,定义了实现者可以使用相关处理器硬件实现的跟踪宏单元。
    发表于 08-11 07:28

    Mali-G620性能计数器参考指南

    本指南解释了Mali-G620 GPU的Arm Streamline评测模板中的GPU性能计数器,该模板是Arm GPU Gen5架构系列的一部分。 Streamline中的计数器模板遵循循序渐进
    发表于 08-09 07:08

    Immortali-G720和Mali-G720性能计数器参考指南

    本指南解释了Immortali-G720和Mali-G720 GPU的Arm Streamline评测模板中的GPU性能计数器,它们是Arm GPU Gen5架构系列的一部分。 Streamline
    发表于 08-09 06:20

    Gaudi2架构和软件的全面解释

    ,Gaudi2以其架构为基础,为数据中心和云的深度学习带来了新的性能和效率。 Gaudi2由SynapseAI®软件套件支持,该软件套件与TensorFlow和PyTorch框架集成。我们在哈瓦那的GitHub
    发表于 08-04 06:15

    一个CANopen的应用样例(上)

    发送一系列网络管理命令,控制CANopen从站节点对本机的CANopen协议栈程序停止、启动、复位等操作。
    的头像 发表于 06-23 15:57 1504次阅读
    一个<b class='flag-5'>CANopen</b>的应用样例(上)

    CANopen的发展历史和内部架构

    CAN 总线外设驱动程序能够提供基本的操作硬件电路系统的服务,但在具体的应用系统中,更多是基于协议栈开发上层应用,而不是针对某个具体的芯片平台编写定制的应用程序。目前 CANopen 是工业自动化
    的头像 发表于 06-23 15:46 563次阅读
    <b class='flag-5'>CANopen</b>的发展历史和内部<b class='flag-5'>架构</b>

    如何调整CapSense库以使其适用于ESP8266架构

    ESP8266 架构。我总是收到警告:readPin 方法超时,请检查接线。尽管我使用的接线与 Arduino 相同。 该库使用内置上拉电阻通过测量引脚从低电平上升到高电平的时间来感应电容。有谁
    发表于 05-22 10:01