Aumentar la velocidad de los datos en la línea GPIO entre los microcontroladores

0

Hice un circuito en el que el bus de datos P0 de un AT89S52 está conectado al P1 de un AT89C4051 y ambos relojes están controlados por su propio cristal de 22.1184 MHz.

He utilizado un pull-up estándar de 10K en cada uno de los pines del puerto, pero debido a la alta velocidad de los cristales, estoy empezando a pensar que el valor de la resistencia es demasiado alto.

Observé ambas hojas de datos y el AT89S52 establece que la corriente máxima por pin de puerto no debe exceder los 10 mA. Esto sugiere que puedo salirme con una resistencia de 500 ohmios, pero eso acabaría con mis baterías en poco tiempo.

Las dos hojas de datos indican que cada pin tiene una capacitancia de 10pF si Ta = 25 grados y la frecuencia de prueba es 1Mhz, pero mi frecuencia de prueba es más como 2Mhz porque muchas instrucciones en estos microcontroladores se ejecutan a 1/12 de un ciclo de reloj. y si sigo ejecutando comandos para leer datos de un puerto, quiero leer rápidamente.

Claro que puedo salirme con la suya:

Mov A,P0
nop
nop
nop
nop
nop
...
Mov A,P0
nop

Pero como puede ver, esos nops desperdician ciclos de reloj.

Dado que tengo un valor de capacitancia y resistencia, hice algunos cálculos (10K * 20p) y obtuve 795774.71545948 Hz, ¿cuál es la velocidad máxima? o hice algo mal? Utilicé esta herramienta: enlace

Escogí 20p para la capacitancia porque asumo que cuando los pines están conectados, se agregan los valores del capacitor (capacitores en paralelo).

Entonces, ¿cómo calculo la velocidad máxima en el cable entre las líneas GPIO y, si estoy en el camino correcto, qué tan bajo puedo ir con la resistencia sin causar una descarga significativa de la batería? ¿Debo usar 1K? 4.7K?

    
pregunta Mike

0 respuestas

Lea otras preguntas en las etiquetas