muyichuan2012 发表于 2025-6-26 13:49

CANopen on AT32 MCU



CANopen on AT32 MCU

前言
本应用笔记介绍了如何将CANopenNode协议栈移植到AT32单片机方法。本文档提供的源代码演示了使用CANopen的应用程序。单片机(作为CANopen从机)通过收发器电路板连接到CAN总线,上位机软件CANopen Device Explorer(作为CANopen主机)通过PCAN-USB适配器也连接到同一个CAN总线上,与单片机建立一个最基本的CANopen通讯网络。另外,还会介绍一下使用CANopen的对象字典编辑工具来配置参数,可方便生成源代码和配置文件等。

本文将以AT32M412单片机为示例详细论述其移植、演示的过程,同时也有提供AT32F403A单片机的例程以供参考。

注:本应用笔记对应的代码是基于雅特力提供的V2.x.x 板级支持包(BSP)而开发,对于其他版本BSP,需要
注意使用上的区别。

支持型号
AT32M412 系列
AT32F403A 系列


目录
概述 ................................................................. 7
关于CANopen 协议 .......................................... 7
通信参考模型 .................................................. 7
设备模型 ........................................................... 7
预定义报文的ID 分类 ........................................8
通信对象概述 ..................................................9
网络管理和系统启动 ........................................ 11
对象字典概述 ................................................ 14
关于CANopenNode 协议栈 ............................. 16
关于CANopen 对象字典编辑软件 ..................... 19
关于CANopen DeviceExplorer 调试软件 ............ 20
AT32 硬件准备 ................................................21
将CANopenNode 移植到AT32 上 ......................24
基础工程准备 .................................................24
工程内添加CANopenNode 源码 ........................ 24
工程代码的修改 .............................................. 26
对象字典的生成 .............................................. 26
调试软件的配置 ............................................... 31
设备功能的实现 ............................................... 32
案例演示 .......................................................... 34
功能简介 .......................................................... 34
资源准备 .......................................................... 34
测试效果 ...........................................................34
网络管理及心跳测试 ........................................... 35
对象字典的读写测试 ........................................... 37


1 概述
CANopen协议是在20世纪90年代末,由总部位于德国纽伦堡的CiA(CAN in Automation)组织,在CAL(CAN Application Layer)的基础上发展而来。
经过对CANopen协议规范文本的多次修改,使得CANopen协议的稳定性、实时性、抗干扰性都得到了进一步的提高。并且CiA在CANopen的基础协议——CiA 301之上,对各个行业不断推出设备子协议,使CANopen协议在各个行业得到更快的发展与推广。

关于CANopen 协议
下面将简单介绍一下关于CANopen的基础协议——CiA 301(CANopen应用层和通讯描述协议)。

通信参考模型
CANopen的通信概念符合ISO-OSI的参考模型(即ISO 7498-1定义的基本模式),如下图所示。
图1. CANopen 通信参考模型



2 AT32 硬件准备
硬件主要由PCAN-USB适配器、AT32-Comm-EV Board和AT-START Board组成。
本应用指南提供的demo使用到的外设资源有CAN、TMR、USART、GPIO等,用户可根据具体需要灵活配置和修改,使用AT32-Comm-EV Board的收发器与PCAN-USB适配器相连来实现CANopen网络的物理层。
图10. AT32 CANopen 结构原理图



3 将CANopenNode移植到AT32上

3.1 基础工程准备
下载最新版本BSP&PACK文件,按照其应用指南进行安装及配置,本文档及例程均基于AT32xxx_Firmware_Library_V2.x.x的BSP&PACK文件进行开发。可借用at_start_m412文件夹下的temple工程来进行修改,更改文件夹及工程名为canopen_for_at32,并准备在该工程内添加CANopenNode源码。
本案例中有提供AT32 IDE和Keil MDK工程的例程,下面将以Keil MDK工程为例加以说明。

3.2 工程内添加CANopenNode 源码
用户需前往CANopenNode官网即Github上下载最新版源码。源码包解压后,内有如下文件。
本文及所有移植例程均基于CANopenNode-v4版本进行移植。
图13. CANopenNode 源码文件



4 案例演示
4.1 功能简介
实现CANopen 网络通信的一些基本功能:
1、 网络管理及心跳
2、 对象字典的读写
3、 PDO 收发及配置
4.2 资源准备
1) 硬件环境:
参考“第2 章节——AT32 硬件准备”。
2) 软件环境:
AN0269_SourceCode_V2.0.0\canopen_demo_for_at32m412\project\at_start_m412\
canopen_for_at32
4.3 测试效果
至此,官方例程移植完毕,编译并下载,开打与AT-Link相连的串口,可看到如下打印信息。
图23. 串口打印信息


页: [1]
查看完整版本: CANopen on AT32 MCU