Angel David Yaguana Hernandez
/
0_TUTO_CAN_to_CAN
(CAN) using any type of character and strings with a maxim of 8 bits
main.cpp
- Committer:
- sherckuith
- Date:
- 2013-01-08
- Revision:
- 1:328932c34ba1
- Parent:
- 0:8ef426505c79
File content as of revision 1:328932c34ba1:
#include "mbed.h" #include "CAN.h" DigitalOut led1(LED1); DigitalOut led2(LED2); DigitalOut led3(LED3); DigitalOut led4(LED4); CAN can1(p9, p10); CAN can2(p30, p29); Serial pc(USBTX,USBRX); //tx. rx int main() { char a[8] = {0x6D,0x62,0x65,0x64,0x00,0x00,0x00,0x00}; char b[5] = "hola"; char c[8] = {"1234567"}; const char d[8] = {0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x00}; CANMessage msg; pc.baud(9600); can1.frequency(125000); can2.frequency(125000); while(1) { if(can1.read(msg)) led1 = 1; if(can2.read(msg)) led2 = 1; /***********inicio de comunicacion CAN1 -> CAN2 ****************************/ pc.printf("************************************\n\r"); can1.write(CANMessage(01, &a[0], 8)); pc.printf("write a: %s ",&a[0]); if(can2.read(msg)) { led1 = 1;led2 = 0;led3 = 0;led4 = 0; pc.printf("read a:-%s-\n",&msg.data[0]); } else { printf("CAN1 RD error: %d, TD error: %d\r\n", can1.rderror(), can1.tderror() ); printf("CAN2 RD error: %d, TD error: %d\r\n", can2.rderror(), can2.tderror() ); } can1.write(CANMessage(01, &b[0], 4)); pc.printf("write b: %s ",&b[0]); if(can2.read(msg)) { led1 = 0;led2 = 1;led3 = 0;led4 = 0; pc.printf("read b:-%s-\n",&msg.data[0]); } else { printf("CAN1 RD error: %d, TD error: %d\r\n", can1.rderror(), can1.tderror() ); printf("CAN2 RD error: %d, TD error: %d\r\n", can2.rderror(), can2.tderror() ); } can1.write(CANMessage(01, &c[0], 8)); pc.printf("write c: %s ",&c[0]); if(can2.read(msg)) { led1 = 0;led2 = 0;led3 = 1;led4 = 0; pc.printf("read c:-%s-\n",&msg.data[0]); } else { printf("CAN1 RD error: %d, TD error: %d\r\n", can1.rderror(), can1.tderror() ); printf("CAN2 RD error: %d, TD error: %d\r\n", can2.rderror(), can2.tderror() ); } can1.write(CANMessage(01, &d[0], 8)); pc.printf("write d: %s ",&d[0]); if(can2.read(msg)) { led1 = 0;led2 = 0;led3 = 0;led4 = 1; pc.printf("read d:-%s-\n",&msg.data[0]); } else { printf("CAN1 RD error: %d, TD error: %d\r\n", can1.rderror(), can1.tderror() ); printf("CAN2 RD error: %d, TD error: %d\r\n", can2.rderror(), can2.tderror() ); } //wait(1); led1 = 0;led2 = 0;led3 = 0;led4 = 0; /************************fin**********************************/ /***********inicio de comunicacion CAN2 -> CAN1 ****************************/ pc.printf("************************************\n\r"); can2.write(CANMessage(01, &a[0], 8)); pc.printf("write a: %s ",&a[0]); if(can1.read(msg)) { led1 = 0;led2 = 0;led3 = 0;led4 = 1; pc.printf("read a:-%s-\n",&msg.data[0]); } else { printf("CAN1 RD error: %d, TD error: %d\r\n", can1.rderror(), can1.tderror() ); printf("CAN2 RD error: %d, TD error: %d\r\n", can2.rderror(), can2.tderror() ); } can2.write(CANMessage(01, &b[0], 4)); pc.printf("write b: %s ",&b[0]); if(can1.read(msg)) { led1 = 0;led2 = 0;led3 = 1;led4 = 0; pc.printf("read b:-%s-\n",&msg.data[0]); } else { printf("CAN1 RD error: %d, TD error: %d\r\n", can1.rderror(), can1.tderror() ); printf("CAN2 RD error: %d, TD error: %d\r\n", can2.rderror(), can2.tderror() ); } can2.write(CANMessage(01, &c[0], 8)); pc.printf("write c: %s ",&c[0]); if(can1.read(msg)) { led1 = 0;led2 = 1;led3 = 0;led4 = 0; pc.printf("read c:-%s-\n",&msg.data[0]); } else { printf("CAN1 RD error: %d, TD error: %d\r\n", can1.rderror(), can1.tderror() ); printf("CAN2 RD error: %d, TD error: %d\r\n", can2.rderror(), can2.tderror() ); } can2.write(CANMessage(01, &d[0], 8)); pc.printf("write d: %s ",&d[0]); if(can1.read(msg)) { led1 = 1;led2 = 0;led3 = 0;led4 = 0; pc.printf("read d:-%s-\n",&msg.data[0]); } else { printf("CAN1 RD error: %d, TD error: %d\r\n", can1.rderror(), can1.tderror() ); printf("CAN2 RD error: %d, TD error: %d\r\n", can2.rderror(), can2.tderror() ); } //wait(1); led1 = 0;led2 = 0;led3 = 0;led4 = 0; /************************fin**********************************/ } } /* (NXP TJA 1051/3) mbed TJA1 TJA2 ---------------------- 5V Vcc Vcc GND GND GND p9 RXD - p10 TXD - p29 - TXD p30 - RXD - CANL CANL - CANH CANH 3.3v Vio Vio GND -> 60Ohm-CANL GND -> 60Ohm-CANH GND -> 10KOhm-S-TJA1 GND -> 10KOhm-S-TJA2 */