嵌入式CANopen协议从入门到落地产品(更新2023.10.18)

一、前言


我写CANopen系列博文的初衷是分享如何使用STM32单片机开发一款CANopen产品,所谓实战为主,理论为辅。只看CANopen协议的理论是很枯燥,而且根本看不会。我认为掌握CANopen协议的唯一方法是自己设计一个CANopen从站。
Canfestival是一个开源的CANopen协议代码,它不依赖STM32单片机(实际上我们只需要给Canfestival提供一个硬件定时器即可),所以其他品牌的单片机照样可以使用Canfestival去开发CANopen产品。

最近安富莱开始更新CANopen的教程,强烈推荐大家去学习!!
BSP视频教程第27期:CANopen协议栈专题,实战方式系统了解NMT,PDO,SDO,时间戳,同步报文,紧急报文等(2023-10-17)

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协议
STM32F103的CANopen移植模版:github

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 - 创建对象字典的变量(映射变量)
CANopen | 对象字典OD 05 - 创建对象字典变量,映射到RPDO
CANopen | 对象字典OD 06 - 创建对象字典变量,通过TPDO定时发送
CANopen | 对象字典OD 07 - 创建对象字典变量,变量变化时发送TPDO1,滤波时间200ms

五、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节点状态与错误处理机制

  • 24
    点赞
  • 188
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wallace Zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值