Shop OBEX P1 Docs P2 Docs Learn Events
Which SD-MMC Card ? — Parallax Forums

Which SD-MMC Card ?

Areal PersonAreal Person Posts: 197
edited 2006-12-20 01:44 in Propeller 1
·
Ok,
I’m trying to figure out what SD-MMC Card solution(s) to use. Application is not important, I’m just trying to hook them up on a breadboard with·my Propeller chip. I’m thinking about the DosOnChip solution. It looks easy to use, and I like DOS.
·
I’m new to electronics. So I need a simple solution that a novice can do, However, I’m not sure if it would
be difficult to just hook this up…
·
http://www.sparkfun.com/commerce/product_info.php?products_id=204
·
What else would I need (besides the card) to make this solution go? Is it complicated
for a beginner ? This sayes it’s a breakout board, is that all I need ? What software object
do I need to use?
·
Starting out I will be using Mike’s Propeller OS.
·
I can’t use EEPROM, because they only last for 100,000 times or so.
·
I would like to use something that would in·support a FAT16/32 etc. file system.
·
What should I do ?

P.S. There out of the DosOnChip at Sparkfun·shakehead.gif··
Thanks,
·
-Areal Person



▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
my.php?image=tastyled200cv2.jpg

Comments

  • Mike GreenMike Green Posts: 23,101
    edited 2006-12-18 20:47
    There are a variety of MMC/SD FAT16 card interfaces for microcontrollers:
    1) Rogue Robotics uMMC. I've used the similar uMP3 in one project with a Stamp1. It worked, but unreliably. This was a continuously running sound installation and there was some kind of problem with the firmware that would cause it to hang after a few hours. A reset would clear the problem, but this was not an acceptable solution. The problem with the uMP3 was never fixed to my knowledge.
    2) GHI Electronics uALFAT and USBwiz. I have them, have gotten them to work with a Propeller and a Stamp2, but they need at least 4 pins for interfacing. I've used them in a demonstration mode only (interactive), not in any sustained program-driven way.
    3) DOSonChip from Sparkfun. I have one, have gotten it to work interactively with a Propeller. The documentation is not very good at this point, certain not good enough to develop software to drive it without a lot of experimentation.
    4) Vinculum vDRIVE or vDIP (same firmware). This is actually a USB host (like the USBwiz) and works with a "thumb drive" rather than an MMC/SD card. It will work with only 3 pins in SPI mode (if the reset pin is tied to the system reset) and has mostly adequate documentation. The commands and responses are mostly oriented towards interactive use and are not well designed for driving it with a program.

    The summary is that none of these are great. They all have quirks and problems. GHI (uALFAT/USBwiz) and FTDI (Vinculum) have support people who do answer questions sent to them. DOSonChip doesn't have the basic documentation needed yet and may have some support, but not as available as GHI and FTDI's. For myself, I'm working currently with the Vinculum vDIP and the Propeller. We'll see if I can get it to work reliably with the Propeller OS.
  • rokickirokicki Posts: 1,000
    edited 2006-12-18 21:15
    I'm putting the finishing touches on a FAT16 stack for SD (note: *only* FAT16, *only* SD, no MMC, no FAT12 or FAT32, I want to keep it small).
    I'll probably release it in early January.
  • Areal PersonAreal Person Posts: 197
    edited 2006-12-18 21:54
    Ok, Well ua... I don't know what to do now [noparse]:([/noparse]

    QUESTION:
    How hard would it be for me to implement this project on the propeller.
    http://forums.parallax.com/forums/default.aspx?f=21&m=111885

    It's a SX52 operating a 30 pin SIMM, It really looks like an advanced project to me [noparse]:([/noparse]

    What do you think ? I would need help from the forum on doing this, is there any software already written ?
    Should I tackle it ? or is it really hard to do ?

    I did manage to hookup my Propeller chip and Video/TV w/EEPROM on my breadboard.
    I just need some kind of RAM solution (besides EEPROM)

    And I don't know what to do.

    -Areal

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    my.php?image=tastyled200cv2.jpg
  • rokickirokicki Posts: 1,000
    edited 2006-12-18 22:05
    Hmm, now you're talking about connecting to a DRAM? That's a very different world; the DRAM will provide much faster
    random read/write access than a flash solution, but is volatile.

    Essentially: Secure Digital flash solutions will be non-volatile but filesystem or sector-based access, with reasonable
    bandwidth and large sizes (2M-2G) but slow random access.

    EEPROMs will be nonvolatile faster random (byte or word) access, with good bandwidth but slow writes and moderate
    sizes (32K-256K probably).

    DRAMs will be volatile but fast random (byte or word) access, with good bandwidth and pretty big sizes (16M - 128M).

    These are very different worlds. What are you trying to build?

    I actually am looking forward to someone interfacing a 3.3V DRAM to the propeller. It should be doable, and quite
    interesting to get maximum speed out of it. In my (very limited) experience DRAM is normally sold by the SIMM
    these days, but you'd probably prefer to interface a single chip for simplicity and pin count, and I'm not sure what sort
    of single-chip DRAMs are available. In particular, you'd probably want a moderately wide DRAM and I'm not sure
    what's out there.

    You could probably use neat counter tricks to handle the strobes so you don't need a separate instruction for every
    strobe transition.
  • Areal PersonAreal Person Posts: 197
    edited 2006-12-18 22:25
    @ rokicki

    Yes, I understand they are different, I thought I might do the DRAM config while I waiting on a better SD/MMC solution. I would like to do something hop.gif

    However, I think the most difficult part for me would be getting a heartbeat out of the initial
    configuration. I'm not sure about the wiring diagram for a Propeller setup using the SX52
    project, simply because I'm green with the hardware, I'm ok with the software, I could probly
    write a spin object, (in time) but, I'm not sure how to hook-up the DRAM module and get a 'Heartbeat" from it
    as to verify the wiring setup, so I can begin working with the chip.

    I would also like to do a RAM drive object for a DRAM, maybe I could offer it to Mike.
    But before I can do that, I need to get the SIMM hooked up to the Propeller correctly.
    Thats what I'm concerned about.

    -Areal

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    I have a tree growing out of my head, but

    what do you expect ? I'm a programmer.

    Post Edited (Areal Person) : 12/18/2006 10:35:00 PM GMT
  • Mike GreenMike Green Posts: 23,101
    edited 2006-12-18 22:44
    If you were going to use an SD/MMC solution, then you can't be in a hurry to transfer data back and forth, but you need something without the write limitations of an EEPROM. I suggest using a Ramtron FRAM. These are serial memories that work like an EEPROM, but have essentially unlimited write capabilities and write as fast as then can read. The largest available is 32Kb, but you can connect up to 8 to an I2C bus. If you want to use the SPI version, each one will need a chip select, but the data and clock lines can be common. You could use a 1:8 selector to activate up to 8 of them with a total of only 6 pins. With a 1:16 multiplexor, you would need only 7 pins. Have a look at them. This would need far fewer pins than trying to use an DRAM. If you were willing to use the I2C version, you could connect 7 devices to the boot EEPROM lines and not need any extra pins.

    Note: Ramtron now has a 64Kb I2C device as well. You can hook 4 of them on one I2C bus.

    Post Edited (Mike Green) : 12/18/2006 10:49:15 PM GMT
  • David BDavid B Posts: 592
    edited 2006-12-18 22:59
    Hi Areal Person,

    I'm the guy who connected the dynamic RAM to the SX52. I've also made an SD interface (read-only) from a propeller, and made a 512K static RAM interface on an SX28 for GPS data logging. The code for all three of these projects is posted in various places on this forum.

    All three projects were pretty hard, for me, anyway, but that just makes them all the more satisfying to get working. I'll help out if you wanted to try to make something I've gotten to work.

    SD cards also have limited write capability; they basically are EEPROM.

    Maybe you could check out the FRAM memory. I've never worked with that, but it's a non-volatile memory that is supposed to have many more write cycles than SD or EEPROM. I think others on this forum have FRAM experience.

    When I was making the DRAM interface, it occurred to me that the SIMMs were basically just boards holding the individual DRAM chips, and that it may not be all that much harder to interface directly to the chips themselves, for someone who is comfortable working with tiny surface-mounted parts. The DRAM refresh turned out to be trivially easy. The propeller would make it even easier with the availability of the cog counters.

    All in all, memory interfacing isn't all that hard once you get a handle on the basic "set address, toggle control pins, read or write data" procedure.

    If you want to get started, my suggestion would be to get a chip datasheet for whatever RAM you think you want to get started with, and read it over and over, and get familiar with the specs, and the jargon, and the timing, and access requirements of the chip. Sketch out the address, data and control wires, and start to fit them to your cpu.

    David
  • Areal PersonAreal Person Posts: 197
    edited 2006-12-18 23:04
    Thanks, David & Mike ! I think·I'll use, the Ramtron FRAM.

    I think I'm also going to try the DosOnChip for a removable storage media.

    Thanks again, I'll keep everyone posted on my progress.

    I want to get some memmory devices going so I can start writing spin objects.

    Now I think I can pull the chips off my old 30 pin RAM and put each one of them to good use
    I have tons of them ! Thanks David ! Thats a cool idea.


    -Areal

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    I have a tree growing out of my head, but

    what do you expect ? I'm a programmer.

    Post Edited (Areal Person) : 12/18/2006 11:10:07 PM GMT
  • ForrestForrest Posts: 1,341
    edited 2006-12-19 01:38
    You might want to check out the forums at Sparkfun.com before getting the DosOnChip. There's been a number of reported problems with it - most notably it has terrible read/write performance compared to the uALFAT. The uALFAT sells for the same price as DosOnChip - $39.95.
  • Areal PersonAreal Person Posts: 197
    edited 2006-12-19 02:35
    Oh, Nuts !

    shocked.gif·I just used my credit card...

    I bought this one...

    http://chipdos.com/modules.htm

    shakehead.gif· Oh no.. I hope I can get to work.

    I really just need to do the SD-MMC project for my hobby/learning
    experance with my Propeller chip (which I love).

    However·the Ramtron chip project will have greater RAMafications Ha.. Ha...
    Get it ? RAMafications Ha.. Ha...

    Well, what would you expect from Areal Person.

    Haaaa. Haa, ha.

    Get it !

    Areal Person, Haaaa, ha

    And don't forget !


    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    I have a tree growing out of my head, but

    what do you expect ? I'm a programmer.

    Post Edited (Areal Person) : 12/19/2006 2:51:25 AM GMT
  • Areal PersonAreal Person Posts: 197
    edited 2006-12-19 04:42
    Mike Green said...
    If you were going to use an SD/MMC solution, then you can't be in a hurry to transfer data back and forth, but you need something without the write limitations of an EEPROM. I suggest using a Ramtron FRAM. These are serial memories that work like an EEPROM, but have essentially unlimited write capabilities and write as fast as then can read. The largest available is 32Kb, but you can connect up to 8 to an I2C bus. If you want to use the SPI version, each one will need a chip select, but the data and clock lines can be common. You could use a 1:8 selector to activate up to 8 of them with a total of only 6 pins. With a 1:16 multiplexor, you would need only 7 pins. Have a look at them. This would need far fewer pins than trying to use an DRAM. If you were willing to use the I2C version, you could connect 7 devices to the boot EEPROM lines and not need any extra pins.

    Note: Ramtron now has a 64Kb I2C device as well. You can hook 4 of them on one I2C bus.
    @Mike,

    I'm looking at the Ramtron site trying to find the correct part numbers...
    http://www.ramtron.com/doc/Products/Nonvolatile/Nonvolatile_list.asp?ID=5

    I'm looking at Serial Memory Products. Is that right ?

    OK, I just found a 1meg Parallel FRAM chip that runs at 3.3v it's an
    FM20L08-60-TGC TSOP32· big whopping $23.00. How do I hook it up ?

    Question:
    Why can I use only·4 of the 64k on the I2C bus ? Why not 8 ??
    And is the PN# FM24CL64 correct for·a Propeller solution ?

    Question:
    Also under Serial SPI,

    Why could I not hookup 4-8 of the FM25L512 ?
    There 512k @ 3.0-3.6V

    For that matter is it not possiable to use the FM24C512 (Serial Memory) 512k

    I've looked through many posts, could you please explain this to me.
    Is it because vdd is 5v, or because IDD is 1.5ma - 12ma, or what ?

    Why and what are the limitations on EEPROM sizes with the Propeller? I know I2C has
    no. of chip per pin limits, but what else limits the size of the EEPROM/amount of chips I can use
    with the Propeller ?

    I'm trying to learn something.

    Thanks,
    -Areal

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    I have a tree growing out of my head, but

    what do you expect ? I'm a programmer.

    Post Edited (Areal Person) : 12/19/2006 5:22:30 AM GMT
  • Mike GreenMike Green Posts: 23,101
    edited 2006-12-19 06:21
    You can hookup any number of the FM25L512 (but realistically 8-10). They operate directly at 3.3V. SPI requires a common clock and data. All the SI lines can be connected with all the SO lines to one Propeller I/O pin and all the clock lines can be connected to another Propeller I/O pin. The selects must be separate and mutually exclusive. A good way to do this is with a 1:8 selector which takes a 3 bit select code and an enable input and produces one of 8 selection signals (one for each FRAM). This takes 6 Propeller I/O pins and gives you 8 x 64Kb = 512Kb of fast serial memory. You could use a larger selector (1:16), but the paralleled chips load down the clock and data lines eventually and slow down the maximum transfer rate.

    The I2C memories (FM24C256 and FM24C512) operate only on 5V at present, so require a little interface circuitry (the Philips P82B96 does this nicely). Their advantage is that they can piggyback on the same I/O pins used for the boot EEPROM. The I2C addressing scheme provides for only 8 possible select codes for memory chips. Different manufacturers do this differently, but Ramtron uses the 8 address codes for 32Kb memories. the 64Kb memories use two address codes per chip which limits the total to 256Kb per I2C bus.
  • parskoparsko Posts: 501
    edited 2006-12-19 08:46
    Areal,

    My current project is a high speed I2C assembly sequence to interface with 24FC515 EEPROMS. These are neat little buggers. You can push a 1Mhz (I2C or SPI)clock at them (versus 400kHz high speed I2C) at 3.3V. I'll be honest though, I haven't been able to reliably read/write to these chips using available techniques (Mike's OS or I2Cobject) without the address sequencing by 3 (meaning, I can only read every 3rd addresss?!? Any thoughts?).

    You can chain 4 of these on one I2C bus, giving you 2Mb storage per bus. My concept is to use a 2 bus setup. This will allow me to buffer one page for one bus, while writing the other page to the other bus.

    I have calculated that I can push 12,800 bytes per second into the eeproms, filling up all 8 eeproms (4Mb) in 40 seconds!

    I am currently writing my object to use two 64byte page buffers. For now, I'm just trying to reliably write and read to the eeprom. Oh, BTW, the whole thing will be Assembly, including writing to each of the 64 byte buffers (the only way to get these speeds).

    I hope to be done in January while my other half is gone for two weeks...

    -Parsko
  • LoopyBytelooseLoopyByteloose Posts: 12,537
    edited 2006-12-19 16:42
    Bean has a card reader/recorder that uses RS-232 and is buffered. The SD cards support 3 modes of communication and I believe that SPI is the slowest. There problems with the other two is that they are somewhat proprietory. Having looked at the specs, there appears to be a one bit mode and a 4 bit mode.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    "If you want more fiber, eat the package.· Not enough?· Eat the manual."········
    ···················· Tropical regards,····· G. Herzog [noparse][[/noparse]·黃鶴 ]·in Taiwan
  • rokickirokicki Posts: 1,000
    edited 2006-12-19 17:12
    While SPI is the slowest, I've been able to get reading up to 750KByte/second
    using it from the propeller without even trying that hard. I'm still working on
    writing. Some cards are faster than others, too.
  • Areal PersonAreal Person Posts: 197
    edited 2006-12-19 20:33
    Thanks for all the help, I sure need it !

    I'm thinking maybe I should dedicate 1 of my propeller chips as a FRAM controller using I2C to start with. for experimentation.

    Then hookup allot of FRAM chips and·also to leave a few pins open as so I can then
    communicate to my propeller from another propeller chip [noparse]:)[/noparse]

    I think I going with 4 FM24CL64's as a drop in replacment for the stock EEPROM for a total of
    256k FRAM upgrade.· (I2C)

    Then I think I'm going with 4 FM24C512's @ 5v with some kind of voltage circuit for a total of
    2mb

    From there the sky is the limit ! hop.gif

    Ua... will this work, I can use mutipul i/o pins for I2C bus lines and different

    configurations ? Right

    Thanks -Areal


    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    I have a tree growing out of my head, but

    what do you expect ? I'm a programmer.

    Post Edited (Areal Person) : 12/19/2006 8:40:10 PM GMT
  • Areal PersonAreal Person Posts: 197
    edited 2006-12-19 20:41
    My posting was double spacing, and I could not get to stop, so I'll ask in this post.

    I was looking at the FM20L08-60-TGC 1 Mb Parallel 60ns Temp 0-70c 3.3V TSOP
    is this just a simple Parallel hookup, is that what that means ?

    WOW ! That chip's $23.00 bucks !

    Would this type chip be a·good solution for the propeller, or is it a dumb way
    to do it ?

    -Areal

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    I have a tree growing out of my head, but

    what do you expect ? I'm a programmer.

    Post Edited (Areal Person) : 12/19/2006 10:08:49 PM GMT
  • RetrobitsRetrobits Posts: 46
    edited 2006-12-19 23:46
    I am watching this thread (and other related threads) with interest.· My main project for the Propeller is a portable disk drive emulator for a particular vintage computer system (Epson PX-8 laptop, circa 1984).· The PX-8 used a RS232 protocol for its disk drive communications, so the fullduplex object takes care of me on the interface front.· I just need a mass-storage device to hold·virtual "disk" images, which are simply files in a particular format.

    I was originally thinking about the DOSonChip, but after seeing some of the issues I am having second thoughts.· I don't really have a preference at the moment on which type of device I use (SD, CF, USB thumb drive), but I will need one of the above.· I'm going to try to write the routines to abstract the mass storage device so that I can easily replace the storage mechanism later.

    One important criteria is that the storage device be easily read/written by a PC, so that disk images can be downloaded from the Internet and transferred directly onto the memory device.· SD, CF and USB all qualify, but FRAM or other EEPROM doesn't work well for this.

    Hoping that a good solution will emerge, and/or willing to lend a hand to help build one if needed...

    - Earl
  • rokickirokicki Posts: 1,000
    edited 2006-12-19 23:54
    I should have read/write SD routines released by the first of the year. (I'm currently beating on them, trying to wear out some SD cards,
    etc. etc. etc.). So if you have a propeller, you might consider getting a SD socket wired up (the SparkFun breakout board works great,
    but I've seen that some people just plug the SD card directly into an old floppy connector and that works for them) so the hardware is
    ready to go.

    One of the uses I plan for it is as a disk controller replacement for the TRS-80 Color Computer; I'll probably use the cassette port for an
    interface.
  • Areal PersonAreal Person Posts: 197
    edited 2006-12-20 01:44
    @Earl,

    Well, I just ordered a DosOnChip, so I'll let you know how it works for me as soon as it arives.
    I can't wait !

    @rokicki, I'm also interested in your project. I have a CoCo2, and I have one that's just parts
    the ROM is just sitting in the socket waiting for me to do somthing with it.

    Do you know how to work with any of the TRS-80 CoCo 2 chips ?

    I'm also working with FreeDOS Kernal programming and the Bochs OS emulator.

    I have not figured out how to run a modified DOS kernal on the Propeller chip yet [noparse]:)[/noparse] but
    I'm looking forward to coding some spin objects that are based on some core functionalities
    in the furture

    Things like...

    Virtual RAM Disk in FRAM memory
    Shared Memory (FRAM) IPC abilities, maybe some custom pipes etc.. freaked.gif and just some OS stuff thats cool.

    I'm not trying to make a PC, but there are just some memory features that would be cool !

    I'm kinda behind the game right now, but when I get caught up, It's really going
    to be fun !

    -Areal

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    I have a tree growing out of my head, but

    what do you expect ? I'm a programmer.
Sign In or Register to comment.