# Controlar Puerto SD con C++ (O cualquier otro lenguaje)



## Nepper (Mar 31, 2010)

Buenas!

Me dirijo a ustedes con el fin de recopilar información soble el puerto de las Targetas SD

En lo preferente, a cómo manipularlo manualmente como si fuera un puerto paralelo.

He encontrado cierta información preocupante respecto al tema



			
				Wikipedia dijo:
			
		

> * Estándar  abierto*
> 
> Esta tecnología es un estándar disponible para cualquier compañía que  desee desarrollar productos basados en ella. Las especificaciones no  son gratuitas – debe comprarse a la MMC Association que impone  considerables restricciones sobre cómo pueden usarse las  especificaciones.


de la página http://es.wikipedia.org/wiki/Multi_Media_Card

... mm... como mucho no estoy metido en el tema... ¿a alguien se le dió por programar en este puerto?... ¿alguien?

En realidad no necesitaría conseguír el "protocolo de comunicación" del puerto SD, creo que acceder al puerto es gratuito
Si alguien quiere desarroyar aparatos que acepte los drivers MMC, eso es cuando deja de ser gratuito, pero si lo controlo sin nigún "estandar", solamente tiro unos y ceros a 1ms, no creo que haya drama...


----------



## jask2007 (Abr 21, 2010)

Para empezar deberias saber que "el puerto de las tarjetas SD", no es mas que un estandar de precisamente tarjetas de memoria Flash. Lo que requieres es una libreria para poder enviar y recibir los datos de la memoria y que el pic los pueda "leer". 

Buscando un poco por internet hay muchas opciones:

Desde microchip: http://www.microchipc.com/sourcecode/#mmc

de hecho en este mismo foro ya hay bastant informacion:
https://www.forosdeelectronica.com/f24/mmc-sd-pic-6336/

Deberias buscar un poco antes de preguntar, pero alli está.


----------



## Nepper (Abr 25, 2010)

Por el momento gracias...
Realmente busqué, y no se cómo no me encontré con estos resultados, ya que googlee y busque por el foro, perono encontraba cosas contundentes, en la semana iré viendo la información que aportaste...

Si existe algún prograso, lo seguiré posteando por acá...

nuevamente, grácias!


----------



## Nepper (May 4, 2010)

Lamento comunicarles que no es lo que estoy buscando.
Yo nesecito utilizar C++ u otro lenguaje para controlar el puerto SD.

*No estoy interesado en comunicar al Pic con una Targeta SD o MMC*



> Buscando un poco por internet hay muchas opciones:


Que dios o google te escuche, pero lamento decir que no es así, ya mandé mails a los del estandar MMC y SD y no responden, me contacté con programadores de C++ pero nadie conoce ese estilo de comunicación, me dicen que "no es su campo"...

http://www.microchipc.com/sourcecode/#mmc
En esta página solo se explica el código que se le inserta al PIC para que se comunique con una targeta SD, mas bién, la tarjeta solo actua cómo una ampliación de memoria.



			
				jask2007 dijo:
			
		

> Para empezar deberias saber que "el puerto de las tarjetas SD", no es  mas que un estandar de precisamente tarjetas de memoria Flash. *Lo que  requieres es una libreria para poder enviar y recibir los datos de la  memoria y que el pic los pueda "leer".*


Perdoname pero no es lo que requiero, lo que requiero es simplemente manipular el puerto.... hacer un circuito con 5 leds y 5 resistencias que se conecte al puerto, y hacer un juego de luces en la SD... no se cómo decirlo más simple...

Por favor, releean el post #1, yo quiero controlar el puerto, *no interactuar con la tarjeta*

PD: me entra curiosidad... ¿de donde sacaste que quería vincularlo a un pic si en el post no lo mencioné???? (aunque es verdad)


----------



## wacalo (May 4, 2010)

Nepper dice: 





> Perdoname pero no es lo que requiero, lo que requiero es simplemente manipular el puerto.... hacer un circuito con 5 leds y 5 resistencias que se conecte al puerto, y hacer un juego de luces en la SD... no se cómo decirlo más simple...


Si no puedes decirlo más simple estamos en problemas porque no sé lo que quieres hacer. Te cito un pequeño párrafo de la "SD Memory Card Specifications":


> This specification defines two types of SDIO cards. The Full-Speed card supports SPI, 1-bit SD and the 4-bit SD transfer modes at the full clock range of 0-25MHz. The Full-Speed SDIO devices have a data transfer rate of over 100 Mb/second (10 MB/Sec). A second version of the SDIO card is the Low-Speed SDIO card. This card requires only the SPI and 1-bit SD transfer modes. 4-bit support is optional


