June 7th, 2012
SPI driver for OpenRISC eCos

After a short break, this week we are going to deal with SPI support for the OpenRISC eCos port,

To add the driver to the eCos build, the CYGPKG_IO_SPI package has to be added as follows:

1
ecosconfig add CYGPKG_IO_SPI

ECos requires that each device connected to the SPI bus is properly described. Our driver provides a macro for this purpose:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
CYG_DEVS_SPI_OPENCORES_SIMPLE_SPI_DEVICE(
  name,        // handler name of the device
  bus,         // SPI bus, numbering starts at 0
  cs,          // CS line, numbering starts at 0
  polarity,    // polarity (1 or 0)
  phase,       // phase (1 or 0)
  freq,        // maximum SCK frequency measured in hertz
  cs_to_tran,  // minimum delay between CS signal and start
               // of the transmission, measured in microseconds
  tran_to_cs,  // minimum delay between the end of the transmission
               // and the release of CS signal, measured in microseconds
  tran_to_tran // minimum delay between transmission of consecutive
               // bytes, measured in microseconds
);

For example, to add a m25pxx flash memory, fairly common on FPGA boards, connected to bus 0 chip-select 0, we can describe it as follows:

1
2
3
CYG_DEVS_SPI_OPENCORES_SIMPLE_SPI_DEVICE(
  m25pxx_spi, 0, 0, 0, 0, 1000000, 1, 1, 1
);

It is worth noting that eCos already has a driver for this memory type. To use it you have to add the CYGPKG_DEVS_FLASH_SPI_M25PXX package:

1
ecosconfig add CYGPKG_DEVS_FLASH_SPI_M25PXX

And connect the SPI device to it:

1
2
3
CYG_DEVS_FLASH_SPI_M25PXX_DRIVER (
  m25pxx_drv, 0, &m25pxx_spi
);

Note: Get the relevant code from our mirror of eCos-openrisc on Ant Micro’s github account.

The eCos provided by Ant Micro now supports:

  • UART
  • SPI
  • Ethernet
  • SDIO

Stay with us for more updates about OpenRISC, FPGA and open source in embedded systems.

Tags: , , ,

Leave a Reply

 

Copyright © 2009 - 2013 ant micro. All rights reserved. | Design: Duind.com