SHDesigns: Embedded Systems Design, Consulting and Developer Resources Page hits:

SPI-MMC/SD Support

SHDesigns has implemented MMC or SD flash card support for clients. This has been made available for all users of Rabbit boards.

The SPI-MMC board uses the SHDesigns SPI-200 SPI controller and provides an MMC interface and a SPI connector for other SPI devices. A library provides support for MMC/SD cards using the interface board or one of the Rabbit serial ports in SPI mode.

The board is an adapter that sits under an RCM3000,3100,3200 or RCM33xx board and has an MMC/SD connector and the SPI-200 controller. Below is a picture of the adapter:


 Adapter with RCM3200 module

The board can be used to add MMC support to existing designs or for prototype development. The circuit can easily be added to a design, it only uses the SPI-200 chip and the MMC/SD connector. No Rabbit Serial ports are used, the chip uses the external I/O bus. Only one Port E pin is needed. The rest of the module pins are available for use.

The board can also be used to test the SPI-200 chip with other SPI devices. A 0.1" header allows connection of the SPI signals for external devices. The SPI chip allows fast SPI transfers with low software overhead.

When implemented on a user board, the SPI-200 chip and connector are less than $7 in quantity. The connector itself is about $2 so adding MMC/SD to a Rabbit module can be as simple as adding the connector and routing the 4 signals and power.

Libraries for the Dynamic C FAT library and the SHDesigns FAT library for Softools have been developed. Read/Write speeds are very good as shown in the following table:

 Test  SHD/FAT (Softools)+SPI-200  SHD/FAT direct  ZW FAT
 Large file sector reads  980 kbytes/sec  308 kbytes/sec  224 kbytes/sec
 Large file sector writes  480 kbytes/sec  211 kbytes/sec  58 kbytes/sec

Tests are with an RCM3200, run in fast RAM, and a 512mByte SD card. Reads/writes are with 512-byte blocks. This eliminates overhead of partial writes in the FAT libraries.

The SPI chip adds consideral performance increase with the SHDesigns FAT and the Softools C compiler. It has little effect on speed with the ZW FAT library. The speed limitation of the ZW lib is the slow compiler and overly complex FAT code. The chip runs 24bmit/sec and acheives 2mbyte/sec bursts (MMC/SD has command delays that cut speed.) The overhead of the ZW lib is the limit for speed.

The board has been tested, a small production run has been built. A development kit with the adpater board and the MMC/SD driver is available. Single-boards will be sold at $45.00. Quantity orders will be discounted, as more users use the adapter, the price should drop considerably.

There are development kits for Dynamic C and Softools. Both include source and documentation including schematics.

The MMC/SD drivers can use the SPI-200 chip or the Rabbit own serial ports. The adapter board and the SPI chip is not required in the final design. A low-cost interface can just use an MMC connector attached to a Rabbit synchronous serial port. For better performance and smaller code, the SPI-200 can be included is a user design. The chip will also provide additional I/O ports for bit I/O.

Dynamic C MMC development kit includes:

MMC/SD driver
MMC-SPI Adapter board
Requires ZW FAT Libraries

The MMC/SD Driver for DC is also available separately:

Softools MMC/SD Development Kit includes:

MMC/SD Driver
MMC-SPI Adapter board
SHDesigns FAT Library (FAT file system with emphasis on speed and portability.) The lib supports long file names and devices up to 2 gigs.

The boards and devlopment kit are now available on the SHDesigns Online Store.

For additional information, contact

Additional Information: Rabbit Libraries Home Page - SHDesigns Home Page