|
|
View previous topic :: View next topic |
Author |
Message |
ambivalent Guest
|
compact flash memory support!!!! |
Posted: Thu Oct 13, 2005 10:18 pm |
|
|
Hi everyone,
i was wondering if the ccs c compiler has drivers for compact flash memory (CF) cards.
if it doesnt than has any one written their own drivers for CF cards or not!
Best regards |
|
|
JimB
Joined: 25 Aug 2005 Posts: 65 Location: Huntington Beach, CA
|
File transfer issue. |
Posted: Thu Oct 13, 2005 11:18 pm |
|
|
I had a similar requirement i.e. to interface with some sort of portable memory media such as a flashcard. This issue came up when I realized that the CCS compiler had no fopen() type of function. Apparently to handle this easily one needs an operating system, so these functions are not normally required in an imbedded system.
I did run across a website that advertised a module that will allow the PIC to use a memory card. See the following link.
http://www.armanet.com/
But you never know. I just got wind of a Lunix based operating system for the iPod. It will allow one to play video files. At least there may be some hope that the iPod can become a usable device. |
|
|
ckielstra
Joined: 18 Mar 2004 Posts: 3680 Location: The Netherlands
|
Re: compact flash memory support!!!! |
Posted: Fri Oct 14, 2005 2:23 am |
|
|
ambivalent wrote: | i was wondering if the ccs c compiler has drivers for compact flash memory (CF) cards.
if it doesnt than has any one written their own drivers for CF cards or not!
|
No, CCS does not supply drivers for CF cards. Drivers normally are supplied as integrated part of an operating system, not with the compiler.
Search this forum and you will find many similar discussions. First of all you have to ask yourself if an CF is the best solution for your problem. For data sizes up to 1MByte it's easier to use a serial EEPROM or similar chip, I like the FRAM chips from Ramtron. For larger data storage you can use flash cards like used in photo cameras, Compact Flash and MMC/SD are the most common types.
Compact Flash requires something like 14 I/O ports, do you have this many to spare? MMC and SD cards use the serial SPI port and require only 4 I/O pins.
For flash cards:
Do you need to write data in the Flash memory or are you only reading data? For writing data you need large enough RAM to read in an entire memory page, modify it and write back. MMC cards have memory pages of 512 bytes, so either use one of the larger PIC processor models with large enough RAM or add an external buffer memory. Data reading can be done bytewise so any PIC can handle this.
Example implementations can be found on the web easily.
MPIC3.com Great site! MP3 player, Compact Flash, FAT16. Code written in CCS. Preliminary MMC code available.
MMC project MMC on a 16F876 with external temporary buffer (I2C).
German MMC project Good MMC code starting point. Currently he uses the smaller PIC12/16 processors but has not found a solution for the 512 byte buffer yet.
MP3 player Compact Flash, FAT16 (read only).
Read the following thread for a commercial library with SD/MMC/CF support: http://www.ccsinfo.com/forum/viewtopic.php?t=24187 |
|
|
Guest
|
Re: compact flash memory support!!!! |
Posted: Fri Oct 14, 2005 4:29 am |
|
|
ckielstra thankyou for your reply!!
Actually i need to both read and write data to external memory at run time. The capacity i am looking for is about 1MB as i just need to store and read data strings about 30 characters long.
Needless to say, this read and write will dynamically be controlled by the mcu (i was thinking of using 16f877a).
As you said that for capacities of 1MB, the CF card is not recommended. now in the case of FRAM, are the drivers available for PIC or not.
ckielstra wrote: | For flash cards:
For writing data you need large enough RAM to read in an entire memory page, modify it and write back. MMC cards have memory pages of 512 bytes, so either use one of the larger PIC processor models with large enough RAM or add an external buffer memory. Data reading can be done bytewise so any PIC can handle this.
|
howcome for writing data into the external memory you need to read in the whole memory page? Cant you just write to the flash/MMC 'word by word' rather than loading the whole of memory page into the RAM of your controller.
can you please establish the basic difference between MMC and CF cards from the point of view of interfacing them to the PIC microcontrollers
Best regards |
|
|
ckielstra
Joined: 18 Mar 2004 Posts: 3680 Location: The Netherlands
|
|
Posted: Sat Oct 15, 2005 5:36 pm |
|
|
Quote: | As you said that for capacities of 1MB, the CF card is not recommended. |
First of all I have to apologize for an error in my previous posting, the maximum memory size of external serial EEPROM and FRAM chips is not in the 1MByte but in the 1Mbit range.
It is possible to stack multiple chips to get higher capacites but economically there is a maximum where it is cheaper to move on to the high capacity Flash cards (MMC/SD/CF). If you are designing a low volume device I expect for your 1MByte storage requirement it will be cheaper to buy a 128MB MMC card than a set of 8 x 1Mbit memory chips.
Quote: | now in the case of FRAM, are the drivers available for PIC or not. | I don't know. I wrote the drivers myself, very easy.
Quote: | Needless to say, this read and write will dynamically be controlled by the mcu (i was thinking of using 16f877a). | The 16F877A doesn't have enough RAM to buffer the 512 bytes required for MMC/SD cards. Is there a special reason you want to use this chip instead of one of the newer PIC18's with more memory? Funny thing with Microchip is that many of the newer models with more features are cheaper than the older processors.
Quote: | howcome for writing data into the external memory you need to read in the whole memory page? Cant you just write to the flash/MMC 'word by word' rather than loading the whole of memory page into the RAM of your controller. | With many EEPROMS you can write 'word by word' but erasing data can only be done in whole pages. So in order to modify a single byte you have to read in the original page contents to RAM, modify your byte in RAM, erase the whole page, and write back the data. In the situation where you are only adding data to an (empty) chip i.s.o. modifying data you don't have to read in the page first but writing data will suffice.
MMC/SD cards are a bit different here in the way that you are only allowed to write whole pages.
I don't know if CF cards allow you to write single bytes.
Quote: | can you please establish the basic difference between MMC and CF cards from the point of view of interfacing them to the PIC microcontrollers | SD cards have an electrical and mechanical interface which is backwards compatible to MMC. SD cards have a few more pins which allow for a higher data rate by parallel data transport but both MMC and SD can also be accessed with a serial SPI bus using only 4 I/O pins. The Compact Flash (CF) card is based on the AT-bus used in the first PCs and requires something like 14 I/O pins. For me the number of used I/O pins was very important and I never looked further into the CF cards.
From a software point of view I suspect the CF cards to be easier to interface to than the MMC/SD cards which have some quirks. Example code for both types of cards has been discussed before on this forum, use the search function.
Just in case you are thinking on choosing MMC or SD; I prefer MMC over SD because:
- MMC is a little bit cheaper.
- Specifications for old MMC versions are available for free while SD specifications are expensive to buy.
- The 'secure' part of SD cards takes up some of the available memory.
- I access the cards in SPI mode, the faster parallel data bus of the SD is of no use to me.
- Initialisation of an MMC card is a little bit easier than SD. |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|