ISISA-Zacatenco / Mbed 2 deprecated CAN_SPI_MCP2515_TEST

Dependencies:   mbed

Committer:
Javierdf
Date:
Sun Sep 22 03:05:17 2019 +0000
Revision:
0:7d8dc5893250
prueba can bus mcp2515

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Javierdf 0:7d8dc5893250 1 #include "mbed.h"
Javierdf 0:7d8dc5893250 2 ////PINES PARA KL-46Z
Javierdf 0:7d8dc5893250 3 ///%%%%MISO%%%% se conecta al divisor para no dañar el micro puesto que la entrada digital es de 3.3v y el mcp regresa 5v
Javierdf 0:7d8dc5893250 4 // SI=MOSI
Javierdf 0:7d8dc5893250 5 // SO=MISO
Javierdf 0:7d8dc5893250 6 // SO Directo al divisor de voltaje, entrada a las r 2.35k ohms
Javierdf 0:7d8dc5893250 7 // salida del divisor a tierra directo intermedio a miso 4.7k ohms
Javierdf 0:7d8dc5893250 8 // Se conecta al SPI 0 para no interrumpir la acción de los estados de los leds
Javierdf 0:7d8dc5893250 9 SPI spi(PTA16, PTA17, PTA15); // mosi, miso, sclk
Javierdf 0:7d8dc5893250 10 DigitalOut cs(PTA14);
Javierdf 0:7d8dc5893250 11 // en caso de instalar barra de leds referida a tierra se invierte la polaridad es decir 1=on
Javierdf 0:7d8dc5893250 12 // en el micro estan referidos a voltaje 1=off
Javierdf 0:7d8dc5893250 13 // se invertiria el en¿cendido de los leds con la barra!!
Javierdf 0:7d8dc5893250 14 DigitalOut myled(PTD5); //led verde
Javierdf 0:7d8dc5893250 15 DigitalOut resetled(PTE29); //led rojo
Javierdf 0:7d8dc5893250 16
Javierdf 0:7d8dc5893250 17
Javierdf 0:7d8dc5893250 18 int main()
Javierdf 0:7d8dc5893250 19 {
Javierdf 0:7d8dc5893250 20 myled = 1;
Javierdf 0:7d8dc5893250 21 resetled = 1;
Javierdf 0:7d8dc5893250 22 // Chip must be deselected
Javierdf 0:7d8dc5893250 23 cs = 1;
Javierdf 0:7d8dc5893250 24
Javierdf 0:7d8dc5893250 25 // Setup the spi for 8 bit data, high steady state clock,
Javierdf 0:7d8dc5893250 26 // second edge capture, with a 1MHz clock rate
Javierdf 0:7d8dc5893250 27 spi.format(8,3);
Javierdf 0:7d8dc5893250 28 spi.frequency(1000000);
Javierdf 0:7d8dc5893250 29
Javierdf 0:7d8dc5893250 30 while (1) {
Javierdf 0:7d8dc5893250 31
Javierdf 0:7d8dc5893250 32 // Select the device by seting chip select low
Javierdf 0:7d8dc5893250 33 resetled = 0;
Javierdf 0:7d8dc5893250 34 cs = 0;
Javierdf 0:7d8dc5893250 35 // Send 0xC0, the command to reset the MCP2515 chip
Javierdf 0:7d8dc5893250 36 spi.write(0xC0);
Javierdf 0:7d8dc5893250 37 printf("Resetting the MCP2515 chip.\r\n");
Javierdf 0:7d8dc5893250 38 // Deselect the device
Javierdf 0:7d8dc5893250 39 cs = 1;
Javierdf 0:7d8dc5893250 40 wait_ms(10);
Javierdf 0:7d8dc5893250 41 resetled = 1;
Javierdf 0:7d8dc5893250 42
Javierdf 0:7d8dc5893250 43 // Select the device by seting chip select low
Javierdf 0:7d8dc5893250 44 cs = 0;
Javierdf 0:7d8dc5893250 45 // Send 0xA0, the command to read the MCP2515 Status register
Javierdf 0:7d8dc5893250 46 spi.write(0xA0);
Javierdf 0:7d8dc5893250 47 // Send a dummy byte to receive the contents of the status register
Javierdf 0:7d8dc5893250 48 int status = spi.write(0x00);
Javierdf 0:7d8dc5893250 49 printf("status register = 0x%02X.\r\n", status);
Javierdf 0:7d8dc5893250 50 // Deselect the device
Javierdf 0:7d8dc5893250 51 cs = 1;
Javierdf 0:7d8dc5893250 52
Javierdf 0:7d8dc5893250 53 // Select the device by seting chip select low
Javierdf 0:7d8dc5893250 54 cs = 0;
Javierdf 0:7d8dc5893250 55 // Send 0x03, the command to read an MCP2515 register
Javierdf 0:7d8dc5893250 56 spi.write(0x03);
Javierdf 0:7d8dc5893250 57 // Send 0x0F, the address of the MCP2515 CANCTRL register
Javierdf 0:7d8dc5893250 58 spi.write(0x0F);
Javierdf 0:7d8dc5893250 59 // Send a dummy byte to receive the contents of the status register
Javierdf 0:7d8dc5893250 60 int CANCTRL = spi.write(0x00);
Javierdf 0:7d8dc5893250 61 printf("CANCTRL register = 0x%02X.\r\n", CANCTRL);
Javierdf 0:7d8dc5893250 62 // Deselect the device
Javierdf 0:7d8dc5893250 63 cs = 1;
Javierdf 0:7d8dc5893250 64
Javierdf 0:7d8dc5893250 65 wait(1);
Javierdf 0:7d8dc5893250 66 myled = !myled;
Javierdf 0:7d8dc5893250 67 }
Javierdf 0:7d8dc5893250 68 }