CANtest module (A base for more complex ones)
Dependencies: mbed-STM32F103C8T6 mbed
Fork of CANtest by
Revision 2:bb0f12b33fa1, committed 2018-06-05
- Comitter:
- mbedoguz
- Date:
- Tue Jun 05 19:56:05 2018 +0000
- Parent:
- 1:3759c5f6cf76
- Commit message:
- CANTest module to be able to test can receiver chips
Changed in this revision
--- a/main.cpp Mon Feb 14 13:26:46 2011 +0000
+++ b/main.cpp Tue Jun 05 19:56:05 2018 +0000
@@ -1,28 +1,25 @@
-
-
+#include "stm32f103c8t6.h"
#include "mbed.h"
#include "CAN.h"
+#define board_transmitter
+Serial pc(USBTX,USBRX,115200);
Ticker ticker;
DigitalOut led1(LED1);
DigitalOut led2(LED2);
-CAN can1(p9, p10); // rd, td Transmitter
-CAN can2(p30, p29); // rd, td Monitor
+#ifdef board_transmitter
+CAN transmitter_can(PB_8, PB_9); // rd, td Transmitter
+#else
+CAN receiver_can(PB_8, PB_9); // rd, td Transmitter
+#endif
int counter = 0;
char data[8];
//***************void send is the data you are sending**************
+#ifdef board_transmitter
void send() {
-
-//-------------------------CONFIGURATION-----------------------------
-// Send this part if you want to configure your LSS compatible motor!
-// Read more about the LSS protocol for more information.
-// Don't forget to include an "else {}" part.(scroll down some)
-
- /*if(counter==0) {
- //--------Global Start nodes
- data[0] = (char)(0x01); // NMT Start RemoteNode
+ data[0] = (char)(0xbf); // NMT Start RemoteNode
data[1] = (char)(0x00); // Global
data[2] = (char)(0x00);
data[3] = (char)(0x00);
@@ -30,293 +27,47 @@
data[5] = (char)(0x00);
data[6] = (char)(0x00);
data[7] = (char)(0x00);
- if(can1.write(CANMessage(0000,data,2))) {
- printf("Startup sent \n");
- }
- led1 = !led1;
- counter ++;
- }
- else if(counter==1) {
- //--------LSS Configure Mode
- data[0] = (char)(0x04); // LSS Set Mode
- data[1] = (char)(0x01); // Mode configure
- data[2] = (char)(0x00);
- data[3] = (char)(0x00);
- data[4] = (char)(0x00);
- data[5] = (char)(0x00);
- data[6] = (char)(0x00);
- data[7] = (char)(0x00);
- if(can1.write(CANMessage(2021,data,2))) {
- printf("LSS Configure mode sent \n");
- }
- led1 = !led1;
- counter ++;
- }
- else if(counter==2) {
- //--------LSS Set Node_ID
- data[0] = (char)(0x11); // LSS Set Node_ID
- data[1] = (char)(0x03); // to Node_ID: 03
- data[2] = (char)(0x00);
- data[3] = (char)(0x00);
- data[4] = (char)(0x00);
- data[5] = (char)(0x00);
- data[6] = (char)(0x00);
- data[7] = (char)(0x00);
- if(can1.write(CANMessage(2021,data,2))) {
- printf("LSS Set Node_ID to 0x03 sent \n");
- }
- led1 = !led1;
- counter ++;
- }
- else if(counter==3) {
- //--------LSS Set Baudrate
- data[0] = (char)(0x13); // LSS Set Baudrate
- data[1] = (char)(0x00); //
- data[2] = (char)(0x02); // Baudrate index (500kb/s)
- data[3] = (char)(0x00);
- data[4] = (char)(0x00);
- data[5] = (char)(0x00);
- data[6] = (char)(0x00);
- data[7] = (char)(0x00);
- if(can1.write(CANMessage(2021,data,3))) {
- printf("LSS Set Baudrate sent \n");
- }
- led1 = !led1;
- counter ++;
- }
- else if(counter==4) {
- //--------LSS Save Config
- data[0] = (char)(0x17); // LSS Save Config
- data[1] = (char)(0x00);
- data[2] = (char)(0x00);
- data[3] = (char)(0x00);
- data[4] = (char)(0x00);
- data[5] = (char)(0x00);
- data[6] = (char)(0x00);
- data[7] = (char)(0x00);
- if(can1.write(CANMessage(2021,data,3))) {
- printf("LSS Save Config sent \n");
- }
- led1 = !led1;
- counter ++;
- }
- else if(counter==6) {
- //--------LSS Operation Mode
- data[0] = (char)(0x04); // LSS Set Mode
- data[1] = (char)(0x00); // Mode operation
- data[2] = (char)(0x00);
- data[3] = (char)(0x00);
- data[4] = (char)(0x00);
- data[5] = (char)(0x00);
- data[6] = (char)(0x00);
- data[7] = (char)(0x00);
- if(can1.write(CANMessage(2021,data,2))) {
- printf("LSS Operation mode sent \n");
- }
- led1 = !led1;
- counter ++;
- }*/
-//-----------------------END OF CONFIGURATION---------------------
-
-
-//-----------------------Running your motor-----------------------
-// Look up how to make your motor run.
-// This example works on a FAULHABER 3242 G024 BX4 CC
-// Don't forget to include an "else {}". Scroll down a bit.
-
- if(counter==0) {
- //--------Start node 3--------
- data[0] = (char)(0x01); // Start Node
- data[1] = (char)(0x03); // ID 03
- data[2] = (char)(0x00);
- data[3] = (char)(0x00);
- data[4] = (char)(0x00);
- data[5] = (char)(0x00);
- data[6] = (char)(0x00);
- data[7] = (char)(0x00);
- if(can1.write(CANMessage(0000,data,2))) {
- printf("Start Node_ID 03 sent \n");
- }
- led1 = !led1;
- counter ++;
- }
- else if(counter==1) {
- //--------FAULHABER Mode
- data[0] = (char)(0xFD); // FAULHABER MODE
- data[1] = (char)(0xFF);
- data[2] = (char)(0xFF);
- data[3] = (char)(0xFF);
- data[4] = (char)(0xFF);
- data[5] = (char)(0x00);
- data[6] = (char)(0x00);
- data[7] = (char)(0x00);
- if(can1.write(CANMessage(771,data,5))) {
- printf("Operation mode: FAULHABER sent \n");
+ if(transmitter_can.write(CANMessage(0000,data,2))) {
+ pc.printf("Startup sent \n");
}
- led1 = !led1;
- counter ++;
- }
- else if(counter==2) {
- //--------Switch ON using FAULHABER
- data[0] = (char)(0x0F); // FAULHABER MODE
- data[1] = (char)(0x00);
- data[2] = (char)(0x00);
- data[3] = (char)(0x00);
- data[4] = (char)(0x00);
- data[5] = (char)(0x00);
- data[6] = (char)(0x00);
- data[7] = (char)(0x00);
- if(can1.write(CANMessage(771,data,5))) {
- printf("Switch ON sent \n");
- }
- led1 = !led1;
- counter ++;
- }
- else if(counter==3) {
- //--------Speed setting
- data[0] = (char)(0x93); // FAULHABER MODE
- data[1] = (char)(0xF4);
- data[2] = (char)(0x01);
- data[3] = (char)(0x00);
- data[4] = (char)(0x00);
- data[5] = (char)(0x00);
- data[6] = (char)(0x00);
- data[7] = (char)(0x00);
- if(can1.write(CANMessage(771,data,5))) {
- printf("Speed = 500RPM sent \n");
- }
- led1 = !led1;
- counter ++;
- }
- else if(counter==4) {
- //--------Datarequest setting
- data[0] = (char)(0x40); // FAULHABER MODE
- data[1] = (char)(0x00);
- data[2] = (char)(0x00);
- data[3] = (char)(0x00);
- data[4] = (char)(0x00);
- data[5] = (char)(0x00);
- data[6] = (char)(0x00);
- data[7] = (char)(0x00);
- if(can1.write(CANMessage(771,data,5))) {
- printf("Requesttype: position sent \n");
- }
- led1 = !led1;
- counter ++;
- }
-//--------------------End run motor--------------------------------
-
-//---------------------Request Position----------------------------
-// Run this one to request the position of my motor.
-// Check the datasheet of your motor to confirm if this works.
- else {
- //--------Positie opvragen
- data[0] = (char)(0x00);
- data[1] = (char)(0x00);
- data[2] = (char)(0x00);
- data[3] = (char)(0x00);
- data[4] = (char)(0x00);
- data[5] = (char)(0x00);
- data[6] = (char)(0x00);
- data[7] = (char)(0x00);
- if(can1.write(CANMessage(643))) {
- printf("Positie check sent \n");
- }
- led1 = !led1;
- counter = 10;
- }
-//--------------------End request position-------------------
+}
+#endif
-
-//---------------------Request Status--------------------------
-// Run this one to request the status of my motor.
-// Check the datasheet of your motor to confirm if this works.
- /* else {
- //--------Status check
- data[0] = (char)(0x00);
- data[1] = (char)(0x00);
- data[2] = (char)(0x00);
- data[3] = (char)(0x00);
- data[4] = (char)(0x00);
- data[5] = (char)(0x00);
- data[6] = (char)(0x00);
- data[7] = (char)(0x00);
- if(can1.write(CANMessage(387))) {
- printf("Status check sent \n");
- }
- led1 = !led1;
- counter = 10;
- }*/
-//------------------End request status------------------
-
-
-//---------Example------------------
-
- /*if(counter==0) {
- //--------8 bytes of data
- data[0] = (char)(0xFF);
- data[1] = (char)(0xFF);
- data[2] = (char)(0xFF);
- data[3] = (char)(0xFF);
- data[4] = (char)(0xFF);
- data[5] = (char)(0x00);
- data[6] = (char)(0x00);
- data[7] = (char)(0x00);
- if(can1.write(CANMessage(2021,data,8))) {
- printf("8bytes test sent \n");
- }
- led1 = !led1;
- counter ++;
- }
- else {
- //--------2 bytes of data
- data[0] = (char)(0x00);
- data[1] = (char)(0xAA);
- data[2] = (char)(0x00);
- data[3] = (char)(0x00);
- data[4] = (char)(0x00);
- data[5] = (char)(0x00);
- data[6] = (char)(0x00);
- data[7] = (char)(0x00);
- if(can1.write(CANMessage(2021,data,2))) {
- printf("2bytes test sent \n");
- }
- led1 = !led1;
- counter = 10;
- }*/
-//-------End of example--------------
-}
-//*************************************************************
-
-
-//**********The main program*********************
int main() {
//----------------Initialization-----------------------
- can2.frequency(500000); //500kbit/s
- can1.frequency(500000);
- //can2.monitor(1); //Works without this, in my case.
+#ifdef board_transmitter
+ transmitter_can.frequency(500000);
+#else
+ receiver_can.frequency(500000); //500kbit/s
+#endif
+ //receiver_can.monitor(1); //Works without this, in my case.
+#ifdef board_transmitter
ticker.attach(&send, 1); //Send every second
+#endif
CANMessage msg;
//-----------------------------------------------------
//---------------The read out----------------------
while(1) {
- if(can2.read(msg)) {
- printf("Message read with ID: %d\n", msg.id);
- printf("Data: %x", msg.data[0]);
- printf(" %x", msg.data[1]);
- printf(" %x", msg.data[2]);
- printf(" %x", msg.data[3]);
- printf(" %x", msg.data[4]);
- printf(" %x", msg.data[5]);
- printf(" %x", msg.data[6]);
- printf(" %x\n", msg.data[7]);
- printf("Length: %d", msg.len);
- printf(", Type: %d", msg.type);
- printf(", Format: %d\n\n", msg.format);
+
+#ifndef board_transmitter
+ if(receiver_can.read(msg)) {
+ pc.printf("Message read with ID: %d\n", msg.id);
+ pc.printf("Data: %x", msg.data[0]);
+ pc.printf(" %x", msg.data[1]);
+ pc.printf(" %x", msg.data[2]);
+ pc.printf(" %x", msg.data[3]);
+ pc.printf(" %x", msg.data[4]);
+ pc.printf(" %x", msg.data[5]);
+ pc.printf(" %x", msg.data[6]);
+ pc.printf(" %x\n", msg.data[7]);
+ pc.printf("Length: %d", msg.len);
+ pc.printf(", Type: %d", msg.type);
+ pc.printf(", Format: %d\n\n", msg.format);
led2 = !led2; //Blink!
}
+#endif
}
//----------------------------------------------------
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-STM32F103C8T6.lib Tue Jun 05 19:56:05 2018 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/hudakz/code/mbed-STM32F103C8T6/#727468adfd1d
--- a/mbed.bld Mon Feb 14 13:26:46 2011 +0000 +++ b/mbed.bld Tue Jun 05 19:56:05 2018 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/63bcd7ba4912 +https://os.mbed.com/users/mbed_official/code/mbed/builds/5aab5a7997ee \ No newline at end of file
