jueves, 4 de febrero de 2021

Tutorial: Disipadores de calor. 2ª parte.


 
Compartir:  Facebook Twitter

viernes, 9 de octubre de 2020

Reparación de display Peugeot 3008. Parte 6.

En esta sexta parte voy a mostrar el montaje del circuito electrónico y las adaptaciones mecánicas para encajar el nuevo LCD en el módulo de display. No es un proceso demasiado complicado pero si que exige tener ciertos conocimientos de electrónica y estar acostumbrado a montar y soldar componentes de pequeño tamaño. Los coches son caros y las reparaciones también, así que si no estás seguro de poder acabar todo el proceso con éxito, quizá sea conveniente que busques ayude. Si sigues adelante será solo bajo tu responsabilidad. ¿Queda claro?

Esperaba que esta fuese la última parte, pero no; habrá una séptima ya que a la hora de montar el módulo en el coche me he llevado una sorpresa que precisará de algún añadido al circuito electrónico. No obstante y a pesar de todo, estoy contento con el resultado; por fin vuelvo a ver las informaciones con nitidez y el aspecto final es mejor de lo que esperaba a pesar de usar un LCD con un color distinto al original y al resto de controles del coche.

Montaje del circuito electrónico.

 


Lo primero es montar todos los componentes en el circuito impreso. Cuando hice el diseño de la placa, tuve en cuenta el tipo de componentes que estaba utilizando y en aquellos que me fue posible utilicé pads más grandes de lo habitual para facilitar la soldadura manual. El componente más difícil de soldar será el conector FPC para el display por lo juntas y pequeñas que tiene las patillas. Hay que prestar especial atención en que no nos queden patillas cortocircuitadas y no calentarlo demasiado ya que podemos ablandar el plástico y estropearlo.

Compartir:  Facebook Twitter

sábado, 26 de septiembre de 2020

Reparación de display Peugeot 3008. Parte 5.

Una de las tareas más complicadas de todo el proyecto era encontrar un display que cumpliese con los requisitos necesarios (medidas, color, resolución, etc) y por supuesto no lo encontré. Un requisito indispensable, además de la resolución, características técnicas, etc, es que no me obligue a hacer demasiadas modificaciones mecánicas, al menos en la carcasa frontal. No quiero tener que hacer cortes o modificaciones que cambien demasiado la estética del salpicadero del coche.

Después de mucho buscar, me decanté por el siguiente display.

 


https://www.buydisplay.com/serial-240x64-cog-monochrome-lcd-graphic-module-black-on-white

Compartir:  Facebook Twitter

viernes, 25 de septiembre de 2020

Reparación de display Peugeot 3008. Parte 4.

Para capturar los datos gráficos utilizo el mismo montaje con un firmware distinto cuya misión es capturar los datos, interpretarlos y enviar el resultado por el puerto serie al programa terminal en el PC.

Y a continuación se puede ver el resultado de la primera captura.

 

-----------------------------------------
>>>> Peugeot Type C display data capture.
-----------------------------------------


 Count ---------------> 5122
-------------------------------------------------------------------------------------                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                         *                                      ********************|
                        **                                      ********************|
                       ***                                      ********************|
                      ***                                       ********************|
                     *****************                          ********************|
                     *****************                          ********************|
                     *****************                          ********************|
                                                                ********************|
                        ***        ***                          ********************|
                       ****       ****                          ********************|
                      *****      *****                          ********************|
                     ****       ******                          ********************|
                     ***       *******                          ********************|
                     ***      **** ***                          ********************|
                     ***     ****  ***                          ********************|
                     ****   ****   ***                          ********************|
                      *********    ***                          ********************|
                       *******     ***                          ********************|
                        ****       ***                          ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                         ***    ***                             ********************|
                         ***    ***                             ********************|
                         ***    ***                             ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                         *********                              ********************|
                       *************                            ********************|
                      ***************                           ********************|
                      ***         ***                           ********************|
                     ***           ***                          ********************|
                     ***           ***                          ********************|
                     ***           ***                          ********************|
                     ***           ***                          ********************|
                      ***         ***                           ********************|
                      ***************                           ********************|
                       *************                            ********************|
                         *********                              ********************|
                                                                ********************|
                         *********                              ********************|
                       *************                            ********************|
                      ***************                           ********************|
                      ***         ***                           ********************|
                     ***           ***                          ********************|
                     ***           ***                          ********************|
                     ***           ***                          ********************|
                     ***           ***                          ********************|
                      ***         ***                           ********************|
                      ***************                           ********************|
                       *************                            ********************|
                         *********                              ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
                                                                ********************|
