代码框架大致为:
CAN_Receive(CAN1,CAN_FIFO0,&RxMessage);
if(RxMessage.StdId==0x600+bDeviceNodeId)//检查是否是发给本站的报文 {
if((RxMessage.Data[0]==0x2F)||
(RxMessage.Data[0]==0x2B)||(RxMessage.Data[0]==0x27)||(RxMessage.Data[0]==0x23)||(RxMessage.Data[0]==0x40)|| (RxMessage.Data[0]==0x60))//检查功能码
{ proceedSDO(0,&m);//处理SDO报文 }
if (RxMessage.StdId==0x0000)//检查功能码 {
proceedNMTstateChange(&m);//处理NMT报文 }
if (RxMessage.StdId==0x0080) 检查功能码
{ proceedSYNC(0,&m); //处理PDO同步报文 }
7 结束语
CANopen协议作为一种非常有竞争力
标准总线,目前在欧洲已被广泛应用,在中国,随着工业时代的发展,CANopen协议也将会被广泛应用。