Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SCL maestro, como el esclavo puede transferir datos a través del I²C bus,
pero la transferencia siempre es controlada por el maestro.
• reloj
Todas las direcciones I²C bus son de 7 bits o 10 bits (MPU-6050-7BITS)
a) se pueden tener hasta 128 dispositivos en el bus I²C, ya que un número de 7bit puede
estar entre 0 y 127
El pulso de reconocer o reconocimiento, conocido como ACK (del inglés
Acknowledge), se logra colocando la línea de datos a un nivel lógico bajo, durante
el transcurso del noveno pulso de reloj.
1. En el primer paso, el byte que se envía es START, después de la condición de Bit
inicio (START) se envía un byte que, contiene siete bits que componen la dirección del
dispositivo que se quiere seleccionar y un octavo bit R/W (que corresponde a la
operación que se quiere realizar en él, lectura o escritura).
2. El segundo paso, este byte, contiene la dirección del registro que se desea leer/escribir.
Puede realizarse un reinicio como se muestra en la figura.
3. El tercer paso, aquí se escribe la dirección con el bit menos significativo LSB a nivel 1,
para indicar que se lee.
4. El cuarto paso y siguientes continúan la misma función de lectura, no tiene por qué ser
sólo uno.
cada byte transferido al bus, le sigue un noveno pulso de reloj durante el cual, el
dispositivo receptor, debe generar un pulso de reconocimiento A.
Esto es para comunicaciones simples I²C casi todo, pero hay una complicación
más. Cuando el maestro lee del esclavo, es el esclavo el que coloca los datos sobre
la línea SDA, pero es el maestro quien controla el reloj. ¿Qué pasa si el esclavo no
está listo para enviar los datos?
El protocolo I²C proporciona una solución a esto: el esclavo está autorizado a
mantener la línea SCL baja. Esto se llama estiramiento de reloj. Cuando el esclavo
recibe la orden de lectura del maestro, éste mantiene la línea de reloj baja. El
microprocesador obtiene los datos solicitados, los coloca en el registro de
transmisión y libera la línea de reloj que habilita la resistencia RPA para finalmente
dejarla a alto.
1
BINARIO: 10000000000000000000000
HEXA: 0x400000
NOTA: La señal de reloj HSI se genera desde un oscilador RC interno de 16 MHz y se puede usar
directamente como un reloj del sistema, o utilizado como entrada PLL.
10 10
BIN: 101000000000000000000000
HEXA: 0xA00000
función alternante:
BIN: 100010000000000
HEXA: 0x4400
1 1
BIN: 110000000000
HEXA: 0xC00
La razón por la que esto es un problema es
que puede resultar en un cortocircuito
directo de la alimentación a tierra
Es posible que un dispositivo esté manejando
SDA alto, mientras que otro dispositivo en el
bus está conduciendo SDA bajo. Si las salidas
son de drenaje abierto, los dispositivos solo
pueden conducir en baja o flotar (levantado
en el caso de I2C). Esto significa que no hay
conflicto, ya que el dispositivo que se está
agotando siempre ganará en el autobús.
01 01
BIN:10100000000000000000000
HEXA: 0x500000
BIN: 111100000000000000000000
HEXA:0xF00000
Luego, el I2C se puede habilitar configurando el bit PE en el registro I2C_CR1
Cuando el I2C está deshabilitado (PE = 0), el I2C realiza un reinicio del software.
Antes de habilitar el periférico I2C configurando el bit PE en el registro I2C_CR1,
el usuario debe configurar los filtros de ruido, si es necesario. analógico
configurando el bit ANFOFF, y / o seleccionar un filtro digital.
Antes de habilitar el periférico, el reloj maestro I2C debe configurarse
configurando el Bits SCLH y SCLL en el registro I2C_TIMINGR.
Para iniciar la comunicación, el usuario debe programar los siguientes parámetros
para. El esclavo direccionado en el registro I2C_CR2
Se puede realizar un reinicio del software borrando el bit PE en el registro
I2C_CR1. En eso caso I2C líneas SCL y SDA son liberados. Las máquinas de
estados internos se reinician y Los bits de control de comunicación, así como los
bits de estado, vuelven a su valor de restablecimiento. Los registros de
configuración no se ven afectados. Aquí está la lista de bits de registro impactados:
1. Registro I2C_CR2: START, STOP, NACK
2. Registro I2C_ISR: BUSY, TXE, TXIS, RXNE, ADDR, NACKF, TCR, TC, STOPF, BERR,
ARLO, OVR
Reinicio por software (deshabilita PE) (PE=0)
0
PARAMETROS:
FRECUENCIAS DE OPERACIÓN I2C SEGÚN DATASHEET MPU-6050
POR LO TANTO:
1 1 1 1
1 1 1 1 1 1 1
BIN: 110000010000100000111100010011
HEXA: 0x30420F13
1
0
AUTOEND (1): Manda el estado stop automáticamente después de que los datos
son transferidos.
1 1
ANFOFF: Desactiva el filtro analógico.
1 1 1 1
AUTOEND (1): Manda el estado stop automáticamente después de que los datos
son transferidos.
NBYTES (1): Numero de bytes que queremos enviar. En este caso 2 bytes. (Por eso
Bin=0010 que equivale a 2 en decimal) el primero de dirección y el otro de datos.
START (1): Manda el bit de inicio. Se borra por hardware después de enviar la
dirección.
SADD(0x68): Es la dirección del esclavo, en este caso el MPU-6050. (1101000)
MPU-6050:
Cuando TXDR está vacío se vuelve 1 y se sale del while. (recomendado
antes de enviar un dato) (espera que se vacíe el TXDR) (luego de esto se
debe escribir)
1 1 1 1
SADD(0x68): Es la dirección del esclavo, en este caso el MPU-6050. (1101000)
MPU-6050:
Es la misma función write pero con un solo byte. Aquí se
le está avisando al modulo que dato queremos obtener.
Lo reinicio porque ahora necesito que lea un valor del
esclavo. (se vuelve a configurar normal)
1 1
1 1 1 1 1
RD_WRN (1): El maestro solicita una transferencia de lectura.
Se procede a leer el dato.
Como colocamos CR2 en modo lectura entonces se
reinicia para colocarlo modo normal y se retorna el
valor del dato obtenido por el sensor.
1 1
• HSEON: Activa el reloj de la tarjeta de 8Mhz.
Bin: 10000000010000000000000000000
Hexa: 10080000
UART4EN:
PWREN: