SPI

From ArmadeusWiki
Revision as of 17:17, 29 January 2010 by FabienM (Talk | contribs) (Linux configuration)

Jump to: navigation, search

Page under construction... Construction.png Informations on this page are not guaranteed !!

This page will summarize the informations to use the SPI bus on our boards.

Overview

SPI (Serial Peripheral Interface) is a 4-wire full-duplex serial bus. Wires used in SPI are :

  • MOSI, Master Output Slave Input : send data to slave.
  • MISO, Master Input Slave Output : receive data from slave.
  • SCLK, : Serial Clock signal used to synchronise the transmission. (In imx27 (apf27) maximum frequency of SCLK is 22.167MHz in master mode and 16.625 in slave mode.
  • SSx, Slave Select : used to select the slave for communication with master.

On APF27, the i.MX27 contains 3 SPI devices that can be configured in master (slave is not supported by linux). APF9328 (i.MXL) contains 2 SPI.

Linux configuration

SPI is used by some kernel driver, then selecting it will naturally select the corresponding SPI. To use the SPI from user space you have to unsure that correct spi is selected in «make linux26-menuconfig»:

    Device Drivers  --->
        [*] SPI support  --->
            ...
            <*>   Freescale iMX SPI controller 
            [*]     CSPI1
            [*]     CSPI2
            [*]     CSPI3
            ...

And special user device (spidev) option must be selected too :

    Device Drivers  --->
        [*] SPI support  --->
            ...
            *** SPI Protocol Masters ***
            <M>   User mode SPI device driver support
            ...

This driver will create a /dev/spidev2.0 node to read/write on spi from userspace.

For more details on spidev usage, see kernel documentation.

Linux user space C code

Tested SPI chips

Links