*************   *********************************************** ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                            *                     ********************|
             *                           ********               ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                           ********               ********************|
             *                           *  *   *               ********************|
             *                           *  *   *               ********************|
             *                           *      *               ********************|
             *                                                  ********************|
             *                             ******               ********************|
             *                             *                    ********************|
             *                             *                    ********************|
             *                             *                    ********************|
             *               ********       *****               ********************|
             *                      *                           ********************|
             *                      *       ****                ********************|
             *                      *      * *  *               ********************|
             *                             * *  *               ********************|
             *                 *****       * *  *               ********************|
             *                      *       ** *                ********************|
             *                      *                           ********************|
             *                      *      ******               ********************|
             *                 ******       *                   ********************|
             *                             *                    ********************|
             *                 ******      *                    ********************|
             *                 *            *                   ********************|
             *                 *                                ********************|
             *                 *            ****                ********************|
             *                  *****      *    *               ********************|
             *                             *    *               ********************|
             *                  ****       *    *               ********************|
             *                 * *  *       ****                ********************|
             *                 * *  *                           ********************|
             *                 * *  *                           ********************|
             *                  ** *                            ********************|
             *                                                  ********************|
             *                  *  *                            ********************|
             *                 * *  *                           ********************|
             *                 * *  *     *    **               ********************|
             *                 * *  *    *    * *               ********************|
             *                    **     *   *  *               ********************|
             *                           *  *   *               ********************|
             *                            **    *               ********************|
             *                                                  ********************|
             *                            ******                ********************|
             *                           *      *               ********************|
             *                           *      *               ********************|
             *                           *      *               ********************|
             *                            ******                ********************|
             *                                                  ********************|
             *                            ******                ********************|
             *                           *      *               ********************|
             *                           *      *               ********************|
             *                           *      *               ********************|
             *                            ******                ********************|
             *                                                  ********************|
             *                           *                      ********************|
             *                           *    ***               ********************|
             *                           *   *                  ********************|
             *                           *  *                   ********************|
             *                           ***                    ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
      **     *                                                  ********************|
      **     *                                                  ********************|
      **     *                                                  ********************|
      **     *                                                  ********************|
      **     *                                                  ********************|
             *                                                  ********************|
  *** ****   *                                                  ********************|
 **********  *                                                  ********************|
 **  **  **  *                                                  ********************|
 **  **  **  *                                                  ********************|
 **  **  **  *                                                  ********************|
 **********  *                                                  ********************|
  *** ****   *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
  **   ***   *                                                  ********************|
 *  * *   *  *                                                  ********************|
 *  * *   *  *                                                  ********************|
  **  *   *  *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
             *                                                  ********************|
************************************************************************************|
************************************************************************************|
************************************************************************************|
************************************************************************


El firmware captura los datos gráficos entre el microcontrolador y el controlador gráfico. Los almacena en un buffer, a continuación los interpreta y por cada punto de la imagen en el LCD envía un carácter de texto al puerto serie (en este caso el asterisco).

De la misma forma capturo distintas pantallas y una cosa curiosa que observé es que, a pesar de que el controlador gráfico se configura para trabajar en una escala de grises de cuatro niveles (2 bits), nunca se muestran los datos en el LCD con distintos tonos. Siempre se muestran los puntos encendidos o apagados, es decir, en monocromo.

Con un sencillo script en Python reorganicé los datos que tenía grabados en distintos archivos, cambié el carácter gráfico utilizado para los puntos y ahí tenemos las distintas capturas que demuestran que ya sabemos cómo interpretar esos datos.

 

