Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp@0:7d8dc5893250, 2019-09-22 (annotated)
- Committer:
- Javierdf
- Date:
- Sun Sep 22 03:05:17 2019 +0000
- Revision:
- 0:7d8dc5893250
prueba can bus mcp2515
Who changed what in which revision?
| User | Revision | Line number | New 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 | } |