CAN bus demo MCP25020

From ArmadeusWiki
Jump to: navigation, search

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:

Warning Warning: Please ensure that you use the trunk version of armadeus (kernel linux- is required) before trying the instructions described on this page!

Driver installation

Please refer to this page (under the Driver installation section):

Then, try the instructions in the Usage and Quick test sections to check if the CAN network is working correctly.

Software installation

 $ make menuconfig
    Package Selection for the target  --->
        Armadeus specific tools/utilities  --->
            [*] Armadeus misc demos
            Choose the demos to install  --->
                [*] DEMOS_MCP25020
 $ make
  • 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.

APF27DEV-J13-localisation.png APF27DEV-J13-PINOUT.png

J13 - Pins Functionnalities
1 +3V3

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:

MCP2515DM-PCTL-J3-localisation.png MCP2515DM-PCTL-J3-PINOUT.png

J3 - Pins Functionnalities
1 nc
6 nc
7 nc
8 +5V
9 nc
10 nc

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
2 4 CAN H
3 3 CAN L
4 2 GND


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

Source code

The program source of the demo is viewable in your ARMadeus repository target/demos/mcp25020_ctrl/mcp25020_ctrl.c

Examples program

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: