CANopen library

Dependents:   SDC21XX_Motor

Fork of CANopen_Node by Pierre David

Committer:
kkoichy
Date:
Mon Jul 11 11:02:12 2016 +0000
Revision:
9:822973c25f99
Parent:
5:e3ca883a96e7
Added comments and example programm

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kkoichy 4:edb55099ea3b 1 #include "CANopen_Node.h"
kkoichy 0:0f99b1d63054 2
kkoichy 0:0f99b1d63054 3
kkoichy 0:0f99b1d63054 4 namespace mbed {
kkoichy 0:0f99b1d63054 5
kkoichy 9:822973c25f99 6 CANopen_Node::CANopen_Node(uint8_t _id, CAN * _can): node_id(_id), can(_can)
kkoichy 0:0f99b1d63054 7 {
kkoichy 0:0f99b1d63054 8
kkoichy 0:0f99b1d63054 9 }
kkoichy 9:822973c25f99 10 CANopen_Node::CANopen_Node(uint8_t _id, CAN * _can, int _baud): node_id(_id), can(_can)
kkoichy 0:0f99b1d63054 11 {
kkoichy 0:0f99b1d63054 12 can->frequency(_baud);
kkoichy 0:0f99b1d63054 13
kkoichy 0:0f99b1d63054 14 }
kkoichy 5:e3ca883a96e7 15 int CANopen_Node::Send_Initiate_SDO_Download(short index, short subindex, long data)
kkoichy 0:0f99b1d63054 16 {
kkoichy 0:0f99b1d63054 17 char _data[8];
kkoichy 0:0f99b1d63054 18 _data[0] = 0x22;
kkoichy 0:0f99b1d63054 19 _data[1] = index;
kkoichy 0:0f99b1d63054 20 _data[2] = index >> 8;
kkoichy 0:0f99b1d63054 21 _data[3] = subindex;
kkoichy 0:0f99b1d63054 22 _data[4] = data >> 0;
kkoichy 0:0f99b1d63054 23 _data[5] = data >> 8;
kkoichy 0:0f99b1d63054 24 _data[6] = data >> 16;
kkoichy 0:0f99b1d63054 25 _data[7] = data >> 24;
kkoichy 0:0f99b1d63054 26 return can->write(CANMessage(0x600 + node_id, _data, 8));
kkoichy 0:0f99b1d63054 27
kkoichy 0:0f99b1d63054 28 }
kkoichy 5:e3ca883a96e7 29 int32_t CANopen_Node::Send_Initiate_SDO_Upload(short index, short subindex)
kkoichy 0:0f99b1d63054 30 {
kkoichy 0:0f99b1d63054 31 char _data[8];
kkoichy 0:0f99b1d63054 32 _data[0] = 0x60;
kkoichy 0:0f99b1d63054 33 _data[1] = index;
kkoichy 0:0f99b1d63054 34 _data[2] = index >> 8;
kkoichy 0:0f99b1d63054 35 _data[3] = subindex;
kkoichy 0:0f99b1d63054 36 _data[4] = 0;
kkoichy 0:0f99b1d63054 37 _data[5] = 0;
kkoichy 0:0f99b1d63054 38 _data[6] = 0;
kkoichy 0:0f99b1d63054 39 _data[7] = 0;
kkoichy 1:a5e0bd1f1c93 40 CANMessage _message(0x600 + node_id, _data, 8);
kkoichy 0:0f99b1d63054 41 can->write(_message);
kkoichy 1:a5e0bd1f1c93 42 can->read(_message);
kkoichy 0:0f99b1d63054 43 return (_message.data[4] | _message.data[5] << 8 | _message.data[6] << 16 | _message.data[7] << 24);
kkoichy 0:0f99b1d63054 44
kkoichy 0:0f99b1d63054 45 }
kkoichy 5:e3ca883a96e7 46 short CANopen_Node::GetNodeID(void)
kkoichy 0:0f99b1d63054 47 {
kkoichy 0:0f99b1d63054 48 return node_id;
kkoichy 0:0f99b1d63054 49
kkoichy 0:0f99b1d63054 50 }
kkoichy 5:e3ca883a96e7 51 void CANopen_Node::SetNodeID(uint8_t _id)
kkoichy 0:0f99b1d63054 52 {
kkoichy 0:0f99b1d63054 53 node_id = _id;
kkoichy 0:0f99b1d63054 54
kkoichy 0:0f99b1d63054 55 }
kkoichy 5:e3ca883a96e7 56
kkoichy 5:e3ca883a96e7 57 void CANopen_Node::SetCan(CAN * _can)
kkoichy 5:e3ca883a96e7 58 {
kkoichy 5:e3ca883a96e7 59 can = _can;
kkoichy 5:e3ca883a96e7 60 }
kkoichy 5:e3ca883a96e7 61
kkoichy 5:e3ca883a96e7 62 CAN* CANopen_Node::GetCan(void)
kkoichy 5:e3ca883a96e7 63 {
kkoichy 5:e3ca883a96e7 64 return can;
kkoichy 5:e3ca883a96e7 65 }
kkoichy 0:0f99b1d63054 66
kkoichy 0:0f99b1d63054 67
kkoichy 0:0f99b1d63054 68
kkoichy 0:0f99b1d63054 69
kkoichy 0:0f99b1d63054 70 }//end namespace