CAN 学习笔记一_【基于STM32的CANopen通讯协议的实现】

1_【基于STM32的CANopen通讯协议的实现】
CANopen分为三部分:
1、通信部分:PDO协议,SDO协议,NMT协议,特殊功能对象
2、对象字典:数据类型、通信对象、应用对象
3、应用部分:应用程序、设备描述
每个节点维护一个对象字典(Object Dictionary,OD。他是一个有序的对象组,每个对象用一个16位的索引值。
一个8位的字索引值寻址。
该对象字典保存了节点信息,通讯参数和所有过程的数据,CANopen,节点的核心,数据结构。上层应用程序主要通过写对象字典和CANopen。应用层进行交互。
CANopen通讯机制:CANopen通讯模型定义了四种报文(通讯对象):
第一:管理报文NMT(Network Management)。用于网络

NMT消息格式见表1.
C0B-ID Byte0 Byte1
0X000 CS(命令字) Node-ID
第二:务数据对象SD0(Service Data Object)通过使用索引和子索引
SD0是客户机能访问设备(服务器)对象字典中的项(对象)
SD0请求和应答把稳总包含8字节数据。
基本结构结构如下:
C0B-ID Byte 0 Byte1-2 Byte 3 Byte 4-7
0xXXX+Node_ID SD0(CS) Index SubIndex 数据
SD0命令字(CS)
下载/上传(Download/upload)
请求/应答(Request/response)
分段/加速传送(Segmented/expedited transfer)
CAN帧数据字节长度:

第三:过程数据对象PD0(Process Data Object)。PD0主要提供了对设备内应用对象的直接访问,
非确认类型。例如:一个CANopen设备可以读取另一个设备的实时传送,非确认类型。
一个CANopen设备可以直接读取另一个设备的实时过程数据信息、但是传送数据长度必须小于或等于8个字节
第四:预定义报文或者特殊功能报文。定义了三个用于同步,应急指示和时间标记的特定对象,

CAN接收器
PCA82C250 芯片做为CAN收发器,他具有高速稳定的差动发送和接收能力。
可以在控制器和传输介质之间加光电隔离器件,6N137

软件结构体中采用及饿哦固体的方式来定义报文,发送和接收PD0对象,SDO对象。
通过定义结构体型指针变量完成对对象中相关的数据的读写。
利用定义数组的方法实现了OD和过程数据映射的操作。
以数组查询的方式实现了对OD的读写访问。

开始:
系统和CAN进行初始化
使能邮箱和中断
while(1)循环 CAN 报文函数处理应答NMT SDO,PDO,特殊对象报文返回值。

你可能感兴趣的:(can通信)