![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
CANtest module (A base for more complex ones)
Dependencies: mbed-STM32F103C8T6 mbed
Fork of CANtest by
main.cpp
- Committer:
- OTBsolar
- Date:
- 2011-02-11
- Revision:
- 0:af731d8a8d2c
- Child:
- 1:3759c5f6cf76
File content as of revision 0:af731d8a8d2c:
#include "mbed.h" #include "CAN.h" Ticker ticker; DigitalOut led1(LED1); DigitalOut led2(LED2); CAN can1(p9, p10); // rd, td CAN can2(p30, p29); int counter = 0; char data[8]; CANMessage msg; void send() { if(counter==0) { //--------Global Start nodes data[0] = (char)(0x01); // NMT Start RemoteNode data[1] = (char)(0x00); // Global 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("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 Config 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)(0x01); // to Node_ID: 01 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 0x01 sent \n"); } led1 = !led1; counter ++; } else if(counter==3) { //--------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,1))) { printf("LSS Save Config sent \n"); } led1 = !led1; counter ++; } else if(counter==4) { //--------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 Config mode sent \n"); } led1 = !led1; counter ++; } /*else if(counter==5) ( //--------LSS Set Bit timing data[0] = (char)(0x15); // LSS Set Bit timing data[1] = (char)(0x00); // 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 Config mode sent \n"); } led1 = !led1; counter ++; }*/ else if(counter==5) { //--------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 ++; } else { //--------Inquire IDNode_ID data[0] = (char)(0x5E); 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,1))) { printf("Status check sent \n"); } led1 = !led1; counter = 10; } } int main() { can2.frequency(500000); //500kbit/s can1.frequency(500000); ticker.attach(&send, 1); //Send every second 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); led2 = !led2; } } }