CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

Need guidelines for SD card Interface

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
SSURESHREDDY



Joined: 10 Aug 2013
Posts: 13
Location: bangalore

View user's profile Send private message

Need guidelines for SD card Interface
PostPosted: Thu Jul 31, 2014 4:56 am     Reply with quote

Hi all,
I need to interface Micro SD card to store the data, measured by the PIC18F2525. Anybody explain me how can I communicate easily?

Suresh
temtronic



Joined: 01 Jul 2010
Posts: 9162
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Thu Jul 31, 2014 8:59 am     Reply with quote

use the drivers that CCS supplies or one of the ones in the code library here

IMPORTANT be sure to PROPERLY interface the PIC to the SD card.

Your PIC is 5 V and all SD cards are 3 volts !!!

You have at least 3 choices to configure your project

1) Use a 3Volt PIC, An 'L' version. This is easy, simple and works.

2) Use 'logic level' transceiver interface chips. Added cost and wiring

3)Choose I/O pins that are 3V compatible.

Also be aware that the SD driver is for 2GB or less cards,however there is code in the 'code library' for bigger cards I think.

FIRST though... get your PIC to do the 1Hz LED program to confirm your
PIC,board work and you can compile code !!!

hth
jay
SSURESHREDDY



Joined: 10 Aug 2013
Posts: 13
Location: bangalore

View user's profile Send private message

PostPosted: Fri Aug 01, 2014 1:08 am     Reply with quote

Thanks Jay,

I used a driver to send the measured data to LAPTOP with a "USB to UART Converter", but I never used for SD card, can you suggest me some interface chips.

And I got the MMCSD driver from CCS libraries. Can you explain me how can I use those libraries, I don't know those drivers are designed for <2GB or >2GB

Suresh
Ttelmah



Joined: 11 Mar 2010
Posts: 19328

View user's profile Send private message

PostPosted: Fri Aug 01, 2014 2:07 am     Reply with quote

and get the initialisation resistors right.

The pullup resistors on DAT1, DAT2, DATA_OUT, and CS should be present to ensure that the card wakes up correctly. 10KR each is OK.

These have different functions in different circumstances and on the different lines.
1) The drives on the SD card wake up in open collector mode. The resistors make sure the undriven lines are pulled up, till the card is programmed to SPI mode.
2) The card may be unplugged. The resistors ensure the lines go high when this is done.
3) The PIC pins, wake up set as inputs. So the CS line, can float at this point. The resistor ensures it is pulled high at this time.
4) They have a slight effect in speeding the rising edges of the signals.

The 'simplest' circuit for 5v PIC to 3.3v SD, is resistive dividers (1K8/3K3) on the DATA_IN, and SCLK lines, 'open collector' driving of the CS line (either using a diode, or using the 'output_float' ability when the line needs to go high), and a single buffer on the incoming data line (a buffer like a 74ACT125). Then the four pullup resistors.

This works.

Remember you need to work out how you are going to allow the user to unplug the card. If the card is unplugged while data is being written, there _will_ at some point be corruption. I use a little access 'cover' hatch, and when this is opened, finish writing to the card, and turn on a green LED to say 'OK to remove'. Close the hatch, and the code starts talking to the card again. and the LED goes out. Generally the shut-off is so fast that by the time you have opened the door, and reached inside to push the card to release, it has already finished. Having a 'just pull it out' type access, is generally OK, if the card is only ever read (this is how they are used for music players etc.). But if you are writing as well, a bit of thought is needed.
SSURESHREDDY



Joined: 10 Aug 2013
Posts: 13
Location: bangalore

View user's profile Send private message

PostPosted: Fri Aug 01, 2014 11:13 pm     Reply with quote

thanks all,
I configure my hardware (SPI pins) with a resistor divider(2.2k and 3.3k gives 3 Volts).
and I included mmcsd.c for my existing project,

I just only want to write the data with in a file, I don't have read application with micro controller.

is anybody have an experience how to write data using mmcsd.c please give me an examples,


Suresh
temtronic



Joined: 01 Jul 2010
Posts: 9162
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Sat Aug 02, 2014 5:33 am     Reply with quote

Sorry but your use of hardware SPI pins will NOT work. While resistors will allow the 5 V PIC to send data to the 3 V SD card, the PIC requires 4 volts FROM the SD card on the hardware SPI peripheral.
The hardware SPI uses ST input and they require .8 * VDD( .8 * 5 - 4.0 volts) as a logic one.
This is shown in the datasheet under the electrical specs ( D041 I think).

As I said earlier there some options on how to configure your project but resistors will NOT be one.

hth
jay
asmallri



Joined: 12 Aug 2004
Posts: 1634
Location: Perth, Australia

View user's profile Send private message Send e-mail Visit poster's website

PostPosted: Sat Aug 02, 2014 6:35 am     Reply with quote

SSURESHREDDY wrote:

I just only want to write the data with in a file, I don't have read application with micro controller.
Suresh


Even if you only want to write, the driver must read the media (boot sector, directory structure and both File Allocation Tables in order to perform a write. Reading is simpler than writing.
_________________
Regards, Andrew

http://www.brushelectronics.com/software
Home of Ethernet, SD card and Encrypted Serial Bootloaders for PICs!!
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
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