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:
8:7f20c24f653d
Added comments and example programm

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kkoichy 4:edb55099ea3b 1 #ifndef CANOPEN_NODE_H
kkoichy 4:edb55099ea3b 2 #define CANOPEN_NODE_H
kkoichy 0:0f99b1d63054 3
kkoichy 0:0f99b1d63054 4 #include "mbed.h"
kkoichy 5:e3ca883a96e7 5
kkoichy 5:e3ca883a96e7 6
kkoichy 7:f97c93005257 7 /**************************************************/
kkoichy 7:f97c93005257 8 /* CANopen-Node class :
kkoichy 7:f97c93005257 9 - Contains : node-id, identifier of the node to communicate with, range from 1 to 127
kkoichy 7:f97c93005257 10 can, pointer to the CAN instance used to communicate with the node
kkoichy 7:f97c93005257 11
kkoichy 7:f97c93005257 12 - Methods : 2 constructors, 1 of them setting the frequency of the CAN bus
kkoichy 7:f97c93005257 13 Getters and setters for every variable
kkoichy 7:f97c93005257 14 Send SDO up- and download, to send and receive basic messages over CANopen protocol
kkoichy 7:f97c93005257 15 */
kkoichy 7:f97c93005257 16 /**************************************************/
kkoichy 7:f97c93005257 17
kkoichy 7:f97c93005257 18 /**************************************************/
kkoichy 7:f97c93005257 19 /* Example program
kkoichy 7:f97c93005257 20
kkoichy 7:f97c93005257 21 #include "mbed.h"
kkoichy 8:7f20c24f653d 22 #include "CANopen_node.h"
kkoichy 7:f97c93005257 23
kkoichy 7:f97c93005257 24 //Create a CANopen node object with node identifier 1, CAN frequency = 1Mbps
kkoichy 7:f97c93005257 25 CAN can(p30, p29);
kkoichy 7:f97c93005257 26 CANopen_Node CAN_node(1, &can, 1000000);
kkoichy 7:f97c93005257 27
kkoichy 7:f97c93005257 28
kkoichy 7:f97c93005257 29 int main(void)
kkoichy 7:f97c93005257 30 {
kkoichy 7:f97c93005257 31
kkoichy 7:f97c93005257 32 for(;;)
kkoichy 7:f97c93005257 33 {
kkoichy 7:f97c93005257 34 wait(1);
kkoichy 7:f97c93005257 35 CAN_node.Send_Initiate_SDO_Download(0x2000, 0x05, 0x800004f3);
kkoichy 7:f97c93005257 36
kkoichy 7:f97c93005257 37 }
kkoichy 7:f97c93005257 38 return 1;
kkoichy 7:f97c93005257 39 }
kkoichy 7:f97c93005257 40
kkoichy 7:f97c93005257 41
kkoichy 7:f97c93005257 42 */
kkoichy 7:f97c93005257 43 /**************************************************/
kkoichy 7:f97c93005257 44
kkoichy 7:f97c93005257 45
kkoichy 7:f97c93005257 46
kkoichy 5:e3ca883a96e7 47 namespace mbed {
kkoichy 5:e3ca883a96e7 48 class CANopen_Node {
kkoichy 5:e3ca883a96e7 49
kkoichy 5:e3ca883a96e7 50 public :
kkoichy 5:e3ca883a96e7 51
kkoichy 5:e3ca883a96e7 52 CANopen_Node(uint8_t _id, CAN * _can);
kkoichy 5:e3ca883a96e7 53 CANopen_Node(uint8_t _id, CAN * _can, int _baud);
kkoichy 5:e3ca883a96e7 54 int Send_Initiate_SDO_Download(short index, short subindex, long data);
kkoichy 5:e3ca883a96e7 55 int Send_Initiate_SDO_Upload(short index, short subindex);
kkoichy 5:e3ca883a96e7 56 short GetNodeID(void);
kkoichy 5:e3ca883a96e7 57 void SetNodeID(uint8_t _id);
kkoichy 5:e3ca883a96e7 58 void SetCan(CAN * _can);
kkoichy 5:e3ca883a96e7 59 CAN* GetCan(void);
kkoichy 5:e3ca883a96e7 60
kkoichy 5:e3ca883a96e7 61 private :
kkoichy 5:e3ca883a96e7 62
kkoichy 5:e3ca883a96e7 63
kkoichy 5:e3ca883a96e7 64 protected :
kkoichy 5:e3ca883a96e7 65
kkoichy 5:e3ca883a96e7 66 short node_id;
kkoichy 5:e3ca883a96e7 67 CAN * can;
kkoichy 5:e3ca883a96e7 68
kkoichy 5:e3ca883a96e7 69
kkoichy 5:e3ca883a96e7 70
kkoichy 5:e3ca883a96e7 71 };//end class
kkoichy 5:e3ca883a96e7 72
kkoichy 5:e3ca883a96e7 73
kkoichy 5:e3ca883a96e7 74
kkoichy 5:e3ca883a96e7 75 }//end namespace
kkoichy 5:e3ca883a96e7 76
kkoichy 0:0f99b1d63054 77 #endif