TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Artifox en 24 de Agosto de 2005, 23:11:00

Título: Memoria I2C
Publicado por: Artifox en 24 de Agosto de 2005, 23:11:00
Hola muchachos, tengo un pequeño problemita, no se trabajar muy bien con las memorias I2C; tengo un 24L256 el cual tiene 32Kbytes de memoria y lo que quiero hacer es grabar una data desde la PC - serialmente- PIC- I2C -memoria... la cantidad de datos q quiero grabar es relativamente grande y lo que necesito saber es como grabo la data en la memoria.

Yo trabajo en PBP y hay el comando "i2cwrite" que hace toda la configuracion por mi, lo q envio seria la Direccion de la memoria (address H y L ) y luego la data, pero mi problema es q cuanta data puedo enviar en un solo envio (pues se que necesita un tiempo de grabacion).... pues como la cantidad de data q quiero enviar es grande entonces envio de 1 en 1, de 10 en 10... como???

Alguien ha trabajado antes con este tipo de memoria? haber si me ayudan con esta duda...Rebotado

FumadorSonrisa Gigante
Título: RE: Memoria I2C
Publicado por: fenix_jn en 25 de Agosto de 2005, 00:36:00
Las memorias 24LCXX poseen dos modos de escritura: Standard y Burst o Page Writting

la primera es la escritura q sigue el patron Control -> Direccion -> Data

control establece la accion, direccion a dond va a escribir, la ultima no necesita explicacion, luego d eso debes volver a repetir la secuencia, es util para acceso a direcciones especificas d la memoria

la segunda usa el patron Control -> Direccion -> Data0 -> Data1 -> ...  -> Data63

es decir se escriben 64 datos en la memoria, la direccion es actualizada automaticamente en el chip, luego d eso, es necesario actualizar la direccion d memoria a fin d q apunt a la siguiente pagina de 64 bytes, la velocidad de transmision depende del PIC y de la memoria, creo q la maxima velocidad alcanzable en la señal de CLK es 400 KHz o sea 400 Kbps incluyendo todo: control, direccion y datos.

La seleccion del modo lo determina si generas una condicion de STOP BIT al final de Data0, si es asi entonces estas trabajando en modo STD sino entonces estaras trabajando en modo PW, no necesariamente debes escribir 64 bytes a la vez, si generas un stop bit al final de cualquier DataN entonces se finalizara la escritura y podras realizar otra tarea de lectura o escritura. Este procedimiento tb es valido para la lectura.
Título: RE: Memoria I2C
Publicado por: Artifox en 25 de Agosto de 2005, 01:32:00
Gracias fenix, me explicaste mejor que en el pdf todo lo que necesitaba.... una ultima consulta, lei que es necesario darle un tiempo para que pueda grabar los datos (5ms), en el caso que le envie los 64 datos seguidos, debo mandarlos cada 5 ms o le envio todos seguidos??

No se pierde la direccion si se los envio seguidos con una pausa de 5ms?

Creo que estoy algo aturdido por leer el pdf loco (es que mi ingles no es nada bueno)

En verdad gracias por tu respuesta, un abrazo Rebotado
Título: RE: Memoria I2C
Publicado por: antoniof en 25 de Agosto de 2005, 06:00:00
El tiempo este de espera de escritura se debe hacer después de la condición de STOP, por lo que puedes enviar los 64 bytes seguidos y luego del STOP esperar esos 5ms. La memoria guarda en un buffer interno esos bytes para después grabarlos en la EEPROM.