嵌入式CANopen协议从入门到落地产品(更新2021.9.8)
一、前言
我写CANopen系列博文的初衷是分享如何使用STM32单片机开发一款CANopen产品,所谓实战为主,理论为辅。只看CANopen协议的理论是很枯燥,而且根本看不会。我认为掌握CANopen协议的唯一方法是自己设计一个CANopen从站。
Canfestival是一个开源的CANopen协议代码,它不依赖STM32单片机(实际上我们只需要给Canfestival提供一个硬件定时器即可),所以其他品牌的单片机照样可以使用Canfestival去开发CANopen产品。
CANopen的优势
1、有一个人曾经跟我说过:”没有CANopen的CANbus总线,根本没法用。” 这句话怎么理解?
2、CANopen协议基于CANbus总线。所以,布线简单(只要CAN_H和CAN_L)信号即可。更少出错及减少布线成本、人工成本以及后期的维护。
3、成本低廉,主流的嵌入式芯片都有CAN控制或者FDCAN控制(可以运行普通CAN模式)。
CANopen学习建议
CANopen协议的基础知识需要系统地学习几遍。比如什么是PDO,什么是SDO,什么是NMT,什么是心跳,什么是对象字典等等基本知识。建议直接使用广州致远的CANopen学习资料《CANopen_easy_begin》进行学习,博文里有分享的下载地址。
CANopen常见误区
不要将Node-ID与CAN-ID搞混了。可能很多很多同学都误认为在CANopen网络上,CAN报文里的CAN-ID就是代表CANopen节点的身份证。这个是错误的。在CANopen协议里,Node-ID才是CANopen节点的身份证。
二、学习资料分享
- 《CANopen_easy_begin.pdf》: 学习CANopen的理论知识
链接:https://pan.baidu.com/s/1Jy5myXDkTk9Yq-ChYgW8_Q
提取码:do0u
- 《CANopen_meno.pdf》:方便查询CANopen一些经常需要查阅的知识
链接:https://pan.baidu.com/s/1jODSM4Sq3xnzOSGg7FRxUQ
提取码:xkv8
- 《硬石YS-H7Multi开发板开发手册》:同学们也需要参考
链接:https://pan.baidu.com/s/1qtFBjw7pzaZZVj67BjVTmg
提取码:5aid
三、所需硬件
1、CAN分析仪
- 作为一个CAN节点与其他CAN节点通讯。
2、STM32开发板
- 我使用广州硬石科技的STM32H743开发板,也可以使用其他STM32F103或者STM32F407开发板。但是,STM32开发板一定一定要有CAN接口,可以发送普通的CAN报文。
四、教程
4.1、CANopen移植
CANopen | 移植01 - STM32H743 + Canfestival的移植并让FDCAN1运行CANopen协议
4.2、CANopen基础知识
CANopen | 网络管理NMT01 - 节点上线报文与心跳报文
CANopen | 网络管理NMT02 - 节点状态切换命令
CANopen | 对象字典OD 01 - canfestival对象字典编辑软件安装与使用
CANopen | 对象字典OD 02 - 修改CANopen节点的心跳报文发送间隔
CANopen | 拓展知识 - CANopen,CAN总线与OSI模型的关系
CANopen | 对象字典OD 03 - 启动CANopen节点的服务数据对象SDO
CANopen | 对象字典OD 04 - 创建对象字典的变量(映射变量)
五、CAN总线技术
CANopen协议运行在CAN总线上,进一步学习CAN总线的物理层与数据链路层很有必要,能解决实际工作上碰到的“奇怪”问题。
CAN总线技术 | CAN脱颖而出的“秘密”
CAN总线技术 | 物理层01 - CAN信号电平
CAN总线技术 | 物理层02 - CAN总线的异步串行通讯
CAN总线技术 | 物理层03 - 采样点
CAN总线技术 | 物理层04 - 终端电阻与双绞线(特性阻抗120欧)
CAN总线技术 | 数据链路层01 - CAN报文的组成
CAN总线技术 | 数据链路层02 - 帧结构
CAN总线技术 | 数据链路层03 - CAN总线竞争与仲裁机制
CAN总线技术 | 数据链路层04 - CAN节点状态与错误处理机制
嵌入式CANopen协议从入门到落地产品(更新2021.9.8)相关推荐
- 【转】CAN总线与CANOPEN协议入门
1. 什么是CAN总线协议 CAN总线协议最早是为了统一汽车车载设备间通信的标准而开发的协议,后来由于其高速.稳定.可靠的特点,已经被ISO标准化并广泛应用于工控.医疗等领域,目前依然是欧洲汽车网络的 ...
- CAN总线与CANOPEN协议入门
1. 什么是CAN总线协议 CAN总线协议最早是为了统一汽车车载设备间通信的标准而开发的协议,后来由于其高速.稳定.可靠的特点,已经被ISO标准化并广泛应用于工控.医疗等领域,目前依然是欧洲汽车网络的 ...
- canopen服务器协议,ZOPC_Server(ZLG通用OPC服务器)CANopen协议插件
ZOPC_Server(ZLG通用OPC服务器)CANopen协议插件是一款基于CAN的一种高层协议,是一种具有灵活配置功能的标准嵌入式网络.它的任务是控制和监测所有NMT从站的NMT状态.通常,CA ...
- CANopen协议中文文档
CANopen 协议下载(https://github.com/CANopenNode/CANopenNode) CANopenNode CANopenNode是免费和开源的CANopen协议栈. C ...
- 谈谈CANopen协议的机制
CANopen是基于CAN协议的高级通信协议和设备配置文件规范.该协议是为嵌入式网络应用(如车载网络)开发的.CANopen涵盖了网络编程框架,设备描述,接口定义和应用程序配置文件.CANopen使来 ...
- 云原生实践之 RSocket 从入门到落地:Servlet vs RSocket
为什么80%的码农都做不了架构师?>>> 技术实践的作用在于:除了用于构建业务,也是为了验证某项技术或框架是否值得大规模推广. 本期开始,我们推出<RSocket 从入门 ...
- CANopen协议及应用
文章目录 CANopen协议 CAN总线 CAN报文 CANopen概述 对象字典(Object Dictionary) 概述 通讯对象子协议区 制造商特定子协议 CANopen报文 NMT网络管理 ...
- CANopen协议解读
CANopen协议解读 一.协议标准 二.CANopen报文说明 三.CANopen协议内容 1. ID的理解 2. NMT (1) 节点状态 (2) 节点状态控制 (3) 节点心跳报文 一.协议标准 ...
- 什么是嵌入式编程?如何入门和提高?
作者 谢恩铭,公众号「程序员联盟」(微信号:coderhub). 转载请注明出处. 原文:http://www.jianshu.com/p/d59378613d15 内容简介 什么是嵌入式 什么是交叉 ...
最新文章
- dom4j ---最好的xml解决方案?
- JavaScript之事件冒泡和事件捕获详细介绍
- 在iis中注册.net framework
- ef ddl生成不了脚本_如何使用Hibernate从Play生成DDL脚本! 框架项目
- 前端学习(2912):MvvM的实现原理
- STM32——DMA
- linux关闭cups命令,使用linux的cupsenable命令启动指定的打印机
- 【转】windows多线程CreateThread与_beginthreadex本质区别
- 7款国产的在线HTML编辑器
- C++和C语言的前世今生,两者有什么血缘关系?
- Android Studio工程项目打包成SDK(jar或aar格式)
- MEncoder的基础用法—6.1. 选择编解码器及容器格式
- TCP-IP 用户态编程
- php砸金蛋程序,简单的几句PHP生成美团3周年砸金蛋抽奖代码
- 【微信小程序】ColorUI——一个多彩漂亮的UI组件库
- 哈工大csapp计算机系统大作业
- 阿里云被攻击封多久,又该怎么解决?
- SQLStudio下载
- 什么是静态测试、动态测试、黑盒测试、白盒测试、α测试、β测试?
- 计算机网络——Packet Trace路由器配置——课程设计