Como ves la especificación está hecha para las famosas tarjetas SD, microSD, etc, estas tarjetas traen adentro un controlador que se puede comunicar con un Host respetando estrictamente el estandard SD.

Hablas de que quieres usar C++ para "controlar el puerto SD" ¿Que puerto SD?

¿Donde estará almacenado tu soft C++? ¿En una PC? una PC no tiene puerto SD, los micros (PICs, AVR, etc) no tienen puertos SD.

Lo que se hace normalmente si se usa un micro es usar el puerto SPI y desde allí manejar la tarjeta SD. 

Creo que deberías investigar un poco más.

Saludos.


----------



## Nepper (May 5, 2010)

wacalo dijo:
			
		

> Como ves la especificación está hecha para las famosas tarjetas SD, microSD, etc, estas tarjetas traen adentro un controlador que se puede comunicar con un Host respetando estrictamente el estandard SD.
> Hablas de que quieres usar C++ para "controlar el puerto SD" ¿Que puerto SD?
> ¿Donde estará almacenado tu soft C++? ¿En una PC? una PC no tiene puerto SD, los micros (PICs, AVR, etc) no tienen puertos SD.
> Lo que se hace normalmente si se usa un micro es usar el puerto SPI y desde allí manejar la tarjeta SD.
> ...


 OK! gracias por hacer esas preguntas, de esta forma mejoro la precición en el objetivo...

Voy a la analogía con el puerto paralelo...
Tenemos una PC, un soft (El c++) un puerto (el paralelo) y un dispositivo (la impresora)

Con la SD:
Tenemos una PC, un soft (C++) un puerto (El SD) y un dispositivo (la tarjeta)

A mi solo me interesa el soft con el puerto, la tarjeta no.... controlar el puerto de la PC con c++ (u otro)


----------



## Chico3001 (May 5, 2010)

A diferencia de un puerto serial o paralelo el puerto SD contiene una controladora que mantiene un estandar de comunicacion, mientras no saques a esa controladora del juego no vas a poder mandar señales indoviduales para controlar el puerto... 

Lo que en todo caso puedes hacer es programar un PIC para que actue como memoria SD, almacene el programa y despues ese PIC sea el encargado de programar a otro pic... pero no creo que pueda enviar señales de error en caso de que falle la programacion...


----------



## Nepper (May 6, 2010)

pero esa controladora es un hardaware? o son simplemente los "Controladores" propios de la intefaz... ¿API se decía? o sea, tengo que deshabilitar los drivers???

Por lo que tengo entendido, son los drivers lo que mueven el harware, entonces, al fin y al cabo, se controla por software... por eso pienso que necesitaría bibliotecas para el C++... yo pienso que se puede... será dificil, pero se puede...

OK, teniendo en cuenta lo que mencionaste, te pregunto, ¿donde conseguiste esta información? ¿donde está explicado cómo se desarrolla la interfaz MMC? o sea, con el USB hay documentos por todos lados, con idicaciones de pines y documentos para desarrolladores, pero con la MMC no encontré nada...


----------



## Chico3001 (May 6, 2010)

Es que son varias partes que trabajan en conjunto... existe el Driver que en realidad es la pieza de software que habla con el controlador (Hardware), desafortunadamente cada fabricante escogera que quiere hacer ... implementar un solo chip que controle todos los puertos o meter varios chips individuales y por eso me imagino que no encuentras informacion, pero puedes intentar metiendote a Intel y descargar algun manual de una Motherboard para ver que chip usan. despues buscar la hoja de datos y comenzar desde alli... 

http://www.latticesemi.com/products...essionid=f030f8a493d7fd8a9a6d33145b621a203b6a

No se de donde sacas que es estandar abierto... segun wiki esta cubierto por varias patentes y me imagino que por eso no encuentras informacion, pero afortunadamente le han hecho ingenieria inversa y puedes estudiar como se reliza la implementacion en los FPGAs ya que existen "cores" que se encargan de realizar esa funcion

http://opencores.org/project,spimaster
http://www.sdcard.org/developers/tech/sdcard/pls/Simplified_Physical_Layer_Spec.pdf


----------



## Nepper (May 6, 2010)

hhhaaaaa!!!!
cada vez lo veo mas claro..... gracias...

Lo del estandar abierto es lo que puse arriba... tambien no entendí  mucho a que se refería, por lo que mencionaba se me hacía que no era  abierto, pero un análisis más profundo (y diferido) me llevó a pensar  que cualquiera puede usar el estandar mientras pague la licencia XD ¿?  ¿entendes? ¡Cualquiera! es abierto....

bueno... voy a ver tu concejo


----------