Compartir:  Facebook Twitter

miércoles, 23 de septiembre de 2020

Reparación de display Peugeot 3008. Parte 3.

Para capturar los datos que circulan entre el microcontrolador y el controlador gráfico utilicé un kit de desarrollo de Cypress con un micro PsoC 4245.

Se conectaron las líneas de datos, las líneas de control CS, A0, E y RESET y por supuesto la masa.

 

Compartir:  Facebook Twitter

martes, 22 de septiembre de 2020

Reparación de display Peugeot 3008. Parte 2.

Ahora que ya se que no voy a poder reparar el display de forma sencilla, el objetivo es sustituir el display original por otro display controlado con un microcontrolador que haga de puente entre los buses de los dos.


Para poder hacerlo, primero es necesario saber cómo se comunica el microcontrolador con el controlador gráfico. Y necesitamos localizar en la cinta del display aquellas líneas de datos y control que nos sirvan para interceptar los datos.

Gracias al "datasheet" no es complicado saber cuál será la orientación de las líneas ya que al estar el integrado montado en la cinta flexible no hay las mismas posibilidades que en un circuito impreso multicapa para que las señales cambien de dirección y tendrán que ir paralelas desde la salida del integrado hasta su destino final.

Si nos fijamos en el "datasheet" y descartamos aquellas líneas correspondientes al display LCD, ya podemos hacernos idea de la orientación de las señales de control y datos en la unión de la cinta con el circuito electrónico.

Compartir:  Facebook Twitter

lunes, 21 de septiembre de 2020

Reparación de display Peugeot 3008. Parte 1.

 

Llegó el momento dedicarse a una tarea que llevaba esquivando durante bastante tiempo. Se trata de reparar el display del ordenador de a bordo de mi coche; un Peugeot 3008 del año 2009.

Es un problema aparentemente bastante común en muchos displays de coche y este mismo problema ya lo sufrí en el coche que tube antes que este, un Peugeot 4007; aunque en aquella ocasión, como tocaba cambiar de coche no llegué a hacer nada por resolverlo.

El problema está en que cuando la temperatura interior del coche aumenta el display empieza a verse bastante mal.

 



Compartir:  Facebook Twitter

lunes, 7 de septiembre de 2020

Cómo comprobar un transistor MOSFET con el polímetro.

Hace poco, un conocido me contactó para que le echase una mano con un circuito controlador de temperatura por PWM, en el cual, el transistor mosfet de salida que controla una resistencia de calentamiento se ponía en cortocircuito y la resistencia no calentaba. Ya había cambiado el mosfet casi media docena de veces, siempre con el mismo resultado.

 

Figura 1.
Compartir:  Facebook Twitter

sábado, 26 de octubre de 2019

Circuito de sonido de tragaperras años 80. Parte 2.

 

El firmware.

En el esquema podemos ver, en el conector grande; que a parte de los 12 voltios para la alimentación del amplificador de sonido y de los 5 voltios para la alimentación de los circuitos digitales, tenemos varias señales que van directamente al microcontrolador:
  • P1.3 perteneciente al puerto 1.
  • P2.4 a P2.7 pertenecientes al puerto 2.
  • INT. Que es la señal de interrupción del microcontrolador y que es activa a nivel bajo.
  • RESET. También activa a nivel bajo que es el reset del microcontrolador.
Como, a pesar de pasar unos treinta años desde la última vez que programé un micro de la familia MCS48 de Intel, mi memoria funciona bien... y siendo sincero, el manual de los MCS48 ayuda mucho; sabemos que el vector de arranque de este microcontrolador se sitúa en la posición 0x0000; que el vector de interrupción está en la posición 0x0003 y que en la posición 0x0007 está el vector de la interrupción del temporizador (este vector no se utiliza en este firmware).


	;; 0x0000 vector de arranque.
0000  04 9B       JMP	009BH				; salto a 0x009B
0002  00          NOP

	;; 0x0003 vector de interrupción.
0003  E5          SEL	MB0				; MBF = 0. Selecciona banco 0 de memoria.
0004  04 0B       JMP	000BH				; Salta a 0x000B
0006  04 9B       JMP	009BH				; Salta a 0x009B
0008  00          NOP
0009  04 9B       JMP	009BH

	;; viene de vector de interrupción.
000B  99 F7       ANL	P1,#F7H			
000D  8A F0       ORL	P2,#F0H			        ; Configura P2.4 a P2.7 como entradas.
000F  0A          IN	A,P2				; Lee valor de P2
0010  53 F0       ANL	A,#F0H			        ; Descarta P2.0 a P2.3, usados en direccionamiento.
							;	se queda con bits P2.4 a P2.7
0012  47          SWAP	A				; Intercambio de nibbles. P2.4 a P2.7 pasa a bits bajos.
0013  A8          MOV	R0,A				; Almacena valor en R0
0014  B9 08       MOV	R1,#08H			        ; R1 = 0x08
0016  23 1F       MOV	A,#1FH			        ; A = 0x1F
0018  A1          MOV	@R1,A				; [ R1 = 0x08 ] = 0x1F. Posición 8 memoria = 0x1F
0019  19          INC	R1				; R1 = 0x09
001A  27          CLR	A				; A = 0
001B  A1          MOV	@R1,A				; [ R1 = 0x09 ] = 0x00. Posición 9 memoria = 0x00
001C  17          INC	A				; A = 1
001D  D7          MOV	PSW,A				; PWS = A = 1    ¡¡¡ OJO !!!
001E  93          RETR					; NO RETORNA. CONTINUA PERO LIMPIA FLAG DE LA INTERRUPCION.
								; Qué cabroncete, casi se me pasa esto. :-)

	;; saltos según valor leído en P2.4 a P2.7
001F  E5          SEL	MB0				; MBF = 0. Selecciona banco 0 de memoria.
0020  F8          MOV	A,R0				; A = R0 = Valor leído de P2.
0021  C6 9B       JZ	009BH				; Si = 0x00, salta a 0x009B
0023  23 0F       MOV	A,#0FH			        ; 
0025  D8          XRL	A,R0				;
0026  C6 98       JZ	0098H				; Si = 0x0F, salta a 0x0098 
0028  23 0E       MOV	A,#0EH			        ;
002A  D8          XRL	A,R0				;
002B  C6 96       JZ	0096H				; Si = 0x0E, salta a 0x0096
002D  23 0D       MOV	A,#0DH			        ;
002F  D8          XRL	A,R0				;
0030  C6 92       JZ	0092H				; Si = 0x0D, salta a 0x0092
0032  23 0C       MOV	A,#0CH			        ;
0034  D8          XRL	A,R0				;
0035  C6 8D       JZ	008DH				; Si = 0x0C, salta a 0x008D
0037  23 01       MOV	A,#01H			        ;
0039  D8          XRL	A,R0				;
003A  C6 70       JZ	0070H				; Si = 0x01, salta a 0x0070
003C  23 02       MOV	A,#02H			        ;
003E  D8          XRL	A,R0				;
003F  C6 72       JZ	0072H				; Si = 0x02, salta a 0x0072
0041  23 03       MOV	A,#03H			        ;
0043  D8          XRL	A,R0				; 
0044  C6 75       JZ	0075H				; Si = 0x03, salta a 0x0075
0046  23 04       MOV	A,#04H			        ;
0048  D8          XRL	A,R0				;
0049  C6 78       JZ	0078H				; Si = 0x04, salta a 0x0078
004B  23 05       MOV	A,#05H			        ;
004D  D8          XRL	A,R0				;
004E  C6 7A       JZ	007AH				; Si = 0x05, salta a 0x007A
0050  23 06       MOV	A,#06H			        ;
0052  D8          XRL	A,R0				;
0053  C6 7D       JZ	007DH				; Si = 0x06, salta a 0x007D
0055  23 07       MOV	A,#07H			        ;
0057  D8          XRL	A,R0				;
0058  C6 81       JZ	0081H				; Si = 0x07, salta a 0x0081
005A  23 08       MOV	A,#08H                 	        ;
005C  D8          XRL	A,R0				;
005D  C6 83       JZ	0083H				; Si = 0x08, salta a 0x0083
005F  23 09       MOV	A,#09H			        ;
0061  D8          XRL	A,R0				;
0062  C6 85       JZ	0085H				; Si = 0x09, salta a 0x0085
0064  23 0A       MOV	A,#0AH			        ;
0066  D8          XRL	A,R0				;
0067  C6 87       JZ	0087H				; Si = 0x0A, salta a 0x0087
0069  23 0B       MOV	A,#0BH			        ; 
006B  D8          XRL	A,R0				;
006C  C6 89       JZ	0089H				; Si = 0x0B, salta a 0x0089

En un principio me he centrado en estudiar la parte correspondiente al vector de interrupción ya que esta señal está disponible en el conector, y si está ahí, será por algo.

Vemos que en cuanto se activa la señal INT (a nivel bajo) se selecciona el banco de memoria 0 y entonces el programa salta a la posición 0x000B. A partir de ahí, se lee el valor presente en el puerto 2, justo el valor presente en 2.4 a 2.7 y entonces el programa salta a distintos puntos del firmware en función del valor leído en esos pines.

Supuse que activando la señal INT (a nivel bajo) mientras ponemos un valor en los pines 2.4 a 2.7 quizá consiguiese reproducir distintos sonidos.

El resto del programa, aunque lo he revisado por partes, no he podido dedicarle demasiado tiempo; así que a día de hoy, aún no se para que se utiliza la señal P1.3 ni la señal correspondiente al puente en la placa marcada como "RECLAMO".

Si nos fijamos en el esquema, vemos que el pin de dirección A11 de la memoria eprom se encuentra conectado directamente a 5 voltios. Así que cuando el microcontrolador direcciona el vector de arranque en la posición 0x0000, en realidad se corresponde con la posición 0x0800 de la eprom. El microcontrolador nunca llega a acceder al contenido de la eprom situado en la posición 0x0000 hasta la posición 0x07FF. Lo curioso es que el contenido entre 0x0000 y 0x07FF es exactamente el mismo que el que se encuentra en 0x0800 en adelante, cambiando únicamente los valores de las instrucciones JMP, CALL y resto de instrucciones de salto y los accesos a valores en la memoria de programa. Es decir, el firmware está grabado por duplicado en la eprom.

Empezando con las pruebas.


Para poder hacer pruebas, preparé un pequeño circuito en placa de prototipos.

Adaptador para pruebas. Esquema.
Compartir:  Facebook Twitter

Circuito de sonido de tragaperras años 80. Parte 1.

En esta ocasión toca un poco de electrónica "vintage".

Hace poco, mientras organizaba (o lo intentaba) los cacharros que tengo por el trastero, me encontré con una placa de sonido de una máquina tragaperras de los años 80. Los que ya tengan cierta edad, se acordarán de las maquinas que llamaban la atención tocando la canción de los "pajaritos" de María Jesús.

foto: @tecnitra (ver texto)
Compartir:  Facebook Twitter

viernes, 2 de septiembre de 2016

Librería RFM69 para micros PSoC 4 y PSoC 5LP.

De entre todas las posibilidades que hay actualmente en el mercado para comunicar dispositivos mediante radiofrecuencia de forma barata y sencilla, los módulos RFM69 de HopeRF son una de ellas. Estos son los módulos que he utilizado en uno de mis últimos proyectos y para los cuales he desarrollado una librería que facilite su uso con los microcontroladores PSoC de Cypress. Ahora que la mayor parte de las funcionalidades que necesitaba ya están implementadas he decidido liberar la librería por si a alguien le puede ser de utilidad. Son varios los tipos de módulos RFM69 disponibles, y la librería puede ser utilizada con todos ellos. Tanto con los módulo normales como con los módulos de alta potencia. En la figura siguiente puedes ver los distintos módulos disponibles hasta este momento y la distribución de sus patillajes.



Compartir:  Facebook Twitter

lunes, 18 de enero de 2016

Port de la librería FatFs para micros PSoC de Cypress.


Esta entrada no es un tutorial sobre cómo utilizar la librería FatFs de ELM-Chan, tan solo voy a dar las indicaciones necesarias para poder utilizar el port que he realizado para los microcontroladores PSoC de Cypress.
Si necesitas saber más sobre la librería o el uso de sus funciones, en internet puedes encontrar abundante información sobre su uso y uno de los mejores sitios es la propia página de la librería: ELM-Chan.

 

Sobre el Port. 

El motivo para realizar el port de la librería fué la necesidad de implementar la grabación de datos en tarjetas SD con un micro de Cypress de la familia PSoC 4, para posteriormente tratar esos datos en un PC de sobremesa.

Partiendo  de la versión R0.11a, que en el momento de escribir esta entrada, es la última versión disponible y la más moderna; los cambios necesarios para hacer funcionar la librería con el micro PSoC 4 fueron mínimos. No fueron necesarios cambios en ninguno de los archivos principales de la librería y se realizaron cambios únicamente en el archivo “sdcard.c” que es el que implementa el acceso a bajo nivel a las tarjetas SD. De hecho, los cambios fueron tan sencillos que al final decidí comprobar que funcionaban también en micros de la familia PSoC 4M e incluso hice un port para los micros de la familia PSoC 5LP.
El port de la librería así como algunas aplicaciones desarrolladas para pruebas puedes descargarlos de Github.

 

Cómo utilizar la librería.

Para utilizar la librería en tu proyecto sigue los pasos que te indico a continuación:
  • Añade un módulo de comunicaciones SPI al esquema de tu proyecto y configúralo como maestro en modo CPHA = 0, CPOL = 0.
  • Añade una salida digital que será utilizada para la señal de selección del bus SPI. Para el buen funcionamiento de la librería, esta señal tendrá que ser controlada por el código de la librería en lugar de dejar al hardware y a la API que lo hagan. En PSoC 4 puedes hacerlo de dos manera distintas: añadir una salida digital, o reutilizar una de las señales SS del propio módulo SPI. Para utilizar esta última manera, habrá que desconectar la señal SS del módulo SPI del HSIOM (High Speed I/O Matrix). Si no sabes a qué me refiero, mira los ejemplos y consulta el manual de referencia de PSoC 4.
  • Añade los archivos que hay dentro de la carpeta PSoC_FatFs_Library del repositorio a tu proyecto.
  • Si vas a configurar la librería con funciones de escritura y quieres que la fecha y hora de los archivos sean los correctos tendrás que implementar por tí mismo un reloj de tiempo real (más información sobre RTC aquí).
  • Añade los “#includes” necesarios en la parte que corresponda de tu código (mira los ejemplos).
  • Retoca los valores de las macros que hay al principio del archivo “sdcard.c”:
    • SPI_NAME. En esta macro, pon el nombre que le hayas dado al módulo SPI en el esquema de tu proyecto. Gracias a esta macro, si decides cambiar el nombre del módulo SPI en el esquema, no tendrás que retocar los nombres de todas las funciones relativas al bus SPI dentro del código de “sdcard.c”, solo tendrás que cambiar el valor asignado a esta macro.
    • mmSPI_SS_Write(value). Función de la API correspondiente a la línea que hayas utilizado para la señal SS del bus SPI. Ejemplo: supón que añades en el esquema una salida digital a la que llamas SS. La api proveerá una función llamada SS_Write(valor) que permitira, desde el firmware fijar el valor lógico de esa salida. Esta es la función que has de asignar a esta macro. El motivo es el mismo que para la macro anterior.
    • CS_DELAY_US. Retardo en microsegundos desde que se activa la señal SS del bus SPI hasta que empieza el envío de datos.
    • M_DELAY_US. Retardo utilizado internamente en “sdcard.c”.
Retardo CS_DELAY_US
Compartir:  Facebook Twitter