嵌入式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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言高低位拷贝_C语言中的大小端转换与
- 下一篇: 人机交互大作业_人机交互专业:多领域交叉