CAN bus demo MCP25020

From ArmadeusWiki
Revision as of 15:40, 18 April 2011 by KevinJ (Talk | contribs) (New page: 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 ship is used on...)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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 ship is used on the Microchip kit MCP2515DM-PCTL: http://fr.farnell.com/microchip/mcp2515dm-pctl/kit-d-eval-mcp2515-controleur-can/dp/1332096

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


Driver installation

 $ make linux26-menuconfig
Networking support  --->
    <M>   CAN bus subsystem support ---> 
        --- CAN bus subsystem support
        <M>   Raw CAN Protocol (raw access with CAN-ID filtering)
        <M>   Broadcast Manager CAN Protocol (with content filtering)
              CAN Device Drivers  --->
                  <M> Virtual Local CAN Interface (vcan)
                  <M> Platform CAN drivers with Netlink support
                  [*]   CAN bit-timing calculation   
                  <M> Microchip 251x series SPI CAN Controller
 $ make-linux26
  • Reflash kernel

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

Mounting

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

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
2 GND
3 CAN L
4 CAN H
5 GND
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 to the correct pins of the APF27 board

Usage

Once your pins are correctly connected, launch your APF27-Dev Board. With the demonstration program, you can:

  • Listen on the bus
 # mcp25020_ctrl listen
  • Flash the D6 Led on the Microchip demo board
 # mcp25020_ctrl led-flash [interval]

Interval is 10 to 10000 (The flashing interval in ms)

  • Turn ON or OFF the D6 Led on the Microchip demo board
 # mcp25020_ctrl 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 sw2-get
  • Get the status of MCP25020 configuration registers
 # mcp25020_ctrl 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:

Links