Page 1 of 1

STR912 SSP - is there SD-card example anywhere?

Posted: Wed Sep 25, 2013 3:18 pm
by Gorlash
Okay, the next feature I need to implement on our card is support for an SD card. I've looked at ST's SSP examples, but they all just do loopback operations, and none of them say anything about dealing with an SD card. I'm assuming that if I call SSP_SendData() and SSP_ReceiveData(), that is going to simple read/write data... how do I interact with the command interface on the chip? On USB, this was a SCSI controller, or at least had a SCSI interface behind the USB interface, but SD is not USB... is it??

The reason I ask like that, is I found a STR9 SD card example in the IAR example code, but that code ultimately reduces the commands to USB code, and interacts with the 91x_usb.c module... that doesn't make any sense??

I also found lots of STM32 code which interacts with a SDIO module, but I suspect that this is an STM32 interface that the STR91x does not have.

Can anyone give me any hints on this??

Re: STR912 SSP - is there SD-card example anywhere?

Posted: Wed Sep 25, 2013 5:38 pm
by UhClem
There are examples everywhere. Perhaps not with SSP but that is a low level detail.

One example that springs to mind is the Logomatic. That uses the SPI port rather than SSP but they are both SPI interfaces.

Re: STR912 SSP - is there SD-card example anywhere?

Posted: Thu Sep 26, 2013 1:43 pm
by Gorlash
Hmmm... okay, I think I'm starting to get this now. Found a good, thorough description of the process at:
http://elm-chan.org/docs/mmc/mmc_e.html
Good descriptions of SPI interface, initialization, and command set.
One thing that's a little different is that my chip handles SPI with separate hardware, so I don't actually have control of the bits themselves. I'll have to drag out a scope and see if it does the 74-clock init sequence or not?? Hopefully it does, since it handled I2C details correctly.

So, my interpretation is that I'll use SPI commands to get the SD card initialized, then wrap SCSI commands inside SPI block-write commands, is that correct? At least, that's how I handled USB cards, back when I was working on them...
Or do I ignore SCSI entirely, and just use SPI block-write commands to write blocks, and SPI block-read commands to read blocks? Most examples that I've seen, seem to be using SCSI interface to talk to SD cards, though the above site does not mention SCSI...

Re: STR912 SSP - is there SD-card example anywhere?

Posted: Thu Sep 26, 2013 4:15 pm
by UhClem
Trust me, the SD card does not understand SCSI. Not even if you use a SDIO interface. If you want another example try my code for the Logomatic V1.

Re: STR912 SSP - is there SD-card example anywhere?

Posted: Fri Sep 27, 2013 12:00 pm
by Gorlash
Okay, after poring through the IAR STR9 code for a couple of hours, I now understand what is going on...

The IAR example *does* contain a SD-card driver, but it does more than that... it is intended to be plugged into a PC via USB, and make the board and SD card look like a removable drive to the PC!! The USB/SCSI code is used for the PC interface!! So that has nothing to do with SD at all. It confused me somewhat because they have SD and USB/SCSI interfaces combined in one file (lun.c).

I think I understand which parts are SD interface now... I'll start integrating the init code and see if I can get those first functions to work.

Thank you for your example code, UhClem; I'll study it as well.