CAN bus demo MCP25020
This page is related with the DEMOS_MCP25020 package. This software show how to communicate easily on a CAN bus, particularly with the Microchip MCP25020 I/O Expander. This chip is used on the Microchip kit MCP2515DM-PCTL: http://fr.farnell.com/microchip/mcp2515dm-pctl/kit-d-eval-mcp2515-controleur-can/dp/1332096
Please refer to this page (under the Driver installation section): http://www.armadeus.com/wiki/index.php?title=CAN_bus_Linux_driver#Driver_installation
Then, try the instructions in the Usage and Quick test sections to check if the CAN network is working correctly.
$ make menuconfig
Package Selection for the target ---> Armadeus specific tools/utilities ---> [*] Armadeus misc demos Choose the demos to install ---> [*] DEMOS_MCP25020
- Reflash rootfs
First and foremost, you have to create the bus with the two nodes.
- Add the APF27 as the first node:
- The pin to connect your APF27-Dev to the CAN bus is on the J13 connector.
|J13 - Pins||Functionnalities|
Check that the J11 is closed on your APF27-Dev board, it will add the end line 120ohm resistor of the CAN bus.
- Add the Microchip kit MCP2515DM-PCTL ( Expander side ) to the CAN bus:
|J3 - Pins||Functionnalities|
Check that the JP3 is closed on the Microchip demo board, it will add the end line 120ohm resistor of the CAN bus.
- Connect CAN L, CAN H and GND between your APF27-Dev and the MCP2515DM-PCTL
|APF27-Dev J13 pins||MCP2515DM-PCTL J3 pins||Functionnalities|
Once your pins are correctly connected, launch your APF27-Dev Board. With the demonstration program, you can:
- Listen on the bus
# mcp25020_ctrl can0 listen
- Blink the D6 Led on the Microchip demo board
# mcp25020_ctrl can0 led-blink [interval]
Interval is 10 to 10000 (The blinking interval in ms)
- Turn ON or OFF the D6 Led on the Microchip demo board
# mcp25020_ctrl can0 led-state [ON|OFF]
Select ON or OFF to changing the led state.
- Get the state of the SW2 switch on the Microchip demo board (released or pushed)
# mcp25020_ctrl can0 sw2-get
- Get the status of MCP25020 configuration registers
# mcp25020_ctrl can0 config
See the MCP25020 datasheet for more informations
The program source of the demo is viewable in your ARMadeus repository target/demos/mcp25020_ctrl/mcp25020_ctrl.c
To create a program with CAN protocol in C/C++, Python, ... is similar to programming a TCP/IP protocol application. Both implement the UNIX socket. You can found some examples in the directory "test" of the socketcan sources, you can found them on:
- http://svn.berlios.de/wsvn/socketcan (trunk->test)
- https://www.ridgerun.com/developer/wiki/index.php/How_to_configure_and_use_CAN_bus (How to configure and use CAN bus)
- http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en024094 (MCP2515 CAN PICtail Demo Board)
- http://ww1.microchip.com/downloads/en/DeviceDoc/21664D.pdf (MCP25020 datasheet)
- http://www.kvaser.com/can/protocol/index.htm (CAN introduction)
- http://www.armadeus.com/wiki/index.php?title=User:KevinJ#Communication_with_the_CAN_Bus_of_a_car (Communication with a car CAN bus)