CANopen帮你入门

如果你做过can的开发, 但是短时间不能理解canopen, 这个笔记会把关键点讲出来, 有助于你入门

1. canopen是基于标准的can上面的应用层协议

2. canopen是主从模式, 采用11bit的ID, 前面4个bit是功能码, 后面7bitt是地址, 因此最多127个地址

功能码说明本帧数据的用途:有下面几种, 先把难理解的说明一下;

SDO: 最要的数据, 要求有应答, 主机设置充电器的关键参数等
​​​PDO: 快速的数据, 不要应答, 比如电流,电压,so,c温度等

对象字典:

就是一个主机/从机在设计阶段约定要交换的数据, 也就是通讯的内容所在

有设备制造商的信息(名称, 版本...),

有运行参数:比如充电的电流,电压,so,c温度等, OTA要传给MCU的bin文件的大小crc等

对象字典的索引分为16位的主索引和8位的子索引

第一个子索引0, 表示接下来有多少个sub-index

SDO主要用于参数(快速 SDO 协议)和bootloader(普通/块传输)

难以理解的PDO

PDO的目的是想高效快速传输参数, 因此不想在数据区8byte里面有多余的东西, 那就约定好在里面放入哪些对象字典里面的项目, 因为PDO有ID里面4组(tx/rx)地址, 可以传输: 4*2*8=64byte的数据

怎样约定:

通讯对象就是通讯的方式(同步[收到主机的同步信号再传输]/异步[有事情发生就传输], 时间间隔等)

映射对象就是PDO对应的对象字典里面的参数地址, 比如 TPDO1的映射对象时1A00, 就是说在字典的1A00里面写入要传输哪些字典里面的参数:

所以当发送TPDO1的时候, 相当于发送了字典里面其他几个组合的参数

其他的大家容易理解的我就不多嘴了. 希望看了觉得有帮助的点个赞, 让我知道帮助了一些正在绞尽脑汁的兄弟